From fbac18ec0cb9f6176d311b42cf204dc492c38745 Mon Sep 17 00:00:00 2001 From: nitrocaster Date: Sun, 15 Nov 2015 16:27:43 +0300 Subject: [PATCH 001/107] Delete redundant malloc.h inclusion. --- src/xrGame/xrServer_Connect.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/xrGame/xrServer_Connect.cpp b/src/xrGame/xrServer_Connect.cpp index 54c1b681e46..28d3e6d8c62 100644 --- a/src/xrGame/xrServer_Connect.cpp +++ b/src/xrGame/xrServer_Connect.cpp @@ -12,10 +12,6 @@ #include "file_transfer.h" #include "screenshot_server.h" #include "xrNetServer/NET_AuthCheck.h" -#pragma warning(push) -#pragma warning(disable:4995) -#include -#pragma warning(pop) LPCSTR xrServer::get_map_download_url(LPCSTR level_name, LPCSTR level_version) { From dd659f960cb164aceb6bef4ea3a2eb464f258bea Mon Sep 17 00:00:00 2001 From: nitrocaster Date: Sat, 21 Nov 2015 23:48:58 +0300 Subject: [PATCH 002/107] Delete old boost headers. --- sdk/include/boost/any.hpp | 188 - sdk/include/boost/array.hpp | 175 - sdk/include/boost/assert.hpp | 38 - sdk/include/boost/bind.hpp | 1538 ----- sdk/include/boost/bind/apply.hpp | 75 - sdk/include/boost/bind/arg.hpp | 30 - sdk/include/boost/bind/bind_cc.hpp | 118 - sdk/include/boost/bind/bind_mf_cc.hpp | 228 - sdk/include/boost/bind/bind_template.hpp | 157 - sdk/include/boost/bind/make_adaptable.hpp | 172 - sdk/include/boost/bind/mem_fn_cc.hpp | 104 - sdk/include/boost/bind/mem_fn_template.hpp | 755 --- sdk/include/boost/bind/mem_fn_vw.hpp | 131 - sdk/include/boost/bind/placeholders.hpp | 67 - sdk/include/boost/bind/protect.hpp | 145 - sdk/include/boost/call_traits.hpp | 23 - sdk/include/boost/cast.hpp | 385 -- sdk/include/boost/checked_delete.hpp | 63 - .../boost/compatibility/cpp_c_headers/cassert | 10 - .../boost/compatibility/cpp_c_headers/cctype | 26 - .../boost/compatibility/cpp_c_headers/cerrno | 10 - .../boost/compatibility/cpp_c_headers/cfloat | 10 - .../boost/compatibility/cpp_c_headers/climits | 10 - .../boost/compatibility/cpp_c_headers/clocale | 16 - .../boost/compatibility/cpp_c_headers/cmath | 35 - .../boost/compatibility/cpp_c_headers/csetjmp | 15 - .../boost/compatibility/cpp_c_headers/csignal | 16 - .../boost/compatibility/cpp_c_headers/cstdarg | 14 - .../boost/compatibility/cpp_c_headers/cstddef | 15 - .../boost/compatibility/cpp_c_headers/cstdio | 57 - .../boost/compatibility/cpp_c_headers/cstdlib | 43 - .../boost/compatibility/cpp_c_headers/cstring | 36 - .../boost/compatibility/cpp_c_headers/ctime | 26 - .../boost/compatibility/cpp_c_headers/cwchar | 156 - .../boost/compatibility/cpp_c_headers/cwctype | 39 - sdk/include/boost/compose.hpp | 229 - sdk/include/boost/compressed_pair.hpp | 23 - sdk/include/boost/concept_archetype.hpp | 691 --- sdk/include/boost/concept_check.hpp | 1076 ---- sdk/include/boost/config.hpp | 69 - sdk/include/boost/config/compiler/borland.hpp | 119 - sdk/include/boost/config/compiler/comeau.hpp | 65 - .../boost/config/compiler/common_edg.hpp | 48 - .../boost/config/compiler/compaq_cxx.hpp | 18 - sdk/include/boost/config/compiler/gcc.hpp | 68 - .../boost/config/compiler/greenhills.hpp | 27 - sdk/include/boost/config/compiler/hp_acc.hpp | 57 - sdk/include/boost/config/compiler/intel.hpp | 90 - sdk/include/boost/config/compiler/kai.hpp | 32 - .../boost/config/compiler/metrowerks.hpp | 75 - sdk/include/boost/config/compiler/mpw.hpp | 49 - .../boost/config/compiler/sgi_mipspro.hpp | 23 - .../boost/config/compiler/sunpro_cc.hpp | 71 - sdk/include/boost/config/compiler/vacpp.hpp | 51 - sdk/include/boost/config/compiler/visualc.hpp | 123 - sdk/include/boost/config/platform/aix.hpp | 32 - sdk/include/boost/config/platform/amigaos.hpp | 15 - sdk/include/boost/config/platform/beos.hpp | 25 - sdk/include/boost/config/platform/bsd.hpp | 65 - sdk/include/boost/config/platform/cygwin.hpp | 39 - sdk/include/boost/config/platform/hpux.hpp | 60 - sdk/include/boost/config/platform/irix.hpp | 24 - sdk/include/boost/config/platform/linux.hpp | 94 - sdk/include/boost/config/platform/macos.hpp | 66 - sdk/include/boost/config/platform/solaris.hpp | 19 - sdk/include/boost/config/platform/win32.hpp | 67 - sdk/include/boost/config/posix_features.hpp | 85 - .../boost/config/select_compiler_config.hpp | 78 - .../boost/config/select_platform_config.hpp | 84 - .../boost/config/select_stdlib_config.hpp | 65 - .../boost/config/stdlib/dinkumware.hpp | 89 - sdk/include/boost/config/stdlib/libcomo.hpp | 33 - .../boost/config/stdlib/libstdcpp3.hpp | 25 - sdk/include/boost/config/stdlib/modena.hpp | 29 - sdk/include/boost/config/stdlib/msl.hpp | 50 - sdk/include/boost/config/stdlib/roguewave.hpp | 118 - sdk/include/boost/config/stdlib/sgi.hpp | 107 - sdk/include/boost/config/stdlib/stlport.hpp | 159 - sdk/include/boost/config/stdlib/vacpp.hpp | 16 - sdk/include/boost/config/suffix.hpp | 383 -- sdk/include/boost/config/user.hpp | 68 - sdk/include/boost/counting_iterator.hpp | 229 - sdk/include/boost/crc.hpp | 1068 ---- sdk/include/boost/cregex.hpp | 37 - sdk/include/boost/cstdint.hpp | 395 -- sdk/include/boost/cstdlib.hpp | 42 - sdk/include/boost/current_function.hpp | 58 - .../boost/date_time/adjust_functors.hpp | 135 - .../boost/date_time/c_local_time_adjustor.hpp | 72 - sdk/include/boost/date_time/c_time.hpp | 39 - .../boost/date_time/compiler_config.hpp | 41 - .../boost/date_time/constrained_value.hpp | 103 - sdk/include/boost/date_time/date.hpp | 178 - .../boost/date_time/date_clock_device.hpp | 83 - sdk/include/boost/date_time/date_defs.hpp | 36 - sdk/include/boost/date_time/date_duration.hpp | 77 - .../boost/date_time/date_format_simple.hpp | 95 - .../boost/date_time/date_formatting.hpp | 127 - .../date_time/date_formatting_locales.hpp | 238 - .../boost/date_time/date_generators.hpp | 282 - sdk/include/boost/date_time/date_iterator.hpp | 98 - .../boost/date_time/date_names_put.hpp | 286 - sdk/include/boost/date_time/date_parsing.hpp | 103 - sdk/include/boost/date_time/dst_rules.hpp | 354 -- .../boost/date_time/gregorian/formatters.hpp | 111 - .../date_time/gregorian/greg_calendar.hpp | 54 - .../boost/date_time/gregorian/greg_date.hpp | 118 - .../boost/date_time/gregorian/greg_day.hpp | 60 - .../date_time/gregorian/greg_day_of_year.hpp | 45 - .../date_time/gregorian/greg_duration.hpp | 41 - .../boost/date_time/gregorian/greg_facet.hpp | 131 - .../boost/date_time/gregorian/greg_month.hpp | 78 - .../date_time/gregorian/greg_weekday.hpp | 68 - .../boost/date_time/gregorian/greg_year.hpp | 60 - .../boost/date_time/gregorian/greg_ymd.hpp | 40 - .../boost/date_time/gregorian/gregorian.hpp | 32 - .../date_time/gregorian/gregorian_types.hpp | 82 - .../boost/date_time/gregorian/parsers.hpp | 62 - .../boost/date_time/gregorian_calendar.hpp | 77 - .../boost/date_time/gregorian_calendar.ipp | 229 - sdk/include/boost/date_time/int_adapter.hpp | 212 - sdk/include/boost/date_time/iso_format.hpp | 177 - .../boost/date_time/local_time_adjustor.hpp | 221 - .../boost/date_time/local_timezone_defs.hpp | 140 - sdk/include/boost/date_time/locale_config.hpp | 35 - .../boost/date_time/microsec_time_clock.hpp | 72 - .../boost/date_time/parse_format_base.hpp | 33 - sdk/include/boost/date_time/period.hpp | 338 -- .../boost/date_time/posix_time/posix_time.hpp | 30 - .../posix_time/posix_time_config.hpp | 154 - .../posix_time/posix_time_duration.hpp | 87 - .../posix_time/posix_time_system.hpp | 77 - .../date_time/posix_time/posix_time_types.hpp | 62 - .../boost/date_time/posix_time/ptime.hpp | 55 - .../date_time/posix_time/time_formatters.hpp | 169 - .../date_time/posix_time/time_parsers.hpp | 46 - .../date_time/posix_time/time_period.hpp | 37 - sdk/include/boost/date_time/special_defs.hpp | 32 - sdk/include/boost/date_time/testfrmwk.hpp | 74 - sdk/include/boost/date_time/time.hpp | 156 - sdk/include/boost/date_time/time_clock.hpp | 75 - sdk/include/boost/date_time/time_defs.hpp | 49 - sdk/include/boost/date_time/time_duration.hpp | 191 - .../date_time/time_formatting_streams.hpp | 108 - sdk/include/boost/date_time/time_iterator.hpp | 54 - sdk/include/boost/date_time/time_parsing.hpp | 153 - .../date_time/time_resolution_traits.hpp | 77 - .../boost/date_time/time_system_counted.hpp | 149 - .../boost/date_time/time_system_split.hpp | 132 - sdk/include/boost/date_time/wrapping_int.hpp | 137 - .../boost/date_time/year_month_day.hpp | 52 - sdk/include/boost/detail/algorithm.hpp | 249 - sdk/include/boost/detail/allocator.hpp | 283 - sdk/include/boost/detail/atomic_count.hpp | 112 - sdk/include/boost/detail/atomic_count_gcc.hpp | 61 - .../boost/detail/atomic_count_linux.hpp | 70 - .../boost/detail/atomic_count_pthreads.hpp | 97 - .../boost/detail/atomic_count_win32.hpp | 96 - sdk/include/boost/detail/binary_search.hpp | 217 - sdk/include/boost/detail/call_traits.hpp | 158 - sdk/include/boost/detail/catch_exceptions.hpp | 147 - sdk/include/boost/detail/compressed_pair.hpp | 435 -- sdk/include/boost/detail/dynamic_bitset.hpp | 176 - sdk/include/boost/detail/iterator.hpp | 432 -- .../boost/detail/lightweight_mutex.hpp | 89 - sdk/include/boost/detail/lightweight_test.hpp | 74 - sdk/include/boost/detail/limits.hpp | 463 -- sdk/include/boost/detail/lwm_gcc.hpp | 78 - sdk/include/boost/detail/lwm_irix.hpp | 78 - sdk/include/boost/detail/lwm_linux.hpp | 89 - sdk/include/boost/detail/lwm_nop.hpp | 36 - sdk/include/boost/detail/lwm_pthreads.hpp | 85 - sdk/include/boost/detail/lwm_win32.hpp | 121 - sdk/include/boost/detail/lwm_win32_cs.hpp | 103 - .../boost/detail/named_template_params.hpp | 178 - sdk/include/boost/detail/numeric_traits.hpp | 198 - sdk/include/boost/detail/ob_call_traits.hpp | 169 - .../boost/detail/ob_compressed_pair.hpp | 509 -- sdk/include/boost/detail/quick_allocator.hpp | 187 - sdk/include/boost/detail/select_type.hpp | 37 - sdk/include/boost/detail/shared_array_nmt.hpp | 152 - sdk/include/boost/detail/shared_count.hpp | 552 -- sdk/include/boost/detail/shared_ptr_nmt.hpp | 183 - sdk/include/boost/detail/workaround.hpp | 69 - sdk/include/boost/dynamic_bitset.hpp | 1415 ----- sdk/include/boost/dynamic_bitset_fwd.hpp | 24 - sdk/include/boost/enable_shared_from_this.hpp | 49 - sdk/include/boost/filesystem/convenience.hpp | 38 - sdk/include/boost/filesystem/exception.hpp | 105 - sdk/include/boost/filesystem/fstream.hpp | 124 - sdk/include/boost/filesystem/operations.hpp | 121 - sdk/include/boost/filesystem/path.hpp | 213 - sdk/include/boost/format.hpp | 101 - sdk/include/boost/format/exceptions.hpp | 96 - sdk/include/boost/format/feed_args.hpp | 265 - sdk/include/boost/format/format_class.hpp | 148 - sdk/include/boost/format/format_fwd.hpp | 57 - .../boost/format/format_implementation.hpp | 268 - sdk/include/boost/format/free_funcs.hpp | 72 - sdk/include/boost/format/group.hpp | 682 --- sdk/include/boost/format/internals.hpp | 169 - sdk/include/boost/format/internals_fwd.hpp | 66 - sdk/include/boost/format/macros_default.hpp | 50 - sdk/include/boost/format/macros_stlport.hpp | 45 - .../boost/format/msvc_disambiguater.hpp | 61 - sdk/include/boost/format/parsing.hpp | 457 -- sdk/include/boost/function.hpp | 70 - .../function/detail/function_iterate.hpp | 22 - .../function/detail/gen_maybe_include.pl | 37 - .../boost/function/detail/maybe_include.hpp | 273 - .../boost/function/detail/prologue.hpp | 30 - sdk/include/boost/function/function0.hpp | 18 - sdk/include/boost/function/function1.hpp | 18 - sdk/include/boost/function/function10.hpp | 18 - sdk/include/boost/function/function2.hpp | 18 - sdk/include/boost/function/function3.hpp | 18 - sdk/include/boost/function/function4.hpp | 18 - sdk/include/boost/function/function5.hpp | 18 - sdk/include/boost/function/function6.hpp | 18 - sdk/include/boost/function/function7.hpp | 18 - sdk/include/boost/function/function8.hpp | 18 - sdk/include/boost/function/function9.hpp | 18 - sdk/include/boost/function/function_base.hpp | 416 -- .../boost/function/function_template.hpp | 674 --- sdk/include/boost/function/gen_function_N.pl | 32 - .../boost/function_output_iterator.hpp | 55 - sdk/include/boost/functional.hpp | 556 -- sdk/include/boost/generator_iterator.hpp | 75 - sdk/include/boost/get_pointer.hpp | 30 - .../boost/graph/adjacency_iterator.hpp | 98 - sdk/include/boost/graph/adjacency_list.hpp | 431 -- sdk/include/boost/graph/adjacency_list_io.hpp | 374 -- sdk/include/boost/graph/adjacency_matrix.hpp | 915 --- sdk/include/boost/graph/bandwidth.hpp | 83 - .../graph/bellman_ford_shortest_paths.hpp | 199 - .../boost/graph/biconnected_components.hpp | 112 - .../boost/graph/breadth_first_search.hpp | 298 - .../boost/graph/connected_components.hpp | 113 - sdk/include/boost/graph/copy.hpp | 466 -- .../boost/graph/create_condensation_graph.hpp | 97 - .../boost/graph/cuthill_mckee_ordering.hpp | 242 - .../boost/graph/dag_shortest_paths.hpp | 163 - .../boost/graph/depth_first_search.hpp | 247 - .../graph/detail/adj_list_edge_iterator.hpp | 107 - .../boost/graph/detail/adjacency_list.hpp | 2578 -------- .../boost/graph/detail/array_binary_tree.hpp | 196 - sdk/include/boost/graph/detail/bitset.hpp | 906 --- .../boost/graph/detail/bitset_adaptor.hpp | 104 - .../graph/detail/connected_components.hpp | 224 - sdk/include/boost/graph/detail/edge.hpp | 110 - .../boost/graph/detail/incidence_iterator.hpp | 95 - .../graph/detail/incremental_components.hpp | 154 - sdk/include/boost/graph/detail/intset.hpp | 93 - sdk/include/boost/graph/detail/is_same.hpp | 56 - sdk/include/boost/graph/detail/list_base.hpp | 234 - .../boost/graph/detail/permutation.hpp | 206 - .../boost/graph/detail/self_avoiding_walk.hpp | 434 -- .../boost/graph/detail/set_adaptor.hpp | 118 - .../boost/graph/detail/shadow_iterator.hpp | 140 - .../boost/graph/dijkstra_shortest_paths.hpp | 293 - sdk/include/boost/graph/edge_connectivity.hpp | 197 - sdk/include/boost/graph/edge_list.hpp | 319 - .../boost/graph/edmunds_karp_max_flow.hpp | 269 - sdk/include/boost/graph/exception.hpp | 57 - sdk/include/boost/graph/filtered_graph.hpp | 490 -- sdk/include/boost/graph/graph_archetypes.hpp | 304 - sdk/include/boost/graph/graph_as_tree.hpp | 170 - sdk/include/boost/graph/graph_concepts.hpp | 471 -- sdk/include/boost/graph/graph_selectors.hpp | 50 - sdk/include/boost/graph/graph_test.hpp | 397 -- sdk/include/boost/graph/graph_traits.hpp | 130 - sdk/include/boost/graph/graph_utility.hpp | 435 -- sdk/include/boost/graph/graphviz.hpp | 452 -- .../boost/graph/incremental_components.hpp | 186 - sdk/include/boost/graph/isomorphism.hpp | 431 -- sdk/include/boost/graph/iteration_macros.hpp | 143 - .../boost/graph/iteration_macros_undef.hpp | 36 - .../graph/johnson_all_pairs_shortest.hpp | 200 - .../boost/graph/kruskal_min_spanning_tree.hpp | 168 - sdk/include/boost/graph/leda_graph.hpp | 587 -- sdk/include/boost/graph/matrix_as_graph.hpp | 143 - .../boost/graph/minimum_degree_ordering.hpp | 669 -- .../boost/graph/named_function_params.hpp | 605 -- sdk/include/boost/graph/neighbor_bfs.hpp | 339 -- .../graph/prim_minimum_spanning_tree.hpp | 107 - sdk/include/boost/graph/profile.hpp | 60 - sdk/include/boost/graph/properties.hpp | 332 - .../boost/graph/property_iter_range.hpp | 118 - .../boost/graph/push_relabel_max_flow.hpp | 735 --- sdk/include/boost/graph/random.hpp | 205 - sdk/include/boost/graph/read_dimacs.hpp | 294 - sdk/include/boost/graph/relax.hpp | 99 - sdk/include/boost/graph/reverse_graph.hpp | 272 - .../graph/sequential_vertex_coloring.hpp | 109 - sdk/include/boost/graph/sloan_ordering.hpp | 464 -- .../boost/graph/smallest_last_ordering.hpp | 125 - sdk/include/boost/graph/stanford_graph.hpp | 581 -- sdk/include/boost/graph/strong_components.hpp | 350 -- sdk/include/boost/graph/subgraph.hpp | 780 --- sdk/include/boost/graph/topological_sort.hpp | 92 - .../boost/graph/transitive_closure.hpp | 352 -- sdk/include/boost/graph/transpose_graph.hpp | 56 - sdk/include/boost/graph/tree_traits.hpp | 44 - sdk/include/boost/graph/undirected_dfs.hpp | 195 - sdk/include/boost/graph/vector_as_graph.hpp | 291 - sdk/include/boost/graph/visitors.hpp | 264 - sdk/include/boost/graph/wavefront.hpp | 148 - sdk/include/boost/half_open_range.hpp | 426 -- sdk/include/boost/integer.hpp | 129 - sdk/include/boost/integer/integer_mask.hpp | 93 - sdk/include/boost/integer/static_log2.hpp | 141 - sdk/include/boost/integer/static_min_max.hpp | 56 - sdk/include/boost/integer_fwd.hpp | 154 - sdk/include/boost/integer_traits.hpp | 217 - sdk/include/boost/intrusive_ptr.hpp | 247 - sdk/include/boost/io/ios_state.hpp | 361 -- sdk/include/boost/io_fwd.hpp | 68 - sdk/include/boost/iterator.hpp | 60 - sdk/include/boost/iterator_adaptors.hpp | 1437 ----- sdk/include/boost/lambda/algorithm.hpp | 1378 ----- sdk/include/boost/lambda/bind.hpp | 24 - sdk/include/boost/lambda/casts.hpp | 224 - sdk/include/boost/lambda/closures.hpp | 289 - sdk/include/boost/lambda/construct.hpp | 242 - .../boost/lambda/control_structures.hpp | 27 - sdk/include/boost/lambda/core.hpp | 84 - sdk/include/boost/lambda/detail/actions.hpp | 179 - .../boost/lambda/detail/arity_code.hpp | 115 - .../boost/lambda/detail/bind_functions.hpp | 1874 ------ .../detail/control_constructs_common.hpp | 55 - .../lambda/detail/control_structures_impl.hpp | 555 -- .../boost/lambda/detail/function_adaptors.hpp | 645 -- .../boost/lambda/detail/is_instance_of.hpp | 109 - .../boost/lambda/detail/lambda_config.hpp | 49 - .../lambda/detail/lambda_functor_base.hpp | 604 -- .../boost/lambda/detail/lambda_functors.hpp | 217 - .../boost/lambda/detail/lambda_fwd.hpp | 79 - .../boost/lambda/detail/lambda_traits.hpp | 532 -- .../boost/lambda/detail/member_ptr.hpp | 742 --- .../boost/lambda/detail/operator_actions.hpp | 144 - .../detail/operator_lambda_func_base.hpp | 276 - .../detail/operator_return_type_traits.hpp | 925 --- sdk/include/boost/lambda/detail/operators.hpp | 365 -- sdk/include/boost/lambda/detail/ret.hpp | 330 - .../lambda/detail/return_type_traits.hpp | 264 - .../boost/lambda/detail/select_functions.hpp | 79 - sdk/include/boost/lambda/exceptions.hpp | 1745 ------ sdk/include/boost/lambda/if.hpp | 494 -- sdk/include/boost/lambda/lambda.hpp | 39 - sdk/include/boost/lambda/loops.hpp | 538 -- sdk/include/boost/lambda/numeric.hpp | 124 - sdk/include/boost/lambda/switch.hpp | 507 -- sdk/include/boost/last_value.hpp | 54 - sdk/include/boost/lexical_cast.hpp | 207 - sdk/include/boost/limits.hpp | 141 - sdk/include/boost/math/common_factor.hpp | 17 - sdk/include/boost/math/common_factor_ct.hpp | 188 - sdk/include/boost/math/common_factor_rt.hpp | 408 -- sdk/include/boost/math/octonion.hpp | 4742 --------------- sdk/include/boost/math/quaternion.hpp | 1912 ------ .../boost/math/special_functions/acosh.hpp | 198 - .../boost/math/special_functions/asinh.hpp | 101 - .../boost/math/special_functions/atanh.hpp | 267 - .../boost/math/special_functions/sinc.hpp | 140 - .../boost/math/special_functions/sinhc.hpp | 140 - sdk/include/boost/math_fwd.hpp | 103 - sdk/include/boost/mem_fn.hpp | 319 - sdk/include/boost/min_rand.hpp | 71 - sdk/include/boost/mpl/O1_size.hpp | 43 - sdk/include/boost/mpl/O1_size_fwd.hpp | 29 - sdk/include/boost/mpl/advance.hpp | 194 - sdk/include/boost/mpl/alias.hpp | 24 - sdk/include/boost/mpl/always.hpp | 48 - sdk/include/boost/mpl/and.hpp | 42 - sdk/include/boost/mpl/apply.hpp | 351 -- sdk/include/boost/mpl/apply_if.hpp | 64 - sdk/include/boost/mpl/arg.hpp | 141 - sdk/include/boost/mpl/arg_fwd.hpp | 30 - sdk/include/boost/mpl/arithmetic.hpp | 28 - sdk/include/boost/mpl/as_sequence.hpp | 49 - sdk/include/boost/mpl/assert_is_same.hpp | 46 - sdk/include/boost/mpl/at.hpp | 57 - sdk/include/boost/mpl/at_fwd.hpp | 29 - sdk/include/boost/mpl/aux_/O1_size_impl.hpp | 72 - .../boost/mpl/aux_/advance_backward.hpp | 129 - .../boost/mpl/aux_/advance_forward.hpp | 128 - .../boost/mpl/aux_/algorithm_namespace.hpp | 34 - sdk/include/boost/mpl/aux_/apply.hpp | 72 - sdk/include/boost/mpl/aux_/apply_1st.hpp | 42 - sdk/include/boost/mpl/aux_/arg_typedef.hpp | 28 - sdk/include/boost/mpl/aux_/arity.hpp | 46 - sdk/include/boost/mpl/aux_/arity_spec.hpp | 49 - sdk/include/boost/mpl/aux_/at_impl.hpp | 50 - sdk/include/boost/mpl/aux_/back_impl.hpp | 53 - sdk/include/boost/mpl/aux_/begin_end_impl.hpp | 88 - .../boost/mpl/aux_/bool_value_wknd.hpp | 51 - sdk/include/boost/mpl/aux_/clear_impl.hpp | 39 - .../boost/mpl/aux_/common_name_wknd.hpp | 35 - sdk/include/boost/mpl/aux_/config/bind.hpp | 28 - .../boost/mpl/aux_/config/compiler.hpp | 57 - sdk/include/boost/mpl/aux_/config/ctps.hpp | 29 - .../boost/mpl/aux_/config/dependent_nttp.hpp | 34 - sdk/include/boost/mpl/aux_/config/dtp.hpp | 41 - sdk/include/boost/mpl/aux_/config/eti.hpp | 30 - .../boost/mpl/aux_/config/internals.hpp | 27 - sdk/include/boost/mpl/aux_/config/lambda.hpp | 35 - sdk/include/boost/mpl/aux_/config/msvc.hpp | 23 - .../boost/mpl/aux_/config/msvc_typename.hpp | 28 - sdk/include/boost/mpl/aux_/config/nttp.hpp | 56 - .../mpl/aux_/config/overload_resolution.hpp | 28 - .../boost/mpl/aux_/config/preprocessor.hpp | 30 - .../boost/mpl/aux_/config/static_constant.hpp | 25 - sdk/include/boost/mpl/aux_/config/ttp.hpp | 34 - .../mpl/aux_/config/use_preprocessed.hpp | 22 - sdk/include/boost/mpl/aux_/config/vector.hpp | 28 - .../boost/mpl/aux_/config/workaround.hpp | 22 - sdk/include/boost/mpl/aux_/copy_if_op.hpp | 53 - sdk/include/boost/mpl/aux_/copy_op.hpp | 50 - sdk/include/boost/mpl/aux_/count_args.hpp | 103 - sdk/include/boost/mpl/aux_/debug_print.hpp | 38 - sdk/include/boost/mpl/aux_/deref_wknd.hpp | 47 - sdk/include/boost/mpl/aux_/empty_impl.hpp | 48 - sdk/include/boost/mpl/aux_/erase_impl.hpp | 74 - sdk/include/boost/mpl/aux_/filter_iter.hpp | 147 - .../boost/mpl/aux_/fold_backward_impl.hpp | 46 - .../mpl/aux_/fold_backward_impl_body.hpp | 421 -- sdk/include/boost/mpl/aux_/fold_impl.hpp | 46 - sdk/include/boost/mpl/aux_/fold_impl_body.hpp | 378 -- sdk/include/boost/mpl/aux_/fold_op.hpp | 44 - sdk/include/boost/mpl/aux_/fold_pred.hpp | 44 - sdk/include/boost/mpl/aux_/front_impl.hpp | 46 - sdk/include/boost/mpl/aux_/full_lambda.hpp | 334 - sdk/include/boost/mpl/aux_/has_begin.hpp | 26 - sdk/include/boost/mpl/aux_/has_rebind.hpp | 41 - sdk/include/boost/mpl/aux_/has_size.hpp | 26 - sdk/include/boost/mpl/aux_/has_tag.hpp | 26 - sdk/include/boost/mpl/aux_/has_type.hpp | 26 - sdk/include/boost/mpl/aux_/has_xxx.hpp | 168 - sdk/include/boost/mpl/aux_/ice_cast.hpp | 31 - .../boost/mpl/aux_/include_preprocessed.hpp | 30 - sdk/include/boost/mpl/aux_/insert_impl.hpp | 73 - .../boost/mpl/aux_/insert_range_impl.hpp | 85 - .../boost/mpl/aux_/integral_wrapper.hpp | 86 - .../boost/mpl/aux_/is_msvc_eti_arg.hpp | 67 - sdk/include/boost/mpl/aux_/iter_apply.hpp | 53 - sdk/include/boost/mpl/aux_/iter_distance.hpp | 62 - .../mpl/aux_/iter_fold_backward_impl.hpp | 46 - .../boost/mpl/aux_/iter_fold_if_impl.hpp | 218 - sdk/include/boost/mpl/aux_/iter_fold_impl.hpp | 46 - .../boost/mpl/aux_/iter_push_front.hpp | 42 - .../boost/mpl/aux_/iterator_category.hpp | 33 - sdk/include/boost/mpl/aux_/iterator_names.hpp | 30 - sdk/include/boost/mpl/aux_/joint_iter.hpp | 140 - .../boost/mpl/aux_/lambda_arity_param.hpp | 28 - sdk/include/boost/mpl/aux_/lambda_expr.hpp | 30 - sdk/include/boost/mpl/aux_/lambda_no_ctps.hpp | 137 - sdk/include/boost/mpl/aux_/lambda_spec.hpp | 47 - sdk/include/boost/mpl/aux_/lambda_support.hpp | 136 - sdk/include/boost/mpl/aux_/logical_op.hpp | 169 - sdk/include/boost/mpl/aux_/metafunction.hpp | 24 - sdk/include/boost/mpl/aux_/msvc_dtw.hpp | 56 - sdk/include/boost/mpl/aux_/msvc_eti_base.hpp | 60 - .../boost/mpl/aux_/msvc_never_true.hpp | 40 - .../boost/mpl/aux_/nested_type_wknd.hpp | 44 - sdk/include/boost/mpl/aux_/next.hpp | 34 - sdk/include/boost/mpl/aux_/pop_back_impl.hpp | 39 - sdk/include/boost/mpl/aux_/pop_front_impl.hpp | 39 - sdk/include/boost/mpl/aux_/pred.hpp | 39 - .../preprocessed/bcc/advance_backward.hpp | 88 - .../aux_/preprocessed/bcc/advance_forward.hpp | 88 - .../boost/mpl/aux_/preprocessed/bcc/and.hpp | 62 - .../boost/mpl/aux_/preprocessed/bcc/apply.hpp | 509 -- .../boost/mpl/aux_/preprocessed/bcc/arg.hpp | 100 - .../mpl/aux_/preprocessed/bcc/basic_bind.hpp | 319 - .../boost/mpl/aux_/preprocessed/bcc/bind.hpp | 416 -- .../preprocessed/bcc/fold_backward_impl.hpp | 297 - .../mpl/aux_/preprocessed/bcc/fold_impl.hpp | 56 - .../mpl/aux_/preprocessed/bcc/full_lambda.hpp | 588 -- .../bcc/iter_fold_backward_impl.hpp | 297 - .../preprocessed/bcc/iter_fold_if_impl.hpp | 129 - .../aux_/preprocessed/bcc/iter_fold_impl.hpp | 56 - .../aux_/preprocessed/bcc/lambda_helper.hpp | 120 - .../aux_/preprocessed/bcc/lambda_no_ctps.hpp | 160 - .../boost/mpl/aux_/preprocessed/bcc/list.hpp | 129 - .../mpl/aux_/preprocessed/bcc/list_c.hpp | 151 - .../boost/mpl/aux_/preprocessed/bcc/or.hpp | 62 - .../aux_/preprocessed/bcc/placeholders.hpp | 54 - .../boost/mpl/aux_/preprocessed/bcc/quote.hpp | 3 - .../aux_/preprocessed/bcc/template_arity.hpp | 33 - .../mpl/aux_/preprocessed/bcc/vector.hpp | 129 - .../mpl/aux_/preprocessed/bcc/vector_c.hpp | 153 - .../preprocessed/bcc551/advance_backward.hpp | 88 - .../preprocessed/bcc551/advance_forward.hpp | 88 - .../mpl/aux_/preprocessed/bcc551/and.hpp | 62 - .../mpl/aux_/preprocessed/bcc551/apply.hpp | 509 -- .../mpl/aux_/preprocessed/bcc551/arg.hpp | 106 - .../aux_/preprocessed/bcc551/basic_bind.hpp | 327 - .../mpl/aux_/preprocessed/bcc551/bind.hpp | 424 -- .../bcc551/fold_backward_impl.hpp | 297 - .../aux_/preprocessed/bcc551/fold_impl.hpp | 56 - .../aux_/preprocessed/bcc551/full_lambda.hpp | 588 -- .../bcc551/iter_fold_backward_impl.hpp | 297 - .../preprocessed/bcc551/iter_fold_if_impl.hpp | 129 - .../preprocessed/bcc551/iter_fold_impl.hpp | 56 - .../preprocessed/bcc551/lambda_helper.hpp | 120 - .../preprocessed/bcc551/lambda_no_ctps.hpp | 160 - .../mpl/aux_/preprocessed/bcc551/list.hpp | 129 - .../mpl/aux_/preprocessed/bcc551/list_c.hpp | 151 - .../boost/mpl/aux_/preprocessed/bcc551/or.hpp | 62 - .../aux_/preprocessed/bcc551/placeholders.hpp | 54 - .../mpl/aux_/preprocessed/bcc551/quote.hpp | 3 - .../preprocessed/bcc551/template_arity.hpp | 33 - .../mpl/aux_/preprocessed/bcc551/vector.hpp | 129 - .../mpl/aux_/preprocessed/bcc551/vector_c.hpp | 153 - .../preprocessed/gcc/advance_backward.hpp | 88 - .../aux_/preprocessed/gcc/advance_forward.hpp | 88 - .../boost/mpl/aux_/preprocessed/gcc/and.hpp | 62 - .../boost/mpl/aux_/preprocessed/gcc/apply.hpp | 121 - .../boost/mpl/aux_/preprocessed/gcc/arg.hpp | 136 - .../mpl/aux_/preprocessed/gcc/basic_bind.hpp | 399 -- .../boost/mpl/aux_/preprocessed/gcc/bind.hpp | 496 -- .../preprocessed/gcc/fold_backward_impl.hpp | 223 - .../mpl/aux_/preprocessed/gcc/fold_impl.hpp | 177 - .../mpl/aux_/preprocessed/gcc/full_lambda.hpp | 588 -- .../gcc/iter_fold_backward_impl.hpp | 222 - .../preprocessed/gcc/iter_fold_if_impl.hpp | 129 - .../aux_/preprocessed/gcc/iter_fold_impl.hpp | 176 - .../aux_/preprocessed/gcc/lambda_helper.hpp | 120 - .../aux_/preprocessed/gcc/lambda_no_ctps.hpp | 160 - .../boost/mpl/aux_/preprocessed/gcc/list.hpp | 129 - .../mpl/aux_/preprocessed/gcc/list_c.hpp | 151 - .../boost/mpl/aux_/preprocessed/gcc/or.hpp | 62 - .../aux_/preprocessed/gcc/placeholders.hpp | 54 - .../boost/mpl/aux_/preprocessed/gcc/quote.hpp | 98 - .../aux_/preprocessed/gcc/template_arity.hpp | 82 - .../mpl/aux_/preprocessed/gcc/vector.hpp | 129 - .../mpl/aux_/preprocessed/gcc/vector_c.hpp | 153 - .../preprocessed/msvc60/advance_backward.hpp | 118 - .../preprocessed/msvc60/advance_forward.hpp | 118 - .../mpl/aux_/preprocessed/msvc60/and.hpp | 68 - .../mpl/aux_/preprocessed/msvc60/apply.hpp | 282 - .../mpl/aux_/preprocessed/msvc60/arg.hpp | 136 - .../aux_/preprocessed/msvc60/basic_bind.hpp | 330 - .../mpl/aux_/preprocessed/msvc60/bind.hpp | 434 -- .../msvc60/fold_backward_impl.hpp | 339 -- .../aux_/preprocessed/msvc60/fold_impl.hpp | 294 - .../aux_/preprocessed/msvc60/full_lambda.hpp | 588 -- .../msvc60/iter_fold_backward_impl.hpp | 339 -- .../preprocessed/msvc60/iter_fold_if_impl.hpp | 129 - .../preprocessed/msvc60/iter_fold_impl.hpp | 294 - .../preprocessed/msvc60/lambda_helper.hpp | 120 - .../preprocessed/msvc60/lambda_no_ctps.hpp | 160 - .../mpl/aux_/preprocessed/msvc60/list.hpp | 279 - .../mpl/aux_/preprocessed/msvc60/list_c.hpp | 302 - .../boost/mpl/aux_/preprocessed/msvc60/or.hpp | 68 - .../aux_/preprocessed/msvc60/placeholders.hpp | 54 - .../mpl/aux_/preprocessed/msvc60/quote.hpp | 3 - .../preprocessed/msvc60/template_arity.hpp | 39 - .../mpl/aux_/preprocessed/msvc60/vector.hpp | 278 - .../mpl/aux_/preprocessed/msvc60/vector_c.hpp | 302 - .../preprocessed/msvc70/advance_backward.hpp | 88 - .../preprocessed/msvc70/advance_forward.hpp | 88 - .../mpl/aux_/preprocessed/msvc70/and.hpp | 65 - .../mpl/aux_/preprocessed/msvc70/apply.hpp | 315 - .../mpl/aux_/preprocessed/msvc70/arg.hpp | 136 - .../aux_/preprocessed/msvc70/basic_bind.hpp | 330 - .../mpl/aux_/preprocessed/msvc70/bind.hpp | 434 -- .../msvc70/fold_backward_impl.hpp | 297 - .../aux_/preprocessed/msvc70/fold_impl.hpp | 252 - .../aux_/preprocessed/msvc70/full_lambda.hpp | 588 -- .../msvc70/iter_fold_backward_impl.hpp | 297 - .../preprocessed/msvc70/iter_fold_if_impl.hpp | 129 - .../preprocessed/msvc70/iter_fold_impl.hpp | 252 - .../preprocessed/msvc70/lambda_helper.hpp | 120 - .../preprocessed/msvc70/lambda_no_ctps.hpp | 160 - .../mpl/aux_/preprocessed/msvc70/list.hpp | 279 - .../mpl/aux_/preprocessed/msvc70/list_c.hpp | 291 - .../boost/mpl/aux_/preprocessed/msvc70/or.hpp | 65 - .../aux_/preprocessed/msvc70/placeholders.hpp | 54 - .../mpl/aux_/preprocessed/msvc70/quote.hpp | 106 - .../preprocessed/msvc70/template_arity.hpp | 39 - .../mpl/aux_/preprocessed/msvc70/vector.hpp | 278 - .../mpl/aux_/preprocessed/msvc70/vector_c.hpp | 291 - .../preprocessed/mwcw/advance_backward.hpp | 88 - .../preprocessed/mwcw/advance_forward.hpp | 88 - .../boost/mpl/aux_/preprocessed/mwcw/and.hpp | 62 - .../mpl/aux_/preprocessed/mwcw/apply.hpp | 452 -- .../boost/mpl/aux_/preprocessed/mwcw/arg.hpp | 136 - .../mpl/aux_/preprocessed/mwcw/basic_bind.hpp | 399 -- .../boost/mpl/aux_/preprocessed/mwcw/bind.hpp | 496 -- .../preprocessed/mwcw/fold_backward_impl.hpp | 222 - .../mpl/aux_/preprocessed/mwcw/fold_impl.hpp | 176 - .../aux_/preprocessed/mwcw/full_lambda.hpp | 588 -- .../mwcw/iter_fold_backward_impl.hpp | 222 - .../preprocessed/mwcw/iter_fold_if_impl.hpp | 129 - .../aux_/preprocessed/mwcw/iter_fold_impl.hpp | 176 - .../aux_/preprocessed/mwcw/lambda_helper.hpp | 120 - .../aux_/preprocessed/mwcw/lambda_no_ctps.hpp | 160 - .../boost/mpl/aux_/preprocessed/mwcw/list.hpp | 129 - .../mpl/aux_/preprocessed/mwcw/list_c.hpp | 151 - .../boost/mpl/aux_/preprocessed/mwcw/or.hpp | 62 - .../aux_/preprocessed/mwcw/placeholders.hpp | 54 - .../mpl/aux_/preprocessed/mwcw/quote.hpp | 98 - .../aux_/preprocessed/mwcw/template_arity.hpp | 3 - .../mpl/aux_/preprocessed/mwcw/vector.hpp | 129 - .../mpl/aux_/preprocessed/mwcw/vector_c.hpp | 153 - .../preprocessed/no_ctps/advance_backward.hpp | 88 - .../preprocessed/no_ctps/advance_forward.hpp | 88 - .../mpl/aux_/preprocessed/no_ctps/and.hpp | 68 - .../mpl/aux_/preprocessed/no_ctps/apply.hpp | 273 - .../mpl/aux_/preprocessed/no_ctps/arg.hpp | 136 - .../aux_/preprocessed/no_ctps/basic_bind.hpp | 488 -- .../mpl/aux_/preprocessed/no_ctps/bind.hpp | 592 -- .../no_ctps/fold_backward_impl.hpp | 298 - .../aux_/preprocessed/no_ctps/fold_impl.hpp | 253 - .../aux_/preprocessed/no_ctps/full_lambda.hpp | 588 -- .../no_ctps/iter_fold_backward_impl.hpp | 297 - .../no_ctps/iter_fold_if_impl.hpp | 129 - .../preprocessed/no_ctps/iter_fold_impl.hpp | 252 - .../preprocessed/no_ctps/lambda_helper.hpp | 120 - .../preprocessed/no_ctps/lambda_no_ctps.hpp | 160 - .../mpl/aux_/preprocessed/no_ctps/list.hpp | 279 - .../mpl/aux_/preprocessed/no_ctps/list_c.hpp | 291 - .../mpl/aux_/preprocessed/no_ctps/or.hpp | 68 - .../preprocessed/no_ctps/placeholders.hpp | 54 - .../mpl/aux_/preprocessed/no_ctps/quote.hpp | 106 - .../preprocessed/no_ctps/template_arity.hpp | 33 - .../mpl/aux_/preprocessed/no_ctps/vector.hpp | 278 - .../aux_/preprocessed/no_ctps/vector_c.hpp | 291 - .../preprocessed/no_ttp/advance_backward.hpp | 88 - .../preprocessed/no_ttp/advance_forward.hpp | 88 - .../mpl/aux_/preprocessed/no_ttp/and.hpp | 62 - .../mpl/aux_/preprocessed/no_ttp/apply.hpp | 172 - .../mpl/aux_/preprocessed/no_ttp/arg.hpp | 136 - .../aux_/preprocessed/no_ttp/basic_bind.hpp | 399 -- .../mpl/aux_/preprocessed/no_ttp/bind.hpp | 496 -- .../no_ttp/fold_backward_impl.hpp | 223 - .../aux_/preprocessed/no_ttp/fold_impl.hpp | 177 - .../aux_/preprocessed/no_ttp/full_lambda.hpp | 588 -- .../no_ttp/iter_fold_backward_impl.hpp | 222 - .../preprocessed/no_ttp/iter_fold_if_impl.hpp | 129 - .../preprocessed/no_ttp/iter_fold_impl.hpp | 176 - .../preprocessed/no_ttp/lambda_helper.hpp | 120 - .../preprocessed/no_ttp/lambda_no_ctps.hpp | 160 - .../mpl/aux_/preprocessed/no_ttp/list.hpp | 129 - .../mpl/aux_/preprocessed/no_ttp/list_c.hpp | 151 - .../boost/mpl/aux_/preprocessed/no_ttp/or.hpp | 62 - .../aux_/preprocessed/no_ttp/placeholders.hpp | 54 - .../mpl/aux_/preprocessed/no_ttp/quote.hpp | 3 - .../preprocessed/no_ttp/template_arity.hpp | 33 - .../mpl/aux_/preprocessed/no_ttp/vector.hpp | 129 - .../mpl/aux_/preprocessed/no_ttp/vector_c.hpp | 153 - .../preprocessed/plain/advance_backward.hpp | 88 - .../preprocessed/plain/advance_forward.hpp | 88 - .../boost/mpl/aux_/preprocessed/plain/and.hpp | 62 - .../mpl/aux_/preprocessed/plain/apply.hpp | 121 - .../boost/mpl/aux_/preprocessed/plain/arg.hpp | 136 - .../aux_/preprocessed/plain/basic_bind.hpp | 399 -- .../mpl/aux_/preprocessed/plain/bind.hpp | 496 -- .../preprocessed/plain/fold_backward_impl.hpp | 223 - .../mpl/aux_/preprocessed/plain/fold_impl.hpp | 177 - .../aux_/preprocessed/plain/full_lambda.hpp | 588 -- .../plain/iter_fold_backward_impl.hpp | 222 - .../preprocessed/plain/iter_fold_if_impl.hpp | 129 - .../preprocessed/plain/iter_fold_impl.hpp | 176 - .../aux_/preprocessed/plain/lambda_helper.hpp | 120 - .../preprocessed/plain/lambda_no_ctps.hpp | 160 - .../mpl/aux_/preprocessed/plain/list.hpp | 129 - .../mpl/aux_/preprocessed/plain/list_c.hpp | 151 - .../boost/mpl/aux_/preprocessed/plain/or.hpp | 62 - .../aux_/preprocessed/plain/placeholders.hpp | 54 - .../mpl/aux_/preprocessed/plain/quote.hpp | 98 - .../preprocessed/plain/template_arity.hpp | 3 - .../mpl/aux_/preprocessed/plain/vector.hpp | 129 - .../mpl/aux_/preprocessed/plain/vector_c.hpp | 153 - .../boost/mpl/aux_/preprocessor/add.hpp | 55 - .../mpl/aux_/preprocessor/def_params_tail.hpp | 108 - .../mpl/aux_/preprocessor/default_params.hpp | 70 - .../boost/mpl/aux_/preprocessor/enum.hpp | 65 - .../mpl/aux_/preprocessor/ext_params.hpp | 81 - .../mpl/aux_/preprocessor/filter_params.hpp | 31 - .../boost/mpl/aux_/preprocessor/params.hpp | 68 - .../aux_/preprocessor/partial_spec_params.hpp | 35 - .../boost/mpl/aux_/preprocessor/range.hpp | 26 - .../boost/mpl/aux_/preprocessor/repeat.hpp | 52 - .../boost/mpl/aux_/preprocessor/sub.hpp | 55 - .../boost/mpl/aux_/preprocessor/tuple.hpp | 32 - sdk/include/boost/mpl/aux_/prior.hpp | 34 - sdk/include/boost/mpl/aux_/push_back_impl.hpp | 40 - .../boost/mpl/aux_/push_front_impl.hpp | 39 - .../boost/mpl/aux_/range_c/O1_size.hpp | 36 - sdk/include/boost/mpl/aux_/range_c/back.hpp | 39 - .../boost/mpl/aux_/range_c/begin_end.hpp | 49 - sdk/include/boost/mpl/aux_/range_c/empty.hpp | 42 - sdk/include/boost/mpl/aux_/range_c/front.hpp | 38 - .../boost/mpl/aux_/range_c/iterator.hpp | 55 - sdk/include/boost/mpl/aux_/range_c/size.hpp | 42 - sdk/include/boost/mpl/aux_/range_c/tag.hpp | 30 - sdk/include/boost/mpl/aux_/sequence_tag.hpp | 39 - .../boost/mpl/aux_/single_element_iter.hpp | 123 - sdk/include/boost/mpl/aux_/size_impl.hpp | 57 - sdk/include/boost/mpl/aux_/template_arity.hpp | 193 - .../boost/mpl/aux_/template_arity_fwd.hpp | 30 - .../boost/mpl/aux_/traits_lambda_spec.hpp | 41 - sdk/include/boost/mpl/aux_/transform_iter.hpp | 126 - sdk/include/boost/mpl/aux_/type_wrapper.hpp | 33 - sdk/include/boost/mpl/aux_/typeof.hpp | 76 - sdk/include/boost/mpl/aux_/unwrap.hpp | 46 - sdk/include/boost/mpl/aux_/value_wknd.hpp | 60 - sdk/include/boost/mpl/aux_/void_spec.hpp | 152 - sdk/include/boost/mpl/aux_/yes_no.hpp | 31 - sdk/include/boost/mpl/back.hpp | 44 - sdk/include/boost/mpl/back_fwd.hpp | 29 - sdk/include/boost/mpl/base.hpp | 48 - sdk/include/boost/mpl/begin_end.hpp | 60 - sdk/include/boost/mpl/begin_end_fwd.hpp | 32 - sdk/include/boost/mpl/bind.hpp | 548 -- sdk/include/boost/mpl/bitand.hpp | 63 - sdk/include/boost/mpl/bitor.hpp | 63 - sdk/include/boost/mpl/bitwise.hpp | 27 - sdk/include/boost/mpl/bitxor.hpp | 63 - sdk/include/boost/mpl/bool.hpp | 36 - sdk/include/boost/mpl/bool_fwd.hpp | 31 - sdk/include/boost/mpl/clear.hpp | 44 - sdk/include/boost/mpl/clear_fwd.hpp | 29 - sdk/include/boost/mpl/comparison.hpp | 28 - sdk/include/boost/mpl/contains.hpp | 48 - sdk/include/boost/mpl/copy.hpp | 45 - sdk/include/boost/mpl/copy_backward.hpp | 45 - sdk/include/boost/mpl/copy_backward_if.hpp | 58 - sdk/include/boost/mpl/copy_if.hpp | 58 - sdk/include/boost/mpl/count.hpp | 47 - sdk/include/boost/mpl/count_if.hpp | 83 - sdk/include/boost/mpl/deref.hpp | 48 - sdk/include/boost/mpl/distance.hpp | 131 - sdk/include/boost/mpl/divides.hpp | 79 - sdk/include/boost/mpl/empty.hpp | 44 - sdk/include/boost/mpl/empty_base.hpp | 61 - sdk/include/boost/mpl/empty_fwd.hpp | 29 - sdk/include/boost/mpl/equal.hpp | 109 - sdk/include/boost/mpl/equal_to.hpp | 73 - sdk/include/boost/mpl/erase.hpp | 60 - sdk/include/boost/mpl/erase_fwd.hpp | 29 - sdk/include/boost/mpl/filter_view.hpp | 51 - sdk/include/boost/mpl/find.hpp | 47 - sdk/include/boost/mpl/find_if.hpp | 90 - sdk/include/boost/mpl/fold.hpp | 53 - sdk/include/boost/mpl/fold_backward.hpp | 55 - sdk/include/boost/mpl/for_each.hpp | 117 - sdk/include/boost/mpl/front.hpp | 44 - sdk/include/boost/mpl/front_fwd.hpp | 29 - sdk/include/boost/mpl/greater.hpp | 73 - sdk/include/boost/mpl/greater_equal.hpp | 73 - sdk/include/boost/mpl/identity.hpp | 50 - sdk/include/boost/mpl/if.hpp | 177 - sdk/include/boost/mpl/inherit.hpp | 228 - sdk/include/boost/mpl/inherit_linearly.hpp | 44 - sdk/include/boost/mpl/insert.hpp | 46 - sdk/include/boost/mpl/insert_fwd.hpp | 29 - sdk/include/boost/mpl/insert_range.hpp | 46 - sdk/include/boost/mpl/insert_range_fwd.hpp | 29 - sdk/include/boost/mpl/int.hpp | 26 - sdk/include/boost/mpl/int_fwd.hpp | 25 - sdk/include/boost/mpl/integral_c.hpp | 53 - sdk/include/boost/mpl/integral_c_fwd.hpp | 32 - sdk/include/boost/mpl/is_placeholder.hpp | 65 - sdk/include/boost/mpl/is_sequence.hpp | 101 - sdk/include/boost/mpl/iter_fold.hpp | 53 - sdk/include/boost/mpl/iter_fold_backward.hpp | 60 - sdk/include/boost/mpl/iterator_category.hpp | 48 - sdk/include/boost/mpl/iterator_range.hpp | 47 - sdk/include/boost/mpl/iterator_tag.hpp | 36 - sdk/include/boost/mpl/joint_view.hpp | 50 - sdk/include/boost/mpl/lambda.hpp | 28 - sdk/include/boost/mpl/lambda_fwd.hpp | 36 - sdk/include/boost/mpl/lambda_helper.hpp | 86 - sdk/include/boost/mpl/less.hpp | 73 - sdk/include/boost/mpl/less_equal.hpp | 73 - sdk/include/boost/mpl/limits/arity.hpp | 24 - sdk/include/boost/mpl/limits/list.hpp | 24 - sdk/include/boost/mpl/limits/unrolling.hpp | 24 - sdk/include/boost/mpl/limits/vector.hpp | 24 - sdk/include/boost/mpl/list.hpp | 215 - sdk/include/boost/mpl/list/aux_/O1_size.hpp | 38 - sdk/include/boost/mpl/list/aux_/begin_end.hpp | 49 - sdk/include/boost/mpl/list/aux_/clear.hpp | 39 - sdk/include/boost/mpl/list/aux_/empty.hpp | 39 - sdk/include/boost/mpl/list/aux_/front.hpp | 38 - .../mpl/list/aux_/include_preprocessed.hpp | 30 - sdk/include/boost/mpl/list/aux_/iterator.hpp | 46 - sdk/include/boost/mpl/list/aux_/node.hpp | 51 - sdk/include/boost/mpl/list/aux_/numbered.hpp | 70 - .../boost/mpl/list/aux_/numbered_c.hpp | 72 - sdk/include/boost/mpl/list/aux_/pop_front.hpp | 38 - .../list/aux_/preprocessed/plain/list10.hpp | 144 - .../list/aux_/preprocessed/plain/list10_c.hpp | 149 - .../list/aux_/preprocessed/plain/list20.hpp | 164 - .../list/aux_/preprocessed/plain/list20_c.hpp | 158 - .../list/aux_/preprocessed/plain/list30.hpp | 184 - .../list/aux_/preprocessed/plain/list30_c.hpp | 168 - .../list/aux_/preprocessed/plain/list40.hpp | 204 - .../list/aux_/preprocessed/plain/list40_c.hpp | 178 - .../list/aux_/preprocessed/plain/list50.hpp | 224 - .../list/aux_/preprocessed/plain/list50_c.hpp | 188 - .../boost/mpl/list/aux_/push_front.hpp | 44 - sdk/include/boost/mpl/list/aux_/size.hpp | 38 - sdk/include/boost/mpl/list/aux_/tag.hpp | 30 - sdk/include/boost/mpl/list/list0.hpp | 44 - sdk/include/boost/mpl/list/list0_c.hpp | 42 - sdk/include/boost/mpl/list/list10.hpp | 48 - sdk/include/boost/mpl/list/list10_c.hpp | 48 - sdk/include/boost/mpl/list/list20.hpp | 48 - sdk/include/boost/mpl/list/list20_c.hpp | 48 - sdk/include/boost/mpl/list/list30.hpp | 48 - sdk/include/boost/mpl/list/list30_c.hpp | 48 - sdk/include/boost/mpl/list/list40.hpp | 48 - sdk/include/boost/mpl/list/list40_c.hpp | 48 - sdk/include/boost/mpl/list/list50.hpp | 48 - sdk/include/boost/mpl/list/list50_c.hpp | 48 - sdk/include/boost/mpl/list_c.hpp | 231 - sdk/include/boost/mpl/logical.hpp | 25 - sdk/include/boost/mpl/long.hpp | 26 - sdk/include/boost/mpl/long_fwd.hpp | 25 - sdk/include/boost/mpl/lower_bound.hpp | 156 - sdk/include/boost/mpl/math/fixed_c.hpp | 41 - sdk/include/boost/mpl/math/is_even.hpp | 44 - sdk/include/boost/mpl/math/rational_c.hpp | 42 - sdk/include/boost/mpl/max_element.hpp | 82 - sdk/include/boost/mpl/minus.hpp | 71 - sdk/include/boost/mpl/modulus.hpp | 73 - sdk/include/boost/mpl/multiplies.hpp | 71 - sdk/include/boost/mpl/negate.hpp | 51 - sdk/include/boost/mpl/next.hpp | 48 - sdk/include/boost/mpl/not.hpp | 56 - sdk/include/boost/mpl/not_equal_to.hpp | 73 - sdk/include/boost/mpl/or.hpp | 42 - sdk/include/boost/mpl/pair.hpp | 44 - sdk/include/boost/mpl/placeholders.hpp | 80 - sdk/include/boost/mpl/plus.hpp | 71 - sdk/include/boost/mpl/pop_back.hpp | 44 - sdk/include/boost/mpl/pop_back_fwd.hpp | 29 - sdk/include/boost/mpl/pop_front.hpp | 44 - sdk/include/boost/mpl/pop_front_fwd.hpp | 29 - sdk/include/boost/mpl/prior.hpp | 48 - sdk/include/boost/mpl/project1st.hpp | 41 - sdk/include/boost/mpl/project2nd.hpp | 41 - sdk/include/boost/mpl/protect.hpp | 53 - sdk/include/boost/mpl/push_back.hpp | 45 - sdk/include/boost/mpl/push_back_fwd.hpp | 29 - sdk/include/boost/mpl/push_front.hpp | 45 - sdk/include/boost/mpl/push_front_fwd.hpp | 29 - sdk/include/boost/mpl/quote.hpp | 124 - sdk/include/boost/mpl/range_c.hpp | 52 - sdk/include/boost/mpl/remove.hpp | 45 - sdk/include/boost/mpl/remove_if.hpp | 75 - sdk/include/boost/mpl/replace.hpp | 46 - sdk/include/boost/mpl/replace_if.hpp | 73 - sdk/include/boost/mpl/reverse.hpp | 53 - sdk/include/boost/mpl/same_as.hpp | 61 - sdk/include/boost/mpl/select1st.hpp | 48 - sdk/include/boost/mpl/select2nd.hpp | 48 - sdk/include/boost/mpl/sequence_tag.hpp | 133 - sdk/include/boost/mpl/sequence_tag_fwd.hpp | 29 - sdk/include/boost/mpl/shift_left.hpp | 64 - sdk/include/boost/mpl/shift_right.hpp | 64 - sdk/include/boost/mpl/single_view.hpp | 43 - sdk/include/boost/mpl/size.hpp | 44 - sdk/include/boost/mpl/size_fwd.hpp | 29 - sdk/include/boost/mpl/size_t.hpp | 29 - sdk/include/boost/mpl/size_t_fwd.hpp | 28 - sdk/include/boost/mpl/sizeof.hpp | 40 - sdk/include/boost/mpl/switch.hpp | 55 - sdk/include/boost/mpl/transform.hpp | 74 - sdk/include/boost/mpl/transform_view.hpp | 50 - sdk/include/boost/mpl/unique.hpp | 97 - sdk/include/boost/mpl/upper_bound.hpp | 154 - sdk/include/boost/mpl/vector.hpp | 214 - sdk/include/boost/mpl/vector/aux_/O1_size.hpp | 60 - sdk/include/boost/mpl/vector/aux_/at.hpp | 76 - sdk/include/boost/mpl/vector/aux_/back.hpp | 65 - .../boost/mpl/vector/aux_/begin_end.hpp | 61 - sdk/include/boost/mpl/vector/aux_/clear.hpp | 60 - sdk/include/boost/mpl/vector/aux_/empty.hpp | 70 - sdk/include/boost/mpl/vector/aux_/front.hpp | 60 - .../mpl/vector/aux_/include_preprocessed.hpp | 42 - sdk/include/boost/mpl/vector/aux_/item.hpp | 71 - .../boost/mpl/vector/aux_/iterator.hpp | 65 - sdk/include/boost/mpl/vector/aux_/node.hpp | 53 - .../boost/mpl/vector/aux_/numbered.hpp | 196 - .../boost/mpl/vector/aux_/numbered_c.hpp | 75 - .../boost/mpl/vector/aux_/pop_back.hpp | 44 - .../boost/mpl/vector/aux_/pop_front.hpp | 44 - .../aux_/preprocessed/no_ctps/vector10.hpp | 1241 ---- .../aux_/preprocessed/no_ctps/vector10_c.hpp | 125 - .../aux_/preprocessed/no_ctps/vector20.hpp | 1419 ----- .../aux_/preprocessed/no_ctps/vector20_c.hpp | 173 - .../aux_/preprocessed/no_ctps/vector30.hpp | 1639 ----- .../aux_/preprocessed/no_ctps/vector30_c.hpp | 216 - .../aux_/preprocessed/no_ctps/vector40.hpp | 1859 ------ .../aux_/preprocessed/no_ctps/vector40_c.hpp | 260 - .../aux_/preprocessed/no_ctps/vector50.hpp | 2079 ------- .../aux_/preprocessed/no_ctps/vector50_c.hpp | 303 - .../aux_/preprocessed/plain/vector10.hpp | 553 -- .../aux_/preprocessed/plain/vector10_c.hpp | 125 - .../aux_/preprocessed/plain/vector20.hpp | 769 --- .../aux_/preprocessed/plain/vector20_c.hpp | 173 - .../aux_/preprocessed/plain/vector30.hpp | 989 --- .../aux_/preprocessed/plain/vector30_c.hpp | 216 - .../aux_/preprocessed/plain/vector40.hpp | 1209 ---- .../aux_/preprocessed/plain/vector40_c.hpp | 260 - .../aux_/preprocessed/plain/vector50.hpp | 1429 ----- .../aux_/preprocessed/plain/vector50_c.hpp | 303 - .../preprocessed/typeof_based/vector10.hpp | 134 - .../preprocessed/typeof_based/vector10_c.hpp | 139 - .../preprocessed/typeof_based/vector20.hpp | 154 - .../preprocessed/typeof_based/vector20_c.hpp | 148 - .../preprocessed/typeof_based/vector30.hpp | 174 - .../preprocessed/typeof_based/vector30_c.hpp | 158 - .../preprocessed/typeof_based/vector40.hpp | 194 - .../preprocessed/typeof_based/vector40_c.hpp | 168 - .../preprocessed/typeof_based/vector50.hpp | 214 - .../preprocessed/typeof_based/vector50_c.hpp | 178 - .../boost/mpl/vector/aux_/push_back.hpp | 45 - .../boost/mpl/vector/aux_/push_front.hpp | 50 - sdk/include/boost/mpl/vector/aux_/size.hpp | 60 - sdk/include/boost/mpl/vector/aux_/tag.hpp | 36 - sdk/include/boost/mpl/vector/aux_/vector0.hpp | 61 - sdk/include/boost/mpl/vector/vector0.hpp | 35 - sdk/include/boost/mpl/vector/vector0_c.hpp | 34 - sdk/include/boost/mpl/vector/vector10.hpp | 51 - sdk/include/boost/mpl/vector/vector10_c.hpp | 52 - sdk/include/boost/mpl/vector/vector20.hpp | 51 - sdk/include/boost/mpl/vector/vector20_c.hpp | 52 - sdk/include/boost/mpl/vector/vector30.hpp | 51 - sdk/include/boost/mpl/vector/vector30_c.hpp | 52 - sdk/include/boost/mpl/vector/vector40.hpp | 51 - sdk/include/boost/mpl/vector/vector40_c.hpp | 52 - sdk/include/boost/mpl/vector/vector50.hpp | 51 - sdk/include/boost/mpl/vector/vector50_c.hpp | 52 - sdk/include/boost/mpl/vector_c.hpp | 231 - sdk/include/boost/mpl/void.hpp | 53 - sdk/include/boost/mpl/zip_view.hpp | 66 - sdk/include/boost/multi_array.hpp | 276 - sdk/include/boost/multi_array/algorithm.hpp | 100 - sdk/include/boost/multi_array/base.hpp | 460 -- .../boost/multi_array/collection_concept.hpp | 62 - .../boost/multi_array/concept_checks.hpp | 203 - sdk/include/boost/multi_array/copy_array.hpp | 68 - sdk/include/boost/multi_array/extent_gen.hpp | 75 - .../boost/multi_array/extent_range.hpp | 49 - sdk/include/boost/multi_array/index_gen.hpp | 81 - sdk/include/boost/multi_array/index_range.hpp | 201 - sdk/include/boost/multi_array/iterator.hpp | 171 - .../boost/multi_array/iterator_adaptors.hpp | 970 --- .../boost/multi_array/multi_array_ref.hpp | 595 -- sdk/include/boost/multi_array/range_list.hpp | 70 - .../boost/multi_array/storage_order.hpp | 125 - sdk/include/boost/multi_array/subarray.hpp | 393 -- sdk/include/boost/multi_array/types.hpp | 37 - sdk/include/boost/multi_array/view.hpp | 456 -- sdk/include/boost/next_prior.hpp | 33 - sdk/include/boost/noncopyable.hpp | 33 - sdk/include/boost/nondet_random.hpp | 69 - sdk/include/boost/numeric/interval.hpp | 37 - sdk/include/boost/numeric/interval/arith.hpp | 310 - sdk/include/boost/numeric/interval/arith2.hpp | 213 - .../boost/numeric/interval/checking.hpp | 136 - .../boost/numeric/interval/compare.hpp | 23 - .../numeric/interval/compare/explicit.hpp | 254 - .../interval/compare/lexicographic.hpp | 128 - .../boost/numeric/interval/compare/set.hpp | 70 - .../numeric/interval/compare/tribool.hpp | 144 - .../boost/numeric/interval/constants.hpp | 91 - .../interval/detail/bcc_rounding_control.hpp | 63 - .../boost/numeric/interval/detail/bugs.hpp | 80 - .../interval/detail/c99_rounding_control.hpp | 51 - .../detail/c99sub_rounding_control.hpp | 49 - .../numeric/interval/detail/division.hpp | 198 - .../interval/detail/interval_prototype.hpp | 47 - .../interval/detail/msvc_rounding_control.hpp | 48 - .../interval/detail/ppc_rounding_control.hpp | 99 - .../detail/sparc_rounding_control.hpp | 116 - .../numeric/interval/detail/test_input.hpp | 78 - .../interval/detail/x86_rounding_control.hpp | 90 - .../detail/x86gcc_rounding_control.hpp | 57 - .../ext/x86_fast_rounding_control.hpp | 69 - .../boost/numeric/interval/hw_rounding.hpp | 62 - .../boost/numeric/interval/interval.hpp | 360 -- sdk/include/boost/numeric/interval/io.hpp | 117 - sdk/include/boost/numeric/interval/limits.hpp | 57 - .../boost/numeric/interval/policies.hpp | 81 - .../boost/numeric/interval/rounded_arith.hpp | 120 - .../boost/numeric/interval/rounded_transc.hpp | 146 - .../boost/numeric/interval/rounding.hpp | 107 - sdk/include/boost/numeric/interval/transc.hpp | 237 - .../boost/numeric/interval/utility.hpp | 322 - sdk/include/boost/numeric/ublas/banded.hpp | 1970 ------ sdk/include/boost/numeric/ublas/blas.hpp | 198 - sdk/include/boost/numeric/ublas/concepts.hpp | 1671 ----- sdk/include/boost/numeric/ublas/config.hpp | 478 -- sdk/include/boost/numeric/ublas/duff.hpp | 66 - sdk/include/boost/numeric/ublas/exception.hpp | 265 - .../boost/numeric/ublas/functional.hpp | 1766 ------ sdk/include/boost/numeric/ublas/hermitian.hpp | 2418 -------- sdk/include/boost/numeric/ublas/io.hpp | 434 -- sdk/include/boost/numeric/ublas/iterator.hpp | 1905 ------ sdk/include/boost/numeric/ublas/matrix.hpp | 4060 ------------- .../boost/numeric/ublas/matrix_assign.hpp | 1541 ----- .../boost/numeric/ublas/matrix_expression.hpp | 5022 --------------- .../boost/numeric/ublas/matrix_proxy.hpp | 5383 ----------------- .../boost/numeric/ublas/matrix_sparse.hpp | 4973 --------------- sdk/include/boost/numeric/ublas/operation.hpp | 478 -- .../boost/numeric/ublas/operation_blocked.hpp | 360 -- .../boost/numeric/ublas/operation_sparse.hpp | 198 - sdk/include/boost/numeric/ublas/storage.hpp | 1754 ------ .../boost/numeric/ublas/storage_sparse.hpp | 988 --- sdk/include/boost/numeric/ublas/symmetric.hpp | 2150 ------- sdk/include/boost/numeric/ublas/traits.hpp | 1440 ----- .../boost/numeric/ublas/triangular.hpp | 2445 -------- sdk/include/boost/numeric/ublas/vector.hpp | 1746 ------ .../boost/numeric/ublas/vector_assign.hpp | 565 -- .../boost/numeric/ublas/vector_expression.hpp | 1834 ------ .../boost/numeric/ublas/vector_proxy.hpp | 1720 ------ .../boost/numeric/ublas/vector_sparse.hpp | 1862 ------ sdk/include/boost/operators.hpp | 936 --- sdk/include/boost/optional.hpp | 317 - sdk/include/boost/pending/bucket_sorter.hpp | 150 - .../boost/pending/container_traits.hpp | 388 -- sdk/include/boost/pending/cstddef.hpp | 12 - sdk/include/boost/pending/ct_if.hpp | 112 - .../boost/pending/detail/disjoint_sets.hpp | 83 - .../boost/pending/detail/int_iterator.hpp | 75 - sdk/include/boost/pending/detail/property.hpp | 155 - sdk/include/boost/pending/disjoint_sets.hpp | 236 - .../boost/pending/fenced_priority_queue.hpp | 147 - sdk/include/boost/pending/fibonacci_heap.hpp | 260 - sdk/include/boost/pending/indirect_cmp.hpp | 102 - sdk/include/boost/pending/integer_range.hpp | 59 - sdk/include/boost/pending/is_heap.hpp | 78 - .../boost/pending/iterator_adaptors.hpp | 1 - sdk/include/boost/pending/iterator_tests.hpp | 253 - sdk/include/boost/pending/mutable_heap.hpp | 80 - sdk/include/boost/pending/mutable_queue.hpp | 144 - sdk/include/boost/pending/property.hpp | 93 - sdk/include/boost/pending/queue.hpp | 102 - sdk/include/boost/pending/stringtok.hpp | 106 - sdk/include/boost/permutation_iterator.hpp | 74 - sdk/include/boost/pool/detail/ct_gcd_lcm.hpp | 105 - sdk/include/boost/pool/detail/for.m4 | 109 - sdk/include/boost/pool/detail/gcd_lcm.hpp | 59 - sdk/include/boost/pool/detail/guard.hpp | 41 - sdk/include/boost/pool/detail/mutex.hpp | 135 - .../boost/pool/detail/pool_construct.bat | 27 - .../boost/pool/detail/pool_construct.inc | 858 --- .../boost/pool/detail/pool_construct.m4 | 88 - .../boost/pool/detail/pool_construct.sh | 13 - .../pool/detail/pool_construct_simple.bat | 27 - .../pool/detail/pool_construct_simple.inc | 44 - .../pool/detail/pool_construct_simple.m4 | 75 - .../pool/detail/pool_construct_simple.sh | 13 - sdk/include/boost/pool/detail/singleton.hpp | 108 - sdk/include/boost/pool/object_pool.hpp | 158 - sdk/include/boost/pool/pool.hpp | 566 -- sdk/include/boost/pool/pool_alloc.hpp | 220 - sdk/include/boost/pool/poolfwd.hpp | 74 - .../boost/pool/simple_segregated_storage.hpp | 266 - sdk/include/boost/pool/singleton_pool.hpp | 120 - sdk/include/boost/preprocessor.hpp | 20 - sdk/include/boost/preprocessor/arithmetic.hpp | 26 - .../boost/preprocessor/arithmetic/add.hpp | 52 - .../boost/preprocessor/arithmetic/dec.hpp | 289 - .../arithmetic/detail/div_base.hpp | 62 - .../boost/preprocessor/arithmetic/div.hpp | 40 - .../boost/preprocessor/arithmetic/inc.hpp | 289 - .../boost/preprocessor/arithmetic/mod.hpp | 40 - .../boost/preprocessor/arithmetic/mul.hpp | 54 - .../boost/preprocessor/arithmetic/sub.hpp | 51 - sdk/include/boost/preprocessor/array.hpp | 28 - sdk/include/boost/preprocessor/array/data.hpp | 29 - sdk/include/boost/preprocessor/array/elem.hpp | 30 - .../boost/preprocessor/array/insert.hpp | 56 - .../boost/preprocessor/array/pop_back.hpp | 38 - .../boost/preprocessor/array/pop_front.hpp | 39 - .../boost/preprocessor/array/push_back.hpp | 34 - .../boost/preprocessor/array/push_front.hpp | 34 - .../boost/preprocessor/array/remove.hpp | 51 - .../boost/preprocessor/array/replace.hpp | 50 - .../boost/preprocessor/array/reverse.hpp | 30 - sdk/include/boost/preprocessor/array/size.hpp | 29 - sdk/include/boost/preprocessor/assert_msg.hpp | 18 - sdk/include/boost/preprocessor/cat.hpp | 36 - sdk/include/boost/preprocessor/comma.hpp | 18 - sdk/include/boost/preprocessor/comma_if.hpp | 18 - sdk/include/boost/preprocessor/comparison.hpp | 25 - .../boost/preprocessor/comparison/equal.hpp | 35 - .../boost/preprocessor/comparison/greater.hpp | 39 - .../preprocessor/comparison/greater_equal.hpp | 39 - .../boost/preprocessor/comparison/less.hpp | 47 - .../preprocessor/comparison/less_equal.hpp | 40 - .../preprocessor/comparison/not_equal.hpp | 555 -- .../boost/preprocessor/config/config.hpp | 58 - .../boost/preprocessor/config/limits.hpp | 30 - sdk/include/boost/preprocessor/control.hpp | 23 - .../boost/preprocessor/control/deduce_d.hpp | 23 - .../preprocessor/control/detail/edg/while.hpp | 535 -- .../control/detail/msvc/while.hpp | 278 - .../preprocessor/control/detail/while.hpp | 537 -- .../boost/preprocessor/control/expr_if.hpp | 31 - .../boost/preprocessor/control/expr_iif.hpp | 32 - sdk/include/boost/preprocessor/control/if.hpp | 31 - .../boost/preprocessor/control/iif.hpp | 35 - .../boost/preprocessor/control/while.hpp | 311 - sdk/include/boost/preprocessor/debug.hpp | 19 - .../boost/preprocessor/debug/assert.hpp | 45 - .../boost/preprocessor/debug/error.hpp | 34 - sdk/include/boost/preprocessor/debug/line.hpp | 36 - sdk/include/boost/preprocessor/dec.hpp | 18 - .../boost/preprocessor/detail/auto_rec.hpp | 287 - .../boost/preprocessor/detail/check.hpp | 43 - .../boost/preprocessor/detail/is_binary.hpp | 31 - .../boost/preprocessor/detail/is_nullary.hpp | 31 - .../boost/preprocessor/detail/is_unary.hpp | 31 - .../boost/preprocessor/detail/null.hpp | 18 - .../boost/preprocessor/detail/split.hpp | 36 - sdk/include/boost/preprocessor/empty.hpp | 18 - sdk/include/boost/preprocessor/enum.hpp | 18 - .../boost/preprocessor/enum_params.hpp | 18 - .../enum_params_with_a_default.hpp | 18 - .../enum_params_with_defaults.hpp | 18 - .../boost/preprocessor/enum_shifted.hpp | 18 - .../preprocessor/enum_shifted_params.hpp | 18 - sdk/include/boost/preprocessor/expand.hpp | 18 - sdk/include/boost/preprocessor/expr_if.hpp | 18 - sdk/include/boost/preprocessor/facilities.hpp | 22 - .../boost/preprocessor/facilities/apply.hpp | 35 - .../boost/preprocessor/facilities/empty.hpp | 22 - .../boost/preprocessor/facilities/expand.hpp | 29 - .../preprocessor/facilities/identity.hpp | 24 - .../preprocessor/facilities/intercept.hpp | 278 - .../boost/preprocessor/facilities/is_1.hpp | 24 - .../preprocessor/facilities/is_empty.hpp | 44 - .../preprocessor/facilities/is_empty_or_1.hpp | 31 - sdk/include/boost/preprocessor/for.hpp | 18 - sdk/include/boost/preprocessor/identity.hpp | 18 - sdk/include/boost/preprocessor/if.hpp | 18 - sdk/include/boost/preprocessor/inc.hpp | 18 - sdk/include/boost/preprocessor/iterate.hpp | 18 - sdk/include/boost/preprocessor/iteration.hpp | 20 - .../iteration/detail/bounds/lower1.hpp | 100 - .../iteration/detail/bounds/lower2.hpp | 100 - .../iteration/detail/bounds/lower3.hpp | 100 - .../iteration/detail/bounds/lower4.hpp | 100 - .../iteration/detail/bounds/lower5.hpp | 100 - .../iteration/detail/bounds/upper1.hpp | 100 - .../iteration/detail/bounds/upper2.hpp | 100 - .../iteration/detail/bounds/upper3.hpp | 100 - .../iteration/detail/bounds/upper4.hpp | 100 - .../iteration/detail/bounds/upper5.hpp | 100 - .../preprocessor/iteration/detail/finish.hpp | 100 - .../iteration/detail/iter/forward1.hpp | 1343 ---- .../iteration/detail/iter/forward2.hpp | 1339 ---- .../iteration/detail/iter/forward3.hpp | 1339 ---- .../iteration/detail/iter/forward4.hpp | 1339 ---- .../iteration/detail/iter/forward5.hpp | 1339 ---- .../iteration/detail/iter/reverse1.hpp | 1297 ---- .../iteration/detail/iter/reverse2.hpp | 1297 ---- .../iteration/detail/iter/reverse3.hpp | 1297 ---- .../iteration/detail/iter/reverse4.hpp | 1297 ---- .../iteration/detail/iter/reverse5.hpp | 1297 ---- .../preprocessor/iteration/detail/local.hpp | 813 --- .../preprocessor/iteration/detail/rlocal.hpp | 783 --- .../preprocessor/iteration/detail/self.hpp | 22 - .../preprocessor/iteration/detail/start.hpp | 100 - .../boost/preprocessor/iteration/iterate.hpp | 83 - .../boost/preprocessor/iteration/local.hpp | 27 - .../boost/preprocessor/iteration/self.hpp | 20 - sdk/include/boost/preprocessor/library.hpp | 35 - sdk/include/boost/preprocessor/limits.hpp | 18 - sdk/include/boost/preprocessor/list.hpp | 36 - sdk/include/boost/preprocessor/list/adt.hpp | 74 - .../boost/preprocessor/list/append.hpp | 41 - sdk/include/boost/preprocessor/list/at.hpp | 40 - sdk/include/boost/preprocessor/list/cat.hpp | 43 - .../list/detail/edg/fold_left.hpp | 537 -- .../list/detail/edg/fold_right.hpp | 795 --- .../preprocessor/list/detail/fold_left.hpp | 280 - .../preprocessor/list/detail/fold_right.hpp | 278 - sdk/include/boost/preprocessor/list/enum.hpp | 42 - .../boost/preprocessor/list/filter.hpp | 51 - .../boost/preprocessor/list/first_n.hpp | 59 - .../boost/preprocessor/list/fold_left.hpp | 302 - .../boost/preprocessor/list/fold_right.hpp | 41 - .../boost/preprocessor/list/for_each.hpp | 50 - .../boost/preprocessor/list/for_each_i.hpp | 66 - .../preprocessor/list/for_each_product.hpp | 142 - .../boost/preprocessor/list/rest_n.hpp | 56 - .../boost/preprocessor/list/reverse.hpp | 41 - sdk/include/boost/preprocessor/list/size.hpp | 59 - .../boost/preprocessor/list/to_tuple.hpp | 39 - .../boost/preprocessor/list/transform.hpp | 50 - sdk/include/boost/preprocessor/logical.hpp | 30 - .../boost/preprocessor/logical/and.hpp | 31 - .../boost/preprocessor/logical/bitand.hpp | 39 - .../boost/preprocessor/logical/bitnor.hpp | 39 - .../boost/preprocessor/logical/bitor.hpp | 39 - .../boost/preprocessor/logical/bitxor.hpp | 39 - .../boost/preprocessor/logical/bool.hpp | 289 - .../boost/preprocessor/logical/compl.hpp | 37 - .../boost/preprocessor/logical/nor.hpp | 31 - .../boost/preprocessor/logical/not.hpp | 31 - sdk/include/boost/preprocessor/logical/or.hpp | 31 - .../boost/preprocessor/logical/xor.hpp | 31 - sdk/include/boost/preprocessor/max.hpp | 18 - sdk/include/boost/preprocessor/min.hpp | 18 - .../boost/preprocessor/punctuation.hpp | 21 - .../boost/preprocessor/punctuation/comma.hpp | 22 - .../preprocessor/punctuation/comma_if.hpp | 32 - .../boost/preprocessor/punctuation/paren.hpp | 24 - .../preprocessor/punctuation/paren_if.hpp | 39 - sdk/include/boost/preprocessor/repeat.hpp | 18 - sdk/include/boost/preprocessor/repeat_2nd.hpp | 18 - sdk/include/boost/preprocessor/repeat_3rd.hpp | 18 - .../boost/preprocessor/repeat_from_to.hpp | 18 - .../boost/preprocessor/repeat_from_to_2nd.hpp | 18 - .../boost/preprocessor/repeat_from_to_3rd.hpp | 18 - sdk/include/boost/preprocessor/repetition.hpp | 32 - .../preprocessor/repetition/deduce_r.hpp | 23 - .../preprocessor/repetition/deduce_z.hpp | 23 - .../repetition/detail/edg/for.hpp | 535 -- .../preprocessor/repetition/detail/for.hpp | 537 -- .../repetition/detail/msvc/for.hpp | 278 - .../boost/preprocessor/repetition/enum.hpp | 67 - .../repetition/enum_binary_params.hpp | 55 - .../preprocessor/repetition/enum_params.hpp | 42 - .../repetition/enum_params_with_a_default.hpp | 26 - .../repetition/enum_params_with_defaults.hpp | 25 - .../preprocessor/repetition/enum_shifted.hpp | 69 - .../repetition/enum_shifted_params.hpp | 45 - .../preprocessor/repetition/enum_trailing.hpp | 64 - .../enum_trailing_binary_params.hpp | 54 - .../repetition/enum_trailing_params.hpp | 39 - .../boost/preprocessor/repetition/for.hpp | 305 - .../boost/preprocessor/repetition/repeat.hpp | 826 --- .../repetition/repeat_from_to.hpp | 88 - sdk/include/boost/preprocessor/selection.hpp | 19 - .../boost/preprocessor/selection/max.hpp | 40 - .../boost/preprocessor/selection/min.hpp | 40 - sdk/include/boost/preprocessor/seq.hpp | 42 - sdk/include/boost/preprocessor/seq/cat.hpp | 41 - .../boost/preprocessor/seq/detail/split.hpp | 285 - sdk/include/boost/preprocessor/seq/elem.hpp | 299 - sdk/include/boost/preprocessor/seq/enum.hpp | 286 - sdk/include/boost/preprocessor/seq/filter.hpp | 51 - .../boost/preprocessor/seq/first_n.hpp | 31 - .../boost/preprocessor/seq/fold_left.hpp | 812 --- .../boost/preprocessor/seq/fold_right.hpp | 289 - .../boost/preprocessor/seq/for_each.hpp | 61 - .../boost/preprocessor/seq/for_each_i.hpp | 62 - .../preprocessor/seq/for_each_product.hpp | 127 - sdk/include/boost/preprocessor/seq/insert.hpp | 29 - .../boost/preprocessor/seq/pop_back.hpp | 30 - .../boost/preprocessor/seq/pop_front.hpp | 28 - .../boost/preprocessor/seq/push_back.hpp | 20 - .../boost/preprocessor/seq/push_front.hpp | 20 - sdk/include/boost/preprocessor/seq/remove.hpp | 30 - .../boost/preprocessor/seq/replace.hpp | 30 - sdk/include/boost/preprocessor/seq/rest_n.hpp | 31 - .../boost/preprocessor/seq/reverse.hpp | 40 - sdk/include/boost/preprocessor/seq/seq.hpp | 45 - sdk/include/boost/preprocessor/seq/size.hpp | 547 -- sdk/include/boost/preprocessor/seq/subseq.hpp | 29 - .../boost/preprocessor/seq/to_array.hpp | 29 - .../boost/preprocessor/seq/to_tuple.hpp | 28 - .../boost/preprocessor/seq/transform.hpp | 49 - sdk/include/boost/preprocessor/slot.hpp | 18 - .../boost/preprocessor/slot/detail/def.hpp | 50 - .../boost/preprocessor/slot/detail/shared.hpp | 248 - .../boost/preprocessor/slot/detail/slot1.hpp | 268 - .../boost/preprocessor/slot/detail/slot2.hpp | 268 - .../boost/preprocessor/slot/detail/slot3.hpp | 268 - .../boost/preprocessor/slot/detail/slot4.hpp | 268 - .../boost/preprocessor/slot/detail/slot5.hpp | 268 - sdk/include/boost/preprocessor/slot/slot.hpp | 33 - sdk/include/boost/preprocessor/stringize.hpp | 31 - sdk/include/boost/preprocessor/tuple.hpp | 25 - sdk/include/boost/preprocessor/tuple/eat.hpp | 58 - sdk/include/boost/preprocessor/tuple/elem.hpp | 386 -- sdk/include/boost/preprocessor/tuple/rem.hpp | 73 - .../boost/preprocessor/tuple/reverse.hpp | 63 - .../boost/preprocessor/tuple/to_list.hpp | 63 - .../boost/preprocessor/tuple/to_seq.hpp | 61 - sdk/include/boost/preprocessor/while.hpp | 18 - sdk/include/boost/preprocessor/wstringize.hpp | 30 - sdk/include/boost/progress.hpp | 144 - sdk/include/boost/property_map.hpp | 542 -- sdk/include/boost/property_map_iterator.hpp | 99 - sdk/include/boost/python.hpp | 67 - sdk/include/boost/python/arg_from_python.hpp | 84 - sdk/include/boost/python/args.hpp | 112 - sdk/include/boost/python/args_fwd.hpp | 47 - sdk/include/boost/python/back_reference.hpp | 101 - sdk/include/boost/python/base_type_traits.hpp | 36 - sdk/include/boost/python/bases.hpp | 67 - sdk/include/boost/python/borrowed.hpp | 20 - sdk/include/boost/python/call.hpp | 66 - sdk/include/boost/python/call_method.hpp | 66 - sdk/include/boost/python/cast.hpp | 106 - sdk/include/boost/python/class.hpp | 548 -- sdk/include/boost/python/class_fwd.hpp | 23 - .../python/converter/arg_from_python.hpp | 341 -- .../boost/python/converter/arg_to_python.hpp | 262 - .../python/converter/arg_to_python_base.hpp | 34 - .../converter/as_to_python_function.hpp | 50 - .../python/converter/builtin_converters.hpp | 132 - .../python/converter/constructor_function.hpp | 18 - .../python/converter/convertible_function.hpp | 15 - .../boost/python/converter/from_python.hpp | 43 - .../boost/python/converter/implicit.hpp | 43 - .../converter/obj_mgr_arg_from_python.hpp | 122 - .../boost/python/converter/object_manager.hpp | 231 - .../python/converter/pointer_type_id.hpp | 69 - .../python/converter/pyobject_traits.hpp | 42 - .../boost/python/converter/pyobject_type.hpp | 37 - .../converter/pytype_arg_from_python.hpp | 99 - .../converter/pytype_object_mgr_traits.hpp | 43 - .../boost/python/converter/registered.hpp | 54 - .../python/converter/registered_pointee.hpp | 63 - .../boost/python/converter/registrations.hpp | 85 - .../boost/python/converter/registry.hpp | 52 - .../python/converter/return_from_python.hpp | 161 - .../converter/rvalue_from_python_data.hpp | 141 - .../python/converter/shared_ptr_deleter.hpp | 23 - .../converter/shared_ptr_from_python.hpp | 53 - .../python/converter/shared_ptr_to_python.hpp | 26 - .../converter/to_python_function_type.hpp | 20 - .../boost/python/copy_const_reference.hpp | 42 - .../boost/python/copy_non_const_reference.hpp | 42 - sdk/include/boost/python/data_members.hpp | 144 - sdk/include/boost/python/def.hpp | 113 - .../boost/python/default_call_policies.hpp | 78 - .../boost/python/detail/aix_init_module.hpp | 27 - .../boost/python/detail/api_placeholder.hpp | 19 - .../boost/python/detail/borrowed_ptr.hpp | 112 - sdk/include/boost/python/detail/caller.hpp | 175 - .../boost/python/detail/char_array.hpp | 23 - sdk/include/boost/python/detail/config.hpp | 114 - sdk/include/boost/python/detail/construct.hpp | 43 - .../boost/python/detail/convertible.hpp | 39 - .../python/detail/copy_ctor_mutates_rhs.hpp | 22 - .../boost/python/detail/cv_category.hpp | 34 - sdk/include/boost/python/detail/dealloc.hpp | 18 - .../boost/python/detail/decorated_type_id.hpp | 77 - .../boost/python/detail/decref_guard.hpp | 22 - .../boost/python/detail/def_helper.hpp | 212 - .../boost/python/detail/defaults_def.hpp | 280 - .../boost/python/detail/defaults_gen.hpp | 388 -- sdk/include/boost/python/detail/dependent.hpp | 28 - sdk/include/boost/python/detail/destroy.hpp | 83 - .../boost/python/detail/exception_handler.hpp | 49 - .../boost/python/detail/force_instantiate.hpp | 33 - sdk/include/boost/python/detail/if_else.hpp | 117 - .../boost/python/detail/indirect_traits.hpp | 483 -- sdk/include/boost/python/detail/invoke.hpp | 105 - .../boost/python/detail/is_auto_ptr.hpp | 31 - .../python/detail/is_function_ref_tester.hpp | 136 - sdk/include/boost/python/detail/is_xxx.hpp | 60 - .../python/detail/make_keyword_range_fn.hpp | 55 - .../boost/python/detail/make_tuple.hpp | 33 - sdk/include/boost/python/detail/map_entry.hpp | 44 - .../python/detail/member_function_cast.hpp | 118 - .../boost/python/detail/mpl_lambda.hpp | 13 - .../boost/python/detail/msvc_typeinfo.hpp | 69 - sdk/include/boost/python/detail/none.hpp | 21 - .../boost/python/detail/not_specified.hpp | 15 - .../boost/python/detail/operator_id.hpp | 55 - .../boost/python/detail/overloads_fwd.hpp | 19 - sdk/include/boost/python/detail/pointee.hpp | 36 - .../boost/python/detail/preprocessor.hpp | 67 - .../boost/python/detail/python22_fixed.h | 150 - .../boost/python/detail/raw_pyobject.hpp | 33 - .../boost/python/detail/referent_storage.hpp | 75 - sdk/include/boost/python/detail/result.hpp | 126 - sdk/include/boost/python/detail/scope.hpp | 17 - .../boost/python/detail/string_literal.hpp | 88 - sdk/include/boost/python/detail/target.hpp | 77 - .../python/detail/translate_exception.hpp | 48 - sdk/include/boost/python/detail/type_list.hpp | 40 - .../boost/python/detail/type_list_impl.hpp | 58 - .../python/detail/type_list_impl_no_pts.hpp | 108 - .../boost/python/detail/unwind_type.hpp | 151 - .../python/detail/value_is_shared_ptr.hpp | 18 - .../boost/python/detail/value_is_xxx.hpp | 63 - sdk/include/boost/python/detail/void_ptr.hpp | 34 - .../boost/python/detail/void_return.hpp | 43 - .../boost/python/detail/wrap_python.hpp | 160 - sdk/include/boost/python/dict.hpp | 151 - sdk/include/boost/python/enum.hpp | 101 - sdk/include/boost/python/errors.hpp | 55 - .../boost/python/exception_translator.hpp | 26 - sdk/include/boost/python/extract.hpp | 246 - sdk/include/boost/python/handle.hpp | 249 - sdk/include/boost/python/handle_fwd.hpp | 17 - .../boost/python/has_back_reference.hpp | 27 - sdk/include/boost/python/implicit.hpp | 28 - sdk/include/boost/python/init.hpp | 446 -- sdk/include/boost/python/instance_holder.hpp | 57 - sdk/include/boost/python/iterator.hpp | 115 - sdk/include/boost/python/list.hpp | 140 - sdk/include/boost/python/long.hpp | 67 - .../boost/python/lvalue_from_pytype.hpp | 104 - sdk/include/boost/python/make_function.hpp | 103 - .../boost/python/manage_new_object.hpp | 40 - sdk/include/boost/python/module.hpp | 12 - sdk/include/boost/python/module_init.hpp | 61 - sdk/include/boost/python/numeric.hpp | 231 - sdk/include/boost/python/object.hpp | 23 - .../boost/python/object/add_to_namespace.hpp | 25 - sdk/include/boost/python/object/class.hpp | 61 - .../boost/python/object/class_converters.hpp | 85 - .../boost/python/object/class_detail.hpp | 20 - .../boost/python/object/class_wrapper.hpp | 43 - sdk/include/boost/python/object/enum_base.hpp | 35 - .../boost/python/object/find_instance.hpp | 19 - sdk/include/boost/python/object/forward.hpp | 112 - sdk/include/boost/python/object/function.hpp | 80 - .../boost/python/object/function_handle.hpp | 44 - .../boost/python/object/function_object.hpp | 43 - .../boost/python/object/inheritance.hpp | 154 - sdk/include/boost/python/object/instance.hpp | 51 - sdk/include/boost/python/object/iterator.hpp | 226 - .../boost/python/object/iterator_core.hpp | 19 - .../boost/python/object/life_support.hpp | 17 - .../boost/python/object/make_holder.hpp | 94 - .../boost/python/object/make_instance.hpp | 71 - .../boost/python/object/make_ptr_instance.hpp | 66 - .../boost/python/object/pickle_support.hpp | 125 - .../boost/python/object/pointer_holder.hpp | 176 - .../boost/python/object/py_function.hpp | 22 - .../boost/python/object/select_holder.hpp | 236 - .../boost/python/object/value_holder.hpp | 137 - .../boost/python/object/value_holder_fwd.hpp | 17 - .../boost/python/object_attributes.hpp | 67 - sdk/include/boost/python/object_call.hpp | 24 - sdk/include/boost/python/object_core.hpp | 389 -- sdk/include/boost/python/object_fwd.hpp | 17 - sdk/include/boost/python/object_items.hpp | 88 - sdk/include/boost/python/object_operators.hpp | 94 - sdk/include/boost/python/object_protocol.hpp | 80 - .../boost/python/object_protocol_core.hpp | 53 - sdk/include/boost/python/object_slices.hpp | 125 - .../boost/python/opaque_pointer_converter.hpp | 145 - sdk/include/boost/python/operators.hpp | 332 - sdk/include/boost/python/other.hpp | 113 - sdk/include/boost/python/overloads.hpp | 12 - sdk/include/boost/python/pointee.hpp | 40 - sdk/include/boost/python/proxy.hpp | 101 - sdk/include/boost/python/ptr.hpp | 130 - sdk/include/boost/python/raw_function.hpp | 47 - sdk/include/boost/python/refcount.hpp | 42 - .../python/reference_existing_object.hpp | 45 - sdk/include/boost/python/return_by_value.hpp | 30 - .../python/return_internal_reference.hpp | 42 - .../boost/python/return_opaque_pointer.hpp | 51 - .../boost/python/return_value_policy.hpp | 20 - sdk/include/boost/python/scope.hpp | 76 - sdk/include/boost/python/self.hpp | 36 - sdk/include/boost/python/signature.hpp | 119 - sdk/include/boost/python/slice_nil.hpp | 41 - sdk/include/boost/python/str.hpp | 400 -- sdk/include/boost/python/tag.hpp | 17 - .../boost/python/to_python_converter.hpp | 39 - .../boost/python/to_python_indirect.hpp | 114 - sdk/include/boost/python/to_python_value.hpp | 123 - sdk/include/boost/python/tuple.hpp | 69 - sdk/include/boost/python/type_id.hpp | 134 - .../boost/python/with_custodian_and_ward.hpp | 78 - sdk/include/boost/random.hpp | 77 - sdk/include/boost/random/additive_combine.hpp | 123 - .../boost/random/bernoulli_distribution.hpp | 104 - .../boost/random/binomial_distribution.hpp | 104 - .../boost/random/cauchy_distribution.hpp | 106 - sdk/include/boost/random/detail/const_mod.hpp | 356 -- .../boost/random/detail/iterator_mixin.hpp | 50 - .../random/detail/signed_unsigned_compare.hpp | 96 - sdk/include/boost/random/discard_block.hpp | 125 - .../boost/random/exponential_distribution.hpp | 99 - .../boost/random/gamma_distribution.hpp | 152 - .../boost/random/geometric_distribution.hpp | 117 - .../boost/random/inversive_congruential.hpp | 131 - sdk/include/boost/random/lagged_fibonacci.hpp | 452 -- .../boost/random/linear_congruential.hpp | 218 - .../boost/random/linear_feedback_shift.hpp | 148 - .../boost/random/lognormal_distribution.hpp | 115 - sdk/include/boost/random/mersenne_twister.hpp | 298 - .../boost/random/normal_distribution.hpp | 135 - .../boost/random/poisson_distribution.hpp | 117 - .../boost/random/random_number_generator.hpp | 62 - sdk/include/boost/random/ranlux.hpp | 55 - sdk/include/boost/random/shuffle_output.hpp | 179 - .../boost/random/subtract_with_carry.hpp | 431 -- .../boost/random/triangle_distribution.hpp | 118 - sdk/include/boost/random/uniform_01.hpp | 105 - sdk/include/boost/random/uniform_int.hpp | 285 - .../boost/random/uniform_on_sphere.hpp | 106 - sdk/include/boost/random/uniform_real.hpp | 104 - sdk/include/boost/random/uniform_smallint.hpp | 268 - sdk/include/boost/random/xor_combine.hpp | 134 - sdk/include/boost/rational.hpp | 524 -- sdk/include/boost/ref.hpp | 163 - sdk/include/boost/regex.h | 102 - sdk/include/boost/regex.hpp | 35 - sdk/include/boost/regex/config.hpp | 650 -- sdk/include/boost/regex/pattern_except.hpp | 64 - sdk/include/boost/regex/regex_traits.hpp | 34 - sdk/include/boost/regex/src.cpp | 58 - sdk/include/boost/regex/user.hpp | 57 - sdk/include/boost/regex/v3/cregex.hpp | 316 - sdk/include/boost/regex/v3/fileiter.hpp | 456 -- sdk/include/boost/regex/v3/instances.hpp | 168 - sdk/include/boost/regex/v3/regex.hpp | 1636 ----- sdk/include/boost/regex/v3/regex_compile.hpp | 2124 ------- sdk/include/boost/regex/v3/regex_cstring.hpp | 134 - sdk/include/boost/regex/v3/regex_format.hpp | 579 -- sdk/include/boost/regex/v3/regex_fwd.hpp | 70 - sdk/include/boost/regex/v3/regex_kmp.hpp | 111 - .../boost/regex/v3/regex_library_include.hpp | 184 - sdk/include/boost/regex/v3/regex_match.hpp | 2020 ------- .../boost/regex/v3/regex_raw_buffer.hpp | 249 - sdk/include/boost/regex/v3/regex_split.hpp | 152 - sdk/include/boost/regex/v3/regex_stack.hpp | 227 - sdk/include/boost/regex/v3/regex_synch.hpp | 213 - sdk/include/boost/regex/v3/regex_traits.hpp | 815 --- sdk/include/boost/regex_fwd.hpp | 32 - sdk/include/boost/scoped_array.hpp | 114 - sdk/include/boost/scoped_ptr.hpp | 139 - sdk/include/boost/shared_array.hpp | 156 - .../boost/shared_container_iterator.hpp | 59 - sdk/include/boost/shared_ptr.hpp | 433 -- sdk/include/boost/signal.hpp | 354 -- sdk/include/boost/signals/connection.hpp | 291 - .../boost/signals/detail/gen_signal_N.pl | 138 - .../boost/signals/detail/signal_base.hpp | 192 - .../boost/signals/detail/signals_common.hpp | 184 - .../signals/detail/slot_call_iterator.hpp | 119 - sdk/include/boost/signals/signal0.hpp | 43 - sdk/include/boost/signals/signal1.hpp | 43 - sdk/include/boost/signals/signal10.hpp | 43 - sdk/include/boost/signals/signal2.hpp | 43 - sdk/include/boost/signals/signal3.hpp | 43 - sdk/include/boost/signals/signal4.hpp | 43 - sdk/include/boost/signals/signal5.hpp | 43 - sdk/include/boost/signals/signal6.hpp | 43 - sdk/include/boost/signals/signal7.hpp | 43 - sdk/include/boost/signals/signal8.hpp | 43 - sdk/include/boost/signals/signal9.hpp | 43 - sdk/include/boost/signals/signal_template.hpp | 354 -- sdk/include/boost/signals/slot.hpp | 136 - sdk/include/boost/signals/trackable.hpp | 193 - sdk/include/boost/smart_ptr.hpp | 20 - sdk/include/boost/spirit.hpp | 69 - sdk/include/boost/spirit/attribute.hpp | 38 - .../boost/spirit/attribute/closure.hpp | 1080 ---- .../spirit/attribute/closure_context.hpp | 53 - .../boost/spirit/attribute/parametric.hpp | 142 - sdk/include/boost/spirit/core.hpp | 65 - sdk/include/boost/spirit/core/assert.hpp | 39 - sdk/include/boost/spirit/core/basics.hpp | 42 - .../boost/spirit/core/composite/actions.hpp | 299 - .../boost/spirit/core/composite/composite.hpp | 151 - .../spirit/core/composite/directives.hpp | 639 -- .../boost/spirit/core/composite/epsilon.hpp | 279 - .../spirit/core/composite/impl/composite.ipp | 156 - .../spirit/core/composite/impl/directives.ipp | 372 -- .../spirit/core/composite/impl/operators.ipp | 668 -- .../boost/spirit/core/composite/operators.hpp | 1090 ---- .../boost/spirit/core/impl/borland.hpp | 51 - sdk/include/boost/spirit/core/impl/match.ipp | 180 - sdk/include/boost/spirit/core/impl/msvc.hpp | 413 -- sdk/include/boost/spirit/core/impl/parser.ipp | 56 - sdk/include/boost/spirit/core/match.hpp | 166 - .../boost/spirit/core/meta/fundamental.hpp | 93 - .../spirit/core/meta/impl/fundamental.ipp | 306 - .../spirit/core/meta/impl/parser_traits.ipp | 189 - .../spirit/core/meta/impl/parser_type.hpp | 164 - .../boost/spirit/core/meta/impl/traverse.ipp | 553 -- .../boost/spirit/core/meta/parser_traits.hpp | 318 - .../boost/spirit/core/meta/traverse.hpp | 255 - .../spirit/core/non_terminal/grammar.hpp | 76 - .../spirit/core/non_terminal/impl/grammar.ipp | 301 - .../core/non_terminal/impl/object_with_id.ipp | 159 - .../spirit/core/non_terminal/impl/rule.ipp | 110 - .../spirit/core/non_terminal/impl/subrule.ipp | 207 - .../core/non_terminal/parser_context.hpp | 155 - .../spirit/core/non_terminal/parser_id.hpp | 77 - .../boost/spirit/core/non_terminal/rule.hpp | 115 - .../spirit/core/non_terminal/subrule.hpp | 316 - sdk/include/boost/spirit/core/parser.hpp | 247 - .../spirit/core/primitives/impl/numerics.ipp | 490 -- .../core/primitives/impl/primitives.ipp | 224 - .../boost/spirit/core/primitives/numerics.hpp | 303 - .../spirit/core/primitives/primitives.hpp | 578 -- .../spirit/core/scanner/impl/skipper.ipp | 178 - .../boost/spirit/core/scanner/scanner.hpp | 372 -- .../boost/spirit/core/scanner/skipper.hpp | 171 - sdk/include/boost/spirit/debug.hpp | 149 - sdk/include/boost/spirit/debug/debug_node.hpp | 312 - .../boost/spirit/debug/impl/parser_names.ipp | 515 -- sdk/include/boost/spirit/debug/minimal.hpp | 84 - .../boost/spirit/debug/parser_names.hpp | 243 - sdk/include/boost/spirit/dynamic.hpp | 34 - sdk/include/boost/spirit/dynamic/for.hpp | 194 - sdk/include/boost/spirit/dynamic/if.hpp | 234 - .../boost/spirit/dynamic/impl/conditions.ipp | 117 - sdk/include/boost/spirit/dynamic/while.hpp | 195 - sdk/include/boost/spirit/error_handling.hpp | 22 - .../spirit/error_handling/exceptions.hpp | 342 -- .../spirit/error_handling/impl/exceptions.ipp | 85 - sdk/include/boost/spirit/iterator.hpp | 30 - .../boost/spirit/iterator/file_iterator.hpp | 308 - .../spirit/iterator/fixed_size_queue.hpp | 306 - .../spirit/iterator/impl/file_iterator.ipp | 514 -- .../boost/spirit/iterator/multi_pass.hpp | 1246 ---- .../spirit/iterator/position_iterator.hpp | 204 - sdk/include/boost/spirit/phoenix/actor.hpp | 614 -- sdk/include/boost/spirit/phoenix/binders.hpp | 3454 ----------- sdk/include/boost/spirit/phoenix/casts.hpp | 1303 ---- sdk/include/boost/spirit/phoenix/closures.hpp | 359 -- .../boost/spirit/phoenix/composite.hpp | 1415 ----- .../boost/spirit/phoenix/functions.hpp | 743 --- .../boost/spirit/phoenix/operators.hpp | 2215 ------- .../boost/spirit/phoenix/primitives.hpp | 249 - .../boost/spirit/phoenix/special_ops.hpp | 343 -- .../boost/spirit/phoenix/statements.hpp | 445 -- .../boost/spirit/phoenix/tuple_helpers.hpp | 1077 ---- sdk/include/boost/spirit/phoenix/tuples.hpp | 1327 ---- sdk/include/boost/spirit/symbols.hpp | 22 - .../boost/spirit/symbols/impl/symbols.ipp | 98 - sdk/include/boost/spirit/symbols/impl/tst.ipp | 272 - sdk/include/boost/spirit/symbols/symbols.hpp | 239 - sdk/include/boost/spirit/tree/ast.hpp | 324 - sdk/include/boost/spirit/tree/common.hpp | 1378 ----- .../spirit/tree/impl/parse_tree_utils.ipp | 133 - .../boost/spirit/tree/impl/tree_to_xml.ipp | 402 -- sdk/include/boost/spirit/tree/parse_tree.hpp | 249 - .../boost/spirit/tree/parse_tree_utils.hpp | 65 - sdk/include/boost/spirit/tree/parsetree.dtd | 17 - .../boost/spirit/tree/tree_iterator.hpp | 109 - sdk/include/boost/spirit/tree/tree_to_xml.hpp | 73 - sdk/include/boost/spirit/utility.hpp | 34 - sdk/include/boost/spirit/utility/chset.hpp | 171 - .../boost/spirit/utility/chset_operators.hpp | 332 - sdk/include/boost/spirit/utility/confix.hpp | 333 - .../boost/spirit/utility/escape_char.hpp | 185 - .../boost/spirit/utility/flush_multi_pass.hpp | 75 - .../boost/spirit/utility/functor_parser.hpp | 69 - .../boost/spirit/utility/impl/chset.ipp | 247 - .../spirit/utility/impl/chset/basic_chset.hpp | 107 - .../spirit/utility/impl/chset/basic_chset.ipp | 246 - .../spirit/utility/impl/chset/range_run.hpp | 112 - .../spirit/utility/impl/chset/range_run.ipp | 221 - .../spirit/utility/impl/chset_operators.ipp | 503 -- .../boost/spirit/utility/impl/confix.ipp | 219 - .../boost/spirit/utility/impl/escape_char.ipp | 199 - .../boost/spirit/utility/impl/lists.ipp | 166 - .../boost/spirit/utility/impl/refactoring.ipp | 449 -- .../boost/spirit/utility/impl/regex.ipp | 65 - sdk/include/boost/spirit/utility/lists.hpp | 335 - sdk/include/boost/spirit/utility/loops.hpp | 328 - .../boost/spirit/utility/refactoring.hpp | 278 - sdk/include/boost/spirit/utility/regex.hpp | 116 - .../boost/spirit/utility/scoped_lock.hpp | 110 - sdk/include/boost/static_assert.hpp | 91 - sdk/include/boost/test/auto_unit_test.hpp | 73 - .../boost/test/detail/class_properties.hpp | 77 - sdk/include/boost/test/detail/nullstream.hpp | 85 - .../boost/test/detail/unit_test_config.hpp | 68 - .../boost/test/detail/unit_test_monitor.hpp | 89 - .../test/detail/unit_test_parameters.hpp | 68 - .../boost/test/detail/wrap_stringstream.hpp | 107 - sdk/include/boost/test/execution_monitor.hpp | 140 - .../boost/test/floating_point_comparison.hpp | 106 - .../boost/test/included/prg_exec_monitor.hpp | 33 - .../boost/test/included/test_exec_monitor.hpp | 48 - .../test/included/unit_test_framework.hpp | 41 - sdk/include/boost/test/minimal.hpp | 159 - sdk/include/boost/test/test_tools.hpp | 496 -- sdk/include/boost/test/unit_test.hpp | 32 - sdk/include/boost/test/unit_test_log.hpp | 182 - sdk/include/boost/test/unit_test_result.hpp | 127 - sdk/include/boost/test/unit_test_suite.hpp | 329 - sdk/include/boost/test/unit_test_suite_ex.hpp | 125 - sdk/include/boost/thread.hpp | 24 - sdk/include/boost/thread/condition.hpp | 202 - sdk/include/boost/thread/detail/config.hpp | 25 - .../boost/thread/detail/force_cast.hpp | 44 - sdk/include/boost/thread/detail/lock.hpp | 207 - sdk/include/boost/thread/detail/singleton.hpp | 64 - sdk/include/boost/thread/detail/threadmon.hpp | 25 - sdk/include/boost/thread/exceptions.hpp | 45 - sdk/include/boost/thread/mutex.hpp | 166 - sdk/include/boost/thread/once.hpp | 47 - sdk/include/boost/thread/recursive_mutex.hpp | 180 - sdk/include/boost/thread/thread.hpp | 90 - sdk/include/boost/thread/tss.hpp | 88 - sdk/include/boost/thread/xtime.hpp | 58 - sdk/include/boost/throw_exception.hpp | 45 - sdk/include/boost/timer.hpp | 73 - sdk/include/boost/token_functions.hpp | 486 -- sdk/include/boost/token_iterator.hpp | 116 - sdk/include/boost/tokenizer.hpp | 101 - .../boost/tuple/detail/tuple_basic.hpp | 883 --- .../detail/tuple_basic_no_partial_spec.hpp | 777 --- sdk/include/boost/tuple/tuple.hpp | 95 - sdk/include/boost/tuple/tuple_comparison.hpp | 180 - sdk/include/boost/tuple/tuple_io.hpp | 530 -- sdk/include/boost/type.hpp | 19 - sdk/include/boost/type_traits.hpp | 66 - sdk/include/boost/type_traits/add_const.hpp | 48 - sdk/include/boost/type_traits/add_cv.hpp | 48 - sdk/include/boost/type_traits/add_pointer.hpp | 73 - .../boost/type_traits/add_reference.hpp | 90 - .../boost/type_traits/add_volatile.hpp | 48 - .../boost/type_traits/alignment_of.hpp | 99 - .../boost/type_traits/alignment_traits.hpp | 14 - .../boost/type_traits/arithmetic_traits.hpp | 21 - .../boost/type_traits/array_traits.hpp | 15 - .../type_traits/broken_compiler_spec.hpp | 104 - .../boost/type_traits/composite_traits.hpp | 38 - sdk/include/boost/type_traits/config.hpp | 34 - .../boost/type_traits/conversion_traits.hpp | 21 - sdk/include/boost/type_traits/cv_traits.hpp | 25 - .../type_traits/detail/bool_trait_def.hpp | 155 - .../type_traits/detail/bool_trait_undef.hpp | 32 - .../type_traits/detail/cv_traits_impl.hpp | 62 - .../boost/type_traits/detail/false_result.hpp | 26 - .../boost/type_traits/detail/ice_and.hpp | 36 - .../boost/type_traits/detail/ice_eq.hpp | 38 - .../boost/type_traits/detail/ice_not.hpp | 33 - .../boost/type_traits/detail/ice_or.hpp | 36 - .../detail/is_function_ptr_helper.hpp | 142 - .../detail/is_function_ptr_tester.hpp | 133 - .../detail/is_function_type_tester.hpp | 133 - .../detail/is_mem_fun_pointer_impl.hpp | 358 -- .../detail/is_mem_fun_pointer_tester.hpp | 298 - .../type_traits/detail/size_t_trait_def.hpp | 60 - .../type_traits/detail/size_t_trait_undef.hpp | 21 - .../detail/template_arity_spec.hpp | 40 - .../type_traits/detail/type_trait_def.hpp | 66 - .../type_traits/detail/type_trait_undef.hpp | 24 - sdk/include/boost/type_traits/detail/wrap.hpp | 17 - .../boost/type_traits/detail/yes_no_type.hpp | 27 - .../boost/type_traits/function_traits.hpp | 237 - .../boost/type_traits/has_nothrow_assign.hpp | 26 - .../type_traits/has_nothrow_constructor.hpp | 26 - .../boost/type_traits/has_nothrow_copy.hpp | 26 - .../type_traits/has_nothrow_destructor.hpp | 26 - .../boost/type_traits/has_trivial_assign.hpp | 51 - .../type_traits/has_trivial_constructor.hpp | 43 - .../boost/type_traits/has_trivial_copy.hpp | 49 - .../type_traits/has_trivial_destructor.hpp | 43 - sdk/include/boost/type_traits/ice.hpp | 21 - sdk/include/boost/type_traits/intrinsics.hpp | 90 - .../boost/type_traits/is_arithmetic.hpp | 44 - sdk/include/boost/type_traits/is_array.hpp | 79 - .../boost/type_traits/is_base_and_derived.hpp | 207 - sdk/include/boost/type_traits/is_class.hpp | 99 - sdk/include/boost/type_traits/is_compound.hpp | 41 - sdk/include/boost/type_traits/is_const.hpp | 124 - .../boost/type_traits/is_convertible.hpp | 287 - sdk/include/boost/type_traits/is_empty.hpp | 208 - sdk/include/boost/type_traits/is_enum.hpp | 122 - sdk/include/boost/type_traits/is_float.hpp | 28 - sdk/include/boost/type_traits/is_function.hpp | 85 - .../boost/type_traits/is_fundamental.hpp | 42 - sdk/include/boost/type_traits/is_integral.hpp | 63 - .../is_member_function_pointer.hpp | 114 - .../boost/type_traits/is_member_pointer.hpp | 97 - sdk/include/boost/type_traits/is_object.hpp | 54 - sdk/include/boost/type_traits/is_pod.hpp | 134 - sdk/include/boost/type_traits/is_pointer.hpp | 139 - .../boost/type_traits/is_polymorphic.hpp | 90 - .../boost/type_traits/is_reference.hpp | 111 - sdk/include/boost/type_traits/is_same.hpp | 93 - sdk/include/boost/type_traits/is_scalar.hpp | 56 - .../boost/type_traits/is_stateless.hpp | 49 - sdk/include/boost/type_traits/is_union.hpp | 37 - sdk/include/boost/type_traits/is_void.hpp | 34 - sdk/include/boost/type_traits/is_volatile.hpp | 113 - .../boost/type_traits/object_traits.hpp | 34 - .../boost/type_traits/reference_traits.hpp | 15 - .../boost/type_traits/remove_bounds.hpp | 34 - .../boost/type_traits/remove_const.hpp | 71 - sdk/include/boost/type_traits/remove_cv.hpp | 54 - .../boost/type_traits/remove_pointer.hpp | 39 - .../boost/type_traits/remove_reference.hpp | 46 - .../boost/type_traits/remove_volatile.hpp | 70 - sdk/include/boost/type_traits/same_traits.hpp | 16 - .../boost/type_traits/transform_traits.hpp | 22 - .../type_traits/transform_traits_spec.hpp | 13 - .../boost/type_traits/type_traits_test.hpp | 433 -- .../boost/type_traits/type_with_alignment.hpp | 169 - sdk/include/boost/utility.hpp | 21 - sdk/include/boost/utility/addressof.hpp | 43 - .../boost/utility/base_from_member.hpp | 59 - sdk/include/boost/utility/value_init.hpp | 82 - sdk/include/boost/utility_fwd.hpp | 34 - sdk/include/boost/version.hpp | 26 - sdk/include/boost/visit_each.hpp | 35 - sdk/include/boost/weak_ptr.hpp | 193 - 1809 files changed, 350126 deletions(-) delete mode 100644 sdk/include/boost/any.hpp delete mode 100644 sdk/include/boost/array.hpp delete mode 100644 sdk/include/boost/assert.hpp delete mode 100644 sdk/include/boost/bind.hpp delete mode 100644 sdk/include/boost/bind/apply.hpp delete mode 100644 sdk/include/boost/bind/arg.hpp delete mode 100644 sdk/include/boost/bind/bind_cc.hpp delete mode 100644 sdk/include/boost/bind/bind_mf_cc.hpp delete mode 100644 sdk/include/boost/bind/bind_template.hpp delete mode 100644 sdk/include/boost/bind/make_adaptable.hpp delete mode 100644 sdk/include/boost/bind/mem_fn_cc.hpp delete mode 100644 sdk/include/boost/bind/mem_fn_template.hpp delete mode 100644 sdk/include/boost/bind/mem_fn_vw.hpp delete mode 100644 sdk/include/boost/bind/placeholders.hpp delete mode 100644 sdk/include/boost/bind/protect.hpp delete mode 100644 sdk/include/boost/call_traits.hpp delete mode 100644 sdk/include/boost/cast.hpp delete mode 100644 sdk/include/boost/checked_delete.hpp delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cassert delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cctype delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cerrno delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cfloat delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/climits delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/clocale delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cmath delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/csetjmp delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/csignal delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cstdarg delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cstddef delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cstdio delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cstdlib delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cstring delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/ctime delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cwchar delete mode 100644 sdk/include/boost/compatibility/cpp_c_headers/cwctype delete mode 100644 sdk/include/boost/compose.hpp delete mode 100644 sdk/include/boost/compressed_pair.hpp delete mode 100644 sdk/include/boost/concept_archetype.hpp delete mode 100644 sdk/include/boost/concept_check.hpp delete mode 100644 sdk/include/boost/config.hpp delete mode 100644 sdk/include/boost/config/compiler/borland.hpp delete mode 100644 sdk/include/boost/config/compiler/comeau.hpp delete mode 100644 sdk/include/boost/config/compiler/common_edg.hpp delete mode 100644 sdk/include/boost/config/compiler/compaq_cxx.hpp delete mode 100644 sdk/include/boost/config/compiler/gcc.hpp delete mode 100644 sdk/include/boost/config/compiler/greenhills.hpp delete mode 100644 sdk/include/boost/config/compiler/hp_acc.hpp delete mode 100644 sdk/include/boost/config/compiler/intel.hpp delete mode 100644 sdk/include/boost/config/compiler/kai.hpp delete mode 100644 sdk/include/boost/config/compiler/metrowerks.hpp delete mode 100644 sdk/include/boost/config/compiler/mpw.hpp delete mode 100644 sdk/include/boost/config/compiler/sgi_mipspro.hpp delete mode 100644 sdk/include/boost/config/compiler/sunpro_cc.hpp delete mode 100644 sdk/include/boost/config/compiler/vacpp.hpp delete mode 100644 sdk/include/boost/config/compiler/visualc.hpp delete mode 100644 sdk/include/boost/config/platform/aix.hpp delete mode 100644 sdk/include/boost/config/platform/amigaos.hpp delete mode 100644 sdk/include/boost/config/platform/beos.hpp delete mode 100644 sdk/include/boost/config/platform/bsd.hpp delete mode 100644 sdk/include/boost/config/platform/cygwin.hpp delete mode 100644 sdk/include/boost/config/platform/hpux.hpp delete mode 100644 sdk/include/boost/config/platform/irix.hpp delete mode 100644 sdk/include/boost/config/platform/linux.hpp delete mode 100644 sdk/include/boost/config/platform/macos.hpp delete mode 100644 sdk/include/boost/config/platform/solaris.hpp delete mode 100644 sdk/include/boost/config/platform/win32.hpp delete mode 100644 sdk/include/boost/config/posix_features.hpp delete mode 100644 sdk/include/boost/config/select_compiler_config.hpp delete mode 100644 sdk/include/boost/config/select_platform_config.hpp delete mode 100644 sdk/include/boost/config/select_stdlib_config.hpp delete mode 100644 sdk/include/boost/config/stdlib/dinkumware.hpp delete mode 100644 sdk/include/boost/config/stdlib/libcomo.hpp delete mode 100644 sdk/include/boost/config/stdlib/libstdcpp3.hpp delete mode 100644 sdk/include/boost/config/stdlib/modena.hpp delete mode 100644 sdk/include/boost/config/stdlib/msl.hpp delete mode 100644 sdk/include/boost/config/stdlib/roguewave.hpp delete mode 100644 sdk/include/boost/config/stdlib/sgi.hpp delete mode 100644 sdk/include/boost/config/stdlib/stlport.hpp delete mode 100644 sdk/include/boost/config/stdlib/vacpp.hpp delete mode 100644 sdk/include/boost/config/suffix.hpp delete mode 100644 sdk/include/boost/config/user.hpp delete mode 100644 sdk/include/boost/counting_iterator.hpp delete mode 100644 sdk/include/boost/crc.hpp delete mode 100644 sdk/include/boost/cregex.hpp delete mode 100644 sdk/include/boost/cstdint.hpp delete mode 100644 sdk/include/boost/cstdlib.hpp delete mode 100644 sdk/include/boost/current_function.hpp delete mode 100644 sdk/include/boost/date_time/adjust_functors.hpp delete mode 100644 sdk/include/boost/date_time/c_local_time_adjustor.hpp delete mode 100644 sdk/include/boost/date_time/c_time.hpp delete mode 100644 sdk/include/boost/date_time/compiler_config.hpp delete mode 100644 sdk/include/boost/date_time/constrained_value.hpp delete mode 100644 sdk/include/boost/date_time/date.hpp delete mode 100644 sdk/include/boost/date_time/date_clock_device.hpp delete mode 100644 sdk/include/boost/date_time/date_defs.hpp delete mode 100644 sdk/include/boost/date_time/date_duration.hpp delete mode 100644 sdk/include/boost/date_time/date_format_simple.hpp delete mode 100644 sdk/include/boost/date_time/date_formatting.hpp delete mode 100644 sdk/include/boost/date_time/date_formatting_locales.hpp delete mode 100644 sdk/include/boost/date_time/date_generators.hpp delete mode 100644 sdk/include/boost/date_time/date_iterator.hpp delete mode 100644 sdk/include/boost/date_time/date_names_put.hpp delete mode 100644 sdk/include/boost/date_time/date_parsing.hpp delete mode 100644 sdk/include/boost/date_time/dst_rules.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/formatters.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_calendar.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_date.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_day.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_day_of_year.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_duration.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_facet.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_month.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_weekday.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_year.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/greg_ymd.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/gregorian.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/gregorian_types.hpp delete mode 100644 sdk/include/boost/date_time/gregorian/parsers.hpp delete mode 100644 sdk/include/boost/date_time/gregorian_calendar.hpp delete mode 100644 sdk/include/boost/date_time/gregorian_calendar.ipp delete mode 100644 sdk/include/boost/date_time/int_adapter.hpp delete mode 100644 sdk/include/boost/date_time/iso_format.hpp delete mode 100644 sdk/include/boost/date_time/local_time_adjustor.hpp delete mode 100644 sdk/include/boost/date_time/local_timezone_defs.hpp delete mode 100644 sdk/include/boost/date_time/locale_config.hpp delete mode 100644 sdk/include/boost/date_time/microsec_time_clock.hpp delete mode 100644 sdk/include/boost/date_time/parse_format_base.hpp delete mode 100644 sdk/include/boost/date_time/period.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/posix_time.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/posix_time_config.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/posix_time_duration.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/posix_time_system.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/posix_time_types.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/ptime.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/time_formatters.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/time_parsers.hpp delete mode 100644 sdk/include/boost/date_time/posix_time/time_period.hpp delete mode 100644 sdk/include/boost/date_time/special_defs.hpp delete mode 100644 sdk/include/boost/date_time/testfrmwk.hpp delete mode 100644 sdk/include/boost/date_time/time.hpp delete mode 100644 sdk/include/boost/date_time/time_clock.hpp delete mode 100644 sdk/include/boost/date_time/time_defs.hpp delete mode 100644 sdk/include/boost/date_time/time_duration.hpp delete mode 100644 sdk/include/boost/date_time/time_formatting_streams.hpp delete mode 100644 sdk/include/boost/date_time/time_iterator.hpp delete mode 100644 sdk/include/boost/date_time/time_parsing.hpp delete mode 100644 sdk/include/boost/date_time/time_resolution_traits.hpp delete mode 100644 sdk/include/boost/date_time/time_system_counted.hpp delete mode 100644 sdk/include/boost/date_time/time_system_split.hpp delete mode 100644 sdk/include/boost/date_time/wrapping_int.hpp delete mode 100644 sdk/include/boost/date_time/year_month_day.hpp delete mode 100644 sdk/include/boost/detail/algorithm.hpp delete mode 100644 sdk/include/boost/detail/allocator.hpp delete mode 100644 sdk/include/boost/detail/atomic_count.hpp delete mode 100644 sdk/include/boost/detail/atomic_count_gcc.hpp delete mode 100644 sdk/include/boost/detail/atomic_count_linux.hpp delete mode 100644 sdk/include/boost/detail/atomic_count_pthreads.hpp delete mode 100644 sdk/include/boost/detail/atomic_count_win32.hpp delete mode 100644 sdk/include/boost/detail/binary_search.hpp delete mode 100644 sdk/include/boost/detail/call_traits.hpp delete mode 100644 sdk/include/boost/detail/catch_exceptions.hpp delete mode 100644 sdk/include/boost/detail/compressed_pair.hpp delete mode 100644 sdk/include/boost/detail/dynamic_bitset.hpp delete mode 100644 sdk/include/boost/detail/iterator.hpp delete mode 100644 sdk/include/boost/detail/lightweight_mutex.hpp delete mode 100644 sdk/include/boost/detail/lightweight_test.hpp delete mode 100644 sdk/include/boost/detail/limits.hpp delete mode 100644 sdk/include/boost/detail/lwm_gcc.hpp delete mode 100644 sdk/include/boost/detail/lwm_irix.hpp delete mode 100644 sdk/include/boost/detail/lwm_linux.hpp delete mode 100644 sdk/include/boost/detail/lwm_nop.hpp delete mode 100644 sdk/include/boost/detail/lwm_pthreads.hpp delete mode 100644 sdk/include/boost/detail/lwm_win32.hpp delete mode 100644 sdk/include/boost/detail/lwm_win32_cs.hpp delete mode 100644 sdk/include/boost/detail/named_template_params.hpp delete mode 100644 sdk/include/boost/detail/numeric_traits.hpp delete mode 100644 sdk/include/boost/detail/ob_call_traits.hpp delete mode 100644 sdk/include/boost/detail/ob_compressed_pair.hpp delete mode 100644 sdk/include/boost/detail/quick_allocator.hpp delete mode 100644 sdk/include/boost/detail/select_type.hpp delete mode 100644 sdk/include/boost/detail/shared_array_nmt.hpp delete mode 100644 sdk/include/boost/detail/shared_count.hpp delete mode 100644 sdk/include/boost/detail/shared_ptr_nmt.hpp delete mode 100644 sdk/include/boost/detail/workaround.hpp delete mode 100644 sdk/include/boost/dynamic_bitset.hpp delete mode 100644 sdk/include/boost/dynamic_bitset_fwd.hpp delete mode 100644 sdk/include/boost/enable_shared_from_this.hpp delete mode 100644 sdk/include/boost/filesystem/convenience.hpp delete mode 100644 sdk/include/boost/filesystem/exception.hpp delete mode 100644 sdk/include/boost/filesystem/fstream.hpp delete mode 100644 sdk/include/boost/filesystem/operations.hpp delete mode 100644 sdk/include/boost/filesystem/path.hpp delete mode 100644 sdk/include/boost/format.hpp delete mode 100644 sdk/include/boost/format/exceptions.hpp delete mode 100644 sdk/include/boost/format/feed_args.hpp delete mode 100644 sdk/include/boost/format/format_class.hpp delete mode 100644 sdk/include/boost/format/format_fwd.hpp delete mode 100644 sdk/include/boost/format/format_implementation.hpp delete mode 100644 sdk/include/boost/format/free_funcs.hpp delete mode 100644 sdk/include/boost/format/group.hpp delete mode 100644 sdk/include/boost/format/internals.hpp delete mode 100644 sdk/include/boost/format/internals_fwd.hpp delete mode 100644 sdk/include/boost/format/macros_default.hpp delete mode 100644 sdk/include/boost/format/macros_stlport.hpp delete mode 100644 sdk/include/boost/format/msvc_disambiguater.hpp delete mode 100644 sdk/include/boost/format/parsing.hpp delete mode 100644 sdk/include/boost/function.hpp delete mode 100644 sdk/include/boost/function/detail/function_iterate.hpp delete mode 100644 sdk/include/boost/function/detail/gen_maybe_include.pl delete mode 100644 sdk/include/boost/function/detail/maybe_include.hpp delete mode 100644 sdk/include/boost/function/detail/prologue.hpp delete mode 100644 sdk/include/boost/function/function0.hpp delete mode 100644 sdk/include/boost/function/function1.hpp delete mode 100644 sdk/include/boost/function/function10.hpp delete mode 100644 sdk/include/boost/function/function2.hpp delete mode 100644 sdk/include/boost/function/function3.hpp delete mode 100644 sdk/include/boost/function/function4.hpp delete mode 100644 sdk/include/boost/function/function5.hpp delete mode 100644 sdk/include/boost/function/function6.hpp delete mode 100644 sdk/include/boost/function/function7.hpp delete mode 100644 sdk/include/boost/function/function8.hpp delete mode 100644 sdk/include/boost/function/function9.hpp delete mode 100644 sdk/include/boost/function/function_base.hpp delete mode 100644 sdk/include/boost/function/function_template.hpp delete mode 100644 sdk/include/boost/function/gen_function_N.pl delete mode 100644 sdk/include/boost/function_output_iterator.hpp delete mode 100644 sdk/include/boost/functional.hpp delete mode 100644 sdk/include/boost/generator_iterator.hpp delete mode 100644 sdk/include/boost/get_pointer.hpp delete mode 100644 sdk/include/boost/graph/adjacency_iterator.hpp delete mode 100644 sdk/include/boost/graph/adjacency_list.hpp delete mode 100644 sdk/include/boost/graph/adjacency_list_io.hpp delete mode 100644 sdk/include/boost/graph/adjacency_matrix.hpp delete mode 100644 sdk/include/boost/graph/bandwidth.hpp delete mode 100644 sdk/include/boost/graph/bellman_ford_shortest_paths.hpp delete mode 100644 sdk/include/boost/graph/biconnected_components.hpp delete mode 100644 sdk/include/boost/graph/breadth_first_search.hpp delete mode 100644 sdk/include/boost/graph/connected_components.hpp delete mode 100644 sdk/include/boost/graph/copy.hpp delete mode 100644 sdk/include/boost/graph/create_condensation_graph.hpp delete mode 100644 sdk/include/boost/graph/cuthill_mckee_ordering.hpp delete mode 100644 sdk/include/boost/graph/dag_shortest_paths.hpp delete mode 100644 sdk/include/boost/graph/depth_first_search.hpp delete mode 100644 sdk/include/boost/graph/detail/adj_list_edge_iterator.hpp delete mode 100644 sdk/include/boost/graph/detail/adjacency_list.hpp delete mode 100644 sdk/include/boost/graph/detail/array_binary_tree.hpp delete mode 100644 sdk/include/boost/graph/detail/bitset.hpp delete mode 100644 sdk/include/boost/graph/detail/bitset_adaptor.hpp delete mode 100644 sdk/include/boost/graph/detail/connected_components.hpp delete mode 100644 sdk/include/boost/graph/detail/edge.hpp delete mode 100644 sdk/include/boost/graph/detail/incidence_iterator.hpp delete mode 100644 sdk/include/boost/graph/detail/incremental_components.hpp delete mode 100644 sdk/include/boost/graph/detail/intset.hpp delete mode 100644 sdk/include/boost/graph/detail/is_same.hpp delete mode 100644 sdk/include/boost/graph/detail/list_base.hpp delete mode 100644 sdk/include/boost/graph/detail/permutation.hpp delete mode 100644 sdk/include/boost/graph/detail/self_avoiding_walk.hpp delete mode 100644 sdk/include/boost/graph/detail/set_adaptor.hpp delete mode 100644 sdk/include/boost/graph/detail/shadow_iterator.hpp delete mode 100644 sdk/include/boost/graph/dijkstra_shortest_paths.hpp delete mode 100644 sdk/include/boost/graph/edge_connectivity.hpp delete mode 100644 sdk/include/boost/graph/edge_list.hpp delete mode 100644 sdk/include/boost/graph/edmunds_karp_max_flow.hpp delete mode 100644 sdk/include/boost/graph/exception.hpp delete mode 100644 sdk/include/boost/graph/filtered_graph.hpp delete mode 100644 sdk/include/boost/graph/graph_archetypes.hpp delete mode 100644 sdk/include/boost/graph/graph_as_tree.hpp delete mode 100644 sdk/include/boost/graph/graph_concepts.hpp delete mode 100644 sdk/include/boost/graph/graph_selectors.hpp delete mode 100644 sdk/include/boost/graph/graph_test.hpp delete mode 100644 sdk/include/boost/graph/graph_traits.hpp delete mode 100644 sdk/include/boost/graph/graph_utility.hpp delete mode 100644 sdk/include/boost/graph/graphviz.hpp delete mode 100644 sdk/include/boost/graph/incremental_components.hpp delete mode 100644 sdk/include/boost/graph/isomorphism.hpp delete mode 100644 sdk/include/boost/graph/iteration_macros.hpp delete mode 100644 sdk/include/boost/graph/iteration_macros_undef.hpp delete mode 100644 sdk/include/boost/graph/johnson_all_pairs_shortest.hpp delete mode 100644 sdk/include/boost/graph/kruskal_min_spanning_tree.hpp delete mode 100644 sdk/include/boost/graph/leda_graph.hpp delete mode 100644 sdk/include/boost/graph/matrix_as_graph.hpp delete mode 100644 sdk/include/boost/graph/minimum_degree_ordering.hpp delete mode 100644 sdk/include/boost/graph/named_function_params.hpp delete mode 100644 sdk/include/boost/graph/neighbor_bfs.hpp delete mode 100644 sdk/include/boost/graph/prim_minimum_spanning_tree.hpp delete mode 100644 sdk/include/boost/graph/profile.hpp delete mode 100644 sdk/include/boost/graph/properties.hpp delete mode 100644 sdk/include/boost/graph/property_iter_range.hpp delete mode 100644 sdk/include/boost/graph/push_relabel_max_flow.hpp delete mode 100644 sdk/include/boost/graph/random.hpp delete mode 100644 sdk/include/boost/graph/read_dimacs.hpp delete mode 100644 sdk/include/boost/graph/relax.hpp delete mode 100644 sdk/include/boost/graph/reverse_graph.hpp delete mode 100644 sdk/include/boost/graph/sequential_vertex_coloring.hpp delete mode 100644 sdk/include/boost/graph/sloan_ordering.hpp delete mode 100644 sdk/include/boost/graph/smallest_last_ordering.hpp delete mode 100644 sdk/include/boost/graph/stanford_graph.hpp delete mode 100644 sdk/include/boost/graph/strong_components.hpp delete mode 100644 sdk/include/boost/graph/subgraph.hpp delete mode 100644 sdk/include/boost/graph/topological_sort.hpp delete mode 100644 sdk/include/boost/graph/transitive_closure.hpp delete mode 100644 sdk/include/boost/graph/transpose_graph.hpp delete mode 100644 sdk/include/boost/graph/tree_traits.hpp delete mode 100644 sdk/include/boost/graph/undirected_dfs.hpp delete mode 100644 sdk/include/boost/graph/vector_as_graph.hpp delete mode 100644 sdk/include/boost/graph/visitors.hpp delete mode 100644 sdk/include/boost/graph/wavefront.hpp delete mode 100644 sdk/include/boost/half_open_range.hpp delete mode 100644 sdk/include/boost/integer.hpp delete mode 100644 sdk/include/boost/integer/integer_mask.hpp delete mode 100644 sdk/include/boost/integer/static_log2.hpp delete mode 100644 sdk/include/boost/integer/static_min_max.hpp delete mode 100644 sdk/include/boost/integer_fwd.hpp delete mode 100644 sdk/include/boost/integer_traits.hpp delete mode 100644 sdk/include/boost/intrusive_ptr.hpp delete mode 100644 sdk/include/boost/io/ios_state.hpp delete mode 100644 sdk/include/boost/io_fwd.hpp delete mode 100644 sdk/include/boost/iterator.hpp delete mode 100644 sdk/include/boost/iterator_adaptors.hpp delete mode 100644 sdk/include/boost/lambda/algorithm.hpp delete mode 100644 sdk/include/boost/lambda/bind.hpp delete mode 100644 sdk/include/boost/lambda/casts.hpp delete mode 100644 sdk/include/boost/lambda/closures.hpp delete mode 100644 sdk/include/boost/lambda/construct.hpp delete mode 100644 sdk/include/boost/lambda/control_structures.hpp delete mode 100644 sdk/include/boost/lambda/core.hpp delete mode 100644 sdk/include/boost/lambda/detail/actions.hpp delete mode 100644 sdk/include/boost/lambda/detail/arity_code.hpp delete mode 100644 sdk/include/boost/lambda/detail/bind_functions.hpp delete mode 100644 sdk/include/boost/lambda/detail/control_constructs_common.hpp delete mode 100644 sdk/include/boost/lambda/detail/control_structures_impl.hpp delete mode 100644 sdk/include/boost/lambda/detail/function_adaptors.hpp delete mode 100644 sdk/include/boost/lambda/detail/is_instance_of.hpp delete mode 100644 sdk/include/boost/lambda/detail/lambda_config.hpp delete mode 100644 sdk/include/boost/lambda/detail/lambda_functor_base.hpp delete mode 100644 sdk/include/boost/lambda/detail/lambda_functors.hpp delete mode 100644 sdk/include/boost/lambda/detail/lambda_fwd.hpp delete mode 100644 sdk/include/boost/lambda/detail/lambda_traits.hpp delete mode 100644 sdk/include/boost/lambda/detail/member_ptr.hpp delete mode 100644 sdk/include/boost/lambda/detail/operator_actions.hpp delete mode 100644 sdk/include/boost/lambda/detail/operator_lambda_func_base.hpp delete mode 100644 sdk/include/boost/lambda/detail/operator_return_type_traits.hpp delete mode 100644 sdk/include/boost/lambda/detail/operators.hpp delete mode 100644 sdk/include/boost/lambda/detail/ret.hpp delete mode 100644 sdk/include/boost/lambda/detail/return_type_traits.hpp delete mode 100644 sdk/include/boost/lambda/detail/select_functions.hpp delete mode 100644 sdk/include/boost/lambda/exceptions.hpp delete mode 100644 sdk/include/boost/lambda/if.hpp delete mode 100644 sdk/include/boost/lambda/lambda.hpp delete mode 100644 sdk/include/boost/lambda/loops.hpp delete mode 100644 sdk/include/boost/lambda/numeric.hpp delete mode 100644 sdk/include/boost/lambda/switch.hpp delete mode 100644 sdk/include/boost/last_value.hpp delete mode 100644 sdk/include/boost/lexical_cast.hpp delete mode 100644 sdk/include/boost/limits.hpp delete mode 100644 sdk/include/boost/math/common_factor.hpp delete mode 100644 sdk/include/boost/math/common_factor_ct.hpp delete mode 100644 sdk/include/boost/math/common_factor_rt.hpp delete mode 100644 sdk/include/boost/math/octonion.hpp delete mode 100644 sdk/include/boost/math/quaternion.hpp delete mode 100644 sdk/include/boost/math/special_functions/acosh.hpp delete mode 100644 sdk/include/boost/math/special_functions/asinh.hpp delete mode 100644 sdk/include/boost/math/special_functions/atanh.hpp delete mode 100644 sdk/include/boost/math/special_functions/sinc.hpp delete mode 100644 sdk/include/boost/math/special_functions/sinhc.hpp delete mode 100644 sdk/include/boost/math_fwd.hpp delete mode 100644 sdk/include/boost/mem_fn.hpp delete mode 100644 sdk/include/boost/min_rand.hpp delete mode 100644 sdk/include/boost/mpl/O1_size.hpp delete mode 100644 sdk/include/boost/mpl/O1_size_fwd.hpp delete mode 100644 sdk/include/boost/mpl/advance.hpp delete mode 100644 sdk/include/boost/mpl/alias.hpp delete mode 100644 sdk/include/boost/mpl/always.hpp delete mode 100644 sdk/include/boost/mpl/and.hpp delete mode 100644 sdk/include/boost/mpl/apply.hpp delete mode 100644 sdk/include/boost/mpl/apply_if.hpp delete mode 100644 sdk/include/boost/mpl/arg.hpp delete mode 100644 sdk/include/boost/mpl/arg_fwd.hpp delete mode 100644 sdk/include/boost/mpl/arithmetic.hpp delete mode 100644 sdk/include/boost/mpl/as_sequence.hpp delete mode 100644 sdk/include/boost/mpl/assert_is_same.hpp delete mode 100644 sdk/include/boost/mpl/at.hpp delete mode 100644 sdk/include/boost/mpl/at_fwd.hpp delete mode 100644 sdk/include/boost/mpl/aux_/O1_size_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/algorithm_namespace.hpp delete mode 100644 sdk/include/boost/mpl/aux_/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/apply_1st.hpp delete mode 100644 sdk/include/boost/mpl/aux_/arg_typedef.hpp delete mode 100644 sdk/include/boost/mpl/aux_/arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/arity_spec.hpp delete mode 100644 sdk/include/boost/mpl/aux_/at_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/back_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/begin_end_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/bool_value_wknd.hpp delete mode 100644 sdk/include/boost/mpl/aux_/clear_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/common_name_wknd.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/compiler.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/dependent_nttp.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/dtp.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/eti.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/internals.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/msvc.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/msvc_typename.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/nttp.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/overload_resolution.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/preprocessor.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/static_constant.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/ttp.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/use_preprocessed.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/config/workaround.hpp delete mode 100644 sdk/include/boost/mpl/aux_/copy_if_op.hpp delete mode 100644 sdk/include/boost/mpl/aux_/copy_op.hpp delete mode 100644 sdk/include/boost/mpl/aux_/count_args.hpp delete mode 100644 sdk/include/boost/mpl/aux_/debug_print.hpp delete mode 100644 sdk/include/boost/mpl/aux_/deref_wknd.hpp delete mode 100644 sdk/include/boost/mpl/aux_/empty_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/erase_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/filter_iter.hpp delete mode 100644 sdk/include/boost/mpl/aux_/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/fold_backward_impl_body.hpp delete mode 100644 sdk/include/boost/mpl/aux_/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/fold_impl_body.hpp delete mode 100644 sdk/include/boost/mpl/aux_/fold_op.hpp delete mode 100644 sdk/include/boost/mpl/aux_/fold_pred.hpp delete mode 100644 sdk/include/boost/mpl/aux_/front_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/has_begin.hpp delete mode 100644 sdk/include/boost/mpl/aux_/has_rebind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/has_size.hpp delete mode 100644 sdk/include/boost/mpl/aux_/has_tag.hpp delete mode 100644 sdk/include/boost/mpl/aux_/has_type.hpp delete mode 100644 sdk/include/boost/mpl/aux_/has_xxx.hpp delete mode 100644 sdk/include/boost/mpl/aux_/ice_cast.hpp delete mode 100644 sdk/include/boost/mpl/aux_/include_preprocessed.hpp delete mode 100644 sdk/include/boost/mpl/aux_/insert_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/insert_range_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/integral_wrapper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/is_msvc_eti_arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/iter_apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/iter_distance.hpp delete mode 100644 sdk/include/boost/mpl/aux_/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/iter_push_front.hpp delete mode 100644 sdk/include/boost/mpl/aux_/iterator_category.hpp delete mode 100644 sdk/include/boost/mpl/aux_/iterator_names.hpp delete mode 100644 sdk/include/boost/mpl/aux_/joint_iter.hpp delete mode 100644 sdk/include/boost/mpl/aux_/lambda_arity_param.hpp delete mode 100644 sdk/include/boost/mpl/aux_/lambda_expr.hpp delete mode 100644 sdk/include/boost/mpl/aux_/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/lambda_spec.hpp delete mode 100644 sdk/include/boost/mpl/aux_/lambda_support.hpp delete mode 100644 sdk/include/boost/mpl/aux_/logical_op.hpp delete mode 100644 sdk/include/boost/mpl/aux_/metafunction.hpp delete mode 100644 sdk/include/boost/mpl/aux_/msvc_dtw.hpp delete mode 100644 sdk/include/boost/mpl/aux_/msvc_eti_base.hpp delete mode 100644 sdk/include/boost/mpl/aux_/msvc_never_true.hpp delete mode 100644 sdk/include/boost/mpl/aux_/nested_type_wknd.hpp delete mode 100644 sdk/include/boost/mpl/aux_/next.hpp delete mode 100644 sdk/include/boost/mpl/aux_/pop_back_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/pop_front_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/pred.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/and.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/apply.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/arg.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/bind.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/iter_fold_backward_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/list.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/list_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/or.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/quote.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/vector.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessed/plain/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/add.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/default_params.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/enum.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/ext_params.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/filter_params.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/params.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/partial_spec_params.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/range.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/repeat.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/sub.hpp delete mode 100644 sdk/include/boost/mpl/aux_/preprocessor/tuple.hpp delete mode 100644 sdk/include/boost/mpl/aux_/prior.hpp delete mode 100644 sdk/include/boost/mpl/aux_/push_back_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/push_front_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/range_c/O1_size.hpp delete mode 100644 sdk/include/boost/mpl/aux_/range_c/back.hpp delete mode 100644 sdk/include/boost/mpl/aux_/range_c/begin_end.hpp delete mode 100644 sdk/include/boost/mpl/aux_/range_c/empty.hpp delete mode 100644 sdk/include/boost/mpl/aux_/range_c/front.hpp delete mode 100644 sdk/include/boost/mpl/aux_/range_c/iterator.hpp delete mode 100644 sdk/include/boost/mpl/aux_/range_c/size.hpp delete mode 100644 sdk/include/boost/mpl/aux_/range_c/tag.hpp delete mode 100644 sdk/include/boost/mpl/aux_/sequence_tag.hpp delete mode 100644 sdk/include/boost/mpl/aux_/single_element_iter.hpp delete mode 100644 sdk/include/boost/mpl/aux_/size_impl.hpp delete mode 100644 sdk/include/boost/mpl/aux_/template_arity.hpp delete mode 100644 sdk/include/boost/mpl/aux_/template_arity_fwd.hpp delete mode 100644 sdk/include/boost/mpl/aux_/traits_lambda_spec.hpp delete mode 100644 sdk/include/boost/mpl/aux_/transform_iter.hpp delete mode 100644 sdk/include/boost/mpl/aux_/type_wrapper.hpp delete mode 100644 sdk/include/boost/mpl/aux_/typeof.hpp delete mode 100644 sdk/include/boost/mpl/aux_/unwrap.hpp delete mode 100644 sdk/include/boost/mpl/aux_/value_wknd.hpp delete mode 100644 sdk/include/boost/mpl/aux_/void_spec.hpp delete mode 100644 sdk/include/boost/mpl/aux_/yes_no.hpp delete mode 100644 sdk/include/boost/mpl/back.hpp delete mode 100644 sdk/include/boost/mpl/back_fwd.hpp delete mode 100644 sdk/include/boost/mpl/base.hpp delete mode 100644 sdk/include/boost/mpl/begin_end.hpp delete mode 100644 sdk/include/boost/mpl/begin_end_fwd.hpp delete mode 100644 sdk/include/boost/mpl/bind.hpp delete mode 100644 sdk/include/boost/mpl/bitand.hpp delete mode 100644 sdk/include/boost/mpl/bitor.hpp delete mode 100644 sdk/include/boost/mpl/bitwise.hpp delete mode 100644 sdk/include/boost/mpl/bitxor.hpp delete mode 100644 sdk/include/boost/mpl/bool.hpp delete mode 100644 sdk/include/boost/mpl/bool_fwd.hpp delete mode 100644 sdk/include/boost/mpl/clear.hpp delete mode 100644 sdk/include/boost/mpl/clear_fwd.hpp delete mode 100644 sdk/include/boost/mpl/comparison.hpp delete mode 100644 sdk/include/boost/mpl/contains.hpp delete mode 100644 sdk/include/boost/mpl/copy.hpp delete mode 100644 sdk/include/boost/mpl/copy_backward.hpp delete mode 100644 sdk/include/boost/mpl/copy_backward_if.hpp delete mode 100644 sdk/include/boost/mpl/copy_if.hpp delete mode 100644 sdk/include/boost/mpl/count.hpp delete mode 100644 sdk/include/boost/mpl/count_if.hpp delete mode 100644 sdk/include/boost/mpl/deref.hpp delete mode 100644 sdk/include/boost/mpl/distance.hpp delete mode 100644 sdk/include/boost/mpl/divides.hpp delete mode 100644 sdk/include/boost/mpl/empty.hpp delete mode 100644 sdk/include/boost/mpl/empty_base.hpp delete mode 100644 sdk/include/boost/mpl/empty_fwd.hpp delete mode 100644 sdk/include/boost/mpl/equal.hpp delete mode 100644 sdk/include/boost/mpl/equal_to.hpp delete mode 100644 sdk/include/boost/mpl/erase.hpp delete mode 100644 sdk/include/boost/mpl/erase_fwd.hpp delete mode 100644 sdk/include/boost/mpl/filter_view.hpp delete mode 100644 sdk/include/boost/mpl/find.hpp delete mode 100644 sdk/include/boost/mpl/find_if.hpp delete mode 100644 sdk/include/boost/mpl/fold.hpp delete mode 100644 sdk/include/boost/mpl/fold_backward.hpp delete mode 100644 sdk/include/boost/mpl/for_each.hpp delete mode 100644 sdk/include/boost/mpl/front.hpp delete mode 100644 sdk/include/boost/mpl/front_fwd.hpp delete mode 100644 sdk/include/boost/mpl/greater.hpp delete mode 100644 sdk/include/boost/mpl/greater_equal.hpp delete mode 100644 sdk/include/boost/mpl/identity.hpp delete mode 100644 sdk/include/boost/mpl/if.hpp delete mode 100644 sdk/include/boost/mpl/inherit.hpp delete mode 100644 sdk/include/boost/mpl/inherit_linearly.hpp delete mode 100644 sdk/include/boost/mpl/insert.hpp delete mode 100644 sdk/include/boost/mpl/insert_fwd.hpp delete mode 100644 sdk/include/boost/mpl/insert_range.hpp delete mode 100644 sdk/include/boost/mpl/insert_range_fwd.hpp delete mode 100644 sdk/include/boost/mpl/int.hpp delete mode 100644 sdk/include/boost/mpl/int_fwd.hpp delete mode 100644 sdk/include/boost/mpl/integral_c.hpp delete mode 100644 sdk/include/boost/mpl/integral_c_fwd.hpp delete mode 100644 sdk/include/boost/mpl/is_placeholder.hpp delete mode 100644 sdk/include/boost/mpl/is_sequence.hpp delete mode 100644 sdk/include/boost/mpl/iter_fold.hpp delete mode 100644 sdk/include/boost/mpl/iter_fold_backward.hpp delete mode 100644 sdk/include/boost/mpl/iterator_category.hpp delete mode 100644 sdk/include/boost/mpl/iterator_range.hpp delete mode 100644 sdk/include/boost/mpl/iterator_tag.hpp delete mode 100644 sdk/include/boost/mpl/joint_view.hpp delete mode 100644 sdk/include/boost/mpl/lambda.hpp delete mode 100644 sdk/include/boost/mpl/lambda_fwd.hpp delete mode 100644 sdk/include/boost/mpl/lambda_helper.hpp delete mode 100644 sdk/include/boost/mpl/less.hpp delete mode 100644 sdk/include/boost/mpl/less_equal.hpp delete mode 100644 sdk/include/boost/mpl/limits/arity.hpp delete mode 100644 sdk/include/boost/mpl/limits/list.hpp delete mode 100644 sdk/include/boost/mpl/limits/unrolling.hpp delete mode 100644 sdk/include/boost/mpl/limits/vector.hpp delete mode 100644 sdk/include/boost/mpl/list.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/O1_size.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/begin_end.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/clear.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/empty.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/front.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/include_preprocessed.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/iterator.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/node.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/numbered.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/numbered_c.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/pop_front.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list10.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list20.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list30.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list40.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list50.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/push_front.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/size.hpp delete mode 100644 sdk/include/boost/mpl/list/aux_/tag.hpp delete mode 100644 sdk/include/boost/mpl/list/list0.hpp delete mode 100644 sdk/include/boost/mpl/list/list0_c.hpp delete mode 100644 sdk/include/boost/mpl/list/list10.hpp delete mode 100644 sdk/include/boost/mpl/list/list10_c.hpp delete mode 100644 sdk/include/boost/mpl/list/list20.hpp delete mode 100644 sdk/include/boost/mpl/list/list20_c.hpp delete mode 100644 sdk/include/boost/mpl/list/list30.hpp delete mode 100644 sdk/include/boost/mpl/list/list30_c.hpp delete mode 100644 sdk/include/boost/mpl/list/list40.hpp delete mode 100644 sdk/include/boost/mpl/list/list40_c.hpp delete mode 100644 sdk/include/boost/mpl/list/list50.hpp delete mode 100644 sdk/include/boost/mpl/list/list50_c.hpp delete mode 100644 sdk/include/boost/mpl/list_c.hpp delete mode 100644 sdk/include/boost/mpl/logical.hpp delete mode 100644 sdk/include/boost/mpl/long.hpp delete mode 100644 sdk/include/boost/mpl/long_fwd.hpp delete mode 100644 sdk/include/boost/mpl/lower_bound.hpp delete mode 100644 sdk/include/boost/mpl/math/fixed_c.hpp delete mode 100644 sdk/include/boost/mpl/math/is_even.hpp delete mode 100644 sdk/include/boost/mpl/math/rational_c.hpp delete mode 100644 sdk/include/boost/mpl/max_element.hpp delete mode 100644 sdk/include/boost/mpl/minus.hpp delete mode 100644 sdk/include/boost/mpl/modulus.hpp delete mode 100644 sdk/include/boost/mpl/multiplies.hpp delete mode 100644 sdk/include/boost/mpl/negate.hpp delete mode 100644 sdk/include/boost/mpl/next.hpp delete mode 100644 sdk/include/boost/mpl/not.hpp delete mode 100644 sdk/include/boost/mpl/not_equal_to.hpp delete mode 100644 sdk/include/boost/mpl/or.hpp delete mode 100644 sdk/include/boost/mpl/pair.hpp delete mode 100644 sdk/include/boost/mpl/placeholders.hpp delete mode 100644 sdk/include/boost/mpl/plus.hpp delete mode 100644 sdk/include/boost/mpl/pop_back.hpp delete mode 100644 sdk/include/boost/mpl/pop_back_fwd.hpp delete mode 100644 sdk/include/boost/mpl/pop_front.hpp delete mode 100644 sdk/include/boost/mpl/pop_front_fwd.hpp delete mode 100644 sdk/include/boost/mpl/prior.hpp delete mode 100644 sdk/include/boost/mpl/project1st.hpp delete mode 100644 sdk/include/boost/mpl/project2nd.hpp delete mode 100644 sdk/include/boost/mpl/protect.hpp delete mode 100644 sdk/include/boost/mpl/push_back.hpp delete mode 100644 sdk/include/boost/mpl/push_back_fwd.hpp delete mode 100644 sdk/include/boost/mpl/push_front.hpp delete mode 100644 sdk/include/boost/mpl/push_front_fwd.hpp delete mode 100644 sdk/include/boost/mpl/quote.hpp delete mode 100644 sdk/include/boost/mpl/range_c.hpp delete mode 100644 sdk/include/boost/mpl/remove.hpp delete mode 100644 sdk/include/boost/mpl/remove_if.hpp delete mode 100644 sdk/include/boost/mpl/replace.hpp delete mode 100644 sdk/include/boost/mpl/replace_if.hpp delete mode 100644 sdk/include/boost/mpl/reverse.hpp delete mode 100644 sdk/include/boost/mpl/same_as.hpp delete mode 100644 sdk/include/boost/mpl/select1st.hpp delete mode 100644 sdk/include/boost/mpl/select2nd.hpp delete mode 100644 sdk/include/boost/mpl/sequence_tag.hpp delete mode 100644 sdk/include/boost/mpl/sequence_tag_fwd.hpp delete mode 100644 sdk/include/boost/mpl/shift_left.hpp delete mode 100644 sdk/include/boost/mpl/shift_right.hpp delete mode 100644 sdk/include/boost/mpl/single_view.hpp delete mode 100644 sdk/include/boost/mpl/size.hpp delete mode 100644 sdk/include/boost/mpl/size_fwd.hpp delete mode 100644 sdk/include/boost/mpl/size_t.hpp delete mode 100644 sdk/include/boost/mpl/size_t_fwd.hpp delete mode 100644 sdk/include/boost/mpl/sizeof.hpp delete mode 100644 sdk/include/boost/mpl/switch.hpp delete mode 100644 sdk/include/boost/mpl/transform.hpp delete mode 100644 sdk/include/boost/mpl/transform_view.hpp delete mode 100644 sdk/include/boost/mpl/unique.hpp delete mode 100644 sdk/include/boost/mpl/upper_bound.hpp delete mode 100644 sdk/include/boost/mpl/vector.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/O1_size.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/at.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/back.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/begin_end.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/clear.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/empty.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/front.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/include_preprocessed.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/item.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/iterator.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/node.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/numbered.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/numbered_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/pop_back.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/pop_front.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/push_back.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/push_front.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/size.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/tag.hpp delete mode 100644 sdk/include/boost/mpl/vector/aux_/vector0.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector0.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector0_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector10.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector10_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector20.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector20_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector30.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector30_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector40.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector40_c.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector50.hpp delete mode 100644 sdk/include/boost/mpl/vector/vector50_c.hpp delete mode 100644 sdk/include/boost/mpl/vector_c.hpp delete mode 100644 sdk/include/boost/mpl/void.hpp delete mode 100644 sdk/include/boost/mpl/zip_view.hpp delete mode 100644 sdk/include/boost/multi_array.hpp delete mode 100644 sdk/include/boost/multi_array/algorithm.hpp delete mode 100644 sdk/include/boost/multi_array/base.hpp delete mode 100644 sdk/include/boost/multi_array/collection_concept.hpp delete mode 100644 sdk/include/boost/multi_array/concept_checks.hpp delete mode 100644 sdk/include/boost/multi_array/copy_array.hpp delete mode 100644 sdk/include/boost/multi_array/extent_gen.hpp delete mode 100644 sdk/include/boost/multi_array/extent_range.hpp delete mode 100644 sdk/include/boost/multi_array/index_gen.hpp delete mode 100644 sdk/include/boost/multi_array/index_range.hpp delete mode 100644 sdk/include/boost/multi_array/iterator.hpp delete mode 100644 sdk/include/boost/multi_array/iterator_adaptors.hpp delete mode 100644 sdk/include/boost/multi_array/multi_array_ref.hpp delete mode 100644 sdk/include/boost/multi_array/range_list.hpp delete mode 100644 sdk/include/boost/multi_array/storage_order.hpp delete mode 100644 sdk/include/boost/multi_array/subarray.hpp delete mode 100644 sdk/include/boost/multi_array/types.hpp delete mode 100644 sdk/include/boost/multi_array/view.hpp delete mode 100644 sdk/include/boost/next_prior.hpp delete mode 100644 sdk/include/boost/noncopyable.hpp delete mode 100644 sdk/include/boost/nondet_random.hpp delete mode 100644 sdk/include/boost/numeric/interval.hpp delete mode 100644 sdk/include/boost/numeric/interval/arith.hpp delete mode 100644 sdk/include/boost/numeric/interval/arith2.hpp delete mode 100644 sdk/include/boost/numeric/interval/checking.hpp delete mode 100644 sdk/include/boost/numeric/interval/compare.hpp delete mode 100644 sdk/include/boost/numeric/interval/compare/explicit.hpp delete mode 100644 sdk/include/boost/numeric/interval/compare/lexicographic.hpp delete mode 100644 sdk/include/boost/numeric/interval/compare/set.hpp delete mode 100644 sdk/include/boost/numeric/interval/compare/tribool.hpp delete mode 100644 sdk/include/boost/numeric/interval/constants.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/bcc_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/bugs.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/c99_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/c99sub_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/division.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/interval_prototype.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/msvc_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/ppc_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/sparc_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/test_input.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/x86_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/detail/x86gcc_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/ext/x86_fast_rounding_control.hpp delete mode 100644 sdk/include/boost/numeric/interval/hw_rounding.hpp delete mode 100644 sdk/include/boost/numeric/interval/interval.hpp delete mode 100644 sdk/include/boost/numeric/interval/io.hpp delete mode 100644 sdk/include/boost/numeric/interval/limits.hpp delete mode 100644 sdk/include/boost/numeric/interval/policies.hpp delete mode 100644 sdk/include/boost/numeric/interval/rounded_arith.hpp delete mode 100644 sdk/include/boost/numeric/interval/rounded_transc.hpp delete mode 100644 sdk/include/boost/numeric/interval/rounding.hpp delete mode 100644 sdk/include/boost/numeric/interval/transc.hpp delete mode 100644 sdk/include/boost/numeric/interval/utility.hpp delete mode 100644 sdk/include/boost/numeric/ublas/banded.hpp delete mode 100644 sdk/include/boost/numeric/ublas/blas.hpp delete mode 100644 sdk/include/boost/numeric/ublas/concepts.hpp delete mode 100644 sdk/include/boost/numeric/ublas/config.hpp delete mode 100644 sdk/include/boost/numeric/ublas/duff.hpp delete mode 100644 sdk/include/boost/numeric/ublas/exception.hpp delete mode 100644 sdk/include/boost/numeric/ublas/functional.hpp delete mode 100644 sdk/include/boost/numeric/ublas/hermitian.hpp delete mode 100644 sdk/include/boost/numeric/ublas/io.hpp delete mode 100644 sdk/include/boost/numeric/ublas/iterator.hpp delete mode 100644 sdk/include/boost/numeric/ublas/matrix.hpp delete mode 100644 sdk/include/boost/numeric/ublas/matrix_assign.hpp delete mode 100644 sdk/include/boost/numeric/ublas/matrix_expression.hpp delete mode 100644 sdk/include/boost/numeric/ublas/matrix_proxy.hpp delete mode 100644 sdk/include/boost/numeric/ublas/matrix_sparse.hpp delete mode 100644 sdk/include/boost/numeric/ublas/operation.hpp delete mode 100644 sdk/include/boost/numeric/ublas/operation_blocked.hpp delete mode 100644 sdk/include/boost/numeric/ublas/operation_sparse.hpp delete mode 100644 sdk/include/boost/numeric/ublas/storage.hpp delete mode 100644 sdk/include/boost/numeric/ublas/storage_sparse.hpp delete mode 100644 sdk/include/boost/numeric/ublas/symmetric.hpp delete mode 100644 sdk/include/boost/numeric/ublas/traits.hpp delete mode 100644 sdk/include/boost/numeric/ublas/triangular.hpp delete mode 100644 sdk/include/boost/numeric/ublas/vector.hpp delete mode 100644 sdk/include/boost/numeric/ublas/vector_assign.hpp delete mode 100644 sdk/include/boost/numeric/ublas/vector_expression.hpp delete mode 100644 sdk/include/boost/numeric/ublas/vector_proxy.hpp delete mode 100644 sdk/include/boost/numeric/ublas/vector_sparse.hpp delete mode 100644 sdk/include/boost/operators.hpp delete mode 100644 sdk/include/boost/optional.hpp delete mode 100644 sdk/include/boost/pending/bucket_sorter.hpp delete mode 100644 sdk/include/boost/pending/container_traits.hpp delete mode 100644 sdk/include/boost/pending/cstddef.hpp delete mode 100644 sdk/include/boost/pending/ct_if.hpp delete mode 100644 sdk/include/boost/pending/detail/disjoint_sets.hpp delete mode 100644 sdk/include/boost/pending/detail/int_iterator.hpp delete mode 100644 sdk/include/boost/pending/detail/property.hpp delete mode 100644 sdk/include/boost/pending/disjoint_sets.hpp delete mode 100644 sdk/include/boost/pending/fenced_priority_queue.hpp delete mode 100644 sdk/include/boost/pending/fibonacci_heap.hpp delete mode 100644 sdk/include/boost/pending/indirect_cmp.hpp delete mode 100644 sdk/include/boost/pending/integer_range.hpp delete mode 100644 sdk/include/boost/pending/is_heap.hpp delete mode 100644 sdk/include/boost/pending/iterator_adaptors.hpp delete mode 100644 sdk/include/boost/pending/iterator_tests.hpp delete mode 100644 sdk/include/boost/pending/mutable_heap.hpp delete mode 100644 sdk/include/boost/pending/mutable_queue.hpp delete mode 100644 sdk/include/boost/pending/property.hpp delete mode 100644 sdk/include/boost/pending/queue.hpp delete mode 100644 sdk/include/boost/pending/stringtok.hpp delete mode 100644 sdk/include/boost/permutation_iterator.hpp delete mode 100644 sdk/include/boost/pool/detail/ct_gcd_lcm.hpp delete mode 100644 sdk/include/boost/pool/detail/for.m4 delete mode 100644 sdk/include/boost/pool/detail/gcd_lcm.hpp delete mode 100644 sdk/include/boost/pool/detail/guard.hpp delete mode 100644 sdk/include/boost/pool/detail/mutex.hpp delete mode 100644 sdk/include/boost/pool/detail/pool_construct.bat delete mode 100644 sdk/include/boost/pool/detail/pool_construct.inc delete mode 100644 sdk/include/boost/pool/detail/pool_construct.m4 delete mode 100644 sdk/include/boost/pool/detail/pool_construct.sh delete mode 100644 sdk/include/boost/pool/detail/pool_construct_simple.bat delete mode 100644 sdk/include/boost/pool/detail/pool_construct_simple.inc delete mode 100644 sdk/include/boost/pool/detail/pool_construct_simple.m4 delete mode 100644 sdk/include/boost/pool/detail/pool_construct_simple.sh delete mode 100644 sdk/include/boost/pool/detail/singleton.hpp delete mode 100644 sdk/include/boost/pool/object_pool.hpp delete mode 100644 sdk/include/boost/pool/pool.hpp delete mode 100644 sdk/include/boost/pool/pool_alloc.hpp delete mode 100644 sdk/include/boost/pool/poolfwd.hpp delete mode 100644 sdk/include/boost/pool/simple_segregated_storage.hpp delete mode 100644 sdk/include/boost/pool/singleton_pool.hpp delete mode 100644 sdk/include/boost/preprocessor.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic/add.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic/dec.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic/detail/div_base.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic/div.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic/inc.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic/mod.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic/mul.hpp delete mode 100644 sdk/include/boost/preprocessor/arithmetic/sub.hpp delete mode 100644 sdk/include/boost/preprocessor/array.hpp delete mode 100644 sdk/include/boost/preprocessor/array/data.hpp delete mode 100644 sdk/include/boost/preprocessor/array/elem.hpp delete mode 100644 sdk/include/boost/preprocessor/array/insert.hpp delete mode 100644 sdk/include/boost/preprocessor/array/pop_back.hpp delete mode 100644 sdk/include/boost/preprocessor/array/pop_front.hpp delete mode 100644 sdk/include/boost/preprocessor/array/push_back.hpp delete mode 100644 sdk/include/boost/preprocessor/array/push_front.hpp delete mode 100644 sdk/include/boost/preprocessor/array/remove.hpp delete mode 100644 sdk/include/boost/preprocessor/array/replace.hpp delete mode 100644 sdk/include/boost/preprocessor/array/reverse.hpp delete mode 100644 sdk/include/boost/preprocessor/array/size.hpp delete mode 100644 sdk/include/boost/preprocessor/assert_msg.hpp delete mode 100644 sdk/include/boost/preprocessor/cat.hpp delete mode 100644 sdk/include/boost/preprocessor/comma.hpp delete mode 100644 sdk/include/boost/preprocessor/comma_if.hpp delete mode 100644 sdk/include/boost/preprocessor/comparison.hpp delete mode 100644 sdk/include/boost/preprocessor/comparison/equal.hpp delete mode 100644 sdk/include/boost/preprocessor/comparison/greater.hpp delete mode 100644 sdk/include/boost/preprocessor/comparison/greater_equal.hpp delete mode 100644 sdk/include/boost/preprocessor/comparison/less.hpp delete mode 100644 sdk/include/boost/preprocessor/comparison/less_equal.hpp delete mode 100644 sdk/include/boost/preprocessor/comparison/not_equal.hpp delete mode 100644 sdk/include/boost/preprocessor/config/config.hpp delete mode 100644 sdk/include/boost/preprocessor/config/limits.hpp delete mode 100644 sdk/include/boost/preprocessor/control.hpp delete mode 100644 sdk/include/boost/preprocessor/control/deduce_d.hpp delete mode 100644 sdk/include/boost/preprocessor/control/detail/edg/while.hpp delete mode 100644 sdk/include/boost/preprocessor/control/detail/msvc/while.hpp delete mode 100644 sdk/include/boost/preprocessor/control/detail/while.hpp delete mode 100644 sdk/include/boost/preprocessor/control/expr_if.hpp delete mode 100644 sdk/include/boost/preprocessor/control/expr_iif.hpp delete mode 100644 sdk/include/boost/preprocessor/control/if.hpp delete mode 100644 sdk/include/boost/preprocessor/control/iif.hpp delete mode 100644 sdk/include/boost/preprocessor/control/while.hpp delete mode 100644 sdk/include/boost/preprocessor/debug.hpp delete mode 100644 sdk/include/boost/preprocessor/debug/assert.hpp delete mode 100644 sdk/include/boost/preprocessor/debug/error.hpp delete mode 100644 sdk/include/boost/preprocessor/debug/line.hpp delete mode 100644 sdk/include/boost/preprocessor/dec.hpp delete mode 100644 sdk/include/boost/preprocessor/detail/auto_rec.hpp delete mode 100644 sdk/include/boost/preprocessor/detail/check.hpp delete mode 100644 sdk/include/boost/preprocessor/detail/is_binary.hpp delete mode 100644 sdk/include/boost/preprocessor/detail/is_nullary.hpp delete mode 100644 sdk/include/boost/preprocessor/detail/is_unary.hpp delete mode 100644 sdk/include/boost/preprocessor/detail/null.hpp delete mode 100644 sdk/include/boost/preprocessor/detail/split.hpp delete mode 100644 sdk/include/boost/preprocessor/empty.hpp delete mode 100644 sdk/include/boost/preprocessor/enum.hpp delete mode 100644 sdk/include/boost/preprocessor/enum_params.hpp delete mode 100644 sdk/include/boost/preprocessor/enum_params_with_a_default.hpp delete mode 100644 sdk/include/boost/preprocessor/enum_params_with_defaults.hpp delete mode 100644 sdk/include/boost/preprocessor/enum_shifted.hpp delete mode 100644 sdk/include/boost/preprocessor/enum_shifted_params.hpp delete mode 100644 sdk/include/boost/preprocessor/expand.hpp delete mode 100644 sdk/include/boost/preprocessor/expr_if.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities/apply.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities/empty.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities/expand.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities/identity.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities/intercept.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities/is_1.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities/is_empty.hpp delete mode 100644 sdk/include/boost/preprocessor/facilities/is_empty_or_1.hpp delete mode 100644 sdk/include/boost/preprocessor/for.hpp delete mode 100644 sdk/include/boost/preprocessor/identity.hpp delete mode 100644 sdk/include/boost/preprocessor/if.hpp delete mode 100644 sdk/include/boost/preprocessor/inc.hpp delete mode 100644 sdk/include/boost/preprocessor/iterate.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/finish.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/forward1.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/forward2.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/forward3.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/forward4.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/forward5.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/local.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/rlocal.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/self.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/detail/start.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/iterate.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/local.hpp delete mode 100644 sdk/include/boost/preprocessor/iteration/self.hpp delete mode 100644 sdk/include/boost/preprocessor/library.hpp delete mode 100644 sdk/include/boost/preprocessor/limits.hpp delete mode 100644 sdk/include/boost/preprocessor/list.hpp delete mode 100644 sdk/include/boost/preprocessor/list/adt.hpp delete mode 100644 sdk/include/boost/preprocessor/list/append.hpp delete mode 100644 sdk/include/boost/preprocessor/list/at.hpp delete mode 100644 sdk/include/boost/preprocessor/list/cat.hpp delete mode 100644 sdk/include/boost/preprocessor/list/detail/edg/fold_left.hpp delete mode 100644 sdk/include/boost/preprocessor/list/detail/edg/fold_right.hpp delete mode 100644 sdk/include/boost/preprocessor/list/detail/fold_left.hpp delete mode 100644 sdk/include/boost/preprocessor/list/detail/fold_right.hpp delete mode 100644 sdk/include/boost/preprocessor/list/enum.hpp delete mode 100644 sdk/include/boost/preprocessor/list/filter.hpp delete mode 100644 sdk/include/boost/preprocessor/list/first_n.hpp delete mode 100644 sdk/include/boost/preprocessor/list/fold_left.hpp delete mode 100644 sdk/include/boost/preprocessor/list/fold_right.hpp delete mode 100644 sdk/include/boost/preprocessor/list/for_each.hpp delete mode 100644 sdk/include/boost/preprocessor/list/for_each_i.hpp delete mode 100644 sdk/include/boost/preprocessor/list/for_each_product.hpp delete mode 100644 sdk/include/boost/preprocessor/list/rest_n.hpp delete mode 100644 sdk/include/boost/preprocessor/list/reverse.hpp delete mode 100644 sdk/include/boost/preprocessor/list/size.hpp delete mode 100644 sdk/include/boost/preprocessor/list/to_tuple.hpp delete mode 100644 sdk/include/boost/preprocessor/list/transform.hpp delete mode 100644 sdk/include/boost/preprocessor/logical.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/and.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/bitand.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/bitnor.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/bitor.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/bitxor.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/bool.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/compl.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/nor.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/not.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/or.hpp delete mode 100644 sdk/include/boost/preprocessor/logical/xor.hpp delete mode 100644 sdk/include/boost/preprocessor/max.hpp delete mode 100644 sdk/include/boost/preprocessor/min.hpp delete mode 100644 sdk/include/boost/preprocessor/punctuation.hpp delete mode 100644 sdk/include/boost/preprocessor/punctuation/comma.hpp delete mode 100644 sdk/include/boost/preprocessor/punctuation/comma_if.hpp delete mode 100644 sdk/include/boost/preprocessor/punctuation/paren.hpp delete mode 100644 sdk/include/boost/preprocessor/punctuation/paren_if.hpp delete mode 100644 sdk/include/boost/preprocessor/repeat.hpp delete mode 100644 sdk/include/boost/preprocessor/repeat_2nd.hpp delete mode 100644 sdk/include/boost/preprocessor/repeat_3rd.hpp delete mode 100644 sdk/include/boost/preprocessor/repeat_from_to.hpp delete mode 100644 sdk/include/boost/preprocessor/repeat_from_to_2nd.hpp delete mode 100644 sdk/include/boost/preprocessor/repeat_from_to_3rd.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/deduce_r.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/deduce_z.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/detail/edg/for.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/detail/for.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/detail/msvc/for.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_binary_params.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_params.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_shifted.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_shifted_params.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_trailing.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/enum_trailing_params.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/for.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/repeat.hpp delete mode 100644 sdk/include/boost/preprocessor/repetition/repeat_from_to.hpp delete mode 100644 sdk/include/boost/preprocessor/selection.hpp delete mode 100644 sdk/include/boost/preprocessor/selection/max.hpp delete mode 100644 sdk/include/boost/preprocessor/selection/min.hpp delete mode 100644 sdk/include/boost/preprocessor/seq.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/cat.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/detail/split.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/elem.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/enum.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/filter.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/first_n.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/fold_left.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/fold_right.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/for_each.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/for_each_i.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/for_each_product.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/insert.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/pop_back.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/pop_front.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/push_back.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/push_front.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/remove.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/replace.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/rest_n.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/reverse.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/seq.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/size.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/subseq.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/to_array.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/to_tuple.hpp delete mode 100644 sdk/include/boost/preprocessor/seq/transform.hpp delete mode 100644 sdk/include/boost/preprocessor/slot.hpp delete mode 100644 sdk/include/boost/preprocessor/slot/detail/def.hpp delete mode 100644 sdk/include/boost/preprocessor/slot/detail/shared.hpp delete mode 100644 sdk/include/boost/preprocessor/slot/detail/slot1.hpp delete mode 100644 sdk/include/boost/preprocessor/slot/detail/slot2.hpp delete mode 100644 sdk/include/boost/preprocessor/slot/detail/slot3.hpp delete mode 100644 sdk/include/boost/preprocessor/slot/detail/slot4.hpp delete mode 100644 sdk/include/boost/preprocessor/slot/detail/slot5.hpp delete mode 100644 sdk/include/boost/preprocessor/slot/slot.hpp delete mode 100644 sdk/include/boost/preprocessor/stringize.hpp delete mode 100644 sdk/include/boost/preprocessor/tuple.hpp delete mode 100644 sdk/include/boost/preprocessor/tuple/eat.hpp delete mode 100644 sdk/include/boost/preprocessor/tuple/elem.hpp delete mode 100644 sdk/include/boost/preprocessor/tuple/rem.hpp delete mode 100644 sdk/include/boost/preprocessor/tuple/reverse.hpp delete mode 100644 sdk/include/boost/preprocessor/tuple/to_list.hpp delete mode 100644 sdk/include/boost/preprocessor/tuple/to_seq.hpp delete mode 100644 sdk/include/boost/preprocessor/while.hpp delete mode 100644 sdk/include/boost/preprocessor/wstringize.hpp delete mode 100644 sdk/include/boost/progress.hpp delete mode 100644 sdk/include/boost/property_map.hpp delete mode 100644 sdk/include/boost/property_map_iterator.hpp delete mode 100644 sdk/include/boost/python.hpp delete mode 100644 sdk/include/boost/python/arg_from_python.hpp delete mode 100644 sdk/include/boost/python/args.hpp delete mode 100644 sdk/include/boost/python/args_fwd.hpp delete mode 100644 sdk/include/boost/python/back_reference.hpp delete mode 100644 sdk/include/boost/python/base_type_traits.hpp delete mode 100644 sdk/include/boost/python/bases.hpp delete mode 100644 sdk/include/boost/python/borrowed.hpp delete mode 100644 sdk/include/boost/python/call.hpp delete mode 100644 sdk/include/boost/python/call_method.hpp delete mode 100644 sdk/include/boost/python/cast.hpp delete mode 100644 sdk/include/boost/python/class.hpp delete mode 100644 sdk/include/boost/python/class_fwd.hpp delete mode 100644 sdk/include/boost/python/converter/arg_from_python.hpp delete mode 100644 sdk/include/boost/python/converter/arg_to_python.hpp delete mode 100644 sdk/include/boost/python/converter/arg_to_python_base.hpp delete mode 100644 sdk/include/boost/python/converter/as_to_python_function.hpp delete mode 100644 sdk/include/boost/python/converter/builtin_converters.hpp delete mode 100644 sdk/include/boost/python/converter/constructor_function.hpp delete mode 100644 sdk/include/boost/python/converter/convertible_function.hpp delete mode 100644 sdk/include/boost/python/converter/from_python.hpp delete mode 100644 sdk/include/boost/python/converter/implicit.hpp delete mode 100644 sdk/include/boost/python/converter/obj_mgr_arg_from_python.hpp delete mode 100644 sdk/include/boost/python/converter/object_manager.hpp delete mode 100644 sdk/include/boost/python/converter/pointer_type_id.hpp delete mode 100644 sdk/include/boost/python/converter/pyobject_traits.hpp delete mode 100644 sdk/include/boost/python/converter/pyobject_type.hpp delete mode 100644 sdk/include/boost/python/converter/pytype_arg_from_python.hpp delete mode 100644 sdk/include/boost/python/converter/pytype_object_mgr_traits.hpp delete mode 100644 sdk/include/boost/python/converter/registered.hpp delete mode 100644 sdk/include/boost/python/converter/registered_pointee.hpp delete mode 100644 sdk/include/boost/python/converter/registrations.hpp delete mode 100644 sdk/include/boost/python/converter/registry.hpp delete mode 100644 sdk/include/boost/python/converter/return_from_python.hpp delete mode 100644 sdk/include/boost/python/converter/rvalue_from_python_data.hpp delete mode 100644 sdk/include/boost/python/converter/shared_ptr_deleter.hpp delete mode 100644 sdk/include/boost/python/converter/shared_ptr_from_python.hpp delete mode 100644 sdk/include/boost/python/converter/shared_ptr_to_python.hpp delete mode 100644 sdk/include/boost/python/converter/to_python_function_type.hpp delete mode 100644 sdk/include/boost/python/copy_const_reference.hpp delete mode 100644 sdk/include/boost/python/copy_non_const_reference.hpp delete mode 100644 sdk/include/boost/python/data_members.hpp delete mode 100644 sdk/include/boost/python/def.hpp delete mode 100644 sdk/include/boost/python/default_call_policies.hpp delete mode 100644 sdk/include/boost/python/detail/aix_init_module.hpp delete mode 100644 sdk/include/boost/python/detail/api_placeholder.hpp delete mode 100644 sdk/include/boost/python/detail/borrowed_ptr.hpp delete mode 100644 sdk/include/boost/python/detail/caller.hpp delete mode 100644 sdk/include/boost/python/detail/char_array.hpp delete mode 100644 sdk/include/boost/python/detail/config.hpp delete mode 100644 sdk/include/boost/python/detail/construct.hpp delete mode 100644 sdk/include/boost/python/detail/convertible.hpp delete mode 100644 sdk/include/boost/python/detail/copy_ctor_mutates_rhs.hpp delete mode 100644 sdk/include/boost/python/detail/cv_category.hpp delete mode 100644 sdk/include/boost/python/detail/dealloc.hpp delete mode 100644 sdk/include/boost/python/detail/decorated_type_id.hpp delete mode 100644 sdk/include/boost/python/detail/decref_guard.hpp delete mode 100644 sdk/include/boost/python/detail/def_helper.hpp delete mode 100644 sdk/include/boost/python/detail/defaults_def.hpp delete mode 100644 sdk/include/boost/python/detail/defaults_gen.hpp delete mode 100644 sdk/include/boost/python/detail/dependent.hpp delete mode 100644 sdk/include/boost/python/detail/destroy.hpp delete mode 100644 sdk/include/boost/python/detail/exception_handler.hpp delete mode 100644 sdk/include/boost/python/detail/force_instantiate.hpp delete mode 100644 sdk/include/boost/python/detail/if_else.hpp delete mode 100644 sdk/include/boost/python/detail/indirect_traits.hpp delete mode 100644 sdk/include/boost/python/detail/invoke.hpp delete mode 100644 sdk/include/boost/python/detail/is_auto_ptr.hpp delete mode 100644 sdk/include/boost/python/detail/is_function_ref_tester.hpp delete mode 100644 sdk/include/boost/python/detail/is_xxx.hpp delete mode 100644 sdk/include/boost/python/detail/make_keyword_range_fn.hpp delete mode 100644 sdk/include/boost/python/detail/make_tuple.hpp delete mode 100644 sdk/include/boost/python/detail/map_entry.hpp delete mode 100644 sdk/include/boost/python/detail/member_function_cast.hpp delete mode 100644 sdk/include/boost/python/detail/mpl_lambda.hpp delete mode 100644 sdk/include/boost/python/detail/msvc_typeinfo.hpp delete mode 100644 sdk/include/boost/python/detail/none.hpp delete mode 100644 sdk/include/boost/python/detail/not_specified.hpp delete mode 100644 sdk/include/boost/python/detail/operator_id.hpp delete mode 100644 sdk/include/boost/python/detail/overloads_fwd.hpp delete mode 100644 sdk/include/boost/python/detail/pointee.hpp delete mode 100644 sdk/include/boost/python/detail/preprocessor.hpp delete mode 100644 sdk/include/boost/python/detail/python22_fixed.h delete mode 100644 sdk/include/boost/python/detail/raw_pyobject.hpp delete mode 100644 sdk/include/boost/python/detail/referent_storage.hpp delete mode 100644 sdk/include/boost/python/detail/result.hpp delete mode 100644 sdk/include/boost/python/detail/scope.hpp delete mode 100644 sdk/include/boost/python/detail/string_literal.hpp delete mode 100644 sdk/include/boost/python/detail/target.hpp delete mode 100644 sdk/include/boost/python/detail/translate_exception.hpp delete mode 100644 sdk/include/boost/python/detail/type_list.hpp delete mode 100644 sdk/include/boost/python/detail/type_list_impl.hpp delete mode 100644 sdk/include/boost/python/detail/type_list_impl_no_pts.hpp delete mode 100644 sdk/include/boost/python/detail/unwind_type.hpp delete mode 100644 sdk/include/boost/python/detail/value_is_shared_ptr.hpp delete mode 100644 sdk/include/boost/python/detail/value_is_xxx.hpp delete mode 100644 sdk/include/boost/python/detail/void_ptr.hpp delete mode 100644 sdk/include/boost/python/detail/void_return.hpp delete mode 100644 sdk/include/boost/python/detail/wrap_python.hpp delete mode 100644 sdk/include/boost/python/dict.hpp delete mode 100644 sdk/include/boost/python/enum.hpp delete mode 100644 sdk/include/boost/python/errors.hpp delete mode 100644 sdk/include/boost/python/exception_translator.hpp delete mode 100644 sdk/include/boost/python/extract.hpp delete mode 100644 sdk/include/boost/python/handle.hpp delete mode 100644 sdk/include/boost/python/handle_fwd.hpp delete mode 100644 sdk/include/boost/python/has_back_reference.hpp delete mode 100644 sdk/include/boost/python/implicit.hpp delete mode 100644 sdk/include/boost/python/init.hpp delete mode 100644 sdk/include/boost/python/instance_holder.hpp delete mode 100644 sdk/include/boost/python/iterator.hpp delete mode 100644 sdk/include/boost/python/list.hpp delete mode 100644 sdk/include/boost/python/long.hpp delete mode 100644 sdk/include/boost/python/lvalue_from_pytype.hpp delete mode 100644 sdk/include/boost/python/make_function.hpp delete mode 100644 sdk/include/boost/python/manage_new_object.hpp delete mode 100644 sdk/include/boost/python/module.hpp delete mode 100644 sdk/include/boost/python/module_init.hpp delete mode 100644 sdk/include/boost/python/numeric.hpp delete mode 100644 sdk/include/boost/python/object.hpp delete mode 100644 sdk/include/boost/python/object/add_to_namespace.hpp delete mode 100644 sdk/include/boost/python/object/class.hpp delete mode 100644 sdk/include/boost/python/object/class_converters.hpp delete mode 100644 sdk/include/boost/python/object/class_detail.hpp delete mode 100644 sdk/include/boost/python/object/class_wrapper.hpp delete mode 100644 sdk/include/boost/python/object/enum_base.hpp delete mode 100644 sdk/include/boost/python/object/find_instance.hpp delete mode 100644 sdk/include/boost/python/object/forward.hpp delete mode 100644 sdk/include/boost/python/object/function.hpp delete mode 100644 sdk/include/boost/python/object/function_handle.hpp delete mode 100644 sdk/include/boost/python/object/function_object.hpp delete mode 100644 sdk/include/boost/python/object/inheritance.hpp delete mode 100644 sdk/include/boost/python/object/instance.hpp delete mode 100644 sdk/include/boost/python/object/iterator.hpp delete mode 100644 sdk/include/boost/python/object/iterator_core.hpp delete mode 100644 sdk/include/boost/python/object/life_support.hpp delete mode 100644 sdk/include/boost/python/object/make_holder.hpp delete mode 100644 sdk/include/boost/python/object/make_instance.hpp delete mode 100644 sdk/include/boost/python/object/make_ptr_instance.hpp delete mode 100644 sdk/include/boost/python/object/pickle_support.hpp delete mode 100644 sdk/include/boost/python/object/pointer_holder.hpp delete mode 100644 sdk/include/boost/python/object/py_function.hpp delete mode 100644 sdk/include/boost/python/object/select_holder.hpp delete mode 100644 sdk/include/boost/python/object/value_holder.hpp delete mode 100644 sdk/include/boost/python/object/value_holder_fwd.hpp delete mode 100644 sdk/include/boost/python/object_attributes.hpp delete mode 100644 sdk/include/boost/python/object_call.hpp delete mode 100644 sdk/include/boost/python/object_core.hpp delete mode 100644 sdk/include/boost/python/object_fwd.hpp delete mode 100644 sdk/include/boost/python/object_items.hpp delete mode 100644 sdk/include/boost/python/object_operators.hpp delete mode 100644 sdk/include/boost/python/object_protocol.hpp delete mode 100644 sdk/include/boost/python/object_protocol_core.hpp delete mode 100644 sdk/include/boost/python/object_slices.hpp delete mode 100644 sdk/include/boost/python/opaque_pointer_converter.hpp delete mode 100644 sdk/include/boost/python/operators.hpp delete mode 100644 sdk/include/boost/python/other.hpp delete mode 100644 sdk/include/boost/python/overloads.hpp delete mode 100644 sdk/include/boost/python/pointee.hpp delete mode 100644 sdk/include/boost/python/proxy.hpp delete mode 100644 sdk/include/boost/python/ptr.hpp delete mode 100644 sdk/include/boost/python/raw_function.hpp delete mode 100644 sdk/include/boost/python/refcount.hpp delete mode 100644 sdk/include/boost/python/reference_existing_object.hpp delete mode 100644 sdk/include/boost/python/return_by_value.hpp delete mode 100644 sdk/include/boost/python/return_internal_reference.hpp delete mode 100644 sdk/include/boost/python/return_opaque_pointer.hpp delete mode 100644 sdk/include/boost/python/return_value_policy.hpp delete mode 100644 sdk/include/boost/python/scope.hpp delete mode 100644 sdk/include/boost/python/self.hpp delete mode 100644 sdk/include/boost/python/signature.hpp delete mode 100644 sdk/include/boost/python/slice_nil.hpp delete mode 100644 sdk/include/boost/python/str.hpp delete mode 100644 sdk/include/boost/python/tag.hpp delete mode 100644 sdk/include/boost/python/to_python_converter.hpp delete mode 100644 sdk/include/boost/python/to_python_indirect.hpp delete mode 100644 sdk/include/boost/python/to_python_value.hpp delete mode 100644 sdk/include/boost/python/tuple.hpp delete mode 100644 sdk/include/boost/python/type_id.hpp delete mode 100644 sdk/include/boost/python/with_custodian_and_ward.hpp delete mode 100644 sdk/include/boost/random.hpp delete mode 100644 sdk/include/boost/random/additive_combine.hpp delete mode 100644 sdk/include/boost/random/bernoulli_distribution.hpp delete mode 100644 sdk/include/boost/random/binomial_distribution.hpp delete mode 100644 sdk/include/boost/random/cauchy_distribution.hpp delete mode 100644 sdk/include/boost/random/detail/const_mod.hpp delete mode 100644 sdk/include/boost/random/detail/iterator_mixin.hpp delete mode 100644 sdk/include/boost/random/detail/signed_unsigned_compare.hpp delete mode 100644 sdk/include/boost/random/discard_block.hpp delete mode 100644 sdk/include/boost/random/exponential_distribution.hpp delete mode 100644 sdk/include/boost/random/gamma_distribution.hpp delete mode 100644 sdk/include/boost/random/geometric_distribution.hpp delete mode 100644 sdk/include/boost/random/inversive_congruential.hpp delete mode 100644 sdk/include/boost/random/lagged_fibonacci.hpp delete mode 100644 sdk/include/boost/random/linear_congruential.hpp delete mode 100644 sdk/include/boost/random/linear_feedback_shift.hpp delete mode 100644 sdk/include/boost/random/lognormal_distribution.hpp delete mode 100644 sdk/include/boost/random/mersenne_twister.hpp delete mode 100644 sdk/include/boost/random/normal_distribution.hpp delete mode 100644 sdk/include/boost/random/poisson_distribution.hpp delete mode 100644 sdk/include/boost/random/random_number_generator.hpp delete mode 100644 sdk/include/boost/random/ranlux.hpp delete mode 100644 sdk/include/boost/random/shuffle_output.hpp delete mode 100644 sdk/include/boost/random/subtract_with_carry.hpp delete mode 100644 sdk/include/boost/random/triangle_distribution.hpp delete mode 100644 sdk/include/boost/random/uniform_01.hpp delete mode 100644 sdk/include/boost/random/uniform_int.hpp delete mode 100644 sdk/include/boost/random/uniform_on_sphere.hpp delete mode 100644 sdk/include/boost/random/uniform_real.hpp delete mode 100644 sdk/include/boost/random/uniform_smallint.hpp delete mode 100644 sdk/include/boost/random/xor_combine.hpp delete mode 100644 sdk/include/boost/rational.hpp delete mode 100644 sdk/include/boost/ref.hpp delete mode 100644 sdk/include/boost/regex.h delete mode 100644 sdk/include/boost/regex.hpp delete mode 100644 sdk/include/boost/regex/config.hpp delete mode 100644 sdk/include/boost/regex/pattern_except.hpp delete mode 100644 sdk/include/boost/regex/regex_traits.hpp delete mode 100644 sdk/include/boost/regex/src.cpp delete mode 100644 sdk/include/boost/regex/user.hpp delete mode 100644 sdk/include/boost/regex/v3/cregex.hpp delete mode 100644 sdk/include/boost/regex/v3/fileiter.hpp delete mode 100644 sdk/include/boost/regex/v3/instances.hpp delete mode 100644 sdk/include/boost/regex/v3/regex.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_compile.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_cstring.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_format.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_fwd.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_kmp.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_library_include.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_match.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_raw_buffer.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_split.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_stack.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_synch.hpp delete mode 100644 sdk/include/boost/regex/v3/regex_traits.hpp delete mode 100644 sdk/include/boost/regex_fwd.hpp delete mode 100644 sdk/include/boost/scoped_array.hpp delete mode 100644 sdk/include/boost/scoped_ptr.hpp delete mode 100644 sdk/include/boost/shared_array.hpp delete mode 100644 sdk/include/boost/shared_container_iterator.hpp delete mode 100644 sdk/include/boost/shared_ptr.hpp delete mode 100644 sdk/include/boost/signal.hpp delete mode 100644 sdk/include/boost/signals/connection.hpp delete mode 100644 sdk/include/boost/signals/detail/gen_signal_N.pl delete mode 100644 sdk/include/boost/signals/detail/signal_base.hpp delete mode 100644 sdk/include/boost/signals/detail/signals_common.hpp delete mode 100644 sdk/include/boost/signals/detail/slot_call_iterator.hpp delete mode 100644 sdk/include/boost/signals/signal0.hpp delete mode 100644 sdk/include/boost/signals/signal1.hpp delete mode 100644 sdk/include/boost/signals/signal10.hpp delete mode 100644 sdk/include/boost/signals/signal2.hpp delete mode 100644 sdk/include/boost/signals/signal3.hpp delete mode 100644 sdk/include/boost/signals/signal4.hpp delete mode 100644 sdk/include/boost/signals/signal5.hpp delete mode 100644 sdk/include/boost/signals/signal6.hpp delete mode 100644 sdk/include/boost/signals/signal7.hpp delete mode 100644 sdk/include/boost/signals/signal8.hpp delete mode 100644 sdk/include/boost/signals/signal9.hpp delete mode 100644 sdk/include/boost/signals/signal_template.hpp delete mode 100644 sdk/include/boost/signals/slot.hpp delete mode 100644 sdk/include/boost/signals/trackable.hpp delete mode 100644 sdk/include/boost/smart_ptr.hpp delete mode 100644 sdk/include/boost/spirit.hpp delete mode 100644 sdk/include/boost/spirit/attribute.hpp delete mode 100644 sdk/include/boost/spirit/attribute/closure.hpp delete mode 100644 sdk/include/boost/spirit/attribute/closure_context.hpp delete mode 100644 sdk/include/boost/spirit/attribute/parametric.hpp delete mode 100644 sdk/include/boost/spirit/core.hpp delete mode 100644 sdk/include/boost/spirit/core/assert.hpp delete mode 100644 sdk/include/boost/spirit/core/basics.hpp delete mode 100644 sdk/include/boost/spirit/core/composite/actions.hpp delete mode 100644 sdk/include/boost/spirit/core/composite/composite.hpp delete mode 100644 sdk/include/boost/spirit/core/composite/directives.hpp delete mode 100644 sdk/include/boost/spirit/core/composite/epsilon.hpp delete mode 100644 sdk/include/boost/spirit/core/composite/impl/composite.ipp delete mode 100644 sdk/include/boost/spirit/core/composite/impl/directives.ipp delete mode 100644 sdk/include/boost/spirit/core/composite/impl/operators.ipp delete mode 100644 sdk/include/boost/spirit/core/composite/operators.hpp delete mode 100644 sdk/include/boost/spirit/core/impl/borland.hpp delete mode 100644 sdk/include/boost/spirit/core/impl/match.ipp delete mode 100644 sdk/include/boost/spirit/core/impl/msvc.hpp delete mode 100644 sdk/include/boost/spirit/core/impl/parser.ipp delete mode 100644 sdk/include/boost/spirit/core/match.hpp delete mode 100644 sdk/include/boost/spirit/core/meta/fundamental.hpp delete mode 100644 sdk/include/boost/spirit/core/meta/impl/fundamental.ipp delete mode 100644 sdk/include/boost/spirit/core/meta/impl/parser_traits.ipp delete mode 100644 sdk/include/boost/spirit/core/meta/impl/parser_type.hpp delete mode 100644 sdk/include/boost/spirit/core/meta/impl/traverse.ipp delete mode 100644 sdk/include/boost/spirit/core/meta/parser_traits.hpp delete mode 100644 sdk/include/boost/spirit/core/meta/traverse.hpp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/grammar.hpp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/impl/grammar.ipp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/impl/object_with_id.ipp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/impl/rule.ipp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/impl/subrule.ipp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/parser_context.hpp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/parser_id.hpp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/rule.hpp delete mode 100644 sdk/include/boost/spirit/core/non_terminal/subrule.hpp delete mode 100644 sdk/include/boost/spirit/core/parser.hpp delete mode 100644 sdk/include/boost/spirit/core/primitives/impl/numerics.ipp delete mode 100644 sdk/include/boost/spirit/core/primitives/impl/primitives.ipp delete mode 100644 sdk/include/boost/spirit/core/primitives/numerics.hpp delete mode 100644 sdk/include/boost/spirit/core/primitives/primitives.hpp delete mode 100644 sdk/include/boost/spirit/core/scanner/impl/skipper.ipp delete mode 100644 sdk/include/boost/spirit/core/scanner/scanner.hpp delete mode 100644 sdk/include/boost/spirit/core/scanner/skipper.hpp delete mode 100644 sdk/include/boost/spirit/debug.hpp delete mode 100644 sdk/include/boost/spirit/debug/debug_node.hpp delete mode 100644 sdk/include/boost/spirit/debug/impl/parser_names.ipp delete mode 100644 sdk/include/boost/spirit/debug/minimal.hpp delete mode 100644 sdk/include/boost/spirit/debug/parser_names.hpp delete mode 100644 sdk/include/boost/spirit/dynamic.hpp delete mode 100644 sdk/include/boost/spirit/dynamic/for.hpp delete mode 100644 sdk/include/boost/spirit/dynamic/if.hpp delete mode 100644 sdk/include/boost/spirit/dynamic/impl/conditions.ipp delete mode 100644 sdk/include/boost/spirit/dynamic/while.hpp delete mode 100644 sdk/include/boost/spirit/error_handling.hpp delete mode 100644 sdk/include/boost/spirit/error_handling/exceptions.hpp delete mode 100644 sdk/include/boost/spirit/error_handling/impl/exceptions.ipp delete mode 100644 sdk/include/boost/spirit/iterator.hpp delete mode 100644 sdk/include/boost/spirit/iterator/file_iterator.hpp delete mode 100644 sdk/include/boost/spirit/iterator/fixed_size_queue.hpp delete mode 100644 sdk/include/boost/spirit/iterator/impl/file_iterator.ipp delete mode 100644 sdk/include/boost/spirit/iterator/multi_pass.hpp delete mode 100644 sdk/include/boost/spirit/iterator/position_iterator.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/actor.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/binders.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/casts.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/closures.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/composite.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/functions.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/operators.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/primitives.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/special_ops.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/statements.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/tuple_helpers.hpp delete mode 100644 sdk/include/boost/spirit/phoenix/tuples.hpp delete mode 100644 sdk/include/boost/spirit/symbols.hpp delete mode 100644 sdk/include/boost/spirit/symbols/impl/symbols.ipp delete mode 100644 sdk/include/boost/spirit/symbols/impl/tst.ipp delete mode 100644 sdk/include/boost/spirit/symbols/symbols.hpp delete mode 100644 sdk/include/boost/spirit/tree/ast.hpp delete mode 100644 sdk/include/boost/spirit/tree/common.hpp delete mode 100644 sdk/include/boost/spirit/tree/impl/parse_tree_utils.ipp delete mode 100644 sdk/include/boost/spirit/tree/impl/tree_to_xml.ipp delete mode 100644 sdk/include/boost/spirit/tree/parse_tree.hpp delete mode 100644 sdk/include/boost/spirit/tree/parse_tree_utils.hpp delete mode 100644 sdk/include/boost/spirit/tree/parsetree.dtd delete mode 100644 sdk/include/boost/spirit/tree/tree_iterator.hpp delete mode 100644 sdk/include/boost/spirit/tree/tree_to_xml.hpp delete mode 100644 sdk/include/boost/spirit/utility.hpp delete mode 100644 sdk/include/boost/spirit/utility/chset.hpp delete mode 100644 sdk/include/boost/spirit/utility/chset_operators.hpp delete mode 100644 sdk/include/boost/spirit/utility/confix.hpp delete mode 100644 sdk/include/boost/spirit/utility/escape_char.hpp delete mode 100644 sdk/include/boost/spirit/utility/flush_multi_pass.hpp delete mode 100644 sdk/include/boost/spirit/utility/functor_parser.hpp delete mode 100644 sdk/include/boost/spirit/utility/impl/chset.ipp delete mode 100644 sdk/include/boost/spirit/utility/impl/chset/basic_chset.hpp delete mode 100644 sdk/include/boost/spirit/utility/impl/chset/basic_chset.ipp delete mode 100644 sdk/include/boost/spirit/utility/impl/chset/range_run.hpp delete mode 100644 sdk/include/boost/spirit/utility/impl/chset/range_run.ipp delete mode 100644 sdk/include/boost/spirit/utility/impl/chset_operators.ipp delete mode 100644 sdk/include/boost/spirit/utility/impl/confix.ipp delete mode 100644 sdk/include/boost/spirit/utility/impl/escape_char.ipp delete mode 100644 sdk/include/boost/spirit/utility/impl/lists.ipp delete mode 100644 sdk/include/boost/spirit/utility/impl/refactoring.ipp delete mode 100644 sdk/include/boost/spirit/utility/impl/regex.ipp delete mode 100644 sdk/include/boost/spirit/utility/lists.hpp delete mode 100644 sdk/include/boost/spirit/utility/loops.hpp delete mode 100644 sdk/include/boost/spirit/utility/refactoring.hpp delete mode 100644 sdk/include/boost/spirit/utility/regex.hpp delete mode 100644 sdk/include/boost/spirit/utility/scoped_lock.hpp delete mode 100644 sdk/include/boost/static_assert.hpp delete mode 100644 sdk/include/boost/test/auto_unit_test.hpp delete mode 100644 sdk/include/boost/test/detail/class_properties.hpp delete mode 100644 sdk/include/boost/test/detail/nullstream.hpp delete mode 100644 sdk/include/boost/test/detail/unit_test_config.hpp delete mode 100644 sdk/include/boost/test/detail/unit_test_monitor.hpp delete mode 100644 sdk/include/boost/test/detail/unit_test_parameters.hpp delete mode 100644 sdk/include/boost/test/detail/wrap_stringstream.hpp delete mode 100644 sdk/include/boost/test/execution_monitor.hpp delete mode 100644 sdk/include/boost/test/floating_point_comparison.hpp delete mode 100644 sdk/include/boost/test/included/prg_exec_monitor.hpp delete mode 100644 sdk/include/boost/test/included/test_exec_monitor.hpp delete mode 100644 sdk/include/boost/test/included/unit_test_framework.hpp delete mode 100644 sdk/include/boost/test/minimal.hpp delete mode 100644 sdk/include/boost/test/test_tools.hpp delete mode 100644 sdk/include/boost/test/unit_test.hpp delete mode 100644 sdk/include/boost/test/unit_test_log.hpp delete mode 100644 sdk/include/boost/test/unit_test_result.hpp delete mode 100644 sdk/include/boost/test/unit_test_suite.hpp delete mode 100644 sdk/include/boost/test/unit_test_suite_ex.hpp delete mode 100644 sdk/include/boost/thread.hpp delete mode 100644 sdk/include/boost/thread/condition.hpp delete mode 100644 sdk/include/boost/thread/detail/config.hpp delete mode 100644 sdk/include/boost/thread/detail/force_cast.hpp delete mode 100644 sdk/include/boost/thread/detail/lock.hpp delete mode 100644 sdk/include/boost/thread/detail/singleton.hpp delete mode 100644 sdk/include/boost/thread/detail/threadmon.hpp delete mode 100644 sdk/include/boost/thread/exceptions.hpp delete mode 100644 sdk/include/boost/thread/mutex.hpp delete mode 100644 sdk/include/boost/thread/once.hpp delete mode 100644 sdk/include/boost/thread/recursive_mutex.hpp delete mode 100644 sdk/include/boost/thread/thread.hpp delete mode 100644 sdk/include/boost/thread/tss.hpp delete mode 100644 sdk/include/boost/thread/xtime.hpp delete mode 100644 sdk/include/boost/throw_exception.hpp delete mode 100644 sdk/include/boost/timer.hpp delete mode 100644 sdk/include/boost/token_functions.hpp delete mode 100644 sdk/include/boost/token_iterator.hpp delete mode 100644 sdk/include/boost/tokenizer.hpp delete mode 100644 sdk/include/boost/tuple/detail/tuple_basic.hpp delete mode 100644 sdk/include/boost/tuple/detail/tuple_basic_no_partial_spec.hpp delete mode 100644 sdk/include/boost/tuple/tuple.hpp delete mode 100644 sdk/include/boost/tuple/tuple_comparison.hpp delete mode 100644 sdk/include/boost/tuple/tuple_io.hpp delete mode 100644 sdk/include/boost/type.hpp delete mode 100644 sdk/include/boost/type_traits.hpp delete mode 100644 sdk/include/boost/type_traits/add_const.hpp delete mode 100644 sdk/include/boost/type_traits/add_cv.hpp delete mode 100644 sdk/include/boost/type_traits/add_pointer.hpp delete mode 100644 sdk/include/boost/type_traits/add_reference.hpp delete mode 100644 sdk/include/boost/type_traits/add_volatile.hpp delete mode 100644 sdk/include/boost/type_traits/alignment_of.hpp delete mode 100644 sdk/include/boost/type_traits/alignment_traits.hpp delete mode 100644 sdk/include/boost/type_traits/arithmetic_traits.hpp delete mode 100644 sdk/include/boost/type_traits/array_traits.hpp delete mode 100644 sdk/include/boost/type_traits/broken_compiler_spec.hpp delete mode 100644 sdk/include/boost/type_traits/composite_traits.hpp delete mode 100644 sdk/include/boost/type_traits/config.hpp delete mode 100644 sdk/include/boost/type_traits/conversion_traits.hpp delete mode 100644 sdk/include/boost/type_traits/cv_traits.hpp delete mode 100644 sdk/include/boost/type_traits/detail/bool_trait_def.hpp delete mode 100644 sdk/include/boost/type_traits/detail/bool_trait_undef.hpp delete mode 100644 sdk/include/boost/type_traits/detail/cv_traits_impl.hpp delete mode 100644 sdk/include/boost/type_traits/detail/false_result.hpp delete mode 100644 sdk/include/boost/type_traits/detail/ice_and.hpp delete mode 100644 sdk/include/boost/type_traits/detail/ice_eq.hpp delete mode 100644 sdk/include/boost/type_traits/detail/ice_not.hpp delete mode 100644 sdk/include/boost/type_traits/detail/ice_or.hpp delete mode 100644 sdk/include/boost/type_traits/detail/is_function_ptr_helper.hpp delete mode 100644 sdk/include/boost/type_traits/detail/is_function_ptr_tester.hpp delete mode 100644 sdk/include/boost/type_traits/detail/is_function_type_tester.hpp delete mode 100644 sdk/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp delete mode 100644 sdk/include/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp delete mode 100644 sdk/include/boost/type_traits/detail/size_t_trait_def.hpp delete mode 100644 sdk/include/boost/type_traits/detail/size_t_trait_undef.hpp delete mode 100644 sdk/include/boost/type_traits/detail/template_arity_spec.hpp delete mode 100644 sdk/include/boost/type_traits/detail/type_trait_def.hpp delete mode 100644 sdk/include/boost/type_traits/detail/type_trait_undef.hpp delete mode 100644 sdk/include/boost/type_traits/detail/wrap.hpp delete mode 100644 sdk/include/boost/type_traits/detail/yes_no_type.hpp delete mode 100644 sdk/include/boost/type_traits/function_traits.hpp delete mode 100644 sdk/include/boost/type_traits/has_nothrow_assign.hpp delete mode 100644 sdk/include/boost/type_traits/has_nothrow_constructor.hpp delete mode 100644 sdk/include/boost/type_traits/has_nothrow_copy.hpp delete mode 100644 sdk/include/boost/type_traits/has_nothrow_destructor.hpp delete mode 100644 sdk/include/boost/type_traits/has_trivial_assign.hpp delete mode 100644 sdk/include/boost/type_traits/has_trivial_constructor.hpp delete mode 100644 sdk/include/boost/type_traits/has_trivial_copy.hpp delete mode 100644 sdk/include/boost/type_traits/has_trivial_destructor.hpp delete mode 100644 sdk/include/boost/type_traits/ice.hpp delete mode 100644 sdk/include/boost/type_traits/intrinsics.hpp delete mode 100644 sdk/include/boost/type_traits/is_arithmetic.hpp delete mode 100644 sdk/include/boost/type_traits/is_array.hpp delete mode 100644 sdk/include/boost/type_traits/is_base_and_derived.hpp delete mode 100644 sdk/include/boost/type_traits/is_class.hpp delete mode 100644 sdk/include/boost/type_traits/is_compound.hpp delete mode 100644 sdk/include/boost/type_traits/is_const.hpp delete mode 100644 sdk/include/boost/type_traits/is_convertible.hpp delete mode 100644 sdk/include/boost/type_traits/is_empty.hpp delete mode 100644 sdk/include/boost/type_traits/is_enum.hpp delete mode 100644 sdk/include/boost/type_traits/is_float.hpp delete mode 100644 sdk/include/boost/type_traits/is_function.hpp delete mode 100644 sdk/include/boost/type_traits/is_fundamental.hpp delete mode 100644 sdk/include/boost/type_traits/is_integral.hpp delete mode 100644 sdk/include/boost/type_traits/is_member_function_pointer.hpp delete mode 100644 sdk/include/boost/type_traits/is_member_pointer.hpp delete mode 100644 sdk/include/boost/type_traits/is_object.hpp delete mode 100644 sdk/include/boost/type_traits/is_pod.hpp delete mode 100644 sdk/include/boost/type_traits/is_pointer.hpp delete mode 100644 sdk/include/boost/type_traits/is_polymorphic.hpp delete mode 100644 sdk/include/boost/type_traits/is_reference.hpp delete mode 100644 sdk/include/boost/type_traits/is_same.hpp delete mode 100644 sdk/include/boost/type_traits/is_scalar.hpp delete mode 100644 sdk/include/boost/type_traits/is_stateless.hpp delete mode 100644 sdk/include/boost/type_traits/is_union.hpp delete mode 100644 sdk/include/boost/type_traits/is_void.hpp delete mode 100644 sdk/include/boost/type_traits/is_volatile.hpp delete mode 100644 sdk/include/boost/type_traits/object_traits.hpp delete mode 100644 sdk/include/boost/type_traits/reference_traits.hpp delete mode 100644 sdk/include/boost/type_traits/remove_bounds.hpp delete mode 100644 sdk/include/boost/type_traits/remove_const.hpp delete mode 100644 sdk/include/boost/type_traits/remove_cv.hpp delete mode 100644 sdk/include/boost/type_traits/remove_pointer.hpp delete mode 100644 sdk/include/boost/type_traits/remove_reference.hpp delete mode 100644 sdk/include/boost/type_traits/remove_volatile.hpp delete mode 100644 sdk/include/boost/type_traits/same_traits.hpp delete mode 100644 sdk/include/boost/type_traits/transform_traits.hpp delete mode 100644 sdk/include/boost/type_traits/transform_traits_spec.hpp delete mode 100644 sdk/include/boost/type_traits/type_traits_test.hpp delete mode 100644 sdk/include/boost/type_traits/type_with_alignment.hpp delete mode 100644 sdk/include/boost/utility.hpp delete mode 100644 sdk/include/boost/utility/addressof.hpp delete mode 100644 sdk/include/boost/utility/base_from_member.hpp delete mode 100644 sdk/include/boost/utility/value_init.hpp delete mode 100644 sdk/include/boost/utility_fwd.hpp delete mode 100644 sdk/include/boost/version.hpp delete mode 100644 sdk/include/boost/visit_each.hpp delete mode 100644 sdk/include/boost/weak_ptr.hpp diff --git a/sdk/include/boost/any.hpp b/sdk/include/boost/any.hpp deleted file mode 100644 index 4f8ce4b1861..00000000000 --- a/sdk/include/boost/any.hpp +++ /dev/null @@ -1,188 +0,0 @@ -// See http://www.boost.org/libs/any for Documentation. - -#ifndef BOOST_ANY_INCLUDED -#define BOOST_ANY_INCLUDED - -// what: variant type boost::any -// who: contributed by Kevlin Henney, -// with features contributed and bugs found by -// Ed Brey, Mark Rodgers, Peter Dimov, and James Curran -// when: July 2001 -// where: tested with BCC 5.5, MSVC 6.0, and g++ 2.95 - -#include -#include - -#include "boost/config.hpp" - -namespace boost -{ - class any - { - public: // structors - - any() - : content(0) - { - } - - template - any(const ValueType & value) - : content(new holder(value)) - { - } - - any(const any & other) - : content(other.content ? other.content->clone() : 0) - { - } - - ~any() - { - delete content; - } - - public: // modifiers - - any & swap(any & rhs) - { - std::swap(content, rhs.content); - return *this; - } - - template - any & operator=(const ValueType & rhs) - { - any(rhs).swap(*this); - return *this; - } - - any & operator=(const any & rhs) - { - any(rhs).swap(*this); - return *this; - } - - public: // queries - - bool empty() const - { - return !content; - } - - const std::type_info & type() const - { - return content ? content->type() : typeid(void); - } - -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - private: // types -#else - public: // types (public so any_cast can be non-friend) -#endif - - class placeholder - { - public: // structors - - virtual ~placeholder() - { - } - - public: // queries - - virtual const std::type_info & type() const = 0; - - virtual placeholder * clone() const = 0; - - }; - - template - class holder : public placeholder - { - public: // structors - - holder(const ValueType & value) - : held(value) - { - } - - public: // queries - - virtual const std::type_info & type() const - { - return typeid(ValueType); - } - - virtual placeholder * clone() const - { - return new holder(held); - } - - public: // representation - - ValueType held; - - }; - -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - - private: // representation - - template - friend ValueType * any_cast(any *); - -#else - - public: // representation (public so any_cast can be non-friend) - -#endif - - placeholder * content; - - }; - - class bad_any_cast : public std::bad_cast - { - public: - virtual const char * what() const throw() - { - return "boost::bad_any_cast: " - "failed conversion using boost::any_cast"; - } - }; - - template - ValueType * any_cast(any * operand) - { - return operand && operand->type() == typeid(ValueType) - ? &static_cast *>(operand->content)->held - : 0; - } - - template - const ValueType * any_cast(const any * operand) - { - return any_cast(const_cast(operand)); - } - - template - ValueType any_cast(const any & operand) - { - const ValueType * result = any_cast(&operand); - if(!result) - throw bad_any_cast(); - return *result; - } - -} - -// Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved. -// -// Permission to use, copy, modify, and distribute this software for any -// purpose is hereby granted without fee, provided that this copyright and -// permissions notice appear in all copies and derivatives. -// -// This software is provided "as is" without express or implied warranty. - -#endif diff --git a/sdk/include/boost/array.hpp b/sdk/include/boost/array.hpp deleted file mode 100644 index bab704d1a2c..00000000000 --- a/sdk/include/boost/array.hpp +++ /dev/null @@ -1,175 +0,0 @@ -/* The following code declares class array, - * an STL container (as wrapper) for arrays of constant size. - * - * See - * http://www.josuttis.com/cppcode - * for details and the latest version. - * - * (C) Copyright Nicolai M. Josuttis 2001. - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - * - * 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries. - * 05 Aug 2001 - minor update (Nico Josuttis) - * 20 Jan 2001 - STLport fix (Beman Dawes) - * 29 Sep 2000 - Initial Revision (Nico Josuttis) - */ - -// See http://www.boost.org/libs/array for Documentation. - -#ifndef BOOST_ARRAY_HPP -#define BOOST_ARRAY_HPP - -#include -#include - -// Handles broken standard libraries better than -#include -#include - -// FIXES for broken compilers -#include - -namespace boost { - - template - class array { - public: - T elems[N]; // fixed-size array of elements of type T - - public: - // type definitions - typedef T value_type; - typedef T* iterator; - typedef const T* const_iterator; - typedef T& reference; - typedef const T& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - // iterator support - iterator begin() { return elems; } - const_iterator begin() const { return elems; } - iterator end() { return elems+N; } - const_iterator end() const { return elems+N; } - - // reverse iterator support -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; -#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310) - // workaround for broken reverse_iterator in VC7 - typedef std::reverse_iterator > reverse_iterator; - typedef std::reverse_iterator > const_reverse_iterator; -#else - // workaround for broken reverse_iterator implementations - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; -#endif - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { - return const_reverse_iterator(end()); - } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { - return const_reverse_iterator(begin()); - } - - // operator[] - reference operator[](size_type i) { return elems[i]; } - const_reference operator[](size_type i) const { return elems[i]; } - - // at() with range check - reference at(size_type i) { rangecheck(i); return elems[i]; } - const_reference at(size_type i) const { rangecheck(i); return elems[i]; } - - // front() and back() - reference front() { return elems[0]; } - const_reference front() const { return elems[0]; } - reference back() { return elems[N-1]; } - const_reference back() const { return elems[N-1]; } - - // size is constant - static size_type size() { return N; } - static bool empty() { return false; } - static size_type max_size() { return N; } - enum { static_size = N }; - - // swap (note: linear complexity) - void swap (array& y) { - std::swap_ranges(begin(),end(),y.begin()); - } - - // direct access to data - const T* data() const { return elems; } - - // assignment with type conversion - template - array& operator= (const array& rhs) { - std::copy(rhs.begin(),rhs.end(), begin()); - return *this; - } - - // assign one value to all elements - void assign (const T& value) - { - std::fill_n(begin(),size(),value); - } - -#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE - private: -#endif - // check range (may be private because it is static) - static void rangecheck (size_type i) { - if (i >= size()) { throw std::range_error("array"); } - } - - }; - - // comparisons - template - bool operator== (const array& x, const array& y) { - return std::equal(x.begin(), x.end(), y.begin()); - } - template - bool operator< (const array& x, const array& y) { - return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end()); - } - template - bool operator!= (const array& x, const array& y) { - return !(x==y); - } - template - bool operator> (const array& x, const array& y) { - return y - bool operator<= (const array& x, const array& y) { - return !(y - bool operator>= (const array& x, const array& y) { - return !(x - inline void swap (array& x, array& y) { - x.swap(y); - } - -} /* namespace boost */ - -#endif /*BOOST_ARRAY_HPP*/ - - - - - - - diff --git a/sdk/include/boost/assert.hpp b/sdk/include/boost/assert.hpp deleted file mode 100644 index 754ebb954bc..00000000000 --- a/sdk/include/boost/assert.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// -// boost/assert.hpp - BOOST_ASSERT(expr) -// -// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// Note: There are no include guards. This is intentional. -// -// See http://www.boost.org/libs/utility/assert.html for documentation. -// - -#undef BOOST_ASSERT - -#if defined(BOOST_DISABLE_ASSERTS) - -# define BOOST_ASSERT(expr) ((void)0) - -#elif defined(BOOST_ENABLE_ASSERT_HANDLER) - -#include - -namespace boost -{ - -void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined - -} // namespace boost - -#define BOOST_ASSERT(expr) ((expr)? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) - -#else -# include -# define BOOST_ASSERT(expr) assert(expr) -#endif diff --git a/sdk/include/boost/bind.hpp b/sdk/include/boost/bind.hpp deleted file mode 100644 index 3aeb5f84720..00000000000 --- a/sdk/include/boost/bind.hpp +++ /dev/null @@ -1,1538 +0,0 @@ -#ifndef BOOST_BIND_HPP_INCLUDED -#define BOOST_BIND_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// bind.hpp - binds function objects to arguments -// -// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// Copyright (c) 2001 David Abrahams -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - -#include -#include -#include -#include -#include - -// Borland-specific bug, visit_each() silently fails to produce code - -#if defined(__BORLANDC__) -# define BOOST_BIND_VISIT_EACH boost::visit_each -#else -# define BOOST_BIND_VISIT_EACH visit_each -#endif - -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated -#endif - -namespace boost -{ - -namespace _bi // implementation details -{ - -// result_traits - -template struct result_traits -{ - typedef R type; -}; - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - -struct unspecified {}; - -template struct result_traits -{ - typedef typename F::result_type type; -}; - -template struct result_traits< unspecified, reference_wrapper > -{ - typedef typename F::result_type type; -}; - -#endif - -// bind_t forward declaration for listN - -template class bind_t; - -// value - -template class value -{ -public: - - value(T const & t): t_(t) {} - - T & get() { return t_; } - T const & get() const { return t_; } - -private: - - T t_; -}; - -// type - -template class type {}; - -// unwrap - -template inline F & unwrap(F & f, long) -{ - return f; -} - -template inline F & unwrap(reference_wrapper & f, int) -{ - return f; -} - -template inline F & unwrap(reference_wrapper const & f, int) -{ - return f; -} - -// listN - -#ifdef BOOST_NO_VOID_RETURNS - -template struct evaluator0; -template struct evaluator1; -template struct evaluator2; -template struct evaluator3; -template struct evaluator4; -template struct evaluator5; -template struct evaluator6; -template struct evaluator7; -template struct evaluator8; -template struct evaluator9; - -#endif - -class list0 -{ -public: - - list0() {} - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A &) const - { - return unwrap(f, 0)(); - } - - template void accept(V &) const - { - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator0 type; - }; - -#endif - -}; - -template class list1 -{ -public: - - explicit list1(A1 a1): a1_(a1) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator1 type; - }; - -#else - -private: - -#endif - - A1 a1_; -}; - -template class list2 -{ -public: - - list2(A1 a1, A2 a2): a1_(a1), a2_(a2) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - A2 operator[] (boost::arg<2>) const { return a2_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return a2_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_], a[a2_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator2 type; - }; - -#else - -private: - -#endif - - A1 a1_; - A2 a2_; -}; - -template class list3 -{ -public: - - list3(A1 a1, A2 a2, A3 a3): a1_(a1), a2_(a2), a3_(a3) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - A2 operator[] (boost::arg<2>) const { return a2_; } - A3 operator[] (boost::arg<3>) const { return a3_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return a3_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_], a[a2_], a[a3_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - BOOST_BIND_VISIT_EACH(v, a3_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator3 type; - }; - -#else - -private: - -#endif - - A1 a1_; - A2 a2_; - A3 a3_; -}; - -template class list4 -{ -public: - - list4(A1 a1, A2 a2, A3 a3, A4 a4): a1_(a1), a2_(a2), a3_(a3), a4_(a4) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - A2 operator[] (boost::arg<2>) const { return a2_; } - A3 operator[] (boost::arg<3>) const { return a3_; } - A4 operator[] (boost::arg<4>) const { return a4_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return a4_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_], a[a2_], a[a3_], a[a4_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - BOOST_BIND_VISIT_EACH(v, a3_, 0); - BOOST_BIND_VISIT_EACH(v, a4_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator4 type; - }; - -#else - -private: - -#endif - - A1 a1_; - A2 a2_; - A3 a3_; - A4 a4_; -}; - -template class list5 -{ -public: - - list5(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - A2 operator[] (boost::arg<2>) const { return a2_; } - A3 operator[] (boost::arg<3>) const { return a3_; } - A4 operator[] (boost::arg<4>) const { return a4_; } - A5 operator[] (boost::arg<5>) const { return a5_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return a5_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_], a[a2_], a[a3_], a[a4_], a[a5_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - BOOST_BIND_VISIT_EACH(v, a3_, 0); - BOOST_BIND_VISIT_EACH(v, a4_, 0); - BOOST_BIND_VISIT_EACH(v, a5_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator5 type; - }; - -#else - -private: - -#endif - - A1 a1_; - A2 a2_; - A3 a3_; - A4 a4_; - A5 a5_; -}; - -template class list6 -{ -public: - - list6(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - A2 operator[] (boost::arg<2>) const { return a2_; } - A3 operator[] (boost::arg<3>) const { return a3_; } - A4 operator[] (boost::arg<4>) const { return a4_; } - A5 operator[] (boost::arg<5>) const { return a5_; } - A6 operator[] (boost::arg<6>) const { return a6_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return a5_; } - A6 operator[] (boost::arg<6> (*) ()) const { return a6_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_], a[a2_], a[a3_], a[a4_], a[a5_], a[a6_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - BOOST_BIND_VISIT_EACH(v, a3_, 0); - BOOST_BIND_VISIT_EACH(v, a4_, 0); - BOOST_BIND_VISIT_EACH(v, a5_, 0); - BOOST_BIND_VISIT_EACH(v, a6_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator6 type; - }; - -#else - -private: - -#endif - - A1 a1_; - A2 a2_; - A3 a3_; - A4 a4_; - A5 a5_; - A6 a6_; -}; - -template class list7 -{ -public: - - list7(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - A2 operator[] (boost::arg<2>) const { return a2_; } - A3 operator[] (boost::arg<3>) const { return a3_; } - A4 operator[] (boost::arg<4>) const { return a4_; } - A5 operator[] (boost::arg<5>) const { return a5_; } - A6 operator[] (boost::arg<6>) const { return a6_; } - A7 operator[] (boost::arg<7>) const { return a7_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return a5_; } - A6 operator[] (boost::arg<6> (*) ()) const { return a6_; } - A7 operator[] (boost::arg<7> (*) ()) const { return a7_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_], a[a2_], a[a3_], a[a4_], a[a5_], a[a6_], a[a7_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - BOOST_BIND_VISIT_EACH(v, a3_, 0); - BOOST_BIND_VISIT_EACH(v, a4_, 0); - BOOST_BIND_VISIT_EACH(v, a5_, 0); - BOOST_BIND_VISIT_EACH(v, a6_, 0); - BOOST_BIND_VISIT_EACH(v, a7_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator7 type; - }; - -#else - -private: - -#endif - - A1 a1_; - A2 a2_; - A3 a3_; - A4 a4_; - A5 a5_; - A6 a6_; - A7 a7_; -}; - -template class list8 -{ -public: - - list8(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - A2 operator[] (boost::arg<2>) const { return a2_; } - A3 operator[] (boost::arg<3>) const { return a3_; } - A4 operator[] (boost::arg<4>) const { return a4_; } - A5 operator[] (boost::arg<5>) const { return a5_; } - A6 operator[] (boost::arg<6>) const { return a6_; } - A7 operator[] (boost::arg<7>) const { return a7_; } - A8 operator[] (boost::arg<8>) const { return a8_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return a5_; } - A6 operator[] (boost::arg<6> (*) ()) const { return a6_; } - A7 operator[] (boost::arg<7> (*) ()) const { return a7_; } - A8 operator[] (boost::arg<8> (*) ()) const { return a8_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_], a[a2_], a[a3_], a[a4_], a[a5_], a[a6_], a[a7_], a[a8_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - BOOST_BIND_VISIT_EACH(v, a3_, 0); - BOOST_BIND_VISIT_EACH(v, a4_, 0); - BOOST_BIND_VISIT_EACH(v, a5_, 0); - BOOST_BIND_VISIT_EACH(v, a6_, 0); - BOOST_BIND_VISIT_EACH(v, a7_, 0); - BOOST_BIND_VISIT_EACH(v, a8_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator8 type; - }; - -#else - -private: - -#endif - - A1 a1_; - A2 a2_; - A3 a3_; - A4 a4_; - A5 a5_; - A6 a6_; - A7 a7_; - A8 a8_; -}; - -template class list9 -{ -public: - - list9(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9): a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9) {} - - A1 operator[] (boost::arg<1>) const { return a1_; } - A2 operator[] (boost::arg<2>) const { return a2_; } - A3 operator[] (boost::arg<3>) const { return a3_; } - A4 operator[] (boost::arg<4>) const { return a4_; } - A5 operator[] (boost::arg<5>) const { return a5_; } - A6 operator[] (boost::arg<6>) const { return a6_; } - A7 operator[] (boost::arg<7>) const { return a7_; } - A8 operator[] (boost::arg<8>) const { return a8_; } - A9 operator[] (boost::arg<9>) const { return a9_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return a5_; } - A6 operator[] (boost::arg<6> (*) ()) const { return a6_; } - A7 operator[] (boost::arg<7> (*) ()) const { return a7_; } - A8 operator[] (boost::arg<8> (*) ()) const { return a8_; } - A9 operator[] (boost::arg<9> (*) ()) const { return a9_; } - - template T & operator[] (value & v) const { return v.get(); } - - template T const & operator[] (value const & v) const { return v.get(); } - - template T & operator[] (reference_wrapper const & v) const { return v.get(); } - - template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } - - template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } - - template R operator()(type, F f, A & a) const - { - return unwrap(f, 0)(a[a1_], a[a2_], a[a3_], a[a4_], a[a5_], a[a6_], a[a7_], a[a8_], a[a9_]); - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - BOOST_BIND_VISIT_EACH(v, a3_, 0); - BOOST_BIND_VISIT_EACH(v, a4_, 0); - BOOST_BIND_VISIT_EACH(v, a5_, 0); - BOOST_BIND_VISIT_EACH(v, a6_, 0); - BOOST_BIND_VISIT_EACH(v, a7_, 0); - BOOST_BIND_VISIT_EACH(v, a8_, 0); - BOOST_BIND_VISIT_EACH(v, a9_, 0); - } - -#ifdef BOOST_NO_VOID_RETURNS - - template struct evaluator - { - typedef evaluator9 type; - }; - -#else - -private: - -#endif - - A1 a1_; - A2 a2_; - A3 a3_; - A4 a4_; - A5 a5_; - A6 a6_; - A7 a7_; - A8 a8_; - A9 a9_; -}; - -#ifdef BOOST_NO_VOID_RETURNS - -template struct evaluator0 -{ - template - static R eval(L const&, F f, A &) - { - return unwrap(f, 0)(); - } -}; - -template <> struct evaluator0 -{ - template - static void eval(L const&, F f, A &) - { - unwrap(f, 0)(); - } -}; - -template struct evaluator1 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_]); - } -}; - -template <> struct evaluator1 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_]); - } -}; - -template struct evaluator2 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_], a[l.a2_]); - } -}; - -template <> struct evaluator2 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_], a[l.a2_]); - } -}; - -template struct evaluator3 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_]); - } -}; - -template <> struct evaluator3 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_]); - } -}; - -template struct evaluator4 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_]); - } -}; - -template <> struct evaluator4 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_]); - } -}; - -template struct evaluator5 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_]); - } -}; - -template <> struct evaluator5 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_]); - } -}; - -template struct evaluator6 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_], a[l.a6_]); - } -}; - -template <> struct evaluator6 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_], a[l.a6_]); - } -}; - -template struct evaluator7 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_], a[l.a6_], a[l.a7_]); - } -}; - -template <> struct evaluator7 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_], a[l.a6_], a[l.a7_]); - } -}; - -template struct evaluator8 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_], a[l.a6_], a[l.a7_], a[l.a8_]); - } -}; - -template <> struct evaluator8 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_], a[l.a6_], a[l.a7_], a[l.a8_]); - } -}; - -template struct evaluator9 -{ - template - static R eval(L const& l, F f, A & a) - { - return unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_], a[l.a6_], a[l.a7_], a[l.a8_], a[l.a9_]); - } -}; - -template <> struct evaluator9 -{ - template - static void eval(L const& l, F f, A & a) - { - unwrap(f, 0)(a[l.a1_], a[l.a2_], a[l.a3_], a[l.a4_], a[l.a5_], a[l.a6_], a[l.a7_], a[l.a8_], a[l.a9_]); - } -}; - -#endif - -// bind_t - -#ifndef BOOST_NO_VOID_RETURNS - -template class bind_t -{ -public: - - bind_t(F f, L const & l): f_(f), l_(l) {} - -#define BOOST_BIND_EVALUATE return l_(type(), f_, a) -#include -#undef BOOST_BIND_EVALUATE - -}; - -#else - -template struct bind_t_generator -{ - -template class implementation -{ -public: - - implementation(F f, L const & l): f_(f), l_(l) {} - -#define BOOST_BIND_EVALUATE return L::BOOST_NESTED_TEMPLATE evaluator::type::eval(l_, f_, a); -#include -#undef BOOST_BIND_EVALUATE - -}; - -}; - -template<> struct bind_t_generator -{ - -template class implementation -{ -private: - - typedef void R; - -public: - - implementation(F f, L const & l): f_(f), l_(l) {} - -#define BOOST_BIND_EVALUATE L::BOOST_NESTED_TEMPLATE evaluator::type::eval(l_, f_, a); -#include -#undef BOOST_BIND_EVALUATE - -}; - -}; - -template class bind_t: public bind_t_generator::BOOST_NESTED_TEMPLATE implementation -{ -public: - - bind_t(F f, L const & l): bind_t_generator::BOOST_NESTED_TEMPLATE implementation(f, l) {} - -}; - -#endif - -// add_value - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || (__SUNPRO_CC >= 0x530) - -template struct add_value -{ - typedef value type; -}; - -template struct add_value< value > -{ - typedef value type; -}; - -template struct add_value< reference_wrapper > -{ - typedef reference_wrapper type; -}; - -template struct add_value< arg > -{ - typedef boost::arg type; -}; - -template struct add_value< arg (*) () > -{ - typedef boost::arg (*type) (); -}; - -template struct add_value< bind_t > -{ - typedef bind_t type; -}; - -#else - -template struct _avt_0; - -template<> struct _avt_0<1> -{ - template struct inner - { - typedef T type; - }; -}; - -template<> struct _avt_0<2> -{ - template struct inner - { - typedef value type; - }; -}; - -typedef char (&_avt_r1) [1]; -typedef char (&_avt_r2) [2]; - -template _avt_r1 _avt_f(value); -template _avt_r1 _avt_f(reference_wrapper); -template _avt_r1 _avt_f(arg); -template _avt_r1 _avt_f(arg (*) ()); -template _avt_r1 _avt_f(bind_t); - -_avt_r2 _avt_f(...); - -template struct add_value -{ - static T t(); - typedef typename _avt_0::template inner::type type; -}; - -#endif - -// list_av_N - -template struct list_av_1 -{ - typedef typename add_value::type B1; - typedef list1 type; -}; - -template struct list_av_2 -{ - typedef typename add_value::type B1; - typedef typename add_value::type B2; - typedef list2 type; -}; - -template struct list_av_3 -{ - typedef typename add_value::type B1; - typedef typename add_value::type B2; - typedef typename add_value::type B3; - typedef list3 type; -}; - -template struct list_av_4 -{ - typedef typename add_value::type B1; - typedef typename add_value::type B2; - typedef typename add_value::type B3; - typedef typename add_value::type B4; - typedef list4 type; -}; - -template struct list_av_5 -{ - typedef typename add_value::type B1; - typedef typename add_value::type B2; - typedef typename add_value::type B3; - typedef typename add_value::type B4; - typedef typename add_value::type B5; - typedef list5 type; -}; - -template struct list_av_6 -{ - typedef typename add_value::type B1; - typedef typename add_value::type B2; - typedef typename add_value::type B3; - typedef typename add_value::type B4; - typedef typename add_value::type B5; - typedef typename add_value::type B6; - typedef list6 type; -}; - -template struct list_av_7 -{ - typedef typename add_value::type B1; - typedef typename add_value::type B2; - typedef typename add_value::type B3; - typedef typename add_value::type B4; - typedef typename add_value::type B5; - typedef typename add_value::type B6; - typedef typename add_value::type B7; - typedef list7 type; -}; - -template struct list_av_8 -{ - typedef typename add_value::type B1; - typedef typename add_value::type B2; - typedef typename add_value::type B3; - typedef typename add_value::type B4; - typedef typename add_value::type B5; - typedef typename add_value::type B6; - typedef typename add_value::type B7; - typedef typename add_value::type B8; - typedef list8 type; -}; - -template struct list_av_9 -{ - typedef typename add_value::type B1; - typedef typename add_value::type B2; - typedef typename add_value::type B3; - typedef typename add_value::type B4; - typedef typename add_value::type B5; - typedef typename add_value::type B6; - typedef typename add_value::type B7; - typedef typename add_value::type B8; - typedef typename add_value::type B9; - typedef list9 type; -}; - -// g++ 2.95 specific helper; used by the data member overload - -template struct add_cref -{ - typedef T const & type; -}; - -template<> struct add_cref -{ - typedef void type; -}; - -} // namespace _bi - -// visit_each - -template void visit_each(V & v, _bi::value const & t, int) -{ - BOOST_BIND_VISIT_EACH(v, t.get(), 0); -} - -template void visit_each(V & v, _bi::bind_t const & t, int) -{ - t.accept(v); -} - -// bind - -#ifndef BOOST_BIND -#define BOOST_BIND bind -#endif - -// generic function objects - -template - _bi::bind_t - BOOST_BIND(F f) -{ - typedef _bi::list0 list_type; - return _bi::bind_t (f, list_type()); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1) -{ - typedef typename _bi::list_av_1::type list_type; - return _bi::bind_t (f, list_type(a1)); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1, A2 a2) -{ - typedef typename _bi::list_av_2::type list_type; - return _bi::bind_t (f, list_type(a1, a2)); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3) -{ - typedef typename _bi::list_av_3::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3)); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef typename _bi::list_av_4::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4)); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef typename _bi::list_av_5::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5)); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef typename _bi::list_av_6::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6)); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef typename _bi::list_av_7::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef typename _bi::list_av_8::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template - _bi::bind_t::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef typename _bi::list_av_9::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -// generic function objects, alternative syntax - -template - _bi::bind_t - BOOST_BIND(boost::type, F f) -{ - typedef _bi::list0 list_type; - return _bi::bind_t (f, list_type()); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1) -{ - typedef typename _bi::list_av_1::type list_type; - return _bi::bind_t (f, list_type(a1)); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1, A2 a2) -{ - typedef typename _bi::list_av_2::type list_type; - return _bi::bind_t (f, list_type(a1, a2)); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3) -{ - typedef typename _bi::list_av_3::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3)); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef typename _bi::list_av_4::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4)); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef typename _bi::list_av_5::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5)); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef typename _bi::list_av_6::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6)); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef typename _bi::list_av_7::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef typename _bi::list_av_8::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template - _bi::bind_t::type> - BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef typename _bi::list_av_9::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - -// adaptable function objects - -template - _bi::bind_t<_bi::unspecified, F, _bi::list0> - BOOST_BIND(F f) -{ - typedef _bi::list0 list_type; - return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type()); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_1::type> - BOOST_BIND(F f, A1 a1) -{ - typedef typename _bi::list_av_1::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1)); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_2::type> - BOOST_BIND(F f, A1 a1, A2 a2) -{ - typedef typename _bi::list_av_2::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1, a2)); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_3::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3) -{ - typedef typename _bi::list_av_3::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3)); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_4::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef typename _bi::list_av_4::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4)); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_5::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef typename _bi::list_av_5::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5)); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_6::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef typename _bi::list_av_6::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6)); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_7::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef typename _bi::list_av_7::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_8::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef typename _bi::list_av_8::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_9::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef typename _bi::list_av_9::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -#endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - -// function pointers - -#define BOOST_BIND_CC -#define BOOST_BIND_ST - -#include - -#undef BOOST_BIND_CC -#undef BOOST_BIND_ST - -#ifdef BOOST_BIND_ENABLE_STDCALL - -#define BOOST_BIND_CC __stdcall -#define BOOST_BIND_ST - -#include - -#undef BOOST_BIND_CC -#undef BOOST_BIND_ST - -#endif - -#ifdef BOOST_BIND_ENABLE_FASTCALL - -#define BOOST_BIND_CC __fastcall -#define BOOST_BIND_ST - -#include - -#undef BOOST_BIND_CC -#undef BOOST_BIND_ST - -#endif - -#ifdef BOOST_BIND_ENABLE_PASCAL - -#define BOOST_BIND_ST pascal -#define BOOST_BIND_CC - -#include - -#undef BOOST_BIND_ST -#undef BOOST_BIND_CC - -#endif - -// member function pointers - -#define BOOST_BIND_MF_NAME(X) X -#define BOOST_BIND_MF_CC - -#include - -#undef BOOST_BIND_MF_NAME -#undef BOOST_BIND_MF_CC - -#ifdef BOOST_MEM_FN_ENABLE_STDCALL - -#define BOOST_BIND_MF_NAME(X) X##_stdcall -#define BOOST_BIND_MF_CC __stdcall - -#include - -#undef BOOST_BIND_MF_NAME -#undef BOOST_BIND_MF_CC - -#endif - -#ifdef BOOST_MEM_FN_ENABLE_FASTCALL - -#define BOOST_BIND_MF_NAME(X) X##_fastcall -#define BOOST_BIND_MF_CC __fastcall - -#include - -#undef BOOST_BIND_MF_NAME -#undef BOOST_BIND_MF_CC - -#endif - -// data member pointers - -#if defined(__GNUC__) && (__GNUC__ == 2) - -template -_bi::bind_t< typename _bi::add_cref::type, _mfi::dm, typename _bi::list_av_1::type > - BOOST_BIND(R T::*f, A1 a1) -{ - typedef _mfi::dm F; - typedef typename _bi::list_av_1::type list_type; - return _bi::bind_t::type, F, list_type>(F(f), list_type(a1)); -} - -#else - -template -_bi::bind_t< R const &, _mfi::dm, typename _bi::list_av_1::type > - BOOST_BIND(R T::*f, A1 a1) -{ - typedef _mfi::dm F; - typedef typename _bi::list_av_1::type list_type; - return _bi::bind_t(F(f), list_type(a1)); -} - -#endif - -} // namespace boost - -#ifndef BOOST_BIND_NO_PLACEHOLDERS - -# include - -#endif - -#ifdef BOOST_MSVC -# pragma warning(default: 4512) // assignment operator could not be generated -# pragma warning(pop) -#endif - -#endif // #ifndef BOOST_BIND_HPP_INCLUDED diff --git a/sdk/include/boost/bind/apply.hpp b/sdk/include/boost/bind/apply.hpp deleted file mode 100644 index d903581b7f1..00000000000 --- a/sdk/include/boost/bind/apply.hpp +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef BOOST_BIND_APPLY_HPP_INCLUDED -#define BOOST_BIND_APPLY_HPP_INCLUDED - -// -// apply.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -namespace boost -{ - -template struct apply -{ - typedef R result_type; - - template result_type operator()(F f) const - { - return f(); - } - - template result_type operator()(F f, A1 & a1) const - { - return f(a1); - } - - template result_type operator()(F f, A1 & a1, A2 & a2) const - { - return f(a1, a2); - } - - template result_type operator()(F f, A1 & a1, A2 & a2, A3 & a3) const - { - return f(a1, a2, a3); - } - - template result_type operator()(F f, A1 & a1, A2 & a2, A3 & a3, A4 & a4) const - { - return f(a1, a2, a3, a4); - } - - template result_type operator()(F f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const - { - return f(a1, a2, a3, a4, a5); - } - - template result_type operator()(F f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const - { - return f(a1, a2, a3, a4, a5, a6); - } - - template result_type operator()(F f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const - { - return f(a1, a2, a3, a4, a5, a6, a7); - } - - template result_type operator()(F f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const - { - return f(a1, a2, a3, a4, a5, a6, a7, a8); - } - - template result_type operator()(F f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const - { - return f(a1, a2, a3, a4, a5, a6, a7, a8, a9); - } -}; - -} // namespace boost - -#endif // #ifndef BOOST_BIND_APPLY_HPP_INCLUDED diff --git a/sdk/include/boost/bind/arg.hpp b/sdk/include/boost/bind/arg.hpp deleted file mode 100644 index c0c32d2dc62..00000000000 --- a/sdk/include/boost/bind/arg.hpp +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef BOOST_BIND_ARG_HPP_INCLUDED -#define BOOST_BIND_ARG_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// bind/arg.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - -namespace boost -{ - -template class arg -{ -}; - -} // namespace boost - -#endif // #ifndef BOOST_BIND_ARG_HPP_INCLUDED diff --git a/sdk/include/boost/bind/bind_cc.hpp b/sdk/include/boost/bind/bind_cc.hpp deleted file mode 100644 index a192dec4eab..00000000000 --- a/sdk/include/boost/bind/bind_cc.hpp +++ /dev/null @@ -1,118 +0,0 @@ -// -// bind/bind_cc.hpp - support for different calling conventions -// -// Do not include this header directly. -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - -template - _bi::bind_t - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) ()) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (); - typedef _bi::list0 list_type; - return _bi::bind_t (f, list_type()); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1), A1 a1) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1); - typedef typename _bi::list_av_1::type list_type; - return _bi::bind_t (f, list_type(a1)); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2), A1 a1, A2 a2) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2); - typedef typename _bi::list_av_2::type list_type; - return _bi::bind_t (f, list_type(a1, a2)); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3), A1 a1, A2 a2, A3 a3) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3); - typedef typename _bi::list_av_3::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3)); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4); - typedef typename _bi::list_av_4::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4)); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5); - typedef typename _bi::list_av_5::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5)); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6); - typedef typename _bi::list_av_6::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6)); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7); - typedef typename _bi::list_av_7::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8); - typedef typename _bi::list_av_8::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template - _bi::bind_t::type> - BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9); - typedef typename _bi::list_av_9::type list_type; - return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} diff --git a/sdk/include/boost/bind/bind_mf_cc.hpp b/sdk/include/boost/bind/bind_mf_cc.hpp deleted file mode 100644 index 71b1e1c0794..00000000000 --- a/sdk/include/boost/bind/bind_mf_cc.hpp +++ /dev/null @@ -1,228 +0,0 @@ -// -// bind/bind_mf_cc.hpp - support for different calling conventions -// -// Do not include this header directly. -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - -// 0 - -template - _bi::bind_t, typename _bi::list_av_1::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf0) F; - typedef typename _bi::list_av_1::type list_type; - return _bi::bind_t(F(f), list_type(a1)); -} - -template - _bi::bind_t, typename _bi::list_av_1::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf0) F; - typedef typename _bi::list_av_1::type list_type; - return _bi::bind_t(F(f), list_type(a1)); -} - -// 1 - -template - _bi::bind_t, typename _bi::list_av_2::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf1) F; - typedef typename _bi::list_av_2::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2)); -} - -template - _bi::bind_t, typename _bi::list_av_2::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf1) F; - typedef typename _bi::list_av_2::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2)); -} - -// 2 - -template - _bi::bind_t, typename _bi::list_av_3::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf2) F; - typedef typename _bi::list_av_3::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3)); -} - -template - _bi::bind_t, typename _bi::list_av_3::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf2) F; - typedef typename _bi::list_av_3::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3)); -} - -// 3 - -template - _bi::bind_t, typename _bi::list_av_4::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf3) F; - typedef typename _bi::list_av_4::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); -} - -template - _bi::bind_t, typename _bi::list_av_4::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf3) F; - typedef typename _bi::list_av_4::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); -} - -// 4 - -template - _bi::bind_t, typename _bi::list_av_5::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf4) F; - typedef typename _bi::list_av_5::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); -} - -template - _bi::bind_t, typename _bi::list_av_5::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf4) F; - typedef typename _bi::list_av_5::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); -} - -// 5 - -template - _bi::bind_t, typename _bi::list_av_6::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf5) F; - typedef typename _bi::list_av_6::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); -} - -template - _bi::bind_t, typename _bi::list_av_6::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf5) F; - typedef typename _bi::list_av_6::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); -} - -// 6 - -template - _bi::bind_t, typename _bi::list_av_7::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf6) F; - typedef typename _bi::list_av_7::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template - _bi::bind_t, typename _bi::list_av_7::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf6) F; - typedef typename _bi::list_av_7::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -// 7 - -template - _bi::bind_t, typename _bi::list_av_8::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf7) F; - typedef typename _bi::list_av_8::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template - _bi::bind_t, typename _bi::list_av_8::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf7) F; - typedef typename _bi::list_av_8::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -// 8 - -template - _bi::bind_t, typename _bi::list_av_9::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf8) F; - typedef typename _bi::list_av_9::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -template - _bi::bind_t, typename _bi::list_av_9::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf8) F; - typedef typename _bi::list_av_9::type list_type; - return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} diff --git a/sdk/include/boost/bind/bind_template.hpp b/sdk/include/boost/bind/bind_template.hpp deleted file mode 100644 index d6e5a3b2fd9..00000000000 --- a/sdk/include/boost/bind/bind_template.hpp +++ /dev/null @@ -1,157 +0,0 @@ -// -// bind/bind_template.hpp -// -// Do not include this header directly. -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - - typedef typename result_traits::type result_type; - - result_type operator()() - { - list0 a; - BOOST_BIND_EVALUATE; - } - - result_type operator()() const - { - list0 a; - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1) - { - list1 a(a1); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1) const - { - list1 a(a1); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2) - { - list2 a(a1, a2); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2) const - { - list2 a(a1, a2); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3) - { - list3 a(a1, a2, a3); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3) const - { - list3 a(a1, a2, a3); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) - { - list4 a(a1, a2, a3, a4); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const - { - list4 a(a1, a2, a3, a4); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) - { - list5 a(a1, a2, a3, a4, a5); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const - { - list5 a(a1, a2, a3, a4, a5); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) - { - list6 a(a1, a2, a3, a4, a5, a6); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const - { - list6 a(a1, a2, a3, a4, a5, a6); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) - { - list7 a(a1, a2, a3, a4, a5, a6, a7); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const - { - list7 a(a1, a2, a3, a4, a5, a6, a7); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) - { - list8 a(a1, a2, a3, a4, a5, a6, a7, a8); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const - { - list8 a(a1, a2, a3, a4, a5, a6, a7, a8); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) - { - list9 a(a1, a2, a3, a4, a5, a6, a7, a8, a9); - BOOST_BIND_EVALUATE; - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const - { - list9 a(a1, a2, a3, a4, a5, a6, a7, a8, a9); - BOOST_BIND_EVALUATE; - } - - template result_type eval(A & a) - { - BOOST_BIND_EVALUATE; - } - - template result_type eval(A & a) const - { - BOOST_BIND_EVALUATE; - } - - template void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, f_, 0); - l_.accept(v); - } - -private: - - F f_; - L l_; diff --git a/sdk/include/boost/bind/make_adaptable.hpp b/sdk/include/boost/bind/make_adaptable.hpp deleted file mode 100644 index 01a1d4da3b0..00000000000 --- a/sdk/include/boost/bind/make_adaptable.hpp +++ /dev/null @@ -1,172 +0,0 @@ -#ifndef BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED -#define BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED - -// -// make_adaptable.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -namespace boost -{ - -namespace _bi -{ - -template void instantiate(F) -{ -} - -template class af0 -{ -public: - - typedef R result_type; - - explicit af0(F f): f_(f) - { - } - - result_type operator()() - { - return f_(); - } - -private: - - F f_; -}; - -template class af1 -{ -public: - - typedef R result_type; - typedef A1 argument_type; - typedef A1 arg1_type; - - explicit af1(F f): f_(f) - { - } - - result_type operator()(A1 a1) - { - return f_(a1); - } - -private: - - F f_; -}; - -template class af2 -{ -public: - - typedef R result_type; - typedef A1 first_argument_type; - typedef A2 second_argument_type; - typedef A1 arg1_type; - typedef A2 arg2_type; - - explicit af2(F f): f_(f) - { - } - - result_type operator()(A1 a1, A2 a2) - { - return f_(a1, a2); - } - -private: - - F f_; -}; - -template class af3 -{ -public: - - typedef R result_type; - typedef A1 arg1_type; - typedef A2 arg2_type; - typedef A3 arg3_type; - - explicit af3(F f): f_(f) - { - } - - result_type operator()(A1 a1, A2 a2, A3 a3) - { - return f_(a1, a2, a3); - } - -private: - - F f_; -}; - -template class af4 -{ -public: - - typedef R result_type; - typedef A1 arg1_type; - typedef A2 arg2_type; - typedef A3 arg3_type; - typedef A4 arg4_type; - - explicit af4(F f): f_(f) - { - } - - result_type operator()(A1 a1, A2 a2, A3 a3, A4 a4) - { - return f_(a1, a2, a3, a4); - } - -private: - - F f_; -}; - -} // namespace _bi - -template _bi::af0 make_adaptable(F f) -{ - _bi::instantiate( &_bi::af0::operator() ); // for early error detection - return _bi::af0(f); -} - -template _bi::af1 make_adaptable(F f) -{ - instantiate( &_bi::af1::operator() ); - return _bi::af1(f); -} - -template _bi::af2 make_adaptable(F f) -{ - instantiate( &_bi::af2::operator() ); - return _bi::af2(f); -} - -template _bi::af3 make_adaptable(F f) -{ - instantiate( &_bi::af3::operator() ); - return _bi::af3(f); -} - -template _bi::af4 make_adaptable(F f) -{ - instantiate( &_bi::af4::operator() ); - return _bi::af4(f); -} - -} // namespace boost - -#endif // #ifndef BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED diff --git a/sdk/include/boost/bind/mem_fn_cc.hpp b/sdk/include/boost/bind/mem_fn_cc.hpp deleted file mode 100644 index a89a2eedfba..00000000000 --- a/sdk/include/boost/bind/mem_fn_cc.hpp +++ /dev/null @@ -1,104 +0,0 @@ -// -// bind/mem_fn_cc.hpp - support for different calling conventions -// -// Do not include this header directly. -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/mem_fn.html for documentation. -// - -template _mfi::BOOST_MEM_FN_NAME(mf0) mem_fn(R (BOOST_MEM_FN_CC T::*f) ()) -{ - return _mfi::BOOST_MEM_FN_NAME(mf0)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf0) mem_fn(R (BOOST_MEM_FN_CC T::*f) () const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf0)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(mf1) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1)) -{ - return _mfi::BOOST_MEM_FN_NAME(mf1)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf1) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1) const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf1)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(mf2) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2)) -{ - return _mfi::BOOST_MEM_FN_NAME(mf2)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf2) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2) const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf2)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(mf3) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3)) -{ - return _mfi::BOOST_MEM_FN_NAME(mf3)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf3) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3) const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf3)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(mf4) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4)) -{ - return _mfi::BOOST_MEM_FN_NAME(mf4)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf4) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4) const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf4)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(mf5) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5)) -{ - return _mfi::BOOST_MEM_FN_NAME(mf5)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf5) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5) const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf5)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(mf6) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6)) -{ - return _mfi::BOOST_MEM_FN_NAME(mf6)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf6) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6) const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf6)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(mf7) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7)) -{ - return _mfi::BOOST_MEM_FN_NAME(mf7)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf7) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7) const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf7)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(mf8) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8)) -{ - return _mfi::BOOST_MEM_FN_NAME(mf8)(f); -} - -template _mfi::BOOST_MEM_FN_NAME(cmf8) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf8)(f); -} diff --git a/sdk/include/boost/bind/mem_fn_template.hpp b/sdk/include/boost/bind/mem_fn_template.hpp deleted file mode 100644 index ac260b8e66e..00000000000 --- a/sdk/include/boost/bind/mem_fn_template.hpp +++ /dev/null @@ -1,755 +0,0 @@ -// -// bind/mem_fn_template.hpp -// -// Do not include this header directly -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/mem_fn.html for documentation. -// - -// mf0 - -template class BOOST_MEM_FN_NAME(mf0) -{ -public: - - typedef R result_type; - typedef T * argument_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) ()) - F f_; - - template R call(U & u, T const *) const - { - BOOST_MEM_FN_RETURN (u.*f_)(); - } - - template R call(U & u, void const *) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf0)(F f): f_(f) {} - - R operator()(T * p) const - { - BOOST_MEM_FN_RETURN (p->*f_)(); - } - - template R operator()(U & u) const - { - BOOST_MEM_FN_RETURN call(u, &u); - } - - R operator()(T & t) const - { - BOOST_MEM_FN_RETURN (t.*f_)(); - } -}; - -// cmf0 - -template class BOOST_MEM_FN_NAME(cmf0) -{ -public: - - typedef R result_type; - typedef T const * argument_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) () const) - F f_; - - template R call(U & u, T const *) const - { - BOOST_MEM_FN_RETURN (u.*f_)(); - } - - template R call(U & u, void const *) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf0)(F f): f_(f) {} - - template R operator()(U const & u) const - { - BOOST_MEM_FN_RETURN call(u, &u); - } - - R operator()(T const & t) const - { - BOOST_MEM_FN_RETURN (t.*f_)(); - } -}; - -// mf1 - -template class BOOST_MEM_FN_NAME(mf1) -{ -public: - - typedef R result_type; - typedef T * first_argument_type; - typedef A1 second_argument_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1)) - F f_; - - template R call(U & u, T const *, B1 & b1) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1); - } - - template R call(U & u, void const *, B1 & b1) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf1)(F f): f_(f) {} - - R operator()(T * p, A1 a1) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1); - } - - template R operator()(U & u, A1 a1) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1); - } - - R operator()(T & t, A1 a1) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1); - } -}; - -// cmf1 - -template class BOOST_MEM_FN_NAME(cmf1) -{ -public: - - typedef R result_type; - typedef T const * first_argument_type; - typedef A1 second_argument_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1) const) - F f_; - - template R call(U & u, T const *, B1 & b1) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1); - } - - template R call(U & u, void const *, B1 & b1) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf1)(F f): f_(f) {} - - template R operator()(U const & u, A1 a1) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1); - } - - R operator()(T const & t, A1 a1) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1); - } -}; - -// mf2 - -template class BOOST_MEM_FN_NAME(mf2) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2)) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf2)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2); - } - - template R operator()(U & u, A1 a1, A2 a2) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2); - } - - R operator()(T & t, A1 a1, A2 a2) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2); - } -}; - -// cmf2 - -template class BOOST_MEM_FN_NAME(cmf2) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2) const) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf2)(F f): f_(f) {} - - template R operator()(U const & u, A1 a1, A2 a2) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2); - } - - R operator()(T const & t, A1 a1, A2 a2) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2); - } -}; - -// mf3 - -template class BOOST_MEM_FN_NAME(mf3) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3)) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3); - } - - template R operator()(U & u, A1 a1, A2 a2, A3 a3) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3); - } - - R operator()(T & t, A1 a1, A2 a2, A3 a3) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3); - } -}; - -// cmf3 - -template class BOOST_MEM_FN_NAME(cmf3) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf3)(F f): f_(f) {} - - template R operator()(U const & u, A1 a1, A2 a2, A3 a3) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3); - } -}; - -// mf4 - -template class BOOST_MEM_FN_NAME(mf4) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4)) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf4)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4); - } - - template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4); - } - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4); - } -}; - -// cmf4 - -template class BOOST_MEM_FN_NAME(cmf4) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf4)(F f): f_(f) {} - - template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4); - } -}; - -// mf5 - -template class BOOST_MEM_FN_NAME(mf5) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5)) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf5)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5); - } - - template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5); - } - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5); - } -}; - -// cmf5 - -template class BOOST_MEM_FN_NAME(cmf5) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf5)(F f): f_(f) {} - - template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5); - } -}; - -// mf6 - -template class BOOST_MEM_FN_NAME(mf6) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6)) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf6)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6); - } - - template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6); - } - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6); - } -}; - -// cmf6 - -template class BOOST_MEM_FN_NAME(cmf6) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf6)(F f): f_(f) {} - - template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6); - } -}; - -// mf7 - -template class BOOST_MEM_FN_NAME(mf7) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7)) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf7)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7); - } - - template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7); - } - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7); - } -}; - -// cmf7 - -template class BOOST_MEM_FN_NAME(cmf7) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf7)(F f): f_(f) {} - - template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7); - } -}; - -// mf8 - -template class BOOST_MEM_FN_NAME(mf8) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8)) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf8)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8); - } - - template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8); - } - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8); - } -}; - -// cmf8 - -template class BOOST_MEM_FN_NAME(cmf8) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const) - F f_; - - template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8); - } - - template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf8)(F f): f_(f) {} - - R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8); - } - - template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8); - } -}; - diff --git a/sdk/include/boost/bind/mem_fn_vw.hpp b/sdk/include/boost/bind/mem_fn_vw.hpp deleted file mode 100644 index 6e9f78e9cbc..00000000000 --- a/sdk/include/boost/bind/mem_fn_vw.hpp +++ /dev/null @@ -1,131 +0,0 @@ -// -// bind/mem_fn_vw.hpp - void return helper wrappers -// -// Do not include this header directly -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/mem_fn.html for documentation. -// - -template struct BOOST_MEM_FN_NAME(mf0): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (); - explicit BOOST_MEM_FN_NAME(mf0)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf0): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0) -{ - typedef R (BOOST_MEM_FN_CC T::*F) () const; - explicit BOOST_MEM_FN_NAME(cmf0)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)(f) {} -}; - - -template struct BOOST_MEM_FN_NAME(mf1): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1); - explicit BOOST_MEM_FN_NAME(mf1)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf1): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1) const; - explicit BOOST_MEM_FN_NAME(cmf1)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)(f) {} -}; - - -template struct BOOST_MEM_FN_NAME(mf2): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2); - explicit BOOST_MEM_FN_NAME(mf2)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf2): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2) const; - explicit BOOST_MEM_FN_NAME(cmf2)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)(f) {} -}; - - -template struct BOOST_MEM_FN_NAME(mf3): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3); - explicit BOOST_MEM_FN_NAME(mf3)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf3): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const; - explicit BOOST_MEM_FN_NAME(cmf3)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)(f) {} -}; - - -template struct BOOST_MEM_FN_NAME(mf4): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4); - explicit BOOST_MEM_FN_NAME(mf4)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf4): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const; - explicit BOOST_MEM_FN_NAME(cmf4)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)(f) {} -}; - - -template struct BOOST_MEM_FN_NAME(mf5): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5); - explicit BOOST_MEM_FN_NAME(mf5)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf5): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const; - explicit BOOST_MEM_FN_NAME(cmf5)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)(f) {} -}; - - -template struct BOOST_MEM_FN_NAME(mf6): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6); - explicit BOOST_MEM_FN_NAME(mf6)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf6): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const; - explicit BOOST_MEM_FN_NAME(cmf6)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)(f) {} -}; - - -template struct BOOST_MEM_FN_NAME(mf7): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7); - explicit BOOST_MEM_FN_NAME(mf7)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf7): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const; - explicit BOOST_MEM_FN_NAME(cmf7)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)(f) {} -}; - - -template struct BOOST_MEM_FN_NAME(mf8): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8); - explicit BOOST_MEM_FN_NAME(mf8)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)(f) {} -}; - -template struct BOOST_MEM_FN_NAME(cmf8): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8) -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const; - explicit BOOST_MEM_FN_NAME(cmf8)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)(f) {} -}; - diff --git a/sdk/include/boost/bind/placeholders.hpp b/sdk/include/boost/bind/placeholders.hpp deleted file mode 100644 index 3d4ed27453b..00000000000 --- a/sdk/include/boost/bind/placeholders.hpp +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED -#define BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// bind/placeholders.hpp - _N definitions -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - -#include -#include - -namespace -{ - -#if defined(__BORLANDC__) - -static inline boost::arg<1> _1() { return boost::arg<1>(); } -static inline boost::arg<2> _2() { return boost::arg<2>(); } -static inline boost::arg<3> _3() { return boost::arg<3>(); } -static inline boost::arg<4> _4() { return boost::arg<4>(); } -static inline boost::arg<5> _5() { return boost::arg<5>(); } -static inline boost::arg<6> _6() { return boost::arg<6>(); } -static inline boost::arg<7> _7() { return boost::arg<7>(); } -static inline boost::arg<8> _8() { return boost::arg<8>(); } -static inline boost::arg<9> _9() { return boost::arg<9>(); } - -#elif (defined(BOOST_MSVC) && BOOST_MSVC <= 1300) || (defined(__DECCXX_VER) && __DECCXX_VER <= 60590031) || defined(__MWERKS__) - -static boost::arg<1> _1; -static boost::arg<2> _2; -static boost::arg<3> _3; -static boost::arg<4> _4; -static boost::arg<5> _5; -static boost::arg<6> _6; -static boost::arg<7> _7; -static boost::arg<8> _8; -static boost::arg<9> _9; - -#else - -boost::arg<1> _1; -boost::arg<2> _2; -boost::arg<3> _3; -boost::arg<4> _4; -boost::arg<5> _5; -boost::arg<6> _6; -boost::arg<7> _7; -boost::arg<8> _8; -boost::arg<9> _9; - -#endif - -} // unnamed namespace - -#endif // #ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED diff --git a/sdk/include/boost/bind/protect.hpp b/sdk/include/boost/bind/protect.hpp deleted file mode 100644 index 73b6dce28ba..00000000000 --- a/sdk/include/boost/bind/protect.hpp +++ /dev/null @@ -1,145 +0,0 @@ -#ifndef BOOST_BIND_PROTECT_HPP_INCLUDED -#define BOOST_BIND_PROTECT_HPP_INCLUDED - -// -// protect.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -namespace boost -{ - -namespace _bi -{ - -template class protected_bind_t -{ -public: - - typedef typename F::result_type result_type; - - explicit protected_bind_t(F f): f_(f) - { - } - - result_type operator()() - { - return f_(); - } - - result_type operator()() const - { - return f_(); - } - - template result_type operator()(A1 & a1) - { - return f_(a1); - } - - template result_type operator()(A1 & a1) const - { - return f_(a1); - } - - template result_type operator()(A1 & a1, A2 & a2) - { - return f_(a1, a2); - } - - template result_type operator()(A1 & a1, A2 & a2) const - { - return f_(a1, a2); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3) - { - return f_(a1, a2, a3); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3) const - { - return f_(a1, a2, a3); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) - { - return f_(a1, a2, a3, a4); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const - { - return f_(a1, a2, a3, a4); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) - { - return f_(a1, a2, a3, a4, a5); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const - { - return f_(a1, a2, a3, a4, a5); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) - { - return f_(a1, a2, a3, a4, a5, a6); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const - { - return f_(a1, a2, a3, a4, a5, a6); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) - { - return f_(a1, a2, a3, a4, a5, a6, a7); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const - { - return f_(a1, a2, a3, a4, a5, a6, a7); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) - { - return f_(a1, a2, a3, a4, a5, a6, a7, a8); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const - { - return f_(a1, a2, a3, a4, a5, a6, a7, a8); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) - { - return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9); - } - - template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const - { - return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9); - } - -private: - - F f_; -}; - -} // namespace _bi - -template _bi::protected_bind_t protect(F f) -{ - return _bi::protected_bind_t(f); -} - -} // namespace boost - -#endif // #ifndef BOOST_BIND_PROTECT_HPP_INCLUDED diff --git a/sdk/include/boost/call_traits.hpp b/sdk/include/boost/call_traits.hpp deleted file mode 100644 index b8022579b1b..00000000000 --- a/sdk/include/boost/call_traits.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright Boost.org 2000. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org/libs/utility/call_traits.htm for Documentation. -// See boost/detail/call_traits.hpp and boost/detail/ob_call_traits.hpp -// for full copyright notices. - -#ifndef BOOST_CALL_TRAITS_HPP -#define BOOST_CALL_TRAITS_HPP - -#ifndef BOOST_CONFIG_HPP -#include -#endif - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -#include -#else -#include -#endif - -#endif // BOOST_CALL_TRAITS_HPP diff --git a/sdk/include/boost/cast.hpp b/sdk/include/boost/cast.hpp deleted file mode 100644 index b26172bd813..00000000000 --- a/sdk/include/boost/cast.hpp +++ /dev/null @@ -1,385 +0,0 @@ -// boost cast.hpp header file ----------------------------------------------// - -// (C) Copyright boost.org 1999. Permission to copy, use, modify, sell -// and distribute this software is granted provided this copyright -// notice appears in all copies. This software is provided "as is" without -// express or implied warranty, and with no claim as to its suitability for -// any purpose. - -// See http://www.boost.org/libs/conversion for Documentation. - -// Revision History -// 02 Apr 01 Removed BOOST_NO_LIMITS workarounds and included -// instead (the workaround did not -// actually compile when BOOST_NO_LIMITS was defined in -// any case, so we loose nothing). (John Maddock) -// 21 Jan 01 Undid a bug I introduced yesterday. numeric_cast<> never -// worked with stock GCC; trying to get it to do that broke -// vc-stlport. -// 20 Jan 01 Moved BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS to config.hpp. -// Removed unused BOOST_EXPLICIT_TARGET macro. Moved -// boost::detail::type to boost/type.hpp. Made it compile with -// stock gcc again (Dave Abrahams) -// 29 Nov 00 Remove nested namespace cast, cleanup spacing before Formal -// Review (Beman Dawes) -// 19 Oct 00 Fix numeric_cast for floating-point types (Dave Abrahams) -// 15 Jul 00 Suppress numeric_cast warnings for GCC, Borland and MSVC -// (Dave Abrahams) -// 30 Jun 00 More MSVC6 wordarounds. See comments below. (Dave Abrahams) -// 28 Jun 00 Removed implicit_cast<>. See comment below. (Beman Dawes) -// 27 Jun 00 More MSVC6 workarounds -// 15 Jun 00 Add workarounds for MSVC6 -// 2 Feb 00 Remove bad_numeric_cast ";" syntax error (Doncho Angelov) -// 26 Jan 00 Add missing throw() to bad_numeric_cast::what(0 (Adam Levar) -// 29 Dec 99 Change using declarations so usages in other namespaces work -// correctly (Dave Abrahams) -// 23 Sep 99 Change polymorphic_downcast assert to also detect M.I. errors -// as suggested Darin Adler and improved by Valentin Bonnard. -// 2 Sep 99 Remove controversial asserts, simplify, rename. -// 30 Aug 99 Move to cast.hpp, replace value_cast with numeric_cast, -// place in nested namespace. -// 3 Aug 99 Initial version - -#ifndef BOOST_CAST_HPP -#define BOOST_CAST_HPP - -# include -# include -# include -# include -# include -# include - -// It has been demonstrated numerous times that MSVC 6.0 fails silently at link -// time if you use a template function which has template parameters that don't -// appear in the function's argument list. -// -// TODO: Add this to config.hpp? -# if defined(BOOST_MSVC) && BOOST_MSVC <= 1200 // 1200 = VC6 -# define BOOST_EXPLICIT_DEFAULT_TARGET , ::boost::type* = 0 -# else -# define BOOST_EXPLICIT_DEFAULT_TARGET -# endif - -namespace boost -{ -// See the documentation for descriptions of how to choose between -// static_cast<>, dynamic_cast<>, polymorphic_cast<> and polymorphic_downcast<> - -// polymorphic_cast --------------------------------------------------------// - - // Runtime checked polymorphic downcasts and crosscasts. - // Suggested in The C++ Programming Language, 3rd Ed, Bjarne Stroustrup, - // section 15.8 exercise 1, page 425. - - template - inline Target polymorphic_cast(Source* x BOOST_EXPLICIT_DEFAULT_TARGET) - { - Target tmp = dynamic_cast(x); - if ( tmp == 0 ) throw std::bad_cast(); - return tmp; - } - -// polymorphic_downcast ----------------------------------------------------// - - // assert() checked polymorphic downcast. Crosscasts prohibited. - - // WARNING: Because this cast uses assert(), it violates the One Definition - // Rule if NDEBUG is inconsistently defined across translation units. - - // Contributed by Dave Abrahams - - template - inline Target polymorphic_downcast(Source* x BOOST_EXPLICIT_DEFAULT_TARGET) - { - assert( dynamic_cast(x) == x ); // detect logic error - return static_cast(x); - } - -// implicit_cast -----------------------------------------------------------// -// -// Removed due to uncertain purpose. Use either numeric_cast (see below) -// or static_cast according to the need. - -// numeric_cast and related exception --------------------------------------// - -// Contributed by Kevlin Henney - -// bad_numeric_cast --------------------------------------------------------// - - // exception used to indicate runtime numeric_cast failure - class bad_numeric_cast : public std::bad_cast - { - public: - // constructors, destructors and assignment operator defaulted - - // function inlined for brevity and consistency with rest of library - virtual const char *what() const throw() - { - return "bad numeric cast: loss of range in numeric_cast"; - } - }; - -// numeric_cast ------------------------------------------------------------// - -#if !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || defined(BOOST_SGI_CPP_LIMITS) - - namespace detail - { - template - struct signed_numeric_limits : std::numeric_limits - { - static inline T min() - { - return std::numeric_limits::min() >= 0 - // unary minus causes integral promotion, thus the static_cast<> - ? static_cast(-std::numeric_limits::max()) - : std::numeric_limits::min(); - }; - }; - - // Move to namespace boost in utility.hpp? - template - struct fixed_numeric_limits_base - : public if_true< std::numeric_limits::is_signed > - ::BOOST_NESTED_TEMPLATE then< signed_numeric_limits, - std::numeric_limits - >::type - {}; - - template - struct fixed_numeric_limits - : fixed_numeric_limits_base::is_specialized)> - {}; - -# ifdef BOOST_HAS_LONG_LONG - // cover implementations which supply no specialization for long - // long / unsigned long long. Not intended to be full - // numeric_limits replacements, but good enough for numeric_cast<> - template <> - struct fixed_numeric_limits_base - { - BOOST_STATIC_CONSTANT(bool, is_specialized = true); - BOOST_STATIC_CONSTANT(bool, is_signed = true); - static long long max() - { -# ifdef LONGLONG_MAX - return LONGLONG_MAX; -# else - return 9223372036854775807LL; // hope this is portable -# endif - } - - static long long min() - { -# ifdef LONGLONG_MIN - return LONGLONG_MIN; -# else - return -9223372036854775808LL; // hope this is portable -# endif - } - }; - - template <> - struct fixed_numeric_limits_base - { - BOOST_STATIC_CONSTANT(bool, is_specialized = true); - BOOST_STATIC_CONSTANT(bool, is_signed = false); - static unsigned long long max() - { -# ifdef ULONGLONG_MAX - return ULONGLONG_MAX; -# else - return 0xffffffffffffffffULL; // hope this is portable -# endif - } - - static unsigned long long min() { return 0; } - }; -# endif - } // namespace detail - -// less_than_type_min - - // x_is_signed should be numeric_limits::is_signed - // y_is_signed should be numeric_limits::is_signed - // y_min should be numeric_limits::min() - // - // check(x, y_min) returns true iff x < y_min without invoking comparisons - // between signed and unsigned values. - // - // "poor man's partial specialization" is in use here. - template - struct less_than_type_min - { - template - static bool check(X x, Y y_min) - { return x < y_min; } - }; - - template <> - struct less_than_type_min - { - template - static bool check(X, Y) - { return false; } - }; - - template <> - struct less_than_type_min - { - template - static bool check(X x, Y) - { return x < 0; } - }; - - // greater_than_type_max - - // same_sign should be: - // numeric_limits::is_signed == numeric_limits::is_signed - // y_max should be numeric_limits::max() - // - // check(x, y_max) returns true iff x > y_max without invoking comparisons - // between signed and unsigned values. - // - // "poor man's partial specialization" is in use here. - template - struct greater_than_type_max; - - template<> - struct greater_than_type_max - { - template - static inline bool check(X x, Y y_max) - { return x > y_max; } - }; - - template <> - struct greater_than_type_max - { - // What does the standard say about this? I think it's right, and it - // will work with every compiler I know of. - template - static inline bool check(X x, Y) - { return x >= 0 && static_cast(static_cast(x)) != x; } - -# if defined(BOOST_MSVC) && BOOST_MSVC <= 1200 - // MSVC6 can't static_cast unsigned __int64 -> floating types -# define BOOST_UINT64_CAST(src_type) \ - static inline bool check(src_type x, unsigned __int64) \ - { \ - if (x < 0) return false; \ - unsigned __int64 y = static_cast(x); \ - bool odd = y & 0x1; \ - __int64 div2 = static_cast<__int64>(y >> 1); \ - return ((static_cast(div2) * 2.0) + odd) != x; \ - } - - BOOST_UINT64_CAST(long double); - BOOST_UINT64_CAST(double); - BOOST_UINT64_CAST(float); -# undef BOOST_UINT64_CAST -# endif - }; - - template<> - struct greater_than_type_max - { - template - static inline bool check(X x, Y y_max) - { return x > y_max; } - }; - - template <> - struct greater_than_type_max - { - // What does the standard say about this? I think it's right, and it - // will work with every compiler I know of. - template - static inline bool check(X x, Y) - { return static_cast(static_cast(x)) != x; } - }; - -#else // use #pragma hacks if available - - namespace detail - { -# if BOOST_MSVC -# pragma warning(push) -# pragma warning(disable : 4018) -# pragma warning(disable : 4146) -#elif defined(__BORLANDC__) -# pragma option push -w-8041 -# endif - - // Move to namespace boost in utility.hpp? - template - struct fixed_numeric_limits : public std::numeric_limits - { - static inline T min() - { - return std::numeric_limits::is_signed && std::numeric_limits::min() >= 0 - ? T(-std::numeric_limits::max()) : std::numeric_limits::min(); - } - }; - -# if BOOST_MSVC -# pragma warning(pop) -#elif defined(__BORLANDC__) -# pragma option pop -# endif - } // namespace detail - -#endif - - template - inline Target numeric_cast(Source arg BOOST_EXPLICIT_DEFAULT_TARGET) - { - // typedefs abbreviating respective trait classes - typedef detail::fixed_numeric_limits arg_traits; - typedef detail::fixed_numeric_limits result_traits; - -#if defined(BOOST_STRICT_CONFIG) \ - || (!defined(__HP_aCC) || __HP_aCC > 33900) \ - && (!defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) \ - || defined(BOOST_SGI_CPP_LIMITS)) - // typedefs that act as compile time assertions - // (to be replaced by boost compile time assertions - // as and when they become available and are stable) - typedef bool argument_must_be_numeric[arg_traits::is_specialized]; - typedef bool result_must_be_numeric[result_traits::is_specialized]; - - const bool arg_is_signed = arg_traits::is_signed; - const bool result_is_signed = result_traits::is_signed; - const bool same_sign = arg_is_signed == result_is_signed; - - if (less_than_type_min::check(arg, result_traits::min()) - || greater_than_type_max::check(arg, result_traits::max()) - ) - -#else // We need to use #pragma hacks if available - -# if BOOST_MSVC -# pragma warning(push) -# pragma warning(disable : 4018) -#elif defined(__BORLANDC__) -#pragma option push -w-8012 -# endif - if ((arg < 0 && !result_traits::is_signed) // loss of negative range - || (arg_traits::is_signed && arg < result_traits::min()) // underflow - || arg > result_traits::max()) // overflow -# if BOOST_MSVC -# pragma warning(pop) -#elif defined(__BORLANDC__) -#pragma option pop -# endif -#endif - { - throw bad_numeric_cast(); - } - return static_cast(arg); - } // numeric_cast - -# undef BOOST_EXPLICIT_DEFAULT_TARGET - -} // namespace boost - -#endif // BOOST_CAST_HPP diff --git a/sdk/include/boost/checked_delete.hpp b/sdk/include/boost/checked_delete.hpp deleted file mode 100644 index 92a3d0a1c05..00000000000 --- a/sdk/include/boost/checked_delete.hpp +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED -#define BOOST_CHECKED_DELETE_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/checked_delete.hpp -// -// Copyright (c) 1999, 2000, 2001, 2002 boost.org -// Copyright (c) 2002, 2003 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/utility/checked_delete.html for documentation. -// - -namespace boost -{ - -// verify that types are complete for increased safety - -template inline void checked_delete(T * x) -{ - typedef char type_must_be_complete[sizeof(T)]; - delete x; -} - -template inline void checked_array_delete(T * x) -{ - typedef char type_must_be_complete[sizeof(T)]; - delete [] x; -} - -template struct checked_deleter -{ - typedef void result_type; - typedef T * argument_type; - - void operator()(T * x) const - { - boost::checked_delete(x); - } -}; - -template struct checked_array_deleter -{ - typedef void result_type; - typedef T * argument_type; - - void operator()(T * x) const - { - boost::checked_array_delete(x); - } -}; - -} // namespace boost - -#endif // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cassert b/sdk/include/boost/compatibility/cpp_c_headers/cassert deleted file mode 100644 index 03f0a503119..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cassert +++ /dev/null @@ -1,10 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CASSERT_HEADER -#define __CASSERT_HEADER - -#include - -#endif // CASSERT_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cctype b/sdk/include/boost/compatibility/cpp_c_headers/cctype deleted file mode 100644 index fdd01e9d4d4..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cctype +++ /dev/null @@ -1,26 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CCTYPE_HEADER -#define __CCTYPE_HEADER - -#include - -namespace std { - using ::isalnum; - using ::isdigit; - using ::isprint; - using ::isupper; - using ::tolower; - using ::isalpha; - using ::isgraph; - using ::ispunct; - using ::isxdigit; - using ::toupper; - using ::iscntrl; - using ::islower; - using ::isspace; -} - -#endif // CCTYPE_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cerrno b/sdk/include/boost/compatibility/cpp_c_headers/cerrno deleted file mode 100644 index e369a2c03b6..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cerrno +++ /dev/null @@ -1,10 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CERRNO_HEADER -#define __CERRNO_HEADER - -#include - -#endif // CERRNO_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cfloat b/sdk/include/boost/compatibility/cpp_c_headers/cfloat deleted file mode 100644 index cab759d886f..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cfloat +++ /dev/null @@ -1,10 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CFLOAT_HEADER -#define __CFLOAT_HEADER - -#include - -#endif // CFLOAT_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/climits b/sdk/include/boost/compatibility/cpp_c_headers/climits deleted file mode 100644 index 77331fdc6b4..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/climits +++ /dev/null @@ -1,10 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CLIMITS_HEADER -#define __CLIMITS_HEADER - -#include - -#endif // CLIMITS_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/clocale b/sdk/include/boost/compatibility/cpp_c_headers/clocale deleted file mode 100644 index 89dd324a248..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/clocale +++ /dev/null @@ -1,16 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CLOCALE_HEADER -#define __CLOCALE_HEADER - -#include - -namespace std { - using ::lconv; - using ::localeconv; - using ::setlocale; -} - -#endif // CLOCALE_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cmath b/sdk/include/boost/compatibility/cpp_c_headers/cmath deleted file mode 100644 index 6da05f84685..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cmath +++ /dev/null @@ -1,35 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CMATH_HEADER -#define __CMATH_HEADER - -#include - -namespace std { - using ::acos; - using ::cos; - using ::fmod; - using ::modf; - using ::tan; - using ::asin; - using ::cosh; - using ::frexp; - using ::pow; - using ::tanh; - using ::atan; - using ::exp; - using ::ldexp; - using ::sin; - using ::atan2; - using ::fabs; - using ::log; - using ::sinh; - using ::ceil; - using ::floor; - using ::log10; - using ::sqrt; -} - -#endif // CMATH_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/csetjmp b/sdk/include/boost/compatibility/cpp_c_headers/csetjmp deleted file mode 100644 index 80619c14eb2..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/csetjmp +++ /dev/null @@ -1,15 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CSETJMP_HEADER -#define __CSETJMP_HEADER - -#include - -namespace std { - using ::jmp_buf; - using ::longjmp; -} - -#endif // CSETJMP_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/csignal b/sdk/include/boost/compatibility/cpp_c_headers/csignal deleted file mode 100644 index 00c588a3566..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/csignal +++ /dev/null @@ -1,16 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CSIGNAL_HEADER -#define __CSIGNAL_HEADER - -#include - -namespace std { - using ::sig_atomic_t; - using ::raise; - using ::signal; -} - -#endif // CSIGNAL_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cstdarg b/sdk/include/boost/compatibility/cpp_c_headers/cstdarg deleted file mode 100644 index d9a093ec178..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cstdarg +++ /dev/null @@ -1,14 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CSTDARG_HEADER -#define __CSTDARG_HEADER - -#include - -namespace std { - using ::va_list; -} - -#endif // CSTDARG_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cstddef b/sdk/include/boost/compatibility/cpp_c_headers/cstddef deleted file mode 100644 index 9275b4169d4..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cstddef +++ /dev/null @@ -1,15 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CSTDDEF_HEADER -#define __CSTDDEF_HEADER - -#include - -namespace std { - using ::ptrdiff_t; - using ::size_t; -} - -#endif // CSTDDEF_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cstdio b/sdk/include/boost/compatibility/cpp_c_headers/cstdio deleted file mode 100644 index 2d92c802a4d..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cstdio +++ /dev/null @@ -1,57 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CSTDIO_HEADER -#define __CSTDIO_HEADER - -#include - -namespace std { - using ::FILE; - using ::fpos_t; - using ::size_t; - using ::clearerr; - using ::fgets; - using ::fscanf; - using ::gets; - using ::rename; - using ::tmpfile; - using ::fclose; - using ::fopen; - using ::fseek; - using ::perror; - using ::rewind; - using ::tmpnam; - using ::feof; - using ::fprintf; - using ::fsetpos; - using ::printf; - using ::scanf; - using ::ungetc; - using ::ferror; - using ::fputc; - using ::ftell; - using ::putc; - using ::setbuf; - using ::vfprintf; - using ::fflush; - using ::fputs; - using ::fwrite; - using ::putchar; - using ::setvbuf; - using ::vprintf; - using ::fgetc; - using ::fread; - using ::getc; - using ::puts; - using ::sprintf; - using ::vsprintf; - using ::fgetpos; - using ::freopen; - using ::getchar; - using ::remove; - using ::sscanf; -} - -#endif // CSTDIO_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cstdlib b/sdk/include/boost/compatibility/cpp_c_headers/cstdlib deleted file mode 100644 index 7ac5130e8f2..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cstdlib +++ /dev/null @@ -1,43 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CSTDLIB_HEADER -#define __CSTDLIB_HEADER - -#include - -namespace std { - using ::abort; - using ::atexit; - using ::exit; - using ::getenv; - using ::system; - using ::calloc; - using ::malloc; - using ::free; - using ::realloc; - using ::atol; - using ::mblen; - using ::strtod; - using ::wctomb; - using ::atof; - using ::mbstowcs; - using ::strtol; - using ::wcstombs; - using ::atoi; - using ::mbtowc; - using ::strtoul; - using ::bsearch; - using ::qsort; - using ::div_t; - using ::ldiv_t; - using ::abs; - using ::labs; - using ::srand; - using ::div; - using ::ldiv; - using ::rand; -} - -#endif // CSTDLIB_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cstring b/sdk/include/boost/compatibility/cpp_c_headers/cstring deleted file mode 100644 index bcbf6b1fed0..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cstring +++ /dev/null @@ -1,36 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CSTRING_HEADER -#define __CSTRING_HEADER - -#include - -namespace std { - using ::size_t; - using ::memchr; - using ::strcat; - using ::strcspn; - using ::strncpy; - using ::strtok; - using ::memcmp; - using ::strchr; - using ::strerror; - using ::strpbrk; - using ::strxfrm; - using ::memcpy; - using ::strcmp; - using ::strlen; - using ::strrchr; - using ::memmove; - using ::strcoll; - using ::strncat; - using ::strspn; - using ::memset; - using ::strcpy; - using ::strncmp; - using ::strstr; -} - -#endif // CSTRING_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/ctime b/sdk/include/boost/compatibility/cpp_c_headers/ctime deleted file mode 100644 index 9114c3bbcf5..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/ctime +++ /dev/null @@ -1,26 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CTIME_HEADER -#define __CTIME_HEADER - -#include - -namespace std { - using ::size_t; - using ::clock_t; - using ::time_t; - using ::tm; - using ::asctime; - using ::clock; - using ::difftime; - using ::localtime; - using ::strftime; - using ::ctime; - using ::gmtime; - using ::mktime; - using ::time; -} - -#endif // CTIME_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cwchar b/sdk/include/boost/compatibility/cpp_c_headers/cwchar deleted file mode 100644 index e38e6264e94..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cwchar +++ /dev/null @@ -1,156 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CWCHAR_HEADER -#define __CWCHAR_HEADER - -#include - -namespace std { - using ::mbstate_t; - using ::wint_t; - using ::size_t; -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::btowc; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::getwchar; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::ungetwc; -#endif - using ::wcscpy; -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wcsrtombs; -#endif -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wmemchr; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::fgetwc; -#endif -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::mbrlen; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::vfwprintf; -#endif -#endif - using ::wcscspn; - using ::wcsspn; -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wmemcmp; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::fgetws; -#endif -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::mbrtowc; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::vswprintf; -#endif -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::wcsftime; -#endif - using ::wcsstr; -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wmemcpy; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::fputwc; -#endif -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::mbsinit; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::vwprintf; -#endif -#endif - using ::wcslen; - using ::wcstod; -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wmemmove; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::fputws; -#endif -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::mbsrtowcs; -#endif -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wcrtomb; -#endif - using ::wcsncat; - using ::wcstok; -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wmemset; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__DECCXX_VER) && __DECCXX_VER <= 60290024) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::fwide; -#endif -#endif -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::putwc; -#endif - using ::wcscat; - using ::wcsncmp; - using ::wcstol; -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wprintf; -#endif -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::fwprintf; -#endif -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::putwchar; -#endif - using ::wcschr; - using ::wcsncpy; - using ::wcstoul; -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wscanf; -#endif -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::fwscanf; -#endif -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::swprintf; -#endif -#endif - using ::wcscmp; - using ::wcspbrk; - using ::wcsxfrm; -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) - using ::getwc; -#endif -#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005) -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::swscanf; -#endif -#endif - using ::wcscoll; - using ::wcsrchr; -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wctob; -#endif -} - -#endif // CWCHAR_HEADER diff --git a/sdk/include/boost/compatibility/cpp_c_headers/cwctype b/sdk/include/boost/compatibility/cpp_c_headers/cwctype deleted file mode 100644 index 7b2f6bb2de3..00000000000 --- a/sdk/include/boost/compatibility/cpp_c_headers/cwctype +++ /dev/null @@ -1,39 +0,0 @@ -// This file is automatically generated. Do not edit. -// ['../../../libs/compatibility/generate_cpp_c_headers.py'] -// Mon Apr 16 15:16:00 2001 ('PST', 'PDT') - -#ifndef __CWCTYPE_HEADER -#define __CWCTYPE_HEADER - -#include - -namespace std { -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wctrans_t; -#endif - using ::wctype_t; - using ::wint_t; - using ::iswalnum; - using ::iswctype; - using ::iswlower; - using ::iswspace; -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::towctrans; -#endif -#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730) - using ::wctrans; -#endif - using ::iswalpha; - using ::iswdigit; - using ::iswprint; - using ::iswupper; - using ::towlower; - using ::wctype; - using ::iswcntrl; - using ::iswgraph; - using ::iswpunct; - using ::iswxdigit; - using ::towupper; -} - -#endif // CWCTYPE_HEADER diff --git a/sdk/include/boost/compose.hpp b/sdk/include/boost/compose.hpp deleted file mode 100644 index a3fbc81b3c8..00000000000 --- a/sdk/include/boost/compose.hpp +++ /dev/null @@ -1,229 +0,0 @@ -/* supplementing compose function objects - * Fri Jul 16 21:01:58 MEST 1999 - */ -/* The following code example is taken from the book - * "The C++ Standard Library - A Tutorial and Reference" - * by Nicolai M. Josuttis, Addison-Wesley, 1999 - * - * (C) Copyright Nicolai M. Josuttis 1999. - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ - -// See http://www.boost.org/libs/compose for Documentation. - -#ifndef BOOST_COMPOSE_HPP -#define BOOST_COMPOSE_HPP - -#include - -namespace boost { - -/********************************************************** - * type nullary_function - * - as supplement to unary_function and binary_function - **********************************************************/ -template -struct nullary_function { - typedef Result result_type; -}; - -/********************************************************** - * ptr_fun for functions with no argument - **********************************************************/ -template -class pointer_to_nullary_function : public nullary_function -{ - protected: - Result (*ptr)(); - public: - pointer_to_nullary_function() { - } - explicit pointer_to_nullary_function(Result (*x)()) : ptr(x) { - } - Result operator()() const { - return ptr(); - } -}; - -template -inline pointer_to_nullary_function ptr_fun(Result (*x)()) -{ - return pointer_to_nullary_function(x); -} - -/*********** compose_f_gx_t and compose_f_gx **********************/ - -/* class for the compose_f_gx adapter - */ -template -class compose_f_gx_t - : public std::unary_function -{ - private: - OP1 op1; // process: op1(op2(x)) - OP2 op2; - public: - // constructor - compose_f_gx_t(const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x) const { - return op1(op2(x)); - } -}; - -/* convenience functions for the compose_f_gx adapter - */ -template -inline compose_f_gx_t -compose_f_gx (const OP1& o1, const OP2& o2) { - return compose_f_gx_t(o1,o2); -} - -/*********** compose_f_gx_hx_t and compose_f_gx_hx **********************/ - -/* class for the compose_f_gx_hx adapter - */ -template -class compose_f_gx_hx_t - : public std::unary_function -{ - private: - OP1 op1; // process: op1(op2(x),op3(x)) - OP2 op2; - OP3 op3; - public: - // constructor - compose_f_gx_hx_t (const OP1& o1, const OP2& o2, const OP3& o3) - : op1(o1), op2(o2), op3(o3) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x) const { - return op1(op2(x),op3(x)); - } -}; - -/* convenience functions for the compose_f_gx_hx adapter - */ -template -inline compose_f_gx_hx_t -compose_f_gx_hx (const OP1& o1, const OP2& o2, const OP3& o3) { - return compose_f_gx_hx_t(o1,o2,o3); -} - -/*********** compose_f_gxy_t and compose_f_gxy **********************/ - -/* class for the compose_f_gxy adapter - */ -template -class compose_f_gxy_t - : public std::binary_function -{ - private: - OP1 op1; // process: op1(op2(x,y)) - OP2 op2; - public: - // constructor - compose_f_gxy_t (const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::first_argument_type& x, - const typename OP2::second_argument_type& y) const { - return op1(op2(x,y)); - } -}; - -/* convenience function for the compose_f_gxy adapter - */ -template -inline compose_f_gxy_t -compose_f_gxy (const OP1& o1, const OP2& o2) { - return compose_f_gxy_t(o1,o2); -} - -/*********** compose_f_gx_hy_t and compose_f_gx_hy **********************/ - -/* class for the compose_f_gx_hy adapter - */ -template -class compose_f_gx_hy_t - : public std::binary_function -{ - private: - OP1 op1; // process: op1(op2(x),op3(y)) - OP2 op2; - OP3 op3; - public: - // constructor - compose_f_gx_hy_t (const OP1& o1, const OP2& o2, const OP3& o3) - : op1(o1), op2(o2), op3(o3) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x, - const typename OP3::argument_type& y) const { - return op1(op2(x),op3(y)); - } -}; - -/* convenience function for the compose_f_gx_hy adapter - */ -template -inline compose_f_gx_hy_t -compose_f_gx_hy (const OP1& o1, const OP2& o2, const OP3& o3) { - return compose_f_gx_hy_t(o1,o2,o3); -} - -/*********** compose_f_g_t and compose_f_g **********************/ - -/* class for the compose_f_g adapter - */ -template -class compose_f_g_t - : public boost::nullary_function -{ - private: - OP1 op1; // process: op1(op2()) - OP2 op2; - public: - // constructor - compose_f_g_t(const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()() const { - return op1(op2()); - } -}; - -/* convenience functions for the compose_f_g adapter - */ -template -inline compose_f_g_t -compose_f_g (const OP1& o1, const OP2& o2) { - return compose_f_g_t(o1,o2); -} - -} /* namespace boost */ - -#endif /*BOOST_COMPOSE_HPP*/ diff --git a/sdk/include/boost/compressed_pair.hpp b/sdk/include/boost/compressed_pair.hpp deleted file mode 100644 index c55ca2d4417..00000000000 --- a/sdk/include/boost/compressed_pair.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright Boost.org 2000. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version including documentation. -// See boost/detail/compressed_pair.hpp and boost/detail/ob_compressed_pair.hpp -// for full copyright notices. - -#ifndef BOOST_COMPRESSED_PAIR_HPP -#define BOOST_COMPRESSED_PAIR_HPP - -#ifndef BOOST_CONFIG_HPP -#include -#endif - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -#include -#else -#include -#endif - -#endif // BOOST_COMPRESSED_PAIR_HPP diff --git a/sdk/include/boost/concept_archetype.hpp b/sdk/include/boost/concept_archetype.hpp deleted file mode 100644 index 3bf72e4470f..00000000000 --- a/sdk/include/boost/concept_archetype.hpp +++ /dev/null @@ -1,691 +0,0 @@ -// -// (C) Copyright Jeremy Siek 2000. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -// -// Revision History: -// -// 17 July 2001: Added const to some member functions. (Jeremy Siek) -// 05 May 2001: Removed static dummy_cons object. (Jeremy Siek) - -// See http://www.boost.org/libs/concept_check for documentation. - -#ifndef BOOST_CONCEPT_ARCHETYPES_HPP -#define BOOST_CONCEPT_ARCHETYPES_HPP - -#include -#include -#include - -namespace boost { - - //=========================================================================== - // Basic Archetype Classes - - namespace detail { - class dummy_constructor { }; - } - - // A type that models no concept. The template parameter - // is only there so that null_archetype types can be created - // that have different type. - template - class null_archetype { - private: - null_archetype() { } - null_archetype(const null_archetype&) { } - null_archetype& operator=(const null_archetype&) { return *this; } - public: - null_archetype(detail::dummy_constructor) { } -#ifndef __MWERKS__ - template - friend void dummy_friend(); // just to avoid warnings -#endif - }; - - // This is a helper class that provides a way to get a reference to - // an object. The get() function will never be called at run-time - // (nothing in this file will) so this seemingly very bad function - // is really quite innocent. The name of this class needs to be - // changed. - template - class static_object { - public: - static T& get() { - static char d[sizeof(T)]; - return *reinterpret_cast(d); - } - }; - - template > - class default_constructible_archetype : public Base { - public: - default_constructible_archetype() - : Base(static_object::get()) { } - default_constructible_archetype(detail::dummy_constructor x) : Base(x) { } - }; - - template > - class assignable_archetype : public Base { - assignable_archetype() { } - assignable_archetype(const assignable_archetype&) { } - public: - assignable_archetype& operator=(const assignable_archetype&) { - return *this; - } - assignable_archetype(detail::dummy_constructor x) : Base(x) { } - }; - - template > - class copy_constructible_archetype : public Base { - public: - copy_constructible_archetype() - : Base(static_object::get()) { } - copy_constructible_archetype(const copy_constructible_archetype&) - : Base(static_object::get()) { } - copy_constructible_archetype(detail::dummy_constructor x) : Base(x) { } - }; - - template > - class sgi_assignable_archetype : public Base { - public: - sgi_assignable_archetype(const sgi_assignable_archetype&) - : Base(static_object::get()) { } - sgi_assignable_archetype& operator=(const sgi_assignable_archetype&) { - return *this; - } - sgi_assignable_archetype(const detail::dummy_constructor& x) : Base(x) { } - }; - - struct default_archetype_base { - default_archetype_base(detail::dummy_constructor) { } - }; - - // Careful, don't use same type for T and Base. That results in the - // conversion operator being invalid. Since T is often - // null_archetype, can't use null_archetype for Base. - template - class convertible_to_archetype : public Base { - private: - convertible_to_archetype() { } - convertible_to_archetype(const convertible_to_archetype& ) { } - convertible_to_archetype& operator=(const convertible_to_archetype&) - { return *this; } - public: - convertible_to_archetype(detail::dummy_constructor x) : Base(x) { } - operator const T&() const { return static_object::get(); } - }; - - template - class convertible_from_archetype : public Base { - private: - convertible_from_archetype() { } - convertible_from_archetype(const convertible_from_archetype& ) { } - convertible_from_archetype& operator=(const convertible_from_archetype&) - { return *this; } - public: - convertible_from_archetype(detail::dummy_constructor x) : Base(x) { } - convertible_from_archetype(const T&) { } - convertible_from_archetype& operator=(const T&) - { return *this; } - }; - - class boolean_archetype { - public: - boolean_archetype(const boolean_archetype&) { } - operator bool() const { return true; } - boolean_archetype(detail::dummy_constructor) { } - private: - boolean_archetype() { } - boolean_archetype& operator=(const boolean_archetype&) { return *this; } - }; - - template > - class equality_comparable_archetype : public Base { - public: - equality_comparable_archetype(detail::dummy_constructor x) : Base(x) { } - }; - template - boolean_archetype - operator==(const equality_comparable_archetype&, - const equality_comparable_archetype&) - { - return boolean_archetype(static_object::get()); - } - template - boolean_archetype - operator!=(const equality_comparable_archetype&, - const equality_comparable_archetype&) - { - return boolean_archetype(static_object::get()); - } - - - template > - class equality_comparable2_first_archetype : public Base { - public: - equality_comparable2_first_archetype(detail::dummy_constructor x) - : Base(x) { } - }; - template > - class equality_comparable2_second_archetype : public Base { - public: - equality_comparable2_second_archetype(detail::dummy_constructor x) - : Base(x) { } - }; - template - boolean_archetype - operator==(const equality_comparable2_first_archetype&, - const equality_comparable2_second_archetype&) - { - return boolean_archetype(static_object::get()); - } - template - boolean_archetype - operator!=(const equality_comparable2_first_archetype&, - const equality_comparable2_second_archetype&) - { - return boolean_archetype(static_object::get()); - } - - - template > - class less_than_comparable_archetype : public Base { - public: - less_than_comparable_archetype(detail::dummy_constructor x) : Base(x) { } - }; - template - boolean_archetype - operator<(const less_than_comparable_archetype&, - const less_than_comparable_archetype&) - { - return boolean_archetype(static_object::get()); - } - - - - template > - class comparable_archetype : public Base { - public: - comparable_archetype(detail::dummy_constructor x) : Base(x) { } - }; - template - boolean_archetype - operator<(const comparable_archetype&, - const comparable_archetype&) - { - return boolean_archetype(static_object::get()); - } - template - boolean_archetype - operator<=(const comparable_archetype&, - const comparable_archetype&) - { - return boolean_archetype(static_object::get()); - } - template - boolean_archetype - operator>(const comparable_archetype&, - const comparable_archetype&) - { - return boolean_archetype(static_object::get()); - } - template - boolean_archetype - operator>=(const comparable_archetype&, - const comparable_archetype&) - { - return boolean_archetype(static_object::get()); - } - - - // The purpose of the optags is so that one can specify - // exactly which types the operator< is defined between. - // This is useful for allowing the operations: - // - // A a; B b; - // a < b - // b < a - // - // without also allowing the combinations: - // - // a < a - // b < b - // - struct optag1 { }; - struct optag2 { }; - struct optag3 { }; - -#define BOOST_DEFINE_BINARY_PREDICATE_ARCHETYPE(OP, NAME) \ - template , class Tag = optag1 > \ - class NAME##_first_archetype : public Base { \ - public: \ - NAME##_first_archetype(detail::dummy_constructor x) : Base(x) { } \ - }; \ - \ - template , class Tag = optag1 > \ - class NAME##_second_archetype : public Base { \ - public: \ - NAME##_second_archetype(detail::dummy_constructor x) : Base(x) { } \ - }; \ - \ - template \ - boolean_archetype \ - operator OP (const NAME##_first_archetype&, \ - const NAME##_second_archetype&) \ - { \ - return boolean_archetype(static_object::get()); \ - } - - BOOST_DEFINE_BINARY_PREDICATE_ARCHETYPE(==, equal_op) - BOOST_DEFINE_BINARY_PREDICATE_ARCHETYPE(!=, not_equal_op) - BOOST_DEFINE_BINARY_PREDICATE_ARCHETYPE(<, less_than_op) - BOOST_DEFINE_BINARY_PREDICATE_ARCHETYPE(<=, less_equal_op) - BOOST_DEFINE_BINARY_PREDICATE_ARCHETYPE(>, greater_than_op) - BOOST_DEFINE_BINARY_PREDICATE_ARCHETYPE(>=, greater_equal_op) - -#define BOOST_DEFINE_OPERATOR_ARCHETYPE(OP, NAME) \ - template > \ - class NAME##_archetype : public Base { \ - public: \ - NAME##_archetype(detail::dummy_constructor x) : Base(x) { } \ - NAME##_archetype(const NAME##_archetype&) \ - : Base(static_object::get()) { } \ - NAME##_archetype& operator=(const NAME##_archetype&) { return *this; } \ - }; \ - template \ - NAME##_archetype \ - operator OP (const NAME##_archetype&,\ - const NAME##_archetype&) \ - { \ - return \ - NAME##_archetype(static_object::get()); \ - } - - BOOST_DEFINE_OPERATOR_ARCHETYPE(+, addable) - BOOST_DEFINE_OPERATOR_ARCHETYPE(-, subtractable) - BOOST_DEFINE_OPERATOR_ARCHETYPE(*, multipliable) - BOOST_DEFINE_OPERATOR_ARCHETYPE(/, dividable) - BOOST_DEFINE_OPERATOR_ARCHETYPE(%, modable) - - // As is, these are useless because of the return type. - // Need to invent a better way... -#define BOOST_DEFINE_BINARY_OPERATOR_ARCHETYPE(OP, NAME) \ - template > \ - class NAME##_first_archetype : public Base { \ - public: \ - NAME##_first_archetype(detail::dummy_constructor x) : Base(x) { } \ - }; \ - \ - template > \ - class NAME##_second_archetype : public Base { \ - public: \ - NAME##_second_archetype(detail::dummy_constructor x) : Base(x) { } \ - }; \ - \ - template \ - Return \ - operator OP (const NAME##_first_archetype&, \ - const NAME##_second_archetype&) \ - { \ - return Return(static_object::get()); \ - } - - BOOST_DEFINE_BINARY_OPERATOR_ARCHETYPE(+, plus_op) - BOOST_DEFINE_BINARY_OPERATOR_ARCHETYPE(*, time_op) - BOOST_DEFINE_BINARY_OPERATOR_ARCHETYPE(/, divide_op) - BOOST_DEFINE_BINARY_OPERATOR_ARCHETYPE(-, subtract_op) - BOOST_DEFINE_BINARY_OPERATOR_ARCHETYPE(%, mod_op) - - //=========================================================================== - // Function Object Archetype Classes - - template - class generator_archetype { - public: - const Return& operator()() { - return static_object::get(); - } - }; - - class void_generator_archetype { - public: - void operator()() { } - }; - - template - class unary_function_archetype { - private: - unary_function_archetype() { } - public: - unary_function_archetype(detail::dummy_constructor) { } - const Return& operator()(const Arg&) const { - return static_object::get(); - } - }; - - template - class binary_function_archetype { - private: - binary_function_archetype() { } - public: - binary_function_archetype(detail::dummy_constructor) { } - const Return& operator()(const Arg1&, const Arg2&) const { - return static_object::get(); - } - }; - - template - class unary_predicate_archetype { - typedef boolean_archetype Return; - unary_predicate_archetype() { } - public: - unary_predicate_archetype(detail::dummy_constructor) { } - const Return& operator()(const Arg&) const { - return static_object::get(); - } - }; - - template > - class binary_predicate_archetype { - typedef boolean_archetype Return; - binary_predicate_archetype() { } - public: - binary_predicate_archetype(detail::dummy_constructor) { } - const Return& operator()(const Arg1&, const Arg2&) const { - return static_object::get(); - } - }; - - //=========================================================================== - // Iterator Archetype Classes - - template - struct input_proxy { - operator const T&() { return static_object::get(); } - }; - template - class trivial_iterator_archetype - { - typedef trivial_iterator_archetype self; - public: -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - typedef T value_type; - typedef void reference; - typedef void pointer; - typedef void difference_type; - typedef void iterator_category; -#endif - trivial_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - input_proxy operator*() const { return input_proxy(); } - }; -} // namespace boost - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) -namespace std { - template - struct iterator_traits< boost::trivial_iterator_archetype > - { - typedef T value_type; - }; -} -#endif - -namespace boost { - template - struct input_output_proxy { - input_output_proxy& operator=(const T&) { return *this; } - operator const T&() { return static_object::get(); } - }; - template - class mutable_trivial_iterator_archetype - { - typedef mutable_trivial_iterator_archetype self; - public: -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - typedef T value_type; - typedef void reference; - typedef void pointer; - typedef void difference_type; - typedef void iterator_category; -#endif - mutable_trivial_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - input_output_proxy operator*() const { return input_output_proxy(); } - }; -} // namespace boost - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) -namespace std { - template - struct iterator_traits< boost::mutable_trivial_iterator_archetype > - { - typedef T value_type; - }; -} -#endif - -namespace boost { - - template - class input_iterator_archetype - { - public: - typedef input_iterator_archetype self; - public: - typedef std::input_iterator_tag iterator_category; - typedef T value_type; - typedef const T& reference; - typedef const T* pointer; - typedef std::ptrdiff_t difference_type; - input_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - reference operator*() const { return static_object::get(); } - self& operator++() { return *this; } - self operator++(int) { return *this; } - }; - - template - struct output_proxy { - output_proxy& operator=(const T&) { return *this; } - }; - - template - class output_iterator_archetype - { - public: - typedef output_iterator_archetype self; - public: - typedef std::output_iterator_tag iterator_category; - typedef output_proxy value_type; - typedef output_proxy reference; - typedef void pointer; - typedef void difference_type; - output_iterator_archetype(detail::dummy_constructor) { } - output_iterator_archetype(const self&) { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - reference operator*() const { return output_proxy(); } - self& operator++() { return *this; } - self operator++(int) { return *this; } - private: - output_iterator_archetype() { } - }; - - template - class forward_iterator_archetype - { - public: - typedef forward_iterator_archetype self; - public: - typedef std::forward_iterator_tag iterator_category; - typedef T value_type; - typedef const T& reference; - typedef T* pointer; - typedef std::ptrdiff_t difference_type; - forward_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - reference operator*() const { return static_object::get(); } - self& operator++() { return *this; } - self operator++(int) { return *this; } - }; - - template - class mutable_forward_iterator_archetype - { - public: - typedef mutable_forward_iterator_archetype self; - public: - typedef std::forward_iterator_tag iterator_category; - typedef T value_type; - typedef T& reference; - typedef T* pointer; - typedef std::ptrdiff_t difference_type; - mutable_forward_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - reference operator*() const { return static_object::get(); } - self& operator++() { return *this; } - self operator++(int) { return *this; } - }; - - template - class bidirectional_iterator_archetype - { - public: - typedef bidirectional_iterator_archetype self; - public: - typedef std::bidirectional_iterator_tag iterator_category; - typedef T value_type; - typedef const T& reference; - typedef T* pointer; - typedef std::ptrdiff_t difference_type; - bidirectional_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - reference operator*() const { return static_object::get(); } - self& operator++() { return *this; } - self operator++(int) { return *this; } - self& operator--() { return *this; } - self operator--(int) { return *this; } - }; - - template - class mutable_bidirectional_iterator_archetype - { - public: - typedef mutable_bidirectional_iterator_archetype self; - public: - typedef std::bidirectional_iterator_tag iterator_category; - typedef T value_type; - typedef T& reference; - typedef T* pointer; - typedef std::ptrdiff_t difference_type; - mutable_bidirectional_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - reference operator*() const { return static_object::get(); } - self& operator++() { return *this; } - self operator++(int) { return *this; } - self& operator--() { return *this; } - self operator--(int) { return *this; } - }; - - template - class random_access_iterator_archetype - { - public: - typedef random_access_iterator_archetype self; - public: - typedef std::random_access_iterator_tag iterator_category; - typedef T value_type; - typedef const T& reference; - typedef T* pointer; - typedef std::ptrdiff_t difference_type; - random_access_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - reference operator*() const { return static_object::get(); } - self& operator++() { return *this; } - self operator++(int) { return *this; } - self& operator--() { return *this; } - self operator--(int) { return *this; } - reference operator[](difference_type) const - { return static_object::get(); } - self& operator+=(difference_type) { return *this; } - self& operator-=(difference_type) { return *this; } - difference_type operator-(const self&) const - { return difference_type(); } - self operator+(difference_type) const { return *this; } - self operator-(difference_type) const { return *this; } - bool operator<(const self&) const { return true; } - bool operator<=(const self&) const { return true; } - bool operator>(const self&) const { return true; } - bool operator>=(const self&) const { return true; } - }; - template - random_access_iterator_archetype - operator+(typename random_access_iterator_archetype::difference_type, - const random_access_iterator_archetype& x) - { return x; } - - - template - class mutable_random_access_iterator_archetype - { - public: - typedef mutable_random_access_iterator_archetype self; - public: - typedef std::random_access_iterator_tag iterator_category; - typedef T value_type; - typedef T& reference; - typedef T* pointer; - typedef std::ptrdiff_t difference_type; - mutable_random_access_iterator_archetype() { } - self& operator=(const self&) { return *this; } - bool operator==(const self&) const { return true; } - bool operator!=(const self&) const { return true; } - reference operator*() const { return static_object::get(); } - self& operator++() { return *this; } - self operator++(int) { return *this; } - self& operator--() { return *this; } - self operator--(int) { return *this; } - reference operator[](difference_type) const - { return static_object::get(); } - self& operator+=(difference_type) { return *this; } - self& operator-=(difference_type) { return *this; } - difference_type operator-(const self&) const - { return difference_type(); } - self operator+(difference_type) const { return *this; } - self operator-(difference_type) const { return *this; } - bool operator<(const self&) const { return true; } - bool operator<=(const self&) const { return true; } - bool operator>(const self&) const { return true; } - bool operator>=(const self&) const { return true; } - }; - template - mutable_random_access_iterator_archetype - operator+ - (typename mutable_random_access_iterator_archetype::difference_type, - const mutable_random_access_iterator_archetype& x) - { return x; } - -} // namespace boost - -#endif // BOOST_CONCEPT_ARCHETYPES_H diff --git a/sdk/include/boost/concept_check.hpp b/sdk/include/boost/concept_check.hpp deleted file mode 100644 index 146ffd9793a..00000000000 --- a/sdk/include/boost/concept_check.hpp +++ /dev/null @@ -1,1076 +0,0 @@ -// -// (C) Copyright Jeremy Siek 2000. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -// -// Revision History: -// 05 May 2001: Workarounds for HP aCC from Thomas Matelich. (Jeremy Siek) -// 02 April 2001: Removed limits header altogether. (Jeremy Siek) -// 01 April 2001: Modified to use new header. (JMaddock) -// - -// See http://www.boost.org/libs/concept_check for documentation. - -#ifndef BOOST_CONCEPT_CHECKS_HPP -#define BOOST_CONCEPT_CHECKS_HPP - -#include -#include -#include -#include -#include -#include -#include - - -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__BORLANDC__) -#define BOOST_FPTR -#else -#define BOOST_FPTR & -#endif - -namespace boost { - -/* - "inline" is used for ignore_unused_variable_warning() - and function_requires() to make sure there is no - overhead with g++. - */ - -template inline void ignore_unused_variable_warning(const T&) { } - -// the unused, defaulted parameter is a workaround for MSVC and Compaq C++ -template -inline void function_requires(type* = 0) -{ -#if !defined(NDEBUG) - void (Concept::*x)() = BOOST_FPTR Concept::constraints; - ignore_unused_variable_warning(x); -#endif -} - -#define BOOST_CLASS_REQUIRE(type_var, ns, concept) \ - typedef void (ns::concept ::* func##type_var##concept)(); \ - template \ - struct concept_checking_##type_var##concept { }; \ - typedef concept_checking_##type_var##concept< \ - BOOST_FPTR ns::concept::constraints> \ - concept_checking_typedef_##type_var##concept - -#define BOOST_CLASS_REQUIRE2(type_var1, type_var2, ns, concept) \ - typedef void (ns::concept ::* \ - func##type_var1##type_var2##concept)(); \ - template \ - struct concept_checking_##type_var1##type_var2##concept { }; \ - typedef concept_checking_##type_var1##type_var2##concept< \ - BOOST_FPTR ns::concept::constraints> \ - concept_checking_typedef_##type_var1##type_var2##concept - -#define BOOST_CLASS_REQUIRE3(tv1, tv2, tv3, ns, concept) \ - typedef void (ns::concept ::* \ - func##tv1##tv2##tv3##concept)(); \ - template \ - struct concept_checking_##tv1##tv2##tv3##concept { }; \ - typedef concept_checking_##tv1##tv2##tv3##concept< \ - BOOST_FPTR ns::concept::constraints> \ - concept_checking_typedef_##tv1##tv2##tv3##concept - -#define BOOST_CLASS_REQUIRE4(tv1, tv2, tv3, tv4, ns, concept) \ - typedef void (ns::concept ::* \ - func##tv1##tv2##tv3##tv4##concept)(); \ - template \ - struct concept_checking_##tv1##tv2##tv3##tv4##concept { }; \ - typedef concept_checking_##tv1##tv2##tv3##tv4##concept< \ - BOOST_FPTR ns::concept::constraints> \ - concept_checking_typedef_##tv1##tv2##tv3##tv4##concept - -// NOTE: The BOOST_CLASS_REQUIRES (with an 'S' at the end) is deprecated. - -// The BOOST_CLASS_REQUIRES macros use function pointers as -// template parameters, which VC++ does not support. - -#if defined(BOOST_NO_FUNCTION_PTR_TEMPLATE_PARAMETERS) - -#define BOOST_CLASS_REQUIRES(type_var, concept) -#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, concept) -#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, concept) -#define BOOST_CLASS_REQUIRES4(type_var1, type_var2, type_var3, type_var4, concept) - -#else - -#define BOOST_CLASS_REQUIRES(type_var, concept) \ - typedef void (concept ::* func##type_var##concept)(); \ - template \ - struct concept_checking_##type_var##concept { }; \ - typedef concept_checking_##type_var##concept< \ - BOOST_FPTR concept ::constraints> \ - concept_checking_typedef_##type_var##concept - -#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, concept) \ - typedef void (concept ::* func##type_var1##type_var2##concept)(); \ - template \ - struct concept_checking_##type_var1##type_var2##concept { }; \ - typedef concept_checking_##type_var1##type_var2##concept< \ - BOOST_FPTR concept ::constraints> \ - concept_checking_typedef_##type_var1##type_var2##concept - -#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, concept) \ - typedef void (concept ::* func##type_var1##type_var2##type_var3##concept)(); \ - template \ - struct concept_checking_##type_var1##type_var2##type_var3##concept { }; \ - typedef concept_checking_##type_var1##type_var2##type_var3##concept< \ - BOOST_FPTR concept ::constraints> \ - concept_checking_typedef_##type_var1##type_var2##type_var3##concept - -#define BOOST_CLASS_REQUIRES4(type_var1, type_var2, type_var3, type_var4, concept) \ - typedef void (concept ::* func##type_var1##type_var2##type_var3##type_var4##concept)(); \ - template \ - struct concept_checking_##type_var1##type_var2##type_var3##type_var4##concept { }; \ - typedef concept_checking_##type_var1##type_var2##type_var3##type_var4##concept< \ - BOOST_FPTR concept ::constraints> \ - concept_checking_typedef_##type_var1##type_var2##type_var3##type_var4##concept - - -#endif - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -template -struct require_same { }; - -template -struct require_same { typedef T type; }; -#else -// This version does not perform checking, but will not do any harm. -template -struct require_same { typedef T type; }; -#endif - - template - struct IntegerConcept { - void constraints() { -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - x.error_type_must_be_an_integer_type(); -#endif - } - T x; - }; -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template <> struct IntegerConcept { void constraints() {} }; - template <> struct IntegerConcept { void constraints() {} }; - template <> struct IntegerConcept { void constraints() {} }; - template <> struct IntegerConcept { void constraints() {} }; - template <> struct IntegerConcept { void constraints() {} }; - template <> struct IntegerConcept { void constraints() {} }; - // etc. -#endif - - template - struct SignedIntegerConcept { - void constraints() { -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - x.error_type_must_be_a_signed_integer_type(); -#endif - } - T x; - }; -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template <> struct SignedIntegerConcept { void constraints() {} }; - template <> struct SignedIntegerConcept { void constraints() {} }; - template <> struct SignedIntegerConcept { void constraints() {} }; -# if defined(BOOST_HAS_LONG_LONG) - template <> struct SignedIntegerConcept { void constraints() {} }; -# endif - // etc. -#endif - - template - struct UnsignedIntegerConcept { - void constraints() { -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - x.error_type_must_be_an_unsigned_integer_type(); -#endif - } - T x; - }; -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template <> struct UnsignedIntegerConcept - { void constraints() {} }; - template <> struct UnsignedIntegerConcept - { void constraints() {} }; - template <> struct UnsignedIntegerConcept - { void constraints() {} }; - // etc. -#endif - - //=========================================================================== - // Basic Concepts - - template - struct DefaultConstructibleConcept - { - void constraints() { - TT a; // require default constructor - ignore_unused_variable_warning(a); - } - }; - - template - struct AssignableConcept - { - void constraints() { -#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = a; // require assignment operator -#endif - const_constraints(a); - } - void const_constraints(const TT& b) { -#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = b; // const required for argument to assignment -#endif - } - TT a; - }; - - template - struct CopyConstructibleConcept - { - void constraints() { - TT a(b); // require copy constructor - TT* ptr = &a; // require address of operator - const_constraints(a); - ignore_unused_variable_warning(ptr); - } - void const_constraints(const TT& a) { - TT c(a); // require const copy constructor - const TT* ptr = &a; // require const address of operator - ignore_unused_variable_warning(c); - ignore_unused_variable_warning(ptr); - } - TT b; - }; - - // The SGI STL version of Assignable requires copy constructor and operator= - template - struct SGIAssignableConcept - { - void constraints() { - TT b(a); -#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = a; // require assignment operator -#endif - const_constraints(a); - ignore_unused_variable_warning(b); - } - void const_constraints(const TT& b) { - TT c(b); -#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = b; // const required for argument to assignment -#endif - ignore_unused_variable_warning(c); - } - TT a; - }; - - template - struct ConvertibleConcept - { - void constraints() { - Y y = x; - ignore_unused_variable_warning(y); - } - X x; - }; - - // The C++ standard requirements for many concepts talk about return - // types that must be "convertible to bool". The problem with this - // requirement is that it leaves the door open for evil proxies that - // define things like operator|| with strange return types. Two - // possible solutions are: - // 1) require the return type to be exactly bool - // 2) stay with convertible to bool, and also - // specify stuff about all the logical operators. - // For now we just test for convertible to bool. - template - void require_boolean_expr(const TT& t) { - bool x = t; - ignore_unused_variable_warning(x); - } - - template - struct EqualityComparableConcept - { - void constraints() { - require_boolean_expr(a == b); - require_boolean_expr(a != b); - } - TT a, b; - }; - - template - struct LessThanComparableConcept - { - void constraints() { - require_boolean_expr(a < b); - } - TT a, b; - }; - - // This is equivalent to SGI STL's LessThanComparable. - template - struct ComparableConcept - { - void constraints() { - require_boolean_expr(a < b); - require_boolean_expr(a > b); - require_boolean_expr(a <= b); - require_boolean_expr(a >= b); - } - TT a, b; - }; - -#define BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(OP,NAME) \ - template \ - struct NAME { \ - void constraints() { (void)constraints_(); } \ - bool constraints_() { \ - return a OP b; \ - } \ - First a; \ - Second b; \ - } - -#define BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(OP,NAME) \ - template \ - struct NAME { \ - void constraints() { (void)constraints_(); } \ - Ret constraints_() { \ - return a OP b; \ - } \ - First a; \ - Second b; \ - } - - BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(==, EqualOpConcept); - BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(!=, NotEqualOpConcept); - BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<, LessThanOpConcept); - BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<=, LessEqualOpConcept); - BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>, GreaterThanOpConcept); - BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>=, GreaterEqualOpConcept); - - BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(+, PlusOpConcept); - BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(*, TimesOpConcept); - BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(/, DivideOpConcept); - BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(-, SubtractOpConcept); - BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(%, ModOpConcept); - - //=========================================================================== - // Function Object Concepts - - template - struct GeneratorConcept - { - void constraints() { - const Return& r = f(); // require operator() member function - ignore_unused_variable_warning(r); - } - Func f; - }; - - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct GeneratorConcept - { - void constraints() { - f(); // require operator() member function - } - Func f; - }; -#endif - - template - struct UnaryFunctionConcept - { - // required in case any of our template args are const-qualified: - UnaryFunctionConcept(); - - void constraints() { - r = f(arg); // require operator() - } - Func f; - Arg arg; - Return r; - }; - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct UnaryFunctionConcept { - void constraints() { - f(arg); // require operator() - } - Func f; - Arg arg; - }; -#endif - - template - struct BinaryFunctionConcept - { - void constraints() { - r = f(first, second); // require operator() - } - Func f; - First first; - Second second; - Return r; - }; - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct BinaryFunctionConcept - { - void constraints() { - f(first, second); // require operator() - } - Func f; - First first; - Second second; - }; -#endif - - template - struct UnaryPredicateConcept - { - void constraints() { - require_boolean_expr(f(arg)); // require operator() returning bool - } - Func f; - Arg arg; - }; - - template - struct BinaryPredicateConcept - { - void constraints() { - require_boolean_expr(f(a, b)); // require operator() returning bool - } - Func f; - First a; - Second b; - }; - - // use this when functor is used inside a container class like std::set - template - struct Const_BinaryPredicateConcept { - void constraints() { - const_constraints(f); - } - void const_constraints(const Func& fun) { - function_requires >(); - // operator() must be a const member function - require_boolean_expr(fun(a, b)); - } - Func f; - First a; - Second b; - }; - - template - struct AdaptableGeneratorConcept - { - void constraints() { - typedef typename Func::result_type result_type; - BOOST_STATIC_ASSERT((is_convertible::value)); - function_requires< GeneratorConcept >(); - } - }; - - template - struct AdaptableUnaryFunctionConcept - { - void constraints() { - typedef typename Func::argument_type argument_type; - typedef typename Func::result_type result_type; - BOOST_STATIC_ASSERT((is_convertible::value)); - BOOST_STATIC_ASSERT((is_convertible::value)); - function_requires< UnaryFunctionConcept >(); - } - }; - - template - struct AdaptableBinaryFunctionConcept - { - void constraints() { - typedef typename Func::first_argument_type first_argument_type; - typedef typename Func::second_argument_type second_argument_type; - typedef typename Func::result_type result_type; - BOOST_STATIC_ASSERT((is_convertible::value)); - BOOST_STATIC_ASSERT((is_convertible::value)); - BOOST_STATIC_ASSERT((is_convertible::value)); - function_requires< BinaryFunctionConcept >(); - } - }; - - template - struct AdaptablePredicateConcept - { - void constraints() { - function_requires< UnaryPredicateConcept >(); - function_requires< AdaptableUnaryFunctionConcept >(); - } - }; - - template - struct AdaptableBinaryPredicateConcept - { - void constraints() { - function_requires< BinaryPredicateConcept >(); - function_requires< AdaptableBinaryFunctionConcept >(); - } - }; - - //=========================================================================== - // Iterator Concepts - - template - struct TrivialIteratorConcept - { - void constraints() { - function_requires< AssignableConcept >(); - function_requires< DefaultConstructibleConcept >(); - function_requires< EqualityComparableConcept >(); - (void)*i; // require dereference operator - } - TT i; - }; - - template - struct Mutable_TrivialIteratorConcept - { - void constraints() { - function_requires< TrivialIteratorConcept >(); - *i = *j; // require dereference and assignment - } - TT i, j; - }; - - template - struct InputIteratorConcept - { - void constraints() { - function_requires< TrivialIteratorConcept >(); - // require iterator_traits typedef's -#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typedef typename std::iterator_traits::difference_type D; - // Hmm, the following is a bit fragile - //function_requires< SignedIntegerConcept >(); - typedef typename std::iterator_traits::reference R; - typedef typename std::iterator_traits::pointer P; - typedef typename std::iterator_traits::iterator_category C; - function_requires< ConvertibleConcept >(); -#endif - ++i; // require preincrement operator - i++; // require postincrement operator - } - TT i; - }; - - template - struct OutputIteratorConcept - { - void constraints() { - function_requires< AssignableConcept >(); - ++i; // require preincrement operator - i++; // require postincrement operator - *i++ = t; // require postincrement and assignment - } - TT i, j; - ValueT t; - }; - - template - struct ForwardIteratorConcept - { - void constraints() { - function_requires< InputIteratorConcept >(); -#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typedef typename std::iterator_traits::iterator_category C; - function_requires< ConvertibleConcept >(); - typedef typename std::iterator_traits::reference reference; - reference r = *i; - ignore_unused_variable_warning(r); -#endif - } - TT i; - }; - - template - struct Mutable_ForwardIteratorConcept - { - void constraints() { - function_requires< ForwardIteratorConcept >(); - *i++ = *i; // require postincrement and assignment - } - TT i; - }; - - template - struct BidirectionalIteratorConcept - { - void constraints() { - function_requires< ForwardIteratorConcept >(); -#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typedef typename std::iterator_traits::iterator_category C; - function_requires< ConvertibleConcept >(); -#endif - --i; // require predecrement operator - i--; // require postdecrement operator - } - TT i; - }; - - template - struct Mutable_BidirectionalIteratorConcept - { - void constraints() { - function_requires< BidirectionalIteratorConcept >(); - function_requires< Mutable_ForwardIteratorConcept >(); - *i-- = *i; // require postdecrement and assignment - } - TT i; - }; - - - template - struct RandomAccessIteratorConcept - { - void constraints() { - function_requires< BidirectionalIteratorConcept >(); - function_requires< ComparableConcept >(); -#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typedef typename std::iterator_traits::iterator_category C; - function_requires< ConvertibleConcept< C, - std::random_access_iterator_tag> >(); - typedef typename std::iterator_traits::reference R; -#endif - - i += n; // require assignment addition operator - i = i + n; i = n + i; // require addition with difference type - i -= n; // require assignment subtraction operator - i = i - n; // require subtraction with difference type - n = i - j; // require difference operator - (void)i[n]; // require element access operator - } - TT a, b; - TT i, j; -#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typename std::iterator_traits::difference_type n; -#else - std::ptrdiff_t n; -#endif - }; - - template - struct Mutable_RandomAccessIteratorConcept - { - void constraints() { - function_requires< RandomAccessIteratorConcept >(); - function_requires< Mutable_BidirectionalIteratorConcept >(); - i[n] = *i; // require element access and assignment - } - TT i; -#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typename std::iterator_traits::difference_type n; -#else - std::ptrdiff_t n; -#endif - }; - - //=========================================================================== - // Container Concepts - - template - struct ContainerConcept - { - typedef typename Container::value_type value_type; - typedef typename Container::difference_type difference_type; - typedef typename Container::size_type size_type; - typedef typename Container::const_reference const_reference; - typedef typename Container::const_pointer const_pointer; - typedef typename Container::const_iterator const_iterator; - - void constraints() { - function_requires< InputIteratorConcept >(); - function_requires< AssignableConcept >(); - const_constraints(c); - } - void const_constraints(const Container& c) { - i = c.begin(); - i = c.end(); - n = c.size(); - n = c.max_size(); - b = c.empty(); - } - Container c; - bool b; - const_iterator i; - size_type n; - }; - - template - struct Mutable_ContainerConcept - { - typedef typename Container::value_type value_type; - typedef typename Container::reference reference; - typedef typename Container::iterator iterator; - typedef typename Container::pointer pointer; - - void constraints() { - function_requires< ContainerConcept >(); - function_requires< AssignableConcept >(); - function_requires< InputIteratorConcept >(); - - i = c.begin(); - i = c.end(); - c.swap(c2); - } - iterator i; - Container c, c2; - }; - - template - struct ForwardContainerConcept - { - void constraints() { - function_requires< ContainerConcept >(); - typedef typename ForwardContainer::const_iterator const_iterator; - function_requires< ForwardIteratorConcept >(); - } - }; - - template - struct Mutable_ForwardContainerConcept - { - void constraints() { - function_requires< ForwardContainerConcept >(); - function_requires< Mutable_ContainerConcept >(); - typedef typename ForwardContainer::iterator iterator; - function_requires< Mutable_ForwardIteratorConcept >(); - } - }; - - template - struct ReversibleContainerConcept - { - typedef typename ReversibleContainer::const_iterator const_iterator; - typedef typename ReversibleContainer::const_reverse_iterator - const_reverse_iterator; - - void constraints() { - function_requires< ForwardContainerConcept >(); - function_requires< BidirectionalIteratorConcept >(); - function_requires< - BidirectionalIteratorConcept >(); - const_constraints(c); - } - void const_constraints(const ReversibleContainer& c) { - const_reverse_iterator i = c.rbegin(); - i = c.rend(); - } - ReversibleContainer c; - }; - - template - struct Mutable_ReversibleContainerConcept - { - typedef typename ReversibleContainer::iterator iterator; - typedef typename ReversibleContainer::reverse_iterator reverse_iterator; - - void constraints() { - function_requires< ReversibleContainerConcept >(); - function_requires< - Mutable_ForwardContainerConcept >(); - function_requires< Mutable_BidirectionalIteratorConcept >(); - function_requires< - Mutable_BidirectionalIteratorConcept >(); - - reverse_iterator i = c.rbegin(); - i = c.rend(); - } - ReversibleContainer c; - }; - - template - struct RandomAccessContainerConcept - { - typedef typename RandomAccessContainer::size_type size_type; - typedef typename RandomAccessContainer::const_reference const_reference; - typedef typename RandomAccessContainer::const_iterator const_iterator; - typedef typename RandomAccessContainer::const_reverse_iterator - const_reverse_iterator; - - void constraints() { - function_requires< ReversibleContainerConcept >(); - function_requires< RandomAccessIteratorConcept >(); - function_requires< - RandomAccessIteratorConcept >(); - - const_constraints(c); - } - void const_constraints(const RandomAccessContainer& c) { - const_reference r = c[n]; - ignore_unused_variable_warning(r); - } - RandomAccessContainer c; - size_type n; - }; - - template - struct Mutable_RandomAccessContainerConcept - { - typedef typename RandomAccessContainer::size_type size_type; - typedef typename RandomAccessContainer::reference reference; - typedef typename RandomAccessContainer::iterator iterator; - typedef typename RandomAccessContainer::reverse_iterator reverse_iterator; - - void constraints() { - function_requires< - RandomAccessContainerConcept >(); - function_requires< - Mutable_ReversibleContainerConcept >(); - function_requires< Mutable_RandomAccessIteratorConcept >(); - function_requires< - Mutable_RandomAccessIteratorConcept >(); - - reference r = c[i]; - ignore_unused_variable_warning(r); - } - size_type i; - RandomAccessContainer c; - }; - - // A Sequence is inherently mutable - template - struct SequenceConcept - { - - typedef typename Sequence::reference reference; - typedef typename Sequence::const_reference const_reference; - - void constraints() { - // Matt Austern's book puts DefaultConstructible here, the C++ - // standard places it in Container - // function_requires< DefaultConstructible >(); - function_requires< Mutable_ForwardContainerConcept >(); - function_requires< DefaultConstructibleConcept >(); - - Sequence - c(n), - c2(n, t), - c3(first, last); - - c.insert(p, t); - c.insert(p, n, t); - c.insert(p, first, last); - - c.erase(p); - c.erase(p, q); - - reference r = c.front(); - - ignore_unused_variable_warning(c); - ignore_unused_variable_warning(c2); - ignore_unused_variable_warning(c3); - ignore_unused_variable_warning(r); - const_constraints(c); - } - void const_constraints(const Sequence& c) { - const_reference r = c.front(); - ignore_unused_variable_warning(r); - } - typename Sequence::value_type t; - typename Sequence::size_type n; - typename Sequence::value_type* first, *last; - typename Sequence::iterator p, q; - }; - - template - struct FrontInsertionSequenceConcept - { - void constraints() { - function_requires< SequenceConcept >(); - - c.push_front(t); - c.pop_front(); - } - FrontInsertionSequence c; - typename FrontInsertionSequence::value_type t; - }; - - template - struct BackInsertionSequenceConcept - { - typedef typename BackInsertionSequence::reference reference; - typedef typename BackInsertionSequence::const_reference const_reference; - - void constraints() { - function_requires< SequenceConcept >(); - - c.push_back(t); - c.pop_back(); - reference r = c.back(); - ignore_unused_variable_warning(r); - } - void const_constraints(const BackInsertionSequence& c) { - const_reference r = c.back(); - ignore_unused_variable_warning(r); - }; - BackInsertionSequence c; - typename BackInsertionSequence::value_type t; - }; - - template - struct AssociativeContainerConcept - { - void constraints() { - function_requires< ForwardContainerConcept >(); - function_requires< DefaultConstructibleConcept >(); - - i = c.find(k); - r = c.equal_range(k); - c.erase(k); - c.erase(i); - c.erase(r.first, r.second); - const_constraints(c); - } - void const_constraints(const AssociativeContainer& c) { - ci = c.find(k); - n = c.count(k); - cr = c.equal_range(k); - } - typedef typename AssociativeContainer::iterator iterator; - typedef typename AssociativeContainer::const_iterator const_iterator; - - AssociativeContainer c; - iterator i; - std::pair r; - const_iterator ci; - std::pair cr; - typename AssociativeContainer::key_type k; - typename AssociativeContainer::size_type n; - }; - - template - struct UniqueAssociativeContainerConcept - { - void constraints() { - function_requires< AssociativeContainerConcept >(); - - UniqueAssociativeContainer c(first, last); - - pos_flag = c.insert(t); - c.insert(first, last); - - ignore_unused_variable_warning(c); - } - std::pair pos_flag; - typename UniqueAssociativeContainer::value_type t; - typename UniqueAssociativeContainer::value_type* first, *last; - }; - - template - struct MultipleAssociativeContainerConcept - { - void constraints() { - function_requires< AssociativeContainerConcept >(); - - MultipleAssociativeContainer c(first, last); - - pos = c.insert(t); - c.insert(first, last); - - ignore_unused_variable_warning(c); - ignore_unused_variable_warning(pos); - } - typename MultipleAssociativeContainer::iterator pos; - typename MultipleAssociativeContainer::value_type t; - typename MultipleAssociativeContainer::value_type* first, *last; - }; - - template - struct SimpleAssociativeContainerConcept - { - void constraints() { - function_requires< AssociativeContainerConcept >(); - typedef typename SimpleAssociativeContainer::key_type key_type; - typedef typename SimpleAssociativeContainer::value_type value_type; - typedef typename require_same::type req; - } - }; - - template - struct PairAssociativeContainerConcept - { - void constraints() { - function_requires< AssociativeContainerConcept >(); - typedef typename SimpleAssociativeContainer::key_type key_type; - typedef typename SimpleAssociativeContainer::value_type value_type; - typedef typename SimpleAssociativeContainer::mapped_type mapped_type; - typedef std::pair required_value_type; - typedef typename require_same::type req; - } - }; - - template - struct SortedAssociativeContainerConcept - { - void constraints() { - function_requires< AssociativeContainerConcept >(); - function_requires< ReversibleContainerConcept >(); - - SortedAssociativeContainer - c(kc), - c2(first, last), - c3(first, last, kc); - - p = c.upper_bound(k); - p = c.lower_bound(k); - r = c.equal_range(k); - - c.insert(p, t); - - ignore_unused_variable_warning(c); - ignore_unused_variable_warning(c2); - ignore_unused_variable_warning(c3); - } - void const_constraints(const SortedAssociativeContainer& c) { - kc = c.key_comp(); - vc = c.value_comp(); - - cp = c.upper_bound(k); - cp = c.lower_bound(k); - cr = c.equal_range(k); - } - typename SortedAssociativeContainer::key_compare kc; - typename SortedAssociativeContainer::value_compare vc; - typename SortedAssociativeContainer::value_type t; - typename SortedAssociativeContainer::key_type k; - typedef typename SortedAssociativeContainer::iterator iterator; - typedef typename SortedAssociativeContainer::const_iterator const_iterator; - iterator p; - const_iterator cp; - std::pair r; - std::pair cr; - typename SortedAssociativeContainer::value_type* first, *last; - }; - - // HashedAssociativeContainer - -} // namespace boost - -#endif // BOOST_CONCEPT_CHECKS_HPP - diff --git a/sdk/include/boost/config.hpp b/sdk/include/boost/config.hpp deleted file mode 100644 index 8e37a39e968..00000000000 --- a/sdk/include/boost/config.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// Boost config.hpp configuration header file ------------------------------// - -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org/libs/config for most recent version. - -// Boost config.hpp policy and rationale documentation has been moved to -// http://www.boost.org/libs/config -// -// CAUTION: This file is intended to be completely stable - -// DO NOT MODIFY THIS FILE! -// - -#ifndef BOOST_CONFIG_HPP -#define BOOST_CONFIG_HPP - -// if we don't have a user config, then use the default location: -#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG) -# define BOOST_USER_CONFIG -#endif -// include it first: -#ifdef BOOST_USER_CONFIG -# include BOOST_USER_CONFIG -#endif - -// if we don't have a compiler config set, try and find one: -#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG) -# include -#endif -// if we have a compiler config, include it now: -#ifdef BOOST_COMPILER_CONFIG -# include BOOST_COMPILER_CONFIG -#endif - -// if we don't have a std library config set, try and find one: -#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG) -# include -#endif -// if we have a std library config, include it now: -#ifdef BOOST_STDLIB_CONFIG -# include BOOST_STDLIB_CONFIG -#endif - -// if we don't have a platform config set, try and find one: -#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG) -# include -#endif -// if we have a platform config, include it now: -#ifdef BOOST_PLATFORM_CONFIG -# include BOOST_PLATFORM_CONFIG -#endif - -// get config suffix code: -#include - -#endif // BOOST_CONFIG_HPP - - - - - - - - - - diff --git a/sdk/include/boost/config/compiler/borland.hpp b/sdk/include/boost/config/compiler/borland.hpp deleted file mode 100644 index 9ab4aaf540a..00000000000 --- a/sdk/include/boost/config/compiler/borland.hpp +++ /dev/null @@ -1,119 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Borland C++ compiler setup: - -// Version 5.0 and below: -# if __BORLANDC__ <= 0x0550 -// Borland C++Builder 4 and 5: -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# if __BORLANDC__ == 0x0550 -// Borland C++Builder 5, command-line compiler 5.5: -# define BOOST_NO_OPERATORS_IN_NAMESPACE -# endif -# endif - -// Version 5.51 and below: -#if (__BORLANDC__ <= 0x551) -# define BOOST_NO_CV_SPECIALIZATIONS -# define BOOST_NO_CV_VOID_SPECIALIZATIONS -# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -#endif - -// Version 7.0 (Kylix) and below: -#if (__BORLANDC__ <= 0x570) || !defined(BOOST_STRICT_CONFIG) -# define BOOST_NO_INTEGRAL_INT64_T -# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -# define BOOST_NO_PRIVATE_IN_AGGREGATE -# define BOOST_NO_USING_TEMPLATE -# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG -# define BOOST_NO_TEMPLATE_TEMPLATES - // we shouldn't really need this - but too many things choke - // without it, this needs more investigation: -# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - -// -// new bug in 5.61: -#if __BORLANDC__ >= 0x561 - // this seems to be needed by the command line compiler, but not the IDE: -# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -#endif - -# ifdef _WIN32 -# define BOOST_NO_SWPRINTF -# elif defined(linux) || defined(__linux__) || defined(__linux) - // we should really be able to do without this - // but the wcs* functions aren't imported into std:: -# define BOOST_NO_STDC_NAMESPACE - // _CPPUNWIND doesn't get automatically set for some reason: -# pragma defineonoption BOOST_CPPUNWIND -x -# endif -#endif - -// -// Post 0x561 we have long long and stdint.h: -#if __BORLANDC__ >= 0x561 -# define BOOST_HAS_LONG_LONG - // On non-Win32 platforms let the platform config figure this out: -# ifdef _WIN32 -# define BOOST_HAS_STDINT_H -# endif -#endif - -// Borland C++Builder 6 defaults to using STLPort. If _USE_OLD_RW_STL is -// defined, then we have 0x560 or greater with the Rogue Wave implementation -// which presumably has the std::DBL_MAX bug. -#if ((__BORLANDC__ >= 0x550) && (__BORLANDC__ < 0x560)) || defined(_USE_OLD_RW_STL) -// is partly broken, some macros define symbols that are really in -// namespace std, so you end up having to use illegal constructs like -// std::DBL_MAX, as a fix we'll just include float.h and have done with: -#include -#endif -// -// __int64: -// -#if __BORLANDC__ >= 0x530 -# define BOOST_HAS_MS_INT64 -#endif -// -// check for exception handling support: -// -#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) -# define BOOST_NO_EXCEPTIONS -#endif -// -// all versions have a : -// -#define BOOST_HAS_DIRENT_H -// -// Disable Win32 support in ANSI mode: -// -#pragma defineonoption BOOST_DISABLE_WIN32 -A - -#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) - -// -// versions check: -// we don't support Borland prior to version 5.4: -#if __BORLANDC__ < 0x540 -# error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version is 5.7 (Kylix 3): -#if (__BORLANDC__ > 0x570) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# else -# pragma message( "Unknown compiler version - please run the configure tests and report the results") -# endif -#endif - - - - - - diff --git a/sdk/include/boost/config/compiler/comeau.hpp b/sdk/include/boost/config/compiler/comeau.hpp deleted file mode 100644 index a0e8835a272..00000000000 --- a/sdk/include/boost/config/compiler/comeau.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Comeau C++ compiler setup: - -#include "boost/config/compiler/common_edg.hpp" - -#if (__COMO_VERSION__ <= 4245) || !defined(BOOST_STRICT_CONFIG) -# if defined(_MSC_VER) && _MSC_VER <= 1300 -# define BOOST_NO_STDC_NAMESPACE -# define BOOST_NO_SWPRINTF -# if _MSC_VER > 100 - // only set this in non-strict mode: -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# endif -# endif - -// Void returns don't work when emulating VC 6 (Peter Dimov) - -# if defined(_MSC_VER) && (_MSC_VER == 1200) -# define BOOST_NO_VOID_RETURNS -# endif - - -#endif // version 4245 - -// -// enable __int64 support in VC emulation mode -// we should also set BOOST_HAS_LONG_LONG when that is -// supported, but there is no way we can detect it: -// -# if defined(_MSC_VER) && (_MSC_VER >= 1200) -# define BOOST_HAS_MS_INT64 -# endif - -// -// disable win32 support unless we are in VC emulation mode, -// (what does this do to Como on top of Borland?): -// -#if defined(_WIN32) && (_MSC_VER+0 < 1000) -# define BOOST_DISABLE_WIN32 -#endif - -#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__) - -// -// versions check: -// we don't know Comeau prior to version 4245: -#if __COMO_VERSION__ < 4245 -# error "Compiler not configured - please reconfigure" -#endif -// -// last known and checked version is 4245: -#if (__COMO_VERSION__ > 4245) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif - - - diff --git a/sdk/include/boost/config/compiler/common_edg.hpp b/sdk/include/boost/config/compiler/common_edg.hpp deleted file mode 100644 index 9b785af2c6f..00000000000 --- a/sdk/include/boost/config/compiler/common_edg.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// -// Options common to all edg based compilers. -// -// This is included from within the individual compiler mini-configs. - -#ifndef __EDG_VERSION__ -# error This file requires that __EDG_VERSION__ be defined. -#endif - -#if (__EDG_VERSION__ <= 238) -# define BOOST_NO_INTEGRAL_INT64_T -#endif - -#if (__EDG_VERSION__ <= 240) -# define BOOST_NO_VOID_RETURNS -#endif - -#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -#endif - -#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES) -# define BOOST_NO_TEMPLATE_TEMPLATES -#endif - -// See also kai.hpp which checks a Kai-specific symbol for EH -# if !defined(__KCC) && !defined(__EXCEPTIONS) -# define BOOST_NO_EXCEPTIONS -# endif - -# if !defined(__NO_LONG_LONG) -# define BOOST_HAS_LONG_LONG -# endif - -#ifdef c_plusplus -// EDG has "long long" in non-strict mode -// However, some libraries have insufficient "long long" support -// #define BOOST_HAS_LONG_LONG -#endif - - diff --git a/sdk/include/boost/config/compiler/compaq_cxx.hpp b/sdk/include/boost/config/compiler/compaq_cxx.hpp deleted file mode 100644 index 8d09ff46485..00000000000 --- a/sdk/include/boost/config/compiler/compaq_cxx.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Dec Alpha True64 C++ compiler setup: - -#define BOOST_COMPILER "Dec Alpha True64 " BOOST_STRINGIZE(__DECCXX_VER) - -#include "boost/config/compiler/common_edg.hpp" - -// -// versions check: -// Nothing to do here? - - diff --git a/sdk/include/boost/config/compiler/gcc.hpp b/sdk/include/boost/config/compiler/gcc.hpp deleted file mode 100644 index 773fa17061f..00000000000 --- a/sdk/include/boost/config/compiler/gcc.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// GNU C++ compiler setup: - -# if __GNUC__ == 2 && __GNUC_MINOR__ == 91 - // egcs 1.1 won't parse shared_ptr.hpp without this: -# define BOOST_NO_AUTO_PTR -# endif -# if __GNUC__ == 2 && __GNUC_MINOR__ < 95 - // - // Prior to gcc 2.95 member templates only partly - // work - define BOOST_MSVC6_MEMBER_TEMPLATES - // instead since inline member templates mostly work. - // -# define BOOST_NO_MEMBER_TEMPLATES -# if __GNUC_MINOR__ >= 9 -# define BOOST_MSVC6_MEMBER_TEMPLATES -# endif -# endif - -# if __GNUC__ == 2 && __GNUC_MINOR__ <= 97 -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# define BOOST_NO_OPERATORS_IN_NAMESPACE -# endif - -// -// Threading support: Turn this on unconditionally here (except for -// MinGW, where we can know for sure). It will get turned off again -// later if no threading API is detected. -// -#if !defined(__MINGW32__) || defined(_MT) -# define BOOST_HAS_THREADS -#endif - -// -// gcc has "long long" -// -#define BOOST_HAS_LONG_LONG - -// -// gcc implements the named return value optimization since version 3.1 -// -#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 ) -#define BOOST_HAS_NRVO -#endif - -#define BOOST_COMPILER "GNU C++ version " __VERSION__ - -// -// versions check: -// we don't know gcc prior to version 2.90: -#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90) -# error "Compiler not configured - please reconfigure" -#endif -// -// last known and checked version is 3.2: -#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 2)) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# else -# warning "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif diff --git a/sdk/include/boost/config/compiler/greenhills.hpp b/sdk/include/boost/config/compiler/greenhills.hpp deleted file mode 100644 index 793ef5228ea..00000000000 --- a/sdk/include/boost/config/compiler/greenhills.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Greenhills C++ compiler setup: - -#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs) - -#include "boost/config/compiler/common_edg.hpp" - -// -// versions check: -// we don't support Greenhills prior to version 0: -#if __ghs < 0 -# error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version is 0: -#if (__ghs > 0) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif - diff --git a/sdk/include/boost/config/compiler/hp_acc.hpp b/sdk/include/boost/config/compiler/hp_acc.hpp deleted file mode 100644 index 2ca5d30fe0d..00000000000 --- a/sdk/include/boost/config/compiler/hp_acc.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// HP aCC C++ compiler setup: - -#if (__HP_aCC <= 33100) -# define BOOST_NO_INTEGRAL_INT64_T -# define BOOST_NO_OPERATORS_IN_NAMESPACE -# if !defined(_NAMESPACE_STD) -# define BOOST_NO_STD_LOCALE -# define BOOST_NO_STRINGSTREAM -# endif -#endif - -#if (__HP_aCC <= 33300) -// member templates are sufficiently broken that we disable them for now -# define BOOST_NO_MEMBER_TEMPLATES -# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -#endif - -#if (__HP_aCC <= 33900) || !defined(BOOST_STRICT_CONFIG) -# define BOOST_NO_UNREACHABLE_RETURN_DETECTION -# define BOOST_NO_TEMPLATE_TEMPLATES -# define BOOST_NO_SWPRINTF -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -// std lib config should set this one already: -//# define BOOST_NO_STD_ALLOCATOR -#endif - -// optional features rather than defects: -#if (__HP_aCC >= 33900) -# define BOOST_HAS_LONG_LONG -# define BOOST_HAS_PARTIAL_STD_ALLOCATOR -#endif - -#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC) - -// -// versions check: -// we don't support HP aCC prior to version 0: -#if __HP_aCC < 33000 -# error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version is 0: -#if (__HP_aCC > 33900) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif - - - diff --git a/sdk/include/boost/config/compiler/intel.hpp b/sdk/include/boost/config/compiler/intel.hpp deleted file mode 100644 index b54f6d8ee59..00000000000 --- a/sdk/include/boost/config/compiler/intel.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Intel compiler setup: - -#include "boost/config/compiler/common_edg.hpp" - -#ifdef __ICL -# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICL) -# define BOOST_INTEL_CXX_VERSION __ICL -#else -# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICC) -# define BOOST_INTEL_CXX_VERSION __ICC -#endif - -#if (BOOST_INTEL_CXX_VERSION <= 500) && defined(_MSC_VER) -# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -# define BOOST_NO_TEMPLATE_TEMPLATES -#endif - -#if (BOOST_INTEL_CXX_VERSION <= 600) || !defined(BOOST_STRICT_CONFIG) - -# if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov) - - // Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup - // in the frontend even in "strict" mode, unless you use - // -Qoption,cpp,--arg_dep_lookup. (reported by Kirk Klobe & Thomas Witt) - // Similarly, -Qoption,cpp,--new_for_init enables new-style "for" loop - // variable scoping. (reported by Thomas Witt) - // Intel C++ 6.0 (currently in Beta test) doesn't have any front-end - // changes at all. (reported by Kirk Klobe) - // That can't be right, since it supports template template - // arguments (reported by Dave Abrahams) -# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# endif -# define BOOST_NO_SWPRINTF -# endif - -// Void returns, 64 bit integrals don't work when emulating VC 6 (Peter Dimov) - -# if defined(_MSC_VER) && (_MSC_VER <= 1200) -# define BOOST_NO_VOID_RETURNS -# define BOOST_NO_INTEGRAL_INT64_T -# endif - -#endif - -#if _MSC_VER+0 >= 1000 -# ifndef _NATIVE_WCHAR_T_DEFINED -# define BOOST_NO_INTRINSIC_WCHAR_T -# endif -# if _MSC_VER >= 1200 -# define BOOST_HAS_MS_INT64 -# endif -# define BOOST_NO_SWPRINTF -#elif defined(_WIN32) -# define BOOST_DISABLE_WIN32 -#endif - -// I checked version 6.0 build 020312Z, it implements the NRVO. -// Correct this as you find out which version of the compiler -// implemented the NRVO first. (Daniel Frey) -#if (BOOST_INTEL_CXX_VERSION >= 600) -# define BOOST_HAS_NRVO -#endif - -// -// versions check: -// we don't support Intel prior to version 5.0: -#if BOOST_INTEL_CXX_VERSION < 500 -# error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version: -#if (BOOST_INTEL_CXX_VERSION > 700) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# elif defined(_MSC_VER) -# pragma message("Unknown compiler version - please run the configure tests and report the results") -# endif -#endif - - - - diff --git a/sdk/include/boost/config/compiler/kai.hpp b/sdk/include/boost/config/compiler/kai.hpp deleted file mode 100644 index a7451936882..00000000000 --- a/sdk/include/boost/config/compiler/kai.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Kai C++ compiler setup: - -#include "boost/config/compiler/common_edg.hpp" - -# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG) - // at least on Sun, the contents of is not in namespace std -# define BOOST_NO_STDC_NAMESPACE -# endif - -// see also common_edg.hpp which needs a special check for __KCC -# if !defined(_EXCEPTIONS) -# define BOOST_NO_EXCEPTIONS -# endif - -#define BOOST_COMPILER "Kai C++ version " BOOST_STRINGIZE(__KCC_VERSION) - -// -// last known and checked version is 4001: -#if (__KCC_VERSION > 4001) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif - - diff --git a/sdk/include/boost/config/compiler/metrowerks.hpp b/sdk/include/boost/config/compiler/metrowerks.hpp deleted file mode 100644 index 9346def3f09..00000000000 --- a/sdk/include/boost/config/compiler/metrowerks.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Metrowerks C++ compiler setup: - -// locale support is disabled when linking with the dynamic runtime -# ifdef _MSL_NO_LOCALE -# define BOOST_NO_STD_LOCALE -# endif - -# if __MWERKS__ <= 0x2301 // 5.3 -# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING -# define BOOST_NO_POINTER_TO_MEMBER_CONST -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD -# endif - -# if __MWERKS__ <= 0x2401 // 6.2 -//# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING -# endif - -# if(__MWERKS__ <= 0x2407) // 7.x -# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -# define BOOST_NO_UNREACHABLE_RETURN_DETECTION -# endif - -# if(__MWERKS__ <= 0x3003) // 8.x -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# endif - -#if !__option(wchar_type) -# define BOOST_NO_INTRINSIC_WCHAR_T -#endif - -#if !__option(exceptions) -# define BOOST_NO_EXCEPTIONS -#endif - -# if __MWERKS__ == 0x3000 -# define BOOST_COMPILER_VERSION 8.0 -# elif __MWERKS__ == 0x3001 -# define BOOST_COMPILER_VERSION 8.1 -# elif __MWERKS__ == 0x3002 -# define BOOST_COMPILER_VERSION 8.2 -# elif __MWERKS__ == 0x3003 -# define BOOST_COMPILER_VERSION 8.3 -# else -# define BOOST_COMPILER_VERSION __MWERKS__ -# endif - -#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) - -// -// versions check: -// we don't support Metrowerks prior to version 5.3: -#if __MWERKS__ < 0x2301 -# error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version: -#if (__MWERKS__ > 0x3003) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif - - - - - - diff --git a/sdk/include/boost/config/compiler/mpw.hpp b/sdk/include/boost/config/compiler/mpw.hpp deleted file mode 100644 index 3cd979a0b11..00000000000 --- a/sdk/include/boost/config/compiler/mpw.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// MPW C++ compilers setup: - -# if defined(__SC__) -# define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__) -# elif defined(__MRC__) -# define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__) -# else -# error "Using MPW compiler configuration by mistake. Please update." -# endif - -// -// MPW 8.90: -// -#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG) -# define BOOST_NO_CV_SPECIALIZATIONS -# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_NO_INTRINSIC_WCHAR_T -# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# define BOOST_NO_USING_TEMPLATE - -# define BOOST_NO_CWCHAR -# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - -# define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */ -#endif - -// -// versions check: -// we don't support MPW prior to version 8.9: -#if MPW_CPLUS < 0x890 -# error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version is 0x890: -#if (MPW_CPLUS > 0x890) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif - diff --git a/sdk/include/boost/config/compiler/sgi_mipspro.hpp b/sdk/include/boost/config/compiler/sgi_mipspro.hpp deleted file mode 100644 index 51e9f6fe79b..00000000000 --- a/sdk/include/boost/config/compiler/sgi_mipspro.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// SGI C++ compiler setup: - -#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION) - -#include "boost/config/compiler/common_edg.hpp" - -// -// Threading support: -// Turn this on unconditionally here, it will get turned off again later -// if no threading API is detected. -// -#define BOOST_HAS_THREADS -// -// version check: -// probably nothing to do here? - diff --git a/sdk/include/boost/config/compiler/sunpro_cc.hpp b/sdk/include/boost/config/compiler/sunpro_cc.hpp deleted file mode 100644 index f91c02923bd..00000000000 --- a/sdk/include/boost/config/compiler/sunpro_cc.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Sun C++ compiler setup: - -# if __SUNPRO_CC <= 0x500 -# define BOOST_NO_MEMBER_TEMPLATES -# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING -# endif - -# if (__SUNPRO_CC <= 0x520) - // - // Sunpro 5.2 and earler: - // - // although sunpro 5.2 supports the syntax for - // inline initialization it often gets the value - // wrong, especially where the value is computed - // from other constants (J Maddock 6th May 2001) -# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION - - // Although sunpro 5.2 supports the syntax for - // partial specialization, it often seems to - // bind to the wrong specialization. Better - // to disable it until suppport becomes more stable - // (J Maddock 6th May 2001). -# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# endif - -# if (__SUNPRO_CC <= 0x530) || !defined(BOOST_STRICT_CONFIG) - // SunPro 5.3 has better support for partial specialization, - // but breaks when compiling std::less > - // (Jens Maurer 4 Nov 2001). - - // std::less specialization fixed as reported by George - // Heintzelman; partial specialization re-enabled - // (Peter Dimov 17 Jan 2002) - -//# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // integral constant expressions with 64 bit numbers fail -# define BOOST_NO_INTEGRAL_INT64_T -# endif - -# if (__SUNPRO_CC <= 0x540) || !defined(BOOST_STRICT_CONFIG) -# define BOOST_NO_TEMPLATE_TEMPLATES -# endif - -#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC) - -// -// versions check: -// we don't support sunpro prior to version 4: -#if __SUNPRO_CC < 0x400 -#error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version is 0x530: -#if (__SUNPRO_CC > 0x530) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif - - - - - diff --git a/sdk/include/boost/config/compiler/vacpp.hpp b/sdk/include/boost/config/compiler/vacpp.hpp deleted file mode 100644 index cab827f030d..00000000000 --- a/sdk/include/boost/config/compiler/vacpp.hpp +++ /dev/null @@ -1,51 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Visual Age (IBM) C++ compiler setup: - -#if __IBMCPP__ <= 501 -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -#endif - -#if (__IBMCPP__ <= 502) -# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD -#endif - -#if (__IBMCPP__ <= 502) || !defined(BOOST_STRICT_CONFIG) -// Actually the compiler supports inclass member initialization but it -// requires a definition for the class member and it doesn't recognize -// it as an integral constant expression when used as a template argument. -# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_NO_INTEGRAL_INT64_T -#endif - -// -// On AIX thread support seems to be indicated by _THREAD_SAFE: -// -#ifdef _THREAD_SAFE -# define BOOST_HAS_THREADS -#endif - -#define BOOST_COMPILER "IBM Visual Age version " BOOST_STRINGIZE(__IBMCPP__) - -// -// versions check: -// we don't support Visual age prior to version 5: -#if __IBMCPP__ < 500 -#error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version is 500: -#if (__IBMCPP__ > 502) -# if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# endif -#endif - - - diff --git a/sdk/include/boost/config/compiler/visualc.hpp b/sdk/include/boost/config/compiler/visualc.hpp deleted file mode 100644 index e8a111973db..00000000000 --- a/sdk/include/boost/config/compiler/visualc.hpp +++ /dev/null @@ -1,123 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Microsoft Visual C++ compiler setup: - -#define BOOST_MSVC _MSC_VER - -// turn off the warnings before we #include anything -#pragma warning( disable : 4503 ) // warning: decorated name length exceeded - -#if _MSC_VER <= 1200 // 1200 == VC++ 6.0 -#pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info -# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# define BOOST_NO_VOID_RETURNS -# define BOOST_NO_EXCEPTION_STD_NAMESPACE -# define BOOST_NO_DEDUCED_TYPENAME - // disable min/max macro defines on vc6: - // -#endif - -#if (_MSC_VER <= 1300) // 1200 == VC++ 7.0 - -#if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -#endif - -# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_NO_PRIVATE_IN_AGGREGATE -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# define BOOST_NO_INTEGRAL_INT64_T - -// VC++ 6/7 has member templates but they have numerous problems including -// cases of silent failure, so for safety we define: -# define BOOST_NO_MEMBER_TEMPLATES -// For VC++ experts wishing to attempt workarounds, we define: -# define BOOST_MSVC6_MEMBER_TEMPLATES - -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# define BOOST_NO_CV_VOID_SPECIALIZATIONS -# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING -# define BOOST_NO_USING_TEMPLATE -# define BOOST_NO_SWPRINTF -# define BOOST_NO_TEMPLATE_TEMPLATES -# if (_MSC_VER > 1200) -# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -# endif - -#endif - -#if _MSC_VER < 1310 // 1310 == VC++ 7.1 -# define BOOST_NO_SWPRINTF -#endif - -#if _MSC_VER <= 1310 -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -#endif - -#ifndef _NATIVE_WCHAR_T_DEFINED -# define BOOST_NO_INTRINSIC_WCHAR_T -#endif - -// -// check for exception handling support: -#ifndef _CPPUNWIND -# define BOOST_NO_EXCEPTIONS -#endif - -// -// __int64 support: -// -#if (_MSC_VER >= 1200) && defined(_MSC_EXTENSIONS) -# define BOOST_HAS_MS_INT64 -#endif -#if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS) -# define BOOST_HAS_LONG_LONG -#endif -// -// disable Win32 API's if compiler extentions are -// turned off: -// -#ifndef _MSC_EXTENSIONS -# define BOOST_DISABLE_WIN32 -#endif - -# if _MSC_VER == 1200 -# define BOOST_COMPILER_VERSION 6.0 -# elif _MSC_VER == 1300 -# define BOOST_COMPILER_VERSION 7.0 -# elif _MSC_VER == 1310 -# define BOOST_COMPILER_VERSION 7.1 -# else -# define BOOST_COMPILER_VERSION _MSC_VER -# endif - -#define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) - -// -// versions check: -// we don't support Visual C++ prior to version 6: -#if _MSC_VER < 1200 -#error "Compiler not supported or configured - please reconfigure" -#endif -// -// last known and checked version is 1310: -#if 0 // (_MSC_VER > 1310) -# if defined() -# error "Unknown compiler version - please run the configure tests and report the results" -# else -# pragma message("Unknown compiler version - please run the configure tests and report the results") -# endif -#endif - - - - - - diff --git a/sdk/include/boost/config/platform/aix.hpp b/sdk/include/boost/config/platform/aix.hpp deleted file mode 100644 index f1bb1b2f2d7..00000000000 --- a/sdk/include/boost/config/platform/aix.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// IBM/Aix specific config options: - -#define BOOST_PLATFORM "IBM Aix" - -#define BOOST_HAS_UNISTD_H -#define BOOST_HAS_NL_TYPES_H -#define BOOST_HAS_NANOSLEEP -#define BOOST_HAS_CLOCK_GETTIME - -// This needs support in "boost/cstdint.hpp" exactly like FreeBSD. -// This platform has header named which includes all -// the things needed. -#define BOOST_HAS_STDINT_H - -// Threading API's: -#define BOOST_HAS_PTHREADS -#define BOOST_HAS_PTHREAD_DELAY_NP -#define BOOST_HAS_SCHED_YIELD -//#define BOOST_HAS_PTHREAD_YIELD - -// boilerplate code: -#include - - - diff --git a/sdk/include/boost/config/platform/amigaos.hpp b/sdk/include/boost/config/platform/amigaos.hpp deleted file mode 100644 index 7aa85d19287..00000000000 --- a/sdk/include/boost/config/platform/amigaos.hpp +++ /dev/null @@ -1,15 +0,0 @@ - -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -#define BOOST_PLATFORM "AmigaOS" - -#define BOOST_DISABLE_THREADS -#define BOOST_NO_CWCHAR -#define BOOST_NO_STD_WSTRING -#define BOOST_NO_INTRINSIC_WCHAR_T - diff --git a/sdk/include/boost/config/platform/beos.hpp b/sdk/include/boost/config/platform/beos.hpp deleted file mode 100644 index b2c0de5f38a..00000000000 --- a/sdk/include/boost/config/platform/beos.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// BeOS specific config options: - -#define BOOST_PLATFORM "BeOS" - -#define BOOST_NO_CWCHAR -#define BOOST_NO_CWCTYPE -#define BOOST_HAS_UNISTD_H - -#define BOOST_HAS_BETHREADS - -#ifndef BOOST_DISABLE_THREADS -# define BOOST_HAS_THREADS -#endif - -// boilerplate code: -#include - - diff --git a/sdk/include/boost/config/platform/bsd.hpp b/sdk/include/boost/config/platform/bsd.hpp deleted file mode 100644 index 9adf3a5c778..00000000000 --- a/sdk/include/boost/config/platform/bsd.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// generic BSD config options: - -#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) -#error "This platform is not BSD" -#endif - -#ifdef __FreeBSD__ -#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__) -#elif defined(__NetBSD__) -#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__) -#elif defined(__OpenBSD__) -#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__) -#endif - -// -// is this the correct version check? -// FreeBSD has but does not -// advertise the fact in : -// -#if defined(__FreeBSD__) && (__FreeBSD__ >= 3) -# define BOOST_HAS_NL_TYPES_H -#endif - -// -// FreeBSD 3.x has pthreads support, but defines _POSIX_THREADS in -// and not in -// -#if defined(__FreeBSD__) && (__FreeBSD__ <= 3) -# define BOOST_HAS_PTHREADS -#endif - -// -// No wide character support in the BSD header files: -// -#define BOOST_NO_CWCHAR - -// -// The BSD has macros only, no functions: -// -#define BOOST_NO_CTYPE_FUNCTIONS - -// -// thread API's not auto detected: -// -#define BOOST_HAS_SCHED_YIELD -#define BOOST_HAS_NANOSLEEP -#define BOOST_HAS_GETTIMEOFDAY -#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -#define BOOST_HAS_SIGACTION - -// boilerplate code: -#define BOOST_HAS_UNISTD_H -#include - - - - - diff --git a/sdk/include/boost/config/platform/cygwin.hpp b/sdk/include/boost/config/platform/cygwin.hpp deleted file mode 100644 index ad5ae94f12a..00000000000 --- a/sdk/include/boost/config/platform/cygwin.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// cygwin specific config options: - -#define BOOST_PLATFORM "Cygwin" -#define BOOST_NO_CWCTYPE -#define BOOST_NO_CWCHAR -#define BOOST_NO_SWPRINTF -#define BOOST_HAS_DIRENT_H - -// -// Threading API: -// See if we have POSIX threads, if we do use them, otherwise -// revert to native Win threads. -#define BOOST_HAS_UNISTD_H -#include -#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) -# define BOOST_HAS_PTHREADS -# define BOOST_HAS_SCHED_YIELD -# define BOOST_HAS_GETTIMEOFDAY -# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -# define BOOST_HAS_SIGACTION -#else -# if !defined(BOOST_HAS_WINTHREADS) -# define BOOST_HAS_WINTHREADS -# endif -# define BOOST_HAS_FTIME -#endif - -// boilerplate code: -#include - - - diff --git a/sdk/include/boost/config/platform/hpux.hpp b/sdk/include/boost/config/platform/hpux.hpp deleted file mode 100644 index bd16015d58d..00000000000 --- a/sdk/include/boost/config/platform/hpux.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// hpux specific config options: - -#define BOOST_PLATFORM "HP-UX" - -// In principle, HP-UX has a nice under the name -// However, it has the following problem: -// Use of UINT32_C(0) results in "0u l" for the preprocessed source -// (verifyable with gcc 2.95.3, assumed for HP aCC) -// #define BOOST_HAS_STDINT_H - -#define BOOST_NO_SWPRINTF -#define BOOST_NO_CWCTYPE - -// boilerplate code: -#define BOOST_HAS_UNISTD_H -#include - -// HPUX has an incomplete pthreads implementation, so it doesn't -// define _POSIX_THREADS, but it might be enough to implement -// Boost.Threads. -#if !defined(BOOST_HAS_PTHREADS) && defined(_POSIX_THREAD_ATTR_STACKADDR) -# define BOOST_HAS_PTHREADS -#endif - -// the following are always available: -#ifndef BOOST_HAS_GETTIMEOFDAY -# define BOOST_HAS_GETTIMEOFDAY -#endif -#ifndef BOOST_HAS_SCHED_YIELD -# define BOOST_HAS_SCHED_YIELD -#endif -#ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -#endif -#ifndef BOOST_HAS_NL_TYPES_H -# define BOOST_HAS_NL_TYPES_H -#endif -#ifndef BOOST_HAS_NANOSLEEP -# define BOOST_HAS_NANOSLEEP -#endif -#ifndef BOOST_HAS_GETTIMEOFDAY -# define BOOST_HAS_GETTIMEOFDAY -#endif -#ifndef BOOST_HAS_DIRENT_H -# define BOOST_HAS_DIRENT_H -#endif -#ifndef BOOST_HAS_CLOCK_GETTIME -# define BOOST_HAS_CLOCK_GETTIME -#endif -#ifndef BOOST_HAS_SIGACTION -# define BOOST_HAS_SIGACTION -#endif - diff --git a/sdk/include/boost/config/platform/irix.hpp b/sdk/include/boost/config/platform/irix.hpp deleted file mode 100644 index d137ffc3997..00000000000 --- a/sdk/include/boost/config/platform/irix.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// SGI Irix specific config options: - -#define BOOST_PLATFORM "SGI Irix" - -#define BOOST_NO_SWPRINTF -// -// these are not auto detected by POSIX feature tests: -// -#define BOOST_HAS_GETTIMEOFDAY -#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE - - -// boilerplate code: -#define BOOST_HAS_UNISTD_H -#include - - diff --git a/sdk/include/boost/config/platform/linux.hpp b/sdk/include/boost/config/platform/linux.hpp deleted file mode 100644 index 70b1129af5b..00000000000 --- a/sdk/include/boost/config/platform/linux.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// linux specific config options: - -#define BOOST_PLATFORM "linux" - -// make sure we have __GLIBC_PREREQ if available at all -#include - -// -// added to glibc 2.1.1 -// We can only test for 2.1 though: -// -#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1))) - // defines int64_t unconditionally, but defines - // int64_t only if __GNUC__. Thus, assume a fully usable - // only when using GCC. -# if defined __GNUC__ -# define BOOST_HAS_STDINT_H -# endif -#endif - -// -// como on linux doesn't have std:: c functions: -// -#ifdef __COMO__ -# define BOOST_NO_STDC_NAMESPACE -#endif - -// -// Intel on linux doesn't have swprintf in std:: -// -#ifdef __ICC -# define BOOST_NO_STDC_NAMESPACE -#endif - -// -// If glibc is past version 2 then we definitely have -// gettimeofday, earlier versions may or may not have it: -// -#if defined(__GLIBC__) && (__GLIBC__ >= 2) -# define BOOST_HAS_GETTIMEOFDAY -#endif - -#ifdef __USE_POSIX199309 -# define BOOST_HAS_NANOSLEEP -#endif - -#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) -// __GLIBC_PREREQ is available since 2.1.2 - - // swprintf is available since glibc 2.2.0 -# if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98)) -# define BOOST_NO_SWPRINTF -# endif -#else -# define BOOST_NO_SWPRINTF -#endif - -// boilerplate code: -#define BOOST_HAS_UNISTD_H -#include - -#ifndef __GNUC__ -// -// if the compiler is not gcc we still need to be able to parse -// the GNU system headers, some of which (mainly ) -// use GNU specific extensions: -// -# ifndef __extension__ -# define __extension__ -# endif -# ifndef __const__ -# define __const__ const -# endif -# ifndef __volatile__ -# define __volatile__ volatile -# endif -# ifndef __signed__ -# define __signed__ signed -# endif -# ifndef __typeof__ -# define __typeof__ typeof -# endif -# ifndef __inline__ -# define __inline__ inline -# endif -#endif - diff --git a/sdk/include/boost/config/platform/macos.hpp b/sdk/include/boost/config/platform/macos.hpp deleted file mode 100644 index 047cbf52fce..00000000000 --- a/sdk/include/boost/config/platform/macos.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Mac OS specific config options: - -#define BOOST_PLATFORM "Mac OS" - -#if __MACH__ && !defined(_MSL_USING_MSL_C) - -// Using the Mac OS X system BSD-style C library. - -# define BOOST_NO_CTYPE_FUNCTIONS -# define BOOST_NO_CWCHAR -# ifndef BOOST_HAS_UNISTD_H -# define BOOST_HAS_UNISTD_H -# endif -// boilerplate code: -# ifndef TARGET_CARBON -# include -# endif -# ifndef BOOST_HAS_STDINT_H -# define BOOST_HAS_STDINT_H -# endif - -// -// BSD runtime has pthreads, sigaction, sched_yield and gettimeofday, -// of these only pthreads are advertised in , so set the -// other options explicitly: -// -# define BOOST_HAS_SCHED_YIELD -# define BOOST_HAS_GETTIMEOFDAY -# define BOOST_HAS_SIGACTION - -# ifndef __APPLE_CC__ - -// GCC strange "ignore std" mode works better if you pretend everything -// is in the std namespace, for the most part. - -# define BOOST_NO_STDC_NAMESPACE -# endif - -#else - -// Using the MSL C library. - -// We will eventually support threads in non-Carbon builds, but we do -// not support this yet. -# if TARGET_CARBON - -# define BOOST_HAS_MPTASKS - -// The MP task implementation of Boost Threads aims to replace MP-unsafe -// parts of the MSL, so we turn on threads unconditionally. -# define BOOST_HAS_THREADS - -// The remote call manager depends on this. -# define BOOST_BIND_ENABLE_PASCAL - -# endif - -#endif - diff --git a/sdk/include/boost/config/platform/solaris.hpp b/sdk/include/boost/config/platform/solaris.hpp deleted file mode 100644 index fae4293d38e..00000000000 --- a/sdk/include/boost/config/platform/solaris.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// sun specific config options: - -#define BOOST_PLATFORM "sun" - -#define BOOST_HAS_GETTIMEOFDAY - -// boilerplate code: -#define BOOST_HAS_UNISTD_H -#include - - - diff --git a/sdk/include/boost/config/platform/win32.hpp b/sdk/include/boost/config/platform/win32.hpp deleted file mode 100644 index d156b99bb01..00000000000 --- a/sdk/include/boost/config/platform/win32.hpp +++ /dev/null @@ -1,67 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Win32 specific config options: - -#define BOOST_PLATFORM "Win32" - -#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF) -# define BOOST_NO_SWPRINTF -#endif - -#ifndef BOOST_DISABLE_WIN32 -// -// Win32 will normally be using native Win32 threads, -// but there is a pthread library avaliable as an option: -// -#ifndef BOOST_HAS_PTHREADS -# define BOOST_HAS_WINTHREADS -#endif - -// WEK: Added -#define BOOST_HAS_FTIME - -#endif - -// -// disable min/max macros: -// -#ifdef min -# undef min -#endif -#ifdef max -# undef max -#endif -#ifndef NOMINMAX -# define NOMINMAX -#endif - -#ifdef BOOST_MSVC -namespace std{ - // Apparently, something in the Microsoft libraries requires the "long" - // overload, because it calls the min/max functions with arguments of - // slightly different type. (If this proves to be incorrect, this - // whole "BOOST_MSVC" section can be removed.) - inline long min(long __a, long __b) { - return __b < __a ? __b : __a; - } - inline long max(long __a, long __b) { - return __a < __b ? __b : __a; - } - // The "long double" overload is required, otherwise user code calling - // min/max for floating-point numbers will use the "long" overload. - // (SourceForge bug #495495) - inline long double min(long double __a, long double __b) { - return __b < __a ? __b : __a; - } - inline long double max(long double __a, long double __b) { - return __a < __b ? __b : __a; - } -} -using std::min; -using std::max; -# endif diff --git a/sdk/include/boost/config/posix_features.hpp b/sdk/include/boost/config/posix_features.hpp deleted file mode 100644 index 81979c3ff98..00000000000 --- a/sdk/include/boost/config/posix_features.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// All POSIX feature tests go in this file, -// Note that we test _POSIX_C_SOURCE and _XOPEN_SOURCE as well -// _POSIX_VERSION and _XOPEN_VERSION: on some systems POSIX API's -// may be present but none-functional unless _POSIX_C_SOURCE and -// _XOPEN_SOURCE have been defined to the right value (it's up -// to the user to do this *before* including any header, although -// in most cases the compiler will do this for you). - -# if defined(BOOST_HAS_UNISTD_H) -# include - - // XOpen has , but is this the correct version check? -# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3) -# define BOOST_HAS_NL_TYPES_H -# endif - - // POSIX version 6 requires -# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100) -# define BOOST_HAS_STDINT_H -# endif - - // POSIX version 2 requires -# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199009L) -# define BOOST_HAS_DIRENT_H -# endif - - // POSIX version 3 requires to have sigaction: -# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199506L) -# define BOOST_HAS_SIGACTION -# endif - // POSIX defines _POSIX_THREADS > 0 for pthread support, - // however some platforms define _POSIX_THREADS without - // a value, hence the (_POSIX_THREADS+0 >= 0) check. - // Strictly speaking this may catch platforms with a - // non-functioning stub , but such occurrences should - // occur very rarely if at all. -# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_MPTASKS) -# define BOOST_HAS_PTHREADS -# endif - - // BOOST_HAS_NANOSLEEP: - // This is predicated on _POSIX_TIMERS or _XOPEN_REALTIME: -# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)) \ - || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0)) -# define BOOST_HAS_NANOSLEEP -# endif - - // BOOST_HAS_CLOCK_GETTIME: - // This is predicated on _POSIX_TIMERS (also on _XOPEN_REALTIME - // but at least one platform - linux - defines that flag without - // defining clock_gettime): -# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)) -# define BOOST_HAS_CLOCK_GETTIME -# endif - - // BOOST_HAS_SCHED_YIELD: - // This is predicated on _POSIX_PRIORITY_SCHEDULING or - // on _POSIX_THREAD_PRIORITY_SCHEDULING or on _XOPEN_REALTIME. -# if defined(_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING+0 > 0)\ - || (defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING+0 > 0))\ - || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0)) -# define BOOST_HAS_SCHED_YIELD -# endif - - // BOOST_HAS_GETTIMEOFDAY: - // BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE: - // These are predicated on _XOPEN_VERSION, and appears to be first released - // in issue 4, version 2 (_XOPEN_VERSION > 500). -# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION+0 >= 500) -# define BOOST_HAS_GETTIMEOFDAY -# if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) -# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -# endif -# endif - -# endif - - diff --git a/sdk/include/boost/config/select_compiler_config.hpp b/sdk/include/boost/config/select_compiler_config.hpp deleted file mode 100644 index 14780ba6347..00000000000 --- a/sdk/include/boost/config/select_compiler_config.hpp +++ /dev/null @@ -1,78 +0,0 @@ -// Boost compiler configuration selection header file - -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// locate which compiler we are using and define -// BOOST_COMPILER_CONFIG as needed: - -#if defined __GNUC__ -// GNU C++: -# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp" - -# elif defined __COMO__ -// Comeau C++ -# define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" - -#elif defined __KCC -// Kai C++ -# define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp" - -#elif defined __sgi -// SGI MIPSpro C++ -# define BOOST_COMPILER_CONFIG "boost/config/compiler/sgi_mipspro.hpp" - -#elif defined __DECCXX -// Compaq Tru64 Unix cxx -# define BOOST_COMPILER_CONFIG "boost/config/compiler/compaq_cxx.hpp" - -#elif defined __ghs -// Greenhills C++ -# define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp" - -#elif defined __BORLANDC__ -// Borland -# define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp" - -#elif defined(__ICL) || defined(__ICC) -// Intel -# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp" - -#elif defined __MWERKS__ -// Metrowerks CodeWarrior -# define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp" - -#elif defined __SUNPRO_CC -// Sun Workshop Compiler C++ -# define BOOST_COMPILER_CONFIG "boost/config/compiler/sunpro_cc.hpp" - -#elif defined __HP_aCC -// HP aCC -# define BOOST_COMPILER_CONFIG "boost/config/compiler/hp_acc.hpp" - -#elif defined(__MRC__) || defined(__SC__) -// MPW MrCpp or SCpp -# define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp" - -#elif defined(__IBMCPP__) -// IBM Visual Age -# define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp" - -#elif defined _MSC_VER -// Microsoft Visual C++ -// -// Must remain the last #elif since some other vendors (Metrowerks, for -// example) also #define _MSC_VER -# define BOOST_COMPILER_CONFIG "boost/config/compiler/visualc.hpp" - -#elif defined (BOOST_ASSERT_CONFIG) -// this must come last - generate an error if we don't -// recognise the compiler: -# error "Unknown compiler - please configure and report the results to boost.org" - -#endif - diff --git a/sdk/include/boost/config/select_platform_config.hpp b/sdk/include/boost/config/select_platform_config.hpp deleted file mode 100644 index 5921cc5e55b..00000000000 --- a/sdk/include/boost/config/select_platform_config.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// Boost compiler configuration selection header file - -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed. -// Note that we define the headers to include using "header_name" not -// in order to prevent macro expansion within the header -// name (for example "linux" is a macro on linux systems). - -#if defined(linux) || defined(__linux) || defined(__linux__) -// linux: -# define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp" - -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -// BSD: -# define BOOST_PLATFORM_CONFIG "boost/config/platform/bsd.hpp" - -#elif defined(sun) || defined(__sun) -// solaris: -# define BOOST_PLATFORM_CONFIG "boost/config/platform/solaris.hpp" - -#elif defined(__sgi) -// SGI Irix: -# define BOOST_PLATFORM_CONFIG "boost/config/platform/irix.hpp" - -#elif defined(__hpux) -// hp unix: -# define BOOST_PLATFORM_CONFIG "boost/config/platform/hpux.hpp" - -#elif defined(__CYGWIN__) -// cygwin is not win32: -# define BOOST_PLATFORM_CONFIG "boost/config/platform/cygwin.hpp" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -// win32: -# define BOOST_PLATFORM_CONFIG "boost/config/platform/win32.hpp" - -#elif defined(__BEOS__) -// BeOS -# define BOOST_PLATFORM_CONFIG "boost/config/platform/beos.hpp" - -#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) -// MacOS -# define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp" - -#elif defined(__IBMCPP__) -// IBM -# define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp" - -#elif defined(__amigaos__) -// AmigaOS -# define BOOST_PLATFORM_CONFIG "boost/config/platform/amigaos.hpp" - -#else - -# if defined(unix) \ - || defined(__unix) \ - || defined(_XOPEN_SOURCE) \ - || defined(_POSIX_SOURCE) - - // generic unix platform: - -# ifndef BOOST_HAS_UNISTD_H -# define BOOST_HAS_UNISTD_H -# endif - -# include - -# endif - -# if defined (BOOST_ASSERT_CONFIG) - // this must come last - generate an error if we don't - // recognise the platform: -# error "Unknown platform - please configure and report the results to boost.org" -# endif - -#endif - - diff --git a/sdk/include/boost/config/select_stdlib_config.hpp b/sdk/include/boost/config/select_stdlib_config.hpp deleted file mode 100644 index ce8633bcae9..00000000000 --- a/sdk/include/boost/config/select_stdlib_config.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// Boost compiler configuration selection header file - -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed: - -// we need to include a std lib header here in order to detect which -// library is in use, use as it's about the smallest -// of the std lib headers - do not rely on this header being included - -// users can short-circuit this header if they know whose std lib -// they are using. - -#include - -#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) -// STLPort library; this _must_ come first, otherwise since -// STLport typically sits on top of some other library, we -// can end up detecting that first rather than STLport: -# define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp" - -#elif defined(__LIBCOMO__) -// Commeau STL: -#define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcomo.hpp" - -#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER) -// Rogue Wave library: -# define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp" - -#elif defined(__GLIBCPP__) -// GNU libstdc++ 3 -# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp" - -#elif defined(__STL_CONFIG_H) -// generic SGI STL -# define BOOST_STDLIB_CONFIG "boost/config/stdlib/sgi.hpp" - -#elif defined(__MSL_CPP__) -// MSL standard lib: -# define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp" - -#elif defined(__IBMCPP__) -// take the default VACPP std lib -# define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp" - -#elif defined(MSIPL_COMPILE_H) -// Modena C++ standard library -# define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp" - -#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) -// Dinkumware Library (this has to appear after any possible replacement libraries): -# define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp" - -#elif defined (BOOST_ASSERT_CONFIG) -// this must come last - generate an error if we don't -// recognise the library: -# error "Unknown standard library - please configure and report the results to boost.org" - -#endif - - diff --git a/sdk/include/boost/config/stdlib/dinkumware.hpp b/sdk/include/boost/config/stdlib/dinkumware.hpp deleted file mode 100644 index bf44f1ba057..00000000000 --- a/sdk/include/boost/config/stdlib/dinkumware.hpp +++ /dev/null @@ -1,89 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Dinkumware standard library config: - -#if !defined(_YVALS) && !defined(_CPPLIB_VER) -#include -#if !defined(_YVALS) && !defined(_CPPLIB_VER) -#error This is not the Dinkumware lib! -#endif -#endif - - -#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) - // full dinkumware 3.06 and above - // fully conforming provided the compiler supports it: -# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(_STD) // can be defined in yvals.h -# define BOOST_NO_STDC_NAMESPACE -# endif -# if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC) -# define BOOST_NO_STD_ALLOCATOR -# endif -# if defined(_MSC_VER) && (_MSC_VER < 1300) - // if this lib version is set up for vc6 then there is no std::use_facet: -# define BOOST_NO_STD_USE_FACET -# define BOOST_HAS_TWO_ARG_USE_FACET - // C lib functions aren't in namespace std either: -# define BOOST_NO_STDC_NAMESPACE - // and nor is -# define BOOST_NO_EXCEPTION_STD_NAMESPACE -# endif -// There's no numeric_limits support unless _LONGLONG is defined: -# if !defined(_LONGLONG) && (_CPPLIB_VER <= 310) -# define BOOST_NO_MS_INT64_NUMERIC_LIMITS -# endif -// 3.06 appears to have (non-sgi versions of) & , -// and no at all -#else -# define BOOST_MSVC_STD_ITERATOR 1 -# define BOOST_NO_STD_ITERATOR -# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -# define BOOST_NO_STD_ALLOCATOR -# define BOOST_NO_STDC_NAMESPACE -# define BOOST_NO_STD_USE_FACET -# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN -# define BOOST_HAS_MACRO_USE_FACET -# ifndef _CPPLIB_VER - // Updated Dinkum library defines this, and provides - // its own min and max definitions. -# define BOOST_NO_STD_MIN_MAX -# define BOOST_NO_MS_INT64_NUMERIC_LIMITS -# endif -#endif - -#if (defined(_MSC_VER) && (_MSC_VER <= 1300)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306) - // if we're using a dinkum lib that's - // been configured for VC6/7 then there is - // no iterator traits (true even for icl) -# define BOOST_NO_STD_ITERATOR_TRAITS -#endif - -#if defined(__ICL) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310) -// Intel C++ chokes over any non-trivial use of -// this may be an overly restrictive define, but regex fails without it: -# define BOOST_NO_STD_LOCALE -#endif - -#ifdef _CPPLIB_VER -# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER -#else -# define BOOST_DINKUMWARE_STDLIB 1 -#endif - -#ifdef _CPPLIB_VER -# define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER) -#else -# define BOOST_STDLIB "Dinkumware standard library version 1.x" -#endif - - - - - - - diff --git a/sdk/include/boost/config/stdlib/libcomo.hpp b/sdk/include/boost/config/stdlib/libcomo.hpp deleted file mode 100644 index e60e0735f59..00000000000 --- a/sdk/include/boost/config/stdlib/libcomo.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Commeau STL: - -#if !defined(__LIBCOMO__) -# include -# if !defined(__LIBCOMO__) -# error "This is not the Comeau STL!" -# endif -#endif - -// -// std::streambuf is non-standard: -// -#if __LIBCOMO_VERSION__ <= 22 -# define BOOST_NO_STD_WSTREAMBUF -#endif - -// -// Intrinsic type_traits support. -// The SGI STL has it's own __type_traits class, which -// has intrinsic compiler support with SGI's compilers. -// Whatever map SGI style type traits to boost equivalents: -// -#define BOOST_HAS_SGI_TYPE_TRAITS - -#define BOOST_STDLIB "Commeau standard library" BOOST_STRINGIZE(__LIBCOMO_VERSION__) - diff --git a/sdk/include/boost/config/stdlib/libstdcpp3.hpp b/sdk/include/boost/config/stdlib/libstdcpp3.hpp deleted file mode 100644 index e4ddcdf0e51..00000000000 --- a/sdk/include/boost/config/stdlib/libstdcpp3.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// config for libstdc++ v3 -// not much to go in here: - -#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__) - -#ifndef _GLIBCPP_USE_WCHAR_T -# define BOOST_NO_CWCHAR -# define BOOST_NO_CWCTYPE -# define BOOST_NO_STD_WSTRING -# define BOOST_NO_STD_WSTREAMBUF -#endif - -#ifndef _GLIBCPP_USE_LONG_LONG -// May have been set by compiler/*.hpp, but "long long" without library -// support is useless. -# undef BOOST_HAS_LONG_LONG -#endif - diff --git a/sdk/include/boost/config/stdlib/modena.hpp b/sdk/include/boost/config/stdlib/modena.hpp deleted file mode 100644 index 8d68cee5119..00000000000 --- a/sdk/include/boost/config/stdlib/modena.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Modena C++ standard library (comes with KAI C++) - -#if !defined(MSIPL_COMPILE_H) -# include -# if !defined(__MSIPL_COMPILE_H) -# error "This is not the Modena C++ library!" -# endif -#endif - -#ifndef MSIPL_NL_TYPES -#define BOOST_NO_STD_MESSAGES -#endif - -#ifndef MSIPL_WCHART -#define BOOST_NO_STD_WSTRING -#endif - -#define BOOST_STDLIB "Modena C++ standard library" - - - - diff --git a/sdk/include/boost/config/stdlib/msl.hpp b/sdk/include/boost/config/stdlib/msl.hpp deleted file mode 100644 index 009e779bf21..00000000000 --- a/sdk/include/boost/config/stdlib/msl.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Metrowerks standard library: - -#ifndef __MSL_CPP__ -# include -# ifndef __MSL_CPP__ -# error This is not the MSL standard library! -# endif -#endif - -#if __MSL_CPP__ >= 0x6000 // Pro 6 -# define BOOST_HAS_HASH -# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks -#endif -#define BOOST_HAS_SLIST - -#if __MSL_CPP__ < 0x6209 -# define BOOST_NO_STD_MESSAGES -#endif - -// check C lib version for -#include - -#if defined(__MSL__) && (__MSL__ >= 0x5000) -# define BOOST_HAS_STDINT_H -# define BOOST_HAS_UNISTD_H - // boilerplate code: -# include -#endif - -#if _MWMT -# define BOOST_HAS_THREADS -#endif - - -#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__) - - - - - - - - diff --git a/sdk/include/boost/config/stdlib/roguewave.hpp b/sdk/include/boost/config/stdlib/roguewave.hpp deleted file mode 100644 index 4b0a0232957..00000000000 --- a/sdk/include/boost/config/stdlib/roguewave.hpp +++ /dev/null @@ -1,118 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Rogue Wave std lib: - -#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) -# include -# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) -# error This is not the Rogue Wave standard library -# endif -#endif -// -// figure out a consistent version number: -// -#ifndef _RWSTD_VER -# define BOOST_RWSTD_VER 0x010000 -#elif _RWSTD_VER < 0x010000 -# define BOOST_RWSTD_VER (_RWSTD_VER << 8) -#else -# define BOOST_RWSTD_VER _RWSTD_VER -#endif - -#ifndef _RWSTD_VER -# define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)" -#else -# define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER) -#endif - -// -// Prior to version 2.2.0 the primary template for std::numeric_limits -// does not have compile time constants, even though specializations of that -// template do: -// -#if BOOST_RWSTD_VER < 0x020200 -# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -#endif - -#if BOOST_RWSTD_VER <= 0x020101 -# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS -# endif - -// -// Borland version of numeric_limits lacks __int64 specialisation: -// -#ifdef __BORLANDC__ -# define BOOST_NO_MS_INT64_NUMERIC_LIMITS -#endif - -// -// No std::iterator if it can't figure out default template args: -// -#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000) -# define BOOST_NO_STD_ITERATOR -#endif - -// -// No iterator traits without partial specialization: -// -#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC) -# define BOOST_NO_STD_ITERATOR_TRAITS -#endif - -// -// Prior to version 2.0, std::auto_ptr was buggy, and there were no -// new-style iostreams, and no conformant std::allocator: -// -#if (BOOST_RWSTD_VER < 0x020000) -# define BOOST_NO_AUTO_PTR -# define BOOST_NO_STRINGSTREAM -# define BOOST_NO_STD_ALLOCATOR -# define BOOST_NO_STD_LOCALE -#endif - -// -// No template iterator constructors without member template support: -// -#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES) -# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -#endif - -// -// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use -// (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR -// on HP aCC systems even though the allocator is in fact broken): -// -#if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100) -# define BOOST_NO_STD_ALLOCATOR -#endif - -// -// If we have a std::locale, we still may not have std::use_facet: -// -#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE) -# define BOOST_NO_STD_USE_FACET -# define BOOST_HAS_TWO_ARG_USE_FACET -#endif - -// -// There's no std::distance prior to version 2, or without -// partial specialization support: -// -#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) - #define BOOST_NO_STD_DISTANCE -#endif - -// -// Some versions of the rogue wave library don't have assignable -// OutputIterators: -// -#if BOOST_RWSTD_VER < 0x020100 -# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN -#endif - - diff --git a/sdk/include/boost/config/stdlib/sgi.hpp b/sdk/include/boost/config/stdlib/sgi.hpp deleted file mode 100644 index dd086c2c953..00000000000 --- a/sdk/include/boost/config/stdlib/sgi.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// generic SGI STL: - -#if !defined(__STL_CONFIG_H) -# include -# if !defined(__STL_CONFIG_H) -# error "This is not the SGI STL!" -# endif -#endif - -// -// No std::iterator traits without partial specialisation: -// -#if !defined(__STL_CLASS_PARTIAL_SPECIALIZATION) -# define BOOST_NO_STD_ITERATOR_TRAITS -#endif - -// -// No std::stringstream with gcc < 3 -// -#if defined(__GNUC__) && (__GNUC__ < 3) && \ - ((__GNUC_MINOR__ < 95) || (__GNUC_MINOR__ == 96)) && \ - !defined(__STL_USE_NEW_IOSTREAMS) || \ - defined(__APPLE_CC__) - // Note that we only set this for GNU C++ prior to 2.95 since the - // latest patches for that release do contain a minimal - // If you are running a 2.95 release prior to 2.95.3 then this will need - // setting, but there is no way to detect that automatically (other - // than by running the configure script). - // Also, the unofficial GNU C++ 2.96 included in RedHat 7.1 doesn't - // have . -# define BOOST_NO_STRINGSTREAM -#endif - -// -// Assume no std::locale without own iostreams (this may be an -// incorrect assumption in some cases): -// -#if !defined(__SGI_STL_OWN_IOSTREAMS) && !defined(__STL_USE_NEW_IOSTREAMS) -# define BOOST_NO_STD_LOCALE -#endif - -// -// Original native SGI streams have non-standard std::messages facet: -// -#if defined(__sgi) && (_COMPILER_VERSION <= 650) && !defined(__SGI_STL_OWN_IOSTREAMS) -# define BOOST_NO_STD_LOCALE -#endif - -// -// SGI's new iostreams have missing "const" in messages<>::open -// -#if defined(__sgi) && (_COMPILER_VERSION <= 730) && defined(__STL_USE_NEW_IOSTREAMS) -# define BOOST_NO_STD_MESSAGES -#endif - -// -// No template iterator constructors, or std::allocator -// without member templates: -// -#if !defined(__STL_MEMBER_TEMPLATES) -# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -# define BOOST_NO_STD_ALLOCATOR -#endif - -// -// We always have SGI style hash_set, hash_map, and slist: -// -#define BOOST_HAS_HASH -#define BOOST_HAS_SLIST - -// -// If this is GNU libstdc++2, then no and no std::wstring: -// -#if (defined(__GNUC__) && (__GNUC__ < 3)) -# include -# if defined(__BASTRING__) -# define BOOST_NO_LIMITS -// Note: will provide compile-time constants -# undef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -# define BOOST_NO_STD_WSTRING -# endif -#endif - -// -// There is no standard iterator unless we have namespace support: -// -#if !defined(__STL_USE_NAMESPACES) -# define BOOST_NO_STD_ITERATOR -#endif - -// -// Intrinsic type_traits support. -// The SGI STL has it's own __type_traits class, which -// has intrinsic compiler support with SGI's compilers. -// Whatever map SGI style type traits to boost equivalents: -// -#define BOOST_HAS_SGI_TYPE_TRAITS - -#define BOOST_STDLIB "SGI standard library" - diff --git a/sdk/include/boost/config/stdlib/stlport.hpp b/sdk/include/boost/config/stdlib/stlport.hpp deleted file mode 100644 index b40b5b39dd8..00000000000 --- a/sdk/include/boost/config/stdlib/stlport.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// STLPort standard library config: - -#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) -# include -# if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) -# error "This is not STLPort!" -# endif -#endif - -// -// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -// for versions prior to 4.1(beta) -// -#if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400) -# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -#endif - -// -// If STLport thinks that there is no partial specialisation, then there is no -// std::iterator traits: -// -#if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION)) -# define BOOST_NO_STD_ITERATOR_TRAITS -#endif - -// -// No new style iostreams on GCC without STLport's iostreams enabled: -// -#if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS)) -# define BOOST_NO_STRINGSTREAM -#endif - -// -// No new iostreams implies no std::locale, and no std::stringstream: -// -#if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS) -# define BOOST_NO_STD_LOCALE -# define BOOST_NO_STRINGSTREAM -#endif - -// -// If the streams are not native, and we have a "using ::x" compiler bug -// then the io stream facets are not available in namespace std:: -// -#if !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__) -# define BOOST_NO_STD_LOCALE -#endif -#if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__) -# define BOOST_NO_STD_LOCALE -#endif - -// -// Without member template support enabled, their are no template -// iterate constructors, and no std::allocator: -// -#if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES)) -# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -# define BOOST_NO_STD_ALLOCATOR -#endif -// -// however we always have at least a partial allocator: -// -#define BOOST_HAS_PARTIAL_STD_ALLOCATOR - -#if !defined(_STLP_MEMBER_TEMPLATE_CLASSES) -# define BOOST_NO_STD_ALLOCATOR -#endif - -// -// We always have SGI style hash_set, hash_map, and slist: -// -#define BOOST_HAS_HASH -#define BOOST_HAS_SLIST - -// -// STLport does a good job of importing names into namespace std::, -// but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our -// workaround does not conflict with STLports: -// -// -// Harold Howe says: -// Borland switched to STLport in BCB6. Defining BOOST_NO_STDC_NAMESPACE with -// BCB6 does cause problems. If we detect C++ Builder, then don't define -// BOOST_NO_STDC_NAMESPACE -// -#if !defined(__BORLANDC__) -// -// If STLport is using it's own namespace, and the real names are in -// the global namespace, then we duplicate STLport's using declarations -// (by defining BOOST_NO_STDC_NAMESPACE), we do this because STLport doesn't -// necessarily import all the names we need into namespace std:: -// -# if (defined(__STL_IMPORT_VENDOR_CSTD) \ - || defined(__STL_USE_OWN_NAMESPACE) \ - || defined(_STLP_IMPORT_VENDOR_CSTD) \ - || defined(_STLP_USE_OWN_NAMESPACE)) \ - && (defined(__STL_VENDOR_GLOBAL_CSTD) || defined (_STLP_VENDOR_GLOBAL_CSTD)) -# define BOOST_NO_STDC_NAMESPACE -# define BOOST_NO_EXCEPTION_STD_NAMESPACE -# endif -#elif __BORLANDC__ < 0x560 -// STLport doesn't import std::abs correctly: -#include -namespace std { using ::abs; } -// and strcmp/strcpy don't get imported either ('cos they are macros) -#include -#ifdef strcpy -# undef strcpy -#endif -#ifdef strcmp -# undef strcmp -#endif -#ifdef _STLP_VENDOR_CSTD -namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy; } -#endif -#endif - -// -// std::use_facet may be non-standard, uses a class instead: -// -#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS) -# define BOOST_NO_STD_USE_FACET -# define BOOST_HAS_STLP_USE_FACET -#endif - -// -// If STLport thinks there are no wide functions, etc. is not working; but -// only if BOOST_NO_STDC_NAMESPACE is not defined (if it is then we do the import -// into std:: ourselves). -// -#if defined(_STLP_NO_NATIVE_WIDE_FUNCTIONS) && !defined(BOOST_NO_STDC_NAMESPACE) -# define BOOST_NO_CWCHAR -# define BOOST_NO_CWCTYPE -#endif - -// -// Borland ships a version of STLport with C++ Builder 6 that lacks -// hashtables and the like: -// -#if defined(__BORLANDC__) && (__BORLANDC__ == 0x560) -# undef BOOST_HAS_HASH -#endif - - -#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT) - - - - - - - diff --git a/sdk/include/boost/config/stdlib/vacpp.hpp b/sdk/include/boost/config/stdlib/vacpp.hpp deleted file mode 100644 index 2d5bf5709d9..00000000000 --- a/sdk/include/boost/config/stdlib/vacpp.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -#if __IBMCPP__ <= 501 -# define BOOST_NO_STD_ALLOCATOR -#endif - -#define BOOST_HAS_MACRO_USE_FACET - -#define BOOST_STDLIB "Visual Age default standard library" - - diff --git a/sdk/include/boost/config/suffix.hpp b/sdk/include/boost/config/suffix.hpp deleted file mode 100644 index 6635666bc12..00000000000 --- a/sdk/include/boost/config/suffix.hpp +++ /dev/null @@ -1,383 +0,0 @@ -// Boost config.hpp configuration header file ------------------------------// - -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version. - -// Boost config.hpp policy and rationale documentation has been moved to -// http://www.boost.org/libs/config -// -// This file is intended to be stable, and relatively unchanging. -// It should contain boilerplate code only - no compiler specific -// code unless it is unavoidable - no changes unless unavoidable. - -#ifndef BOOST_CONFIG_SUFFIX_HPP -#define BOOST_CONFIG_SUFFIX_HPP - -// -// look for long long by looking for the appropriate macros in . -// Note that we use limits.h rather than climits for maximal portability, -// remember that since these just declare a bunch of macros, there should be -// no namespace issues from this. -// -#include -# if !defined(BOOST_HAS_LONG_LONG) \ - && !(defined(BOOST_MSVC) && BOOST_MSVC <=1300) && !defined(__BORLANDC__) \ - && (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) -# define BOOST_HAS_LONG_LONG -#endif -#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_INTEGRAL_INT64_T) -# define BOOST_NO_INTEGRAL_INT64_T -#endif - -// GCC 3.x will clean up all of those nasty macro definitions that -// BOOST_NO_CTYPE_FUNCTIONS is intended to help work around, so undefine -// it under GCC 3.x. -#if defined(__GNUC__) && (__GNUC__ >= 3) && defined(BOOST_NO_CTYPE_FUNCTIONS) -# undef BOOST_NO_CTYPE_FUNCTIONS -#endif - - -// -// Assume any extensions are in namespace std:: unless stated otherwise: -// -# ifndef BOOST_STD_EXTENSION_NAMESPACE -# define BOOST_STD_EXTENSION_NAMESPACE std -# endif - -// -// If cv-qualified specializations are not allowed, then neither are cv-void ones: -// -# if defined(BOOST_NO_CV_SPECIALIZATIONS) \ - && !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS) -# define BOOST_NO_CV_VOID_SPECIALIZATIONS -# endif - -// -// If there is no numeric_limits template, then it can't have any compile time -// constants either! -// -# if defined(BOOST_NO_LIMITS) \ - && !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) -# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -# define BOOST_NO_MS_INT64_NUMERIC_LIMITS -# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS -# endif - -// -// if there is no long long then there is no specialisation -// for numeric_limits either: -// -#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS) -# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS -#endif - -// -// if there is no __int64 then there is no specialisation -// for numeric_limits<__int64> either: -// -#if !defined(BOOST_HAS_MS_INT64) && !defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS) -# define BOOST_NO_MS_INT64_NUMERIC_LIMITS -#endif - -// -// if member templates are supported then so is the -// VC6 subset of member templates: -// -# if !defined(BOOST_NO_MEMBER_TEMPLATES) \ - && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) -# define BOOST_MSVC6_MEMBER_TEMPLATES -# endif - -// -// Without partial specialization, can't test for partial specialisation bugs: -// -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) -# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG -# endif - -// -// Without partial specialization, std::iterator_traits can't work: -// -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_NO_STD_ITERATOR_TRAITS) -# define BOOST_NO_STD_ITERATOR_TRAITS -# endif - -// -// Without member template support, we can't have template constructors -// in the standard library either: -// -# if defined(BOOST_NO_MEMBER_TEMPLATES) \ - && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \ - && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) -# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -# endif - -// -// Without member template support, we can't have a conforming -// std::allocator template either: -// -# if defined(BOOST_NO_MEMBER_TEMPLATES) \ - && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \ - && !defined(BOOST_NO_STD_ALLOCATOR) -# define BOOST_NO_STD_ALLOCATOR -# endif - -// -// If we have a standard allocator, then we have a partial one as well: -// -#if !defined(BOOST_NO_STD_ALLOCATOR) -# define BOOST_HAS_PARTIAL_STD_ALLOCATOR -#endif - -// -// We can't have a working std::use_facet if there is no std::locale: -// -# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET) -# define BOOST_NO_STD_USE_FACET -# endif - -// -// We can't have a std::messages facet if there is no std::locale: -// -# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES) -# define BOOST_NO_STD_MESSAGES -# endif - -// -// We can't have a working std::wstreambuf if there is no std::locale: -// -# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_WSTREAMBUF) -# define BOOST_NO_STD_WSTREAMBUF -# endif - -// -// We can't have a if there is no : -// -# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE) -# define BOOST_NO_CWCTYPE -# endif - -// -// We can't have a swprintf if there is no : -// -# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF) -# define BOOST_NO_SWPRINTF -# endif - -// -// If Win32 support is turned off, then we must turn off -// threading support also, unless there is some other -// thread API enabled: -// -#if defined(BOOST_DISABLE_WIN32) && defined(_WIN32) \ - && !defined(BOOST_DISABLE_THREADS) && !defined(BOOST_HAS_PTHREADS) -# define BOOST_DISABLE_THREADS -#endif - -// -// Turn on threading support if the compiler thinks that it's in -// multithreaded mode. We put this here because there are only a -// limited number of macros that identify this (if there's any missing -// from here then add to the appropriate compiler section): -// -#if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \ - || defined(_PTHREADS)) && !defined(BOOST_HAS_THREADS) -# define BOOST_HAS_THREADS -#endif - -// -// Turn threading support off if BOOST_DISABLE_THREADS is defined: -// -#if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS) -# undef BOOST_HAS_THREADS -#endif - -// -// Turn threading support off if we don't recognise the threading API: -// -#if defined(BOOST_HAS_THREADS) && !defined(BOOST_HAS_PTHREADS)\ - && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_BETHREADS)\ - && !defined(BOOST_HAS_MPTASKS) -# undef BOOST_HAS_THREADS -#endif - -// -// If the compiler claims to be C99 conformant, then it had better -// have a : -// -# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901) -# define BOOST_HAS_STDINT_H -# endif - -// -// Define BOOST_NO_SLIST and BOOST_NO_HASH if required. -// Note that this is for backwards compatibility only. -// -# ifndef BOOST_HAS_SLIST -# define BOOST_NO_SLIST -# endif - -# ifndef BOOST_HAS_HASH -# define BOOST_NO_HASH -# endif - -// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------// -// Because std::size_t usage is so common, even in boost headers which do not -// otherwise use the C library, the workaround is included here so -// that ugly workaround code need not appear in many other boost headers. -// NOTE WELL: This is a workaround for non-conforming compilers; -// must still be #included in the usual places so that inclusion -// works as expected with standard conforming compilers. The resulting -// double inclusion of is harmless. - -# ifdef BOOST_NO_STDC_NAMESPACE -# include - namespace std { using ::ptrdiff_t; using ::size_t; } -# endif - -// BOOST_NO_STD_MIN_MAX workaround -----------------------------------------// - -# ifdef BOOST_NO_STD_MIN_MAX - -namespace std { - template - inline const _Tp& min(const _Tp& __a, const _Tp& __b) { - return __b < __a ? __b : __a; - } - template - inline const _Tp& max(const _Tp& __a, const _Tp& __b) { - return __a < __b ? __b : __a; - } -} - -# endif - -// BOOST_STATIC_CONSTANT workaround --------------------------------------- // -// On compilers which don't allow in-class initialization of static integral -// constant members, we must use enums as a workaround if we want the constants -// to be available at compile-time. This macro gives us a convenient way to -// declare such constants. - -# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment } -# else -# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment -# endif - -// BOOST_USE_FACET workaround ----------------------------------------------// -// When the standard library does not have a conforming std::use_facet there -// are various workarounds available, but they differ from library to library. -// This macro provides a consistent way to access a locale's facets. -// Usage: -// replace -// std::use_facet(loc); -// with -// BOOST_USE_FACET(Type, loc); -// Note do not add a std:: prefix to the front of BOOST_USE_FACET! - -#if defined(BOOST_NO_STD_USE_FACET) -# ifdef BOOST_HAS_TWO_ARG_USE_FACET -# define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast(0)) -# elif defined(BOOST_HAS_MACRO_USE_FACET) -# define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type) -# elif defined(BOOST_HAS_STLP_USE_FACET) -# define BOOST_USE_FACET(Type, loc) (*std::_Use_facet(loc)) -# endif -#else -# define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc) -#endif - -// BOOST_NESTED_TEMPLATE workaround ------------------------------------------// -// Member templates are supported by some compilers even though they can't use -// the A::template member syntax, as a workaround replace: -// -// typedef typename A::template rebind binder; -// -// with: -// -// typedef typename A::BOOST_NESTED_TEMPLATE rebind binder; - -#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD -# define BOOST_NESTED_TEMPLATE template -#else -# define BOOST_NESTED_TEMPLATE -#endif - -// BOOST_UNREACHABLE_RETURN(x) workaround -------------------------------------// -// Normally evaluates to nothing, unless BOOST_NO_UNREACHABLE_RETURN_DETECTION -// is defined, in which case it evaluates to return x; Use when you have a return -// statement that can never be reached. - -#ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION -# define BOOST_UNREACHABLE_RETURN(x) return x; -#else -# define BOOST_UNREACHABLE_RETURN(x) -#endif - -// BOOST_DEDUCED_TYPENAME workaround ------------------------------------------// -// -// Some compilers don't support the use of `typename' for dependent -// types in deduced contexts, e.g. -// -// template void f(T, typename T::type); -// ^^^^^^^^ -// Replace these declarations with: -// -// template void f(T, BOOST_DEDUCED_TYPENAME T::type); - -#ifndef BOOST_NO_DEDUCED_TYPENAME -# define BOOST_DEDUCED_TYPENAME typename -#else -# define BOOST_DEDUCED_TYPENAME -#endif - -// ---------------------------------------------------------------------------// - -// -// Helper macro BOOST_STRINGIZE: -// Converts the parameter X to a string after macro replacement -// on X has been performed. -// -#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X) -#define BOOST_DO_STRINGIZE(X) #X - -// -// Helper macro BOOST_JOIN: -// The following piece of macro magic joins the two -// arguments together, even when one of the arguments is -// itself a macro (see 16.3.1 in C++ standard). The key -// is that macro expansion of macro arguments does not -// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN. -// -#define BOOST_JOIN( X, Y ) BOOST_DO_JOIN( X, Y ) -#define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y) -#define BOOST_DO_JOIN2( X, Y ) X##Y - -// -// Set some default values for compiler/library/platform names. -// These are for debugging config setup only: -// -# ifndef BOOST_COMPILER -# define BOOST_COMPILER "Unknown ISO C++ Compiler" -# endif -# ifndef BOOST_STDLIB -# define BOOST_STDLIB "Unknown ISO standard library" -# endif -# ifndef BOOST_PLATFORM -# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \ - || defined(_POSIX_SOURCE) -# define BOOST_PLATFORM "Generic Unix" -# else -# define BOOST_PLATFORM "Unknown" -# endif -# endif - -#endif - - diff --git a/sdk/include/boost/config/user.hpp b/sdk/include/boost/config/user.hpp deleted file mode 100644 index 98adbac9096..00000000000 --- a/sdk/include/boost/config/user.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// boost/config/user.hpp ---------------------------------------------------// - -// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// Do not check in modified versions of this file, -// This file may be customized by the end user, but not by boost. - -// -// Use this file to define a site and compiler specific -// configuration policy: -// - -// define this to locate a compiler config file: -// #define BOOST_COMPILER_CONFIG - -// define this to locate a stdlib config file: -// #define BOOST_STDLIB_CONFIG - -// define this to locate a platform config file: -// #define BOOST_PLATFORM_CONFIG - -// define this to disable compiler config, -// use if your compiler config has nothing to set: -// #define BOOST_NO_COMPILER_CONFIG - -// define this to disable stdlib config, -// use if your stdlib config has nothing to set: -// #define BOOST_NO_STDLIB_CONFIG - -// define this to disable platform config, -// use if your platform config has nothing to set: -// #define BOOST_NO_PLATFORM_CONFIG - -// define this to disable all config options, -// excluding the user config. Use if your -// setup is fully ISO compliant, and has no -// useful extensions, or for autoconf generated -// setups: -// #define BOOST_NO_CONFIG - -// define this to make the config "optimistic" -// about unknown compiler versions. Normally -// unknown compiler versions are assumed to have -// all the defects of the last known version, however -// setting this flag, causes the config to assume -// that unknown compiler versions are fully conformant -// with the standard: -// #define BOOST_STRICT_CONFIG - -// define this to cause the config to halt compilation -// with an #error if it encounters anything unknown -- -// either an unknown compiler version or an unknown -// compiler/platform/library: -// #define BOOST_ASSERT_CONFIG - - -// define if you want to disable threading support, even -// when available: -// #define BOOST_DISABLE_THREADS - -// define when you want to disable Win32 specific features -// even when available: -// #define BOOST_DISABLE_WIN32 - - diff --git a/sdk/include/boost/counting_iterator.hpp b/sdk/include/boost/counting_iterator.hpp deleted file mode 100644 index 574e1760b48..00000000000 --- a/sdk/include/boost/counting_iterator.hpp +++ /dev/null @@ -1,229 +0,0 @@ -// (C) Copyright David Abrahams and Jeremy Siek 2000-2001. Permission to copy, -// use, modify, sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided "as is" -// without express or implied warranty, and with no claim as to its suitability -// for any purpose. -// -// See http://www.boost.org/libs/utility/counting_iterator.htm for documentation. -// -// Supplies: -// -// template class counting_iterator_traits; -// template class counting_iterator_policies; -// -// Iterator traits and policies for adapted iterators whose dereferenced -// value progresses through consecutive values of Incrementable when the -// iterator is derferenced. -// -// template struct counting_iterator_generator; -// -// A "type generator" whose nested type "type" is a counting iterator as -// described above. -// -// template -// typename counting_iterator_generator::type -// make_counting_iterator(Incrementable); -// -// A function which produces an adapted counting iterator over values of -// Incrementable. -// -// Revision History -// 14 Feb 2001 Removed unnecessary typedefs from counting_iterator_traits -// (Jeremy Siek) -// 11 Feb 2001 Use BOOST_STATIC_CONSTANT (Dave Abrahams) -// 11 Feb 2001 Clean up after John Maddocks's (finally effective!) Borland -// fixes (David Abrahams). -// 10 Feb 2001 Use new iterator_adaptor<> interface (David Abrahams) -// 10 Feb 2001 Rolled in supposed Borland fixes from John Maddock, but not -// seeing any improvement yet (David Abrahams) -// 09 Feb 2001 Factored out is_numeric computation. Borland still -// unhappy :( (David Abrahams) -// 08 Feb 2001 Beginning of a failed attempt to appease Borland -// (David Abrahams) -// 07 Feb 2001 rename counting_iterator() -> make_counting_iterator() -// (David Abrahams) -// 04 Feb 2001 Added counting_iterator_generator; updated comments -// (David Abrahams) -// 24 Jan 2001 initial revision, based on Jeremy Siek's -// boost/pending/integer_range.hpp (David Abrahams) - -#ifndef BOOST_COUNTING_ITERATOR_HPP_DWA20000119 -# define BOOST_COUNTING_ITERATOR_HPP_DWA20000119 - -# include -# include -# include -# include -# include -# include -# include - -namespace boost { - -namespace detail { - - // Template class counting_iterator_traits_select -- choose an - // iterator_category and difference_type for a counting_iterator at - // compile-time based on whether or not it wraps an integer or an iterator, - // using "poor man's partial specialization". - template struct counting_iterator_traits_select; - - // Incrementable is an iterator type - template <> - struct counting_iterator_traits_select - { - template - struct traits - { - private: - typedef boost::detail::iterator_traits x; - public: - typedef typename x::iterator_category iterator_category; - typedef typename x::difference_type difference_type; - }; - }; - - // Incrementable is a numeric type - template <> - struct counting_iterator_traits_select - { - template - struct traits - { - typedef typename - boost::detail::numeric_traits::difference_type - difference_type; - typedef std::random_access_iterator_tag iterator_category; - }; - }; - - // Template class distance_policy_select -- choose a policy for computing the - // distance between counting_iterators at compile-time based on whether or not - // the iterator wraps an integer or an iterator, using "poor man's partial - // specialization". - - template struct distance_policy_select; - - // A policy for wrapped iterators - template <> - struct distance_policy_select - { - template - struct policy { - static Distance distance(Incrementable x, Incrementable y) - { return boost::detail::distance(x, y); } - }; - }; - - // A policy for wrapped numbers - template <> - struct distance_policy_select - { - template - struct policy { - static Distance distance(Incrementable x, Incrementable y) - { return numeric_distance(x, y); } - }; - }; - - // Try to detect numeric types at compile time in ways compatible with the - // limitations of the compiler and library. - template - struct is_numeric { - // For a while, this wasn't true, but we rely on it below. This is a regression assert. - BOOST_STATIC_ASSERT(::boost::is_integral::value); -# ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -# if defined(BOOST_HAS_LONG_LONG) - BOOST_STATIC_CONSTANT(bool, - value = ( - std::numeric_limits::is_specialized - | boost::is_same::value - | boost::is_same::value)); -# else - BOOST_STATIC_CONSTANT(bool, value = std::numeric_limits::is_specialized); -# endif -# else -# if !defined(__BORLANDC__) - BOOST_STATIC_CONSTANT(bool, value = ( - boost::is_convertible::value && boost::is_convertible::value)); -# else - BOOST_STATIC_CONSTANT(bool, value = ::boost::is_arithmetic::value); -# endif -# endif - }; - - // Compute the distance over arbitrary numeric and/or iterator types - template - Distance any_distance(Incrementable start, Incrementable finish, Distance* = 0) - { - - return distance_policy_select<( - is_numeric::value)>::template - policy::distance(start, finish); - } - -} // namespace detail - -template -struct counting_iterator_traits { - private: - typedef ::boost::detail::counting_iterator_traits_select<( - ::boost::detail::is_numeric::value - )> binder; - typedef typename binder::template traits traits; - public: - typedef typename traits::difference_type difference_type; - typedef typename traits::iterator_category iterator_category; -}; - -template -struct counting_iterator_policies : public default_iterator_policies -{ - template - typename IteratorAdaptor::reference dereference(const IteratorAdaptor& i) const - { return i.base(); } - - template - typename Iterator1::difference_type distance( - const Iterator1& x, const Iterator2& y) const - { - typedef typename Iterator1::difference_type difference_type; - return boost::detail::any_distance( - x.base(), y.base()); - } -}; - -// A type generator for counting iterators -template -struct counting_iterator_generator -{ - typedef typename boost::remove_const< - Incrementable - >::type value_type; - - typedef counting_iterator_traits traits; - - typedef iterator_adaptor< - value_type - , counting_iterator_policies - , value_type - , value_type const& - , value_type const* - , typename traits::iterator_category - , typename traits::difference_type - > type; -}; - -// Manufacture a counting iterator for an arbitrary incrementable type -template -inline typename counting_iterator_generator::type -make_counting_iterator(Incrementable x) -{ - typedef typename counting_iterator_generator::type result_t; - return result_t(x); -} - - -} // namespace boost - -#endif // BOOST_COUNTING_ITERATOR_HPP_DWA20000119 diff --git a/sdk/include/boost/crc.hpp b/sdk/include/boost/crc.hpp deleted file mode 100644 index 213e3214b5d..00000000000 --- a/sdk/include/boost/crc.hpp +++ /dev/null @@ -1,1068 +0,0 @@ -// Boost CRC library crc.hpp header file -----------------------------------// - -// (C) Copyright Daryle Walker 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org/libs/crc for documentation. - -#ifndef BOOST_CRC_HPP -#define BOOST_CRC_HPP - -#include // for BOOST_STATIC_CONSTANT, etc. -#include // for boost::uint_t - -#include // for CHAR_BIT, etc. -#include // for std::size_t - -#include // for std::numeric_limits - - -// The type of CRC parameters that can go in a template should be related -// on the CRC's bit count. This macro expresses that type in a compact -// form, but also allows an alternate type for compilers that don't support -// dependent types (in template value-parameters). -#if !(defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) || (defined(BOOST_MSVC) && (BOOST_MSVC <= 1300))) -#define BOOST_CRC_PARM_TYPE typename ::boost::uint_t::fast -#else -#define BOOST_CRC_PARM_TYPE unsigned long -#endif - -// Some compilers [MS VC++ 6] cannot correctly set up several versions of a -// function template unless every template argument can be unambiguously -// deduced from the function arguments. (The bug is hidden if only one version -// is needed.) Since all of the CRC function templates have this problem, the -// workaround is to make up a dummy function argument that encodes the template -// arguments. Calls to such template functions need all their template -// arguments explicitly specified. At least one compiler that needs this -// workaround also needs the default value for the dummy argument to be -// specified in the definition. -#ifndef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -#define BOOST_CRC_DUMMY_PARM_TYPE -#define BOOST_CRC_DUMMY_INIT -#define BOOST_ACRC_DUMMY_PARM_TYPE -#define BOOST_ACRC_DUMMY_INIT -#else -namespace boost { namespace detail { - template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > - struct dummy_crc_argument { }; -} } -#define BOOST_CRC_DUMMY_PARM_TYPE , detail::dummy_crc_argument *p_ -#define BOOST_CRC_DUMMY_INIT BOOST_CRC_DUMMY_PARM_TYPE = 0 -#define BOOST_ACRC_DUMMY_PARM_TYPE , detail::dummy_crc_argument *p_ -#define BOOST_ACRC_DUMMY_INIT BOOST_ACRC_DUMMY_PARM_TYPE = 0 -#endif - - -namespace boost -{ - - -// Forward declarations ----------------------------------------------------// - -template < std::size_t Bits > - class crc_basic; - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly = 0u, - BOOST_CRC_PARM_TYPE InitRem = 0u, - BOOST_CRC_PARM_TYPE FinalXor = 0u, bool ReflectIn = false, - bool ReflectRem = false > - class crc_optimal; - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > - typename uint_t::fast crc( void const *buffer, - std::size_t byte_count - BOOST_CRC_DUMMY_PARM_TYPE ); - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly > - typename uint_t::fast augmented_crc( void const *buffer, - std::size_t byte_count, typename uint_t::fast initial_remainder - BOOST_ACRC_DUMMY_PARM_TYPE ); - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly > - typename uint_t::fast augmented_crc( void const *buffer, - std::size_t byte_count - BOOST_ACRC_DUMMY_PARM_TYPE ); - -typedef crc_optimal<16, 0x8005, 0, 0, true, true> crc_16_type; -typedef crc_optimal<16, 0x1021, 0xFFFF, 0, false, false> crc_ccitt_type; -typedef crc_optimal<16, 0x8408, 0, 0, true, true> crc_xmodem_type; - -typedef crc_optimal<32, 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF, true, true> - crc_32_type; - - -// Forward declarations for implementation detail stuff --------------------// -// (Just for the stuff that will be needed for the next two sections) - -namespace detail -{ - template < std::size_t Bits > - struct mask_uint_t; - - template < > - struct mask_uint_t< std::numeric_limits::digits >; - - #if USHRT_MAX > UCHAR_MAX - template < > - struct mask_uint_t< std::numeric_limits::digits >; - #endif - - #if UINT_MAX > USHRT_MAX - template < > - struct mask_uint_t< std::numeric_limits::digits >; - #endif - - #if ULONG_MAX > UINT_MAX - template < > - struct mask_uint_t< std::numeric_limits::digits >; - #endif - - template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, bool Reflect > - struct crc_table_t; - - template < std::size_t Bits, bool DoReflect > - class crc_helper; - - #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template < std::size_t Bits > - class crc_helper< Bits, false >; - #endif - -} // namespace detail - - -// Simple cyclic redundancy code (CRC) class declaration -------------------// - -template < std::size_t Bits > -class crc_basic -{ - // Implementation type - typedef detail::mask_uint_t masking_type; - -public: - // Type - typedef typename masking_type::least value_type; - - // Constant for the template parameter - BOOST_STATIC_CONSTANT( std::size_t, bit_count = Bits ); - - // Constructor - explicit crc_basic( value_type truncated_polynominal, - value_type initial_remainder = 0, value_type final_xor_value = 0, - bool reflect_input = false, bool reflect_remainder = false ); - - // Internal Operations - value_type get_truncated_polynominal() const; - value_type get_initial_remainder() const; - value_type get_final_xor_value() const; - bool get_reflect_input() const; - bool get_reflect_remainder() const; - - value_type get_interim_remainder() const; - void reset( value_type new_rem ); - void reset(); - - // External Operations - void process_bit( bool bit ); - void process_bits( unsigned char bits, std::size_t bit_count ); - void process_byte( unsigned char byte ); - void process_block( void const *bytes_begin, void const *bytes_end ); - void process_bytes( void const *buffer, std::size_t byte_count ); - - value_type checksum() const; - -private: - // Member data - value_type rem_; - value_type poly_, init_, final_; // non-const to allow assignability - bool rft_in_, rft_out_; // non-const to allow assignability - -}; // boost::crc_basic - - -// Optimized cyclic redundancy code (CRC) class declaration ----------------// - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -class crc_optimal -{ - // Implementation type - typedef detail::mask_uint_t masking_type; - -public: - // Type - typedef typename masking_type::fast value_type; - - // Constants for the template parameters - BOOST_STATIC_CONSTANT( std::size_t, bit_count = Bits ); - BOOST_STATIC_CONSTANT( value_type, truncated_polynominal = TruncPoly ); - BOOST_STATIC_CONSTANT( value_type, initial_remainder = InitRem ); - BOOST_STATIC_CONSTANT( value_type, final_xor_value = FinalXor ); - BOOST_STATIC_CONSTANT( bool, reflect_input = ReflectIn ); - BOOST_STATIC_CONSTANT( bool, reflect_remainder = ReflectRem ); - - // Constructor - explicit crc_optimal( value_type init_rem = InitRem ); - - // Internal Operations - value_type get_truncated_polynominal() const; - value_type get_initial_remainder() const; - value_type get_final_xor_value() const; - bool get_reflect_input() const; - bool get_reflect_remainder() const; - - value_type get_interim_remainder() const; - void reset( value_type new_rem = InitRem ); - - // External Operations - void process_byte( unsigned char byte ); - void process_block( void const *bytes_begin, void const *bytes_end ); - void process_bytes( void const *buffer, std::size_t byte_count ); - - value_type checksum() const; - - // Operators - void operator ()( unsigned char byte ); - value_type operator ()() const; - -private: - // The implementation of output reflection depends on both reflect states. - BOOST_STATIC_CONSTANT( bool, reflect_output = (ReflectRem != ReflectIn) ); - - #ifndef __BORLANDC__ - #define BOOST_CRC_REF_OUT_VAL reflect_output - #else - typedef crc_optimal self_type; - #define BOOST_CRC_REF_OUT_VAL (self_type::reflect_output) - #endif - - // More implementation types - typedef detail::crc_table_t crc_table_type; - typedef detail::crc_helper helper_type; - typedef detail::crc_helper reflect_out_type; - - #undef BOOST_CRC_REF_OUT_VAL - - // Member data - value_type rem_; - -}; // boost::crc_optimal - - -// Implementation detail stuff ---------------------------------------------// - -namespace detail -{ - // Forward declarations for more implementation details - template < std::size_t Bits > - struct high_uint_t; - - template < std::size_t Bits > - struct reflector; - - - // Traits class for mask; given the bit number - // (1-based), get the mask for that bit by itself. - template < std::size_t Bits > - struct high_uint_t - : boost::uint_t< Bits > - { - typedef boost::uint_t base_type; - typedef typename base_type::least least; - typedef typename base_type::fast fast; - - BOOST_STATIC_CONSTANT( least, high_bit = (least( 1u ) << ( Bits - - 1u )) ); - BOOST_STATIC_CONSTANT( fast, high_bit_fast = (fast( 1u ) << ( Bits - - 1u )) ); - - }; // boost::detail::high_uint_t - - - // Reflection routine class wrapper - // (since MS VC++ 6 couldn't handle the unwrapped version) - template < std::size_t Bits > - struct reflector - { - typedef typename boost::uint_t::fast value_type; - - static value_type reflect( value_type x ); - - }; // boost::detail::reflector - - // Function that reflects its argument - template < std::size_t Bits > - typename reflector::value_type - reflector::reflect - ( - typename reflector::value_type x - ) - { - value_type reflection = 0; - value_type const one = 1; - - for ( std::size_t i = 0 ; i < Bits ; ++i, x >>= 1 ) - { - if ( x & one ) - { - reflection |= ( one << (Bits - 1u - i) ); - } - } - - return reflection; - } - - - // Traits class for masks; given the bit number (1-based), - // get the mask for that bit and its lower bits. - template < std::size_t Bits > - struct mask_uint_t - : high_uint_t< Bits > - { - typedef high_uint_t base_type; - typedef typename base_type::least least; - typedef typename base_type::fast fast; - - #ifndef __BORLANDC__ - using base_type::high_bit; - using base_type::high_bit_fast; - #else - BOOST_STATIC_CONSTANT( least, high_bit = base_type::high_bit ); - BOOST_STATIC_CONSTANT( fast, high_bit_fast = base_type::high_bit_fast ); - #endif - - BOOST_STATIC_CONSTANT( least, sig_bits = (~( ~(least( 0u )) << Bits )) ); - BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); - - }; // boost::detail::mask_uint_t - - template < > - struct mask_uint_t< std::numeric_limits::digits > - : high_uint_t< std::numeric_limits::digits > - { - typedef high_uint_t::digits> - base_type; - typedef base_type::least least; - typedef base_type::fast fast; - - #ifndef __BORLANDC__ - using base_type::high_bit; - using base_type::high_bit_fast; - #else - BOOST_STATIC_CONSTANT( least, high_bit = base_type::high_bit ); - BOOST_STATIC_CONSTANT( fast, high_bit_fast = base_type::high_bit_fast ); - #endif - - BOOST_STATIC_CONSTANT( least, sig_bits = least(~( least(0u) )) ); - BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); - - }; // boost::detail::mask_uint_t - - #if USHRT_MAX > UCHAR_MAX - template < > - struct mask_uint_t< std::numeric_limits::digits > - : high_uint_t< std::numeric_limits::digits > - { - typedef high_uint_t::digits> - base_type; - typedef base_type::least least; - typedef base_type::fast fast; - - #ifndef __BORLANDC__ - using base_type::high_bit; - using base_type::high_bit_fast; - #else - BOOST_STATIC_CONSTANT( least, high_bit = base_type::high_bit ); - BOOST_STATIC_CONSTANT( fast, high_bit_fast = base_type::high_bit_fast ); - #endif - - BOOST_STATIC_CONSTANT( least, sig_bits = least(~( least(0u) )) ); - BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); - - }; // boost::detail::mask_uint_t - #endif - - #if UINT_MAX > USHRT_MAX - template < > - struct mask_uint_t< std::numeric_limits::digits > - : high_uint_t< std::numeric_limits::digits > - { - typedef high_uint_t::digits> - base_type; - typedef base_type::least least; - typedef base_type::fast fast; - - #ifndef __BORLANDC__ - using base_type::high_bit; - using base_type::high_bit_fast; - #else - BOOST_STATIC_CONSTANT( least, high_bit = base_type::high_bit ); - BOOST_STATIC_CONSTANT( fast, high_bit_fast = base_type::high_bit_fast ); - #endif - - BOOST_STATIC_CONSTANT( least, sig_bits = (~( least(0u) )) ); - BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); - - }; // boost::detail::mask_uint_t - #endif - - #if ULONG_MAX > UINT_MAX - template < > - struct mask_uint_t< std::numeric_limits::digits > - : high_uint_t< std::numeric_limits::digits > - { - typedef high_uint_t::digits> - base_type; - typedef base_type::least least; - typedef base_type::fast fast; - - #ifndef __BORLANDC__ - using base_type::high_bit; - using base_type::high_bit_fast; - #else - BOOST_STATIC_CONSTANT( least, high_bit = base_type::high_bit ); - BOOST_STATIC_CONSTANT( fast, high_bit_fast = base_type::high_bit_fast ); - #endif - - BOOST_STATIC_CONSTANT( least, sig_bits = (~( least(0u) )) ); - BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); - - }; // boost::detail::mask_uint_t - #endif - - - // CRC table generator - template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, bool Reflect > - struct crc_table_t - { - BOOST_STATIC_CONSTANT( std::size_t, byte_combos = (1ul << CHAR_BIT) ); - - typedef mask_uint_t masking_type; - typedef typename masking_type::fast value_type; -#if defined(__BORLANDC__) && defined(_M_IX86) && (__BORLANDC__ == 0x560) - // for some reason Borland's command line compiler (version 0x560) - // chokes over this unless we do the calculation for it: - typedef value_type table_type[ 0x100 ]; -#else - typedef value_type table_type[ byte_combos ]; -#endif - - static void init_table(); - - static table_type table_; - - }; // boost::detail::crc_table_t - - // CRC table generator static data member definition - // (Some compilers [Borland C++] require the initializer to be present.) - template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, bool Reflect > - typename crc_table_t::table_type - crc_table_t::table_ - = { 0 }; - - // Populate CRC lookup table - template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, bool Reflect > - void - crc_table_t::init_table - ( - ) - { - // compute table only on the first run - static bool did_init = false; - if ( did_init ) return; - - // factor-out constants to avoid recalculation - value_type const fast_hi_bit = masking_type::high_bit_fast; - unsigned char const byte_hi_bit = 1u << (CHAR_BIT - 1u); - - // loop over every possible dividend value - unsigned char dividend = 0; - do - { - value_type remainder = 0; - - // go through all the dividend's bits - for ( unsigned char mask = byte_hi_bit ; mask ; mask >>= 1 ) - { - // check if divisor fits - if ( dividend & mask ) - { - remainder ^= fast_hi_bit; - } - - // do polynominal division - if ( remainder & fast_hi_bit ) - { - remainder <<= 1; - remainder ^= TruncPoly; - } - else - { - remainder <<= 1; - } - } - - table_[ crc_helper::reflect(dividend) ] - = crc_helper::reflect( remainder ); - } - while ( ++dividend ); - - did_init = true; - } - - - // CRC helper routines - template < std::size_t Bits, bool DoReflect > - class crc_helper - { - public: - // Type - typedef typename uint_t::fast value_type; - - #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // Possibly reflect a remainder - static value_type reflect( value_type x ) - { return detail::reflector::reflect( x ); } - - // Compare a byte to the remainder's highest byte - static unsigned char index( value_type rem, unsigned char x ) - { return (unsigned char)(x ^ (rem & 0xff)); } - - // Shift out the remainder's highest byte - static value_type shift( value_type rem ) - { return rem >> CHAR_BIT; } - #else - // Possibly reflect a remainder - static value_type reflect( value_type x ) - { return DoReflect ? detail::reflector::reflect( x ) : x; } - - // Compare a byte to the remainder's highest byte - static unsigned char index( value_type rem, unsigned char x ) - { return x ^ ( rem >> (DoReflect ? 0u : Bits - CHAR_BIT) ); } - - // Shift out the remainder's highest byte - static value_type shift( value_type rem ) - { return DoReflect ? rem >> CHAR_BIT : rem << CHAR_BIT; } - #endif - - }; // boost::detail::crc_helper - - #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template < std::size_t Bits > - class crc_helper - { - public: - // Type - typedef typename uint_t::fast value_type; - - // Possibly reflect a remainder - static value_type reflect( value_type x ) - { return x; } - - // Compare a byte to the remainder's highest byte - static unsigned char index( value_type rem, unsigned char x ) - { return x ^ ( rem >> (Bits - CHAR_BIT) ); } - - // Shift out the remainder's highest byte - static value_type shift( value_type rem ) - { return rem << CHAR_BIT; } - - }; // boost::detail::crc_helper - #endif - - -} // namespace detail - - -// Simple CRC class function definitions -----------------------------------// - -template < std::size_t Bits > -inline -crc_basic::crc_basic -( - typename crc_basic::value_type truncated_polynominal, - typename crc_basic::value_type initial_remainder, // = 0 - typename crc_basic::value_type final_xor_value, // = 0 - bool reflect_input, // = false - bool reflect_remainder // = false -) - : rem_( initial_remainder ), poly_( truncated_polynominal ) - , init_( initial_remainder ), final_( final_xor_value ) - , rft_in_( reflect_input ), rft_out_( reflect_remainder ) -{ -} - -template < std::size_t Bits > -inline -typename crc_basic::value_type -crc_basic::get_truncated_polynominal -( -) const -{ - return poly_; -} - -template < std::size_t Bits > -inline -typename crc_basic::value_type -crc_basic::get_initial_remainder -( -) const -{ - return init_; -} - -template < std::size_t Bits > -inline -typename crc_basic::value_type -crc_basic::get_final_xor_value -( -) const -{ - return final_; -} - -template < std::size_t Bits > -inline -bool -crc_basic::get_reflect_input -( -) const -{ - return rft_in_; -} - -template < std::size_t Bits > -inline -bool -crc_basic::get_reflect_remainder -( -) const -{ - return rft_out_; -} - -template < std::size_t Bits > -inline -typename crc_basic::value_type -crc_basic::get_interim_remainder -( -) const -{ - return rem_ & masking_type::sig_bits; -} - -template < std::size_t Bits > -inline -void -crc_basic::reset -( - typename crc_basic::value_type new_rem -) -{ - rem_ = new_rem; -} - -template < std::size_t Bits > -inline -void -crc_basic::reset -( -) -{ - this->reset( this->get_initial_remainder() ); -} - -template < std::size_t Bits > -inline -void -crc_basic::process_bit -( - bool bit -) -{ - value_type const high_bit_mask = masking_type::high_bit; - - // compare the new bit with the remainder's highest - rem_ ^= ( bit ? high_bit_mask : 0u ); - - // a full polynominal division step is done when the highest bit is one - bool const do_poly_div = static_cast( rem_ & high_bit_mask ); - - // shift out the highest bit - rem_ <<= 1; - - // carry out the division, if needed - if ( do_poly_div ) - { - rem_ ^= poly_; - } -} - -template < std::size_t Bits > -void -crc_basic::process_bits -( - unsigned char bits, - std::size_t bit_count -) -{ - // ignore the bits above the ones we want - bits <<= CHAR_BIT - bit_count; - - // compute the CRC for each bit, starting with the upper ones - unsigned char const high_bit_mask = 1u << ( CHAR_BIT - 1u ); - for ( std::size_t i = bit_count ; i > 0u ; --i, bits <<= 1u ) - { - process_bit( static_cast(bits & high_bit_mask) ); - } -} - -template < std::size_t Bits > -inline -void -crc_basic::process_byte -( - unsigned char byte -) -{ - process_bits( (rft_in_ ? detail::reflector::reflect(byte) - : byte), CHAR_BIT ); -} - -template < std::size_t Bits > -void -crc_basic::process_block -( - void const * bytes_begin, - void const * bytes_end -) -{ - for ( unsigned char const * p - = static_cast(bytes_begin) ; p < bytes_end ; ++p ) - { - process_byte( *p ); - } -} - -template < std::size_t Bits > -inline -void -crc_basic::process_bytes -( - void const * buffer, - std::size_t byte_count -) -{ - unsigned char const * const b = static_cast( - buffer ); - - process_block( b, b + byte_count ); -} - -template < std::size_t Bits > -inline -typename crc_basic::value_type -crc_basic::checksum -( -) const -{ - return ( (rft_out_ ? detail::reflector::reflect( rem_ ) : rem_) - ^ final_ ) & masking_type::sig_bits; -} - - -// Optimized CRC class function definitions --------------------------------// - -// Macro to compact code -#define BOOST_CRC_OPTIMAL_NAME crc_optimal - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -BOOST_CRC_OPTIMAL_NAME::crc_optimal -( - typename BOOST_CRC_OPTIMAL_NAME::value_type init_rem // = InitRem -) - : rem_( helper_type::reflect(init_rem) ) -{ - crc_table_type::init_table(); -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -typename BOOST_CRC_OPTIMAL_NAME::value_type -BOOST_CRC_OPTIMAL_NAME::get_truncated_polynominal -( -) const -{ - return TruncPoly; -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -typename BOOST_CRC_OPTIMAL_NAME::value_type -BOOST_CRC_OPTIMAL_NAME::get_initial_remainder -( -) const -{ - return InitRem; -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -typename BOOST_CRC_OPTIMAL_NAME::value_type -BOOST_CRC_OPTIMAL_NAME::get_final_xor_value -( -) const -{ - return FinalXor; -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -bool -BOOST_CRC_OPTIMAL_NAME::get_reflect_input -( -) const -{ - return ReflectIn; -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -bool -BOOST_CRC_OPTIMAL_NAME::get_reflect_remainder -( -) const -{ - return ReflectRem; -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -typename BOOST_CRC_OPTIMAL_NAME::value_type -BOOST_CRC_OPTIMAL_NAME::get_interim_remainder -( -) const -{ - // Interim remainder should be _un_-reflected, so we have to undo it. - return helper_type::reflect( rem_ ) & masking_type::sig_bits_fast; -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -void -BOOST_CRC_OPTIMAL_NAME::reset -( - typename BOOST_CRC_OPTIMAL_NAME::value_type new_rem // = InitRem -) -{ - rem_ = helper_type::reflect( new_rem ); -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -void -BOOST_CRC_OPTIMAL_NAME::process_byte -( - unsigned char byte -) -{ - process_bytes( &byte, sizeof(byte) ); -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -void -BOOST_CRC_OPTIMAL_NAME::process_block -( - void const * bytes_begin, - void const * bytes_end -) -{ - // Recompute the CRC for each byte passed - for ( unsigned char const * p - = static_cast(bytes_begin) ; p < bytes_end ; ++p ) - { - // Compare the new byte with the remainder's higher bits to - // get the new bits, shift out the remainder's current higher - // bits, and update the remainder with the polynominal division - // of the new bits. - unsigned char const byte_index = helper_type::index( rem_, *p ); - rem_ = helper_type::shift( rem_ ); - rem_ ^= crc_table_type::table_[ byte_index ]; - } -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -void -BOOST_CRC_OPTIMAL_NAME::process_bytes -( - void const * buffer, - std::size_t byte_count -) -{ - unsigned char const * const b = static_cast( - buffer ); - process_block( b, b + byte_count ); -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -typename BOOST_CRC_OPTIMAL_NAME::value_type -BOOST_CRC_OPTIMAL_NAME::checksum -( -) const -{ - return ( reflect_out_type::reflect(rem_) ^ get_final_xor_value() ) - & masking_type::sig_bits_fast; -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -void -BOOST_CRC_OPTIMAL_NAME::operator () -( - unsigned char byte -) -{ - process_byte( byte ); -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -typename BOOST_CRC_OPTIMAL_NAME::value_type -BOOST_CRC_OPTIMAL_NAME::operator () -( -) const -{ - return checksum(); -} - - -// CRC computation function definition -------------------------------------// - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, - BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, - bool ReflectIn, bool ReflectRem > -inline -typename uint_t::fast -crc -( - void const * buffer, - std::size_t byte_count - BOOST_CRC_DUMMY_INIT -) -{ - BOOST_CRC_OPTIMAL_NAME computer; - computer.process_bytes( buffer, byte_count ); - return computer.checksum(); -} - - -// Augmented-message CRC computation function definitions ------------------// - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly > -typename uint_t::fast -augmented_crc -( - void const * buffer, - std::size_t byte_count, - typename uint_t::fast initial_remainder - BOOST_ACRC_DUMMY_INIT -) -{ - typedef unsigned char byte_type; - typedef detail::mask_uint_t masking_type; - typedef detail::crc_table_t crc_table_type; - - typename masking_type::fast rem = initial_remainder; - byte_type const * const b = static_cast( buffer ); - byte_type const * const e = b + byte_count; - - crc_table_type::init_table(); - for ( byte_type const * p = b ; p < e ; ++p ) - { - // Use the current top byte as the table index to the next - // "partial product." Shift out that top byte, shifting in - // the next augmented-message byte. Complete the division. - byte_type const byte_index = rem >> ( Bits - CHAR_BIT ); - rem <<= CHAR_BIT; - rem |= *p; - rem ^= crc_table_type::table_[ byte_index ]; - } - - return rem & masking_type::sig_bits_fast; -} - -template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly > -inline -typename uint_t::fast -augmented_crc -( - void const * buffer, - std::size_t byte_count - BOOST_ACRC_DUMMY_INIT -) -{ - // The last function argument has its type specified so the other version of - // augmented_crc will be called. If the cast wasn't in place, and the - // BOOST_ACRC_DUMMY_INIT added a third argument (for a workaround), the "0" - // would match as that third argument, leading to infinite recursion. - return augmented_crc( buffer, byte_count, - static_cast::fast>(0) ); -} - - -} // namespace boost - - -// Undo header-private macros -#undef BOOST_CRC_OPTIMAL_NAME -#undef BOOST_ACRC_DUMMY_INIT -#undef BOOST_ACRC_DUMMY_PARM_TYPE -#undef BOOST_CRC_DUMMY_INIT -#undef BOOST_CRC_DUMMY_PARM_TYPE -#undef BOOST_CRC_PARM_TYPE - - -#endif // BOOST_CRC_HPP - diff --git a/sdk/include/boost/cregex.hpp b/sdk/include/boost/cregex.hpp deleted file mode 100644 index e35a6c36edb..00000000000 --- a/sdk/include/boost/cregex.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * Dr John Maddock - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Dr John Maddock makes no representations - * about the suitability of this software for any purpose. - * It is provided "as is" without express or implied warranty. - * - */ - - /* - * LOCATION: see http://www.boost.org/libs/regex for most recent version. - * FILE cregex.cpp - * VERSION see - * DESCRIPTION: Declares POSIX API functions - * + boost::RegEx high level wrapper. - */ - -#ifndef BOOST_RE_CREGEX_HPP -#define BOOST_RE_CREGEX_HPP - -#include - -#endif // include guard - - - - - - - - diff --git a/sdk/include/boost/cstdint.hpp b/sdk/include/boost/cstdint.hpp deleted file mode 100644 index 69235cd3453..00000000000 --- a/sdk/include/boost/cstdint.hpp +++ /dev/null @@ -1,395 +0,0 @@ -// boost cstdint.hpp header file ------------------------------------------// - -// (C) Copyright boost.org 1999. Permission to copy, use, modify, sell -// and distribute this software is granted provided this copyright -// notice appears in all copies. This software is provided "as is" without -// express or implied warranty, and with no claim as to its suitability for -// any purpose. - -// See http://www.boost.org/libs/integer for documentation. - -// Revision History -// 31 Oct 01 use BOOST_HAS_LONG_LONG to check for "long long" (Jens M.) -// 16 Apr 01 check LONGLONG_MAX when looking for "long long" (Jens Maurer) -// 23 Jan 01 prefer "long" over "int" for int32_t and intmax_t (Jens Maurer) -// 12 Nov 00 Merged (Jens Maurer) -// 23 Sep 00 Added INTXX_C macro support (John Maddock). -// 22 Sep 00 Better 64-bit support (John Maddock) -// 29 Jun 00 Reimplement to avoid including stdint.h within namespace boost -// 8 Aug 99 Initial version (Beman Dawes) - - -#ifndef BOOST_CSTDINT_HPP -#define BOOST_CSTDINT_HPP - -#include - - -#ifdef BOOST_HAS_STDINT_H - -// The following #include is an implementation artifact; not part of interface. -# ifdef __hpux -// HP-UX has a vaguely nice in a non-standard location -# include -# ifdef __STDC_32_MODE__ - // this is triggered with GCC, because it defines __cplusplus < 199707L -# define BOOST_NO_INT64_T -# endif -# elif defined(__FreeBSD__) || defined(__IBMCPP__) -# include -# else -# include -# endif - -namespace boost -{ - - using ::int8_t; - using ::int_least8_t; - using ::int_fast8_t; - using ::uint8_t; - using ::uint_least8_t; - using ::uint_fast8_t; - - using ::int16_t; - using ::int_least16_t; - using ::int_fast16_t; - using ::uint16_t; - using ::uint_least16_t; - using ::uint_fast16_t; - - using ::int32_t; - using ::int_least32_t; - using ::int_fast32_t; - using ::uint32_t; - using ::uint_least32_t; - using ::uint_fast32_t; - -# ifndef BOOST_NO_INT64_T - - using ::int64_t; - using ::int_least64_t; - using ::int_fast64_t; - using ::uint64_t; - using ::uint_least64_t; - using ::uint_fast64_t; - -# endif - - using ::intmax_t; - using ::uintmax_t; - -} // namespace boost - -#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) -// FreeBSD has an that contains much of what we need -# include - -namespace boost { - - using ::int8_t; - typedef int8_t int_least8_t; - typedef int8_t int_fast8_t; - using ::uint8_t; - typedef uint8_t uint_least8_t; - typedef uint8_t uint_fast8_t; - - using ::int16_t; - typedef int16_t int_least16_t; - typedef int16_t int_fast16_t; - using ::uint16_t; - typedef uint16_t uint_least16_t; - typedef uint16_t uint_fast16_t; - - using ::int32_t; - typedef int32_t int_least32_t; - typedef int32_t int_fast32_t; - using ::uint32_t; - typedef uint32_t uint_least32_t; - typedef uint32_t uint_fast32_t; - -# ifndef BOOST_NO_INT64_T - - using ::int64_t; - typedef int64_t int_least64_t; - typedef int64_t int_fast64_t; - using ::uint64_t; - typedef uint64_t uint_least64_t; - typedef uint64_t uint_fast64_t; - - typedef int64_t intmax_t; - typedef uint64_t uintmax_t; - -# else - - typedef int32_t intmax_t; - typedef uint32_t uintmax_t; - -# endif - -} // namespace boost - -#else // BOOST_HAS_STDINT_H - -# include // implementation artifact; not part of interface - - -namespace boost -{ - -// These are fairly safe guesses for some 16-bit, and most 32-bit and 64-bit -// platforms. For other systems, they will have to be hand tailored. -// -// Because the fast types are assumed to be the same as the undecorated types, -// it may be possible to hand tailor a more efficient implementation. Such -// an optimization may be illusionary; on the Intel x86-family 386 on, for -// example, byte arithmetic and load/stores are as fast as "int" sized ones. - -// 8-bit types ------------------------------------------------------------// - -# if UCHAR_MAX == 0xff - typedef signed char int8_t; - typedef signed char int_least8_t; - typedef signed char int_fast8_t; - typedef unsigned char uint8_t; - typedef unsigned char uint_least8_t; - typedef unsigned char uint_fast8_t; -# else -# error defaults not correct; you must hand modify boost/cstdint.hpp -# endif - -// 16-bit types -----------------------------------------------------------// - -# if USHRT_MAX == 0xffff -# if defined(__crayx1) - // The Cray X1 has a 16-bit short, however it is not recommend - // for use in performance critical code. - typedef short int16_t; - typedef short int_least16_t; - typedef int int_fast16_t; - typedef unsigned short uint16_t; - typedef unsigned short uint_least16_t; - typedef unsigned int uint_fast16_t; -# else - typedef short int16_t; - typedef short int_least16_t; - typedef short int_fast16_t; - typedef unsigned short uint16_t; - typedef unsigned short uint_least16_t; - typedef unsigned short uint_fast16_t; -# endif -# elif (USHRT_MAX == 0xffffffff) && defined(CRAY) - // no 16-bit types on Cray: - typedef short int_least16_t; - typedef short int_fast16_t; - typedef unsigned short uint_least16_t; - typedef unsigned short uint_fast16_t; -# else -# error defaults not correct; you must hand modify boost/cstdint.hpp -# endif - -// 32-bit types -----------------------------------------------------------// - -# if ULONG_MAX == 0xffffffff - typedef long int32_t; - typedef long int_least32_t; - typedef long int_fast32_t; - typedef unsigned long uint32_t; - typedef unsigned long uint_least32_t; - typedef unsigned long uint_fast32_t; -# elif UINT_MAX == 0xffffffff - typedef int int32_t; - typedef int int_least32_t; - typedef int int_fast32_t; - typedef unsigned int uint32_t; - typedef unsigned int uint_least32_t; - typedef unsigned int uint_fast32_t; -# else -# error defaults not correct; you must hand modify boost/cstdint.hpp -# endif - -// 64-bit types + intmax_t and uintmax_t ----------------------------------// - -# if defined(BOOST_HAS_LONG_LONG) && \ - !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \ - (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \ - (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) -# if defined(__hpux) - // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions -# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL) - // 2**64 - 1 -# else -# error defaults not correct; you must hand modify boost/cstdint.hpp -# endif - - typedef long long intmax_t; - typedef unsigned long long uintmax_t; - typedef long long int64_t; - typedef long long int_least64_t; - typedef long long int_fast64_t; - typedef unsigned long long uint64_t; - typedef unsigned long long uint_least64_t; - typedef unsigned long long uint_fast64_t; - -# elif ULONG_MAX != 0xffffffff - -# if ULONG_MAX == 18446744073709551615 // 2**64 - 1 - typedef long intmax_t; - typedef unsigned long uintmax_t; - typedef long int64_t; - typedef long int_least64_t; - typedef long int_fast64_t; - typedef unsigned long uint64_t; - typedef unsigned long uint_least64_t; - typedef unsigned long uint_fast64_t; -# else -# error defaults not correct; you must hand modify boost/cstdint.hpp -# endif -# elif defined(BOOST_HAS_MS_INT64) - // - // we have Borland/Intel/Microsoft __int64: - // - typedef __int64 intmax_t; - typedef unsigned __int64 uintmax_t; - typedef __int64 int64_t; - typedef __int64 int_least64_t; - typedef __int64 int_fast64_t; - typedef unsigned __int64 uint64_t; - typedef unsigned __int64 uint_least64_t; - typedef unsigned __int64 uint_fast64_t; -# else // assume no 64-bit integers -# define BOOST_NO_INT64_T - typedef int32_t intmax_t; - typedef uint32_t uintmax_t; -# endif - -} // namespace boost - - -#endif // BOOST_HAS_STDINT_H - -#endif // BOOST_CSTDINT_HPP - - -/**************************************************** - -Macro definition section: - -Define various INTXX_C macros only if -__STDC_CONSTANT_MACROS is defined. - -Undefine the macros if __STDC_CONSTANT_MACROS is -not defined and the macros are (cf ). - -Added 23rd September 2000 (John Maddock). -Modified 11th September 2001 to be excluded when -BOOST_HAS_STDINT_H is defined (John Maddock). - -******************************************************/ - -#if defined(__STDC_CONSTANT_MACROS) && !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && !defined(BOOST_HAS_STDINT_H) -# define BOOST__STDC_CONSTANT_MACROS_DEFINED -# if defined(BOOST_HAS_MS_INT64) -// -// Borland/Intel/Microsoft compilers have width specific suffixes: -// -# define INT8_C(value) value##i8 -# define INT16_C(value) value##i16 -# define INT32_C(value) value##i32 -# define INT64_C(value) value##i64 -# ifdef __BORLANDC__ - // Borland bug: appending ui8 makes the type a signed char -# define UINT8_C(value) static_cast(value##u) -# else -# define UINT8_C(value) value##ui8 -# endif -# define UINT16_C(value) value##ui16 -# define UINT32_C(value) value##ui32 -# define UINT64_C(value) value##ui64 -# define INTMAX_C(value) value##i64 -# define UINTMAX_C(value) value##ui64 - -# else -// do it the old fashioned way: - -// 8-bit types ------------------------------------------------------------// - -# if UCHAR_MAX == 0xff -# define INT8_C(value) static_cast(value) -# define UINT8_C(value) static_cast(value##u) -# endif - -// 16-bit types -----------------------------------------------------------// - -# if USHRT_MAX == 0xffff -# define INT16_C(value) static_cast(value) -# define UINT16_C(value) static_cast(value##u) -# endif - -// 32-bit types -----------------------------------------------------------// - -# if UINT_MAX == 0xffffffff -# define INT32_C(value) value -# define UINT32_C(value) value##u -# elif ULONG_MAX == 0xffffffff -# define INT32_C(value) value##L -# define UINT32_C(value) value##uL -# endif - -// 64-bit types + intmax_t and uintmax_t ----------------------------------// - -# if defined(BOOST_HAS_LONG_LONG) && \ - (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) - -# if defined(__hpux) - // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions -# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615U) || \ - (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615U) || \ - (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615U) - -# else -# error defaults not correct; you must hand modify boost/cstdint.hpp -# endif -# define INT64_C(value) value##LL -# define UINT64_C(value) value##uLL -# elif ULONG_MAX != 0xffffffff - -# if ULONG_MAX == 18446744073709551615 // 2**64 - 1 -# define INT64_C(value) value##L -# define UINT64_C(value) value##uL -# else -# error defaults not correct; you must hand modify boost/cstdint.hpp -# endif -# endif - -# ifdef BOOST_NO_INT64_T -# define INTMAX_C(value) INT32_C(value) -# define UINTMAX_C(value) UINT32_C(value) -# else -# define INTMAX_C(value) INT64_C(value) -# define UINTMAX_C(value) UINT64_C(value) -# endif - -# endif // Borland/Microsoft specific width suffixes - - -#elif defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && !defined(__STDC_CONSTANT_MACROS) && !defined(BOOST_HAS_STDINT_H) -// -// undef all the macros: -// -# undef INT8_C -# undef INT16_C -# undef INT32_C -# undef INT64_C -# undef UINT8_C -# undef UINT16_C -# undef UINT32_C -# undef UINT64_C -# undef INTMAX_C -# undef UINTMAX_C - -#endif // __STDC_CONSTANT_MACROS_DEFINED etc. - - - - diff --git a/sdk/include/boost/cstdlib.hpp b/sdk/include/boost/cstdlib.hpp deleted file mode 100644 index a757be2d121..00000000000 --- a/sdk/include/boost/cstdlib.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// boost/cstdlib.hpp header ------------------------------------------------// - -// (C) Copyright Beman Dawes 2001. Permission to copy, use, modify, sell -// and distribute this software is granted provided this copyright notice -// appears in all copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org/libs/utility/cstdlib.html for documentation. - -// Revision History -// 26 Feb 01 Initial version (Beman Dawes) - -#ifndef BOOST_CSTDLIB_HPP -#define BOOST_CSTDLIB_HPP - -#include - -namespace boost -{ - // The intent is to propose the following for addition to namespace std - // in the C++ Standard Library, and to then deprecate EXIT_SUCCESS and - // EXIT_FAILURE. As an implementation detail, this header defines the - // new constants in terms of EXIT_SUCCESS and EXIT_FAILURE. In a new - // standard, the constants would be implementation-defined, although it - // might be worthwhile to "suggest" (which a standard is allowed to do) - // values of 0 and 1 respectively. - - // Rationale for having multiple failure values: some environments may - // wish to distinguish between different classes of errors. - // Rationale for choice of values: programs often use values < 100 for - // their own error reporting. Values > 255 are sometimes reserved for - // system detected errors. 200/201 were suggested to minimize conflict. - - const int exit_success = EXIT_SUCCESS; // implementation-defined value - const int exit_failure = EXIT_FAILURE; // implementation-defined value - const int exit_exception_failure = 200; // otherwise uncaught exception - const int exit_test_failure = 201; // report_error or - // report_critical_error called. -} - -#endif - diff --git a/sdk/include/boost/current_function.hpp b/sdk/include/boost/current_function.hpp deleted file mode 100644 index 66cb7297346..00000000000 --- a/sdk/include/boost/current_function.hpp +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED -#define BOOST_CURRENT_FUNCTION_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/current_function.hpp - BOOST_CURRENT_FUNCTION -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// http://www.boost.org/libs/utility/current_function.html -// - -namespace boost -{ - -namespace detail -{ - -inline void current_function_helper() -{ - -#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) - -# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__ - -#elif defined(__FUNCSIG__) - -# define BOOST_CURRENT_FUNCTION __FUNCSIG__ - -#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x550) - -# define BOOST_CURRENT_FUNCTION __FUNC__ - -#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901) - -# define BOOST_CURRENT_FUNCTION __func__ - -#else - -# define BOOST_CURRENT_FUNCTION "(unknown)" - -#endif - -} - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED diff --git a/sdk/include/boost/date_time/adjust_functors.hpp b/sdk/include/boost/date_time/adjust_functors.hpp deleted file mode 100644 index 5e8027f18a5..00000000000 --- a/sdk/include/boost/date_time/adjust_functors.hpp +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef _DATE_TIME_ADJUST_FUNCTORS_HPP___ -#define _DATE_TIME_ADJUST_FUNCTORS_HPP___ -/* Copyright (c) 2001 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/date.hpp" -#include "boost/date_time/wrapping_int.hpp" - -namespace boost { -namespace date_time { - - - //! Functor to iterate a fixed number of days - template - class day_functor - { - public: - typedef typename date_type::duration_type duration_type; - day_functor(int f) : f_(f) {} - duration_type get_offset(const date_type& d) const - { - return duration_type(f_); - } - private: - int f_; - }; - - - //! Provides calculation to find next nth month given a date - /*! This adjustment function provides the logic for 'month-based' - * advancement on a ymd based calendar. The policy it uses - * to handle the non existant end of month days is to back - * up to the last day of the month. Also, if the starting - * date is the last day of a month, this functor will attempt - * to adjust to the end of the month. - - */ - template - class month_functor - { - public: - typedef typename date_type::duration_type duration_type; - typedef typename date_type::calendar_type cal_type; - typedef typename cal_type::ymd_type ymd_type; - typedef typename cal_type::day_type day_type; - - month_functor(int f) : f_(f), origDayOfMonth_(0) {} - duration_type get_offset(const date_type& d) const - { - ymd_type ymd(d.year_month_day()); - if (origDayOfMonth_ == 0) { - origDayOfMonth_ = ymd.day; - day_type endOfMonthDay(cal_type::end_of_month_day(ymd.year,ymd.month)); - if (endOfMonthDay == ymd.day) { - origDayOfMonth_ = -1; //force the value to the end of month - } - } - date_time::wrapping_int2 wi(ymd.month); - unsigned long year = wi.add(f_); //calc the year wrap around - year += ymd.year; //now add in the current year -// std::cout << "trace wi: " << wi.as_int() << std::endl; -// std::cout << "trace year: " << year << std::endl; - //find the last day for the new month - day_type resultingEndOfMonthDay(cal_type::end_of_month_day(year, wi.as_int())); - //original was the end of month -- force to last day of month - if (origDayOfMonth_ == -1) { - return date_type(year, wi.as_int(), resultingEndOfMonthDay) - d; - } - day_type dayOfMonth = origDayOfMonth_; - if (dayOfMonth > resultingEndOfMonthDay) { - dayOfMonth = resultingEndOfMonthDay; - } - return date_type(year, wi.as_int(), dayOfMonth) - d; - } - private: - int f_; - mutable short origDayOfMonth_; - }; - - - //! Functor to iterate a over weeks - template - class week_functor - { - public: - typedef typename date_type::duration_type duration_type; - typedef typename date_type::calendar_type calendar_type; - week_functor(int f) : f_(f) {} - duration_type get_offset(const date_type& d) const - { - return duration_type(f_*calendar_type::days_in_week()); - } - private: - int f_; - }; - - //! Functor to iterate by a year adjusting for leap years - /*! - *@throws bad_day if date value is invalid (eg: feb 29) - */ - template - class year_functor - { - public: - typedef typename date_type::year_type year_type; - typedef typename date_type::duration_type duration_type; - year_functor(int f) : f_(f) {} - duration_type get_offset(const date_type& d) const - { - date_type new_date(d.year()+f_, d.month(), d.day()); - return new_date-d; - } - private: - int f_; - }; - - - -} }//namespace date_time - -/* Copyright (c) 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/c_local_time_adjustor.hpp b/sdk/include/boost/date_time/c_local_time_adjustor.hpp deleted file mode 100644 index 227533606a7..00000000000 --- a/sdk/include/boost/date_time/c_local_time_adjustor.hpp +++ /dev/null @@ -1,72 +0,0 @@ - -#ifndef DATE_TIME_C_LOCAL_TIME_ADJUSTOR_HPP__ -#define DATE_TIME_C_LOCAL_TIME_ADJUSTOR_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -/*! @file c_local_time_adjustor.hpp - Time adjustment calculations based on machine -*/ - -#include -#include "boost/date_time/c_time.hpp" - -namespace boost { -namespace date_time { - - //! Adjust to / from utc using the C API - /*! Warning!!! This class assumes that timezone settings of the - * machine are correct. This can be a very dangerous assumption. - */ - template - class c_local_adjustor - { - public: - typedef typename time_type::time_duration_type time_duration_type; - typedef typename time_type::date_type date_type; - typedef typename date_type::duration_type date_duration_type; - //! Convert a utc time to local time - static time_type utc_to_local(const time_type& t) - { - date_type time_t_start_day(1970,1,1); - time_type time_t_start_time(time_t_start_day,time_duration_type(0,0,0)); - if (t < time_t_start_time) { - throw std::out_of_range("Cannot convert dates prior to Jan 1, 1970"); - } - date_duration_type dd = t.date() - time_t_start_day; - time_duration_type td = t.time_of_day(); - std::time_t t2 = dd.days()*86400 + td.hours()*3600 + td.minutes()*60 + td.seconds(); - std::tm* tms = std::localtime(&t2); - date_type d(tms->tm_year + 1900, - tms->tm_mon + 1, - tms->tm_mday); - time_duration_type td2(tms->tm_hour, - tms->tm_min, - tms->tm_sec, - t.time_of_day().fractional_seconds()); - - return time_type(d,td2); - } - }; - - - -} } //namespace date_time - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif diff --git a/sdk/include/boost/date_time/c_time.hpp b/sdk/include/boost/date_time/c_time.hpp deleted file mode 100644 index a6e865c5b72..00000000000 --- a/sdk/include/boost/date_time/c_time.hpp +++ /dev/null @@ -1,39 +0,0 @@ - -#ifndef DATE_TIME_C_TIME_HPP___ -#define DATE_TIME_C_TIME_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -/*! @file c_time.hpp - Provide workarounds related to the ctime header -*/ - -#include "boost/date_time/compiler_config.hpp" -#include -//Work around libraries that don't put time_t and time in namespace std - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::time_t; using ::time; using ::localtime; - using ::tm; using ::gmtime; } -#endif - -//The following is used to support high precision time clocks -#ifdef BOOST_HAS_GETTIMEOFDAY -#include -#endif - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/compiler_config.hpp b/sdk/include/boost/date_time/compiler_config.hpp deleted file mode 100644 index 7b30ee13460..00000000000 --- a/sdk/include/boost/date_time/compiler_config.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef DATE_TIME_COMPILER_CONFIG_HPP___ -#define DATE_TIME_COMPILER_CONFIG_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - * $Date: 2003/02/19 12:25:03 $ - */ - -// This file performs some local compiler configurations - -#include "boost/date_time/locale_config.hpp" //set up locale configurations - -//Set up a configuration parameter for platforms that have -//GetTimeOfDay -#ifdef BOOST_HAS_GETTIMEOFDAY -#define BOOST_DATE_TIME_HAS_GETTIMEOFDAY_HIGH_PRECISION_CLOCK -#endif - - -#if (defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) || (defined(__BORLANDC__))) -#define BOOST_DATE_TIME_NO_MEMBER_INIT -#endif - -//Define INT64_C for some Metrowerks compilers -#if (defined(__MWERKS__) && (!defined(INT64_C))) -#define INT64_C(value) long long(value) -#endif - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif diff --git a/sdk/include/boost/date_time/constrained_value.hpp b/sdk/include/boost/date_time/constrained_value.hpp deleted file mode 100644 index 6cf1d4c3515..00000000000 --- a/sdk/include/boost/date_time/constrained_value.hpp +++ /dev/null @@ -1,103 +0,0 @@ - -#ifndef CONSTRAINED_VALUE_HPP___ -#define CONSTRAINED_VALUE_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -namespace boost { - -//! Namespace containing constrained_value template and types -namespace CV { - //! Represent a min or max violation type - enum violation_enum {min_violation, max_violation}; - - //! A template to specify a constrained basic value type - /*! This template provides a quick way to generate - * an integer type with a constrained range. The type - * provides for the ability to specify the min, max, and - * and error handling policy. - * - * value policies - * A class that provides the range limits via the min and - * max functions as well as a function on_error that - * determines how errors are handled. A common strategy - * would be to assert or throw and exception. The on_error - * is passed both the current value and the new value that - * is in error. - * - */ - template - class constrained_value { - public: - typedef typename value_policies::value_type value_type; - // typedef except_type exception_type; - constrained_value(value_type value) - { - assign(value); - }; - constrained_value& operator=(value_type v) - { - assign(v); - return *this; - } - //! Return the max allowed value (traits method) - static value_type max() {return value_policies::max();}; - //! Return the min allowed value (traits method) - static value_type min() {return value_policies::min();}; - //! Coerce into the representation type - operator value_type() const {return value_;}; - protected: - value_type value_; - private: - void assign(value_type value) - { - //adding 1 below gets rid of a compiler warning which occurs when the - //min_value is 0 and the type is unsigned.... - if (value+1 < min()+1) { - value_policies::on_error(value_, value, min_violation); - return; - } - if (value > max()) { - value_policies::on_error(value_, value, max_violation); - return; - } - value_ = value; - - } -}; - - //! Template to shortcut the constrained_value policy creation process - template - class simple_exception_policy - { - public: - typedef rep_type value_type; - static rep_type min() { return min_value; }; - static rep_type max() { return max_value;}; - static void on_error(rep_type, rep_type, violation_enum) - { - throw exception_type(); - } - }; - - - -} } //namespace CV - - -/* Copyright (c) 2000-2002 - * CrystalClear Software, Inc. - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/date.hpp b/sdk/include/boost/date_time/date.hpp deleted file mode 100644 index 6ac1e555b3a..00000000000 --- a/sdk/include/boost/date_time/date.hpp +++ /dev/null @@ -1,178 +0,0 @@ -#ifndef DATE_TIME_DATE_HPP___ -#define DATE_TIME_DATE_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/year_month_day.hpp" -#include "boost/date_time/special_defs.hpp" -#include "boost/operators.hpp" - -namespace boost { -namespace date_time { - - //!Representation of timepoint at the one day level resolution. - /*! - The date template represents an interface shell for a date class - that is based on a year-month-day system such as the gregorian - or iso systems. It provides basic operations to enable calculation - and comparisons. - - Theory - - This date representation fundamentally departs from the C tm struct - approach. The goal for this type is to provide efficient date - operations (add, subtract) and storage (minimize space to represent) - in a concrete class. Thus, the date uses a count internally to - represent a particular date. The calendar parameter defines - the policies for converting the the year-month-day and internal - counted form here. Applications that need to perform heavy - formatting of the same date repeatedly will perform better - by using the year-month-day representation. - - Internally the date uses a day number to represent the date. - This is a monotonic time representation. This representation - allows for fast comparison as well as simplifying - the creation of writing numeric operations. Essentially, the - internal day number is like adjusted julian day. The adjustment - is determined by the Epoch date which is represented as day 1 of - the calendar. Day 0 is reserved for negative infinity so that - any actual date is automatically greater than negative infinity. - When a date is constructed from a date or formatted for output, - the appropriate conversions are applied to create the year, month, - day representations. - */ - - - template - class date : private - boost::less_than_comparable > - { - public: - typedef T date_type; - typedef calendar calendar_type; - typedef typename calendar::date_traits_type traits_type; - typedef duration_type_ duration_type; - typedef typename calendar::year_type year_type; - typedef typename calendar::month_type month_type; - typedef typename calendar::day_type day_type; - typedef typename calendar::ymd_type ymd_type; - typedef typename calendar::date_rep_type date_rep_type; - typedef typename calendar::date_int_type date_int_type; - typedef typename calendar::day_of_week_type day_of_week_type; - date(year_type year, month_type month, day_type day) - : days_(calendar::day_number(ymd_type(year, month, day))) - {} - date(const ymd_type& ymd) - : days_(calendar::day_number(ymd)) - {} - //let the compiler write copy, assignment, and destructor - year_type year() const - { - ymd_type ymd = calendar::from_day_number(days_); - return ymd.year; - } - month_type month() const - { - ymd_type ymd = calendar::from_day_number(days_); - return ymd.month; - } - day_type day() const - { - ymd_type ymd = calendar::from_day_number(days_); - return ymd.day; - } - day_of_week_type day_of_week() const - { - ymd_type ymd = calendar::from_day_number(days_); - return calendar::day_of_week(ymd); - } - ymd_type year_month_day() const - { - return calendar::from_day_number(days_); - } - bool operator<(const date_type& rhs) const - { - return days_ < rhs.days_; - } - bool operator==(const date_type& rhs) const - { - return days_ == rhs.days_; - } - //! check to see if date is not a value - bool is_not_a_date() const - { - return traits_type::is_not_a_number(days_); - } - //! check to see if date is one of the infinity values - bool is_infinity() const - { - return traits_type::is_inf(days_); - } - //! check to see if date is greater than all possible dates - bool is_pos_infinity() const - { - return traits_type::is_pos_infinity(days_); - } - //! check to see if date is greater than all possible dates - bool is_neg_infinity() const - { - return traits_type::is_neg_infinity(days_); - } - //! return as a special value or a not_special if a normal date - special_values as_special() const - { - return traits_type::to_special(days_); - } - duration_type operator-(const date_type& d) const - { - date_rep_type val = date_rep_type(days_) - date_rep_type(d.days_); - return duration_type(val.as_number()); - } - - date_type operator-(const duration_type& dd) const - { - return date_type(date_rep_type(days_) - dd.days()); - } - date_rep_type day_count() const {return days_;}; - //allow internal access from operators - date_type operator+(const duration_type& dd) const - { - return date_type(date_rep_type(days_) + dd.days()); - } - - //see reference - protected: - /*! This is a private constructor which allows for the creation of new - dates. It is not exposed to users since that would require class - users to understand the inner workings of the date class. - */ - date(date_int_type days) : days_(days) {}; - date(date_rep_type days) : days_(days.as_number()) {}; - date_int_type days_; - - }; - - - - -} } // namespace date_time - -/* Copyright (c) 2000 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - - -#endif diff --git a/sdk/include/boost/date_time/date_clock_device.hpp b/sdk/include/boost/date_time/date_clock_device.hpp deleted file mode 100644 index fd83ac0a904..00000000000 --- a/sdk/include/boost/date_time/date_clock_device.hpp +++ /dev/null @@ -1,83 +0,0 @@ - -#ifndef DATE_CLOCK_DEVICE_HPP___ -#define DATE_CLOCK_DEVICE_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/c_time.hpp" - - -namespace boost { -namespace date_time { - - //! A clock providing day level services based on C time_t capabilities - /*! This clock uses Posix interfaces as its implemenation and hence - * uses the timezone settings of the operating system. Incorrect - * user settings will result in incorrect results for the calls - * to local_day. - */ - template - class day_clock - { - public: - typedef typename date_type::ymd_type ymd_type; - //! Get the local day as a date type - static date_type local_day() - { - return date_type(local_day_ymd()); - } - //! Get the local day as a ymd_type - static typename date_type::ymd_type local_day_ymd() - { - ::std::tm* curr = get_local_time(); - return ymd_type(curr->tm_year + 1900, - curr->tm_mon + 1, - curr->tm_mday); - } - //! Get the current day in universal date as a ymd_type - static typename date_type::ymd_type universal_day_ymd() - { - ::std::tm* curr = get_universal_time(); - return ymd_type(curr->tm_year + 1900, - curr->tm_mon + 1, - curr->tm_mday); - } - //! Get the UTC day as a date type - static date_type universal_day() - { - return date_type(universal_day_ymd()); - } - - private: - static ::std::tm* get_local_time() - { - ::std::time_t t; - ::std::time(&t); - return ::std::localtime(&t); - } - static ::std::tm* get_universal_time() - { - ::std::time_t t; - ::std::time(&t); - return ::std::gmtime(&t); - } - - }; - -} } //namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/date_defs.hpp b/sdk/include/boost/date_time/date_defs.hpp deleted file mode 100644 index 539b581a94b..00000000000 --- a/sdk/include/boost/date_time/date_defs.hpp +++ /dev/null @@ -1,36 +0,0 @@ - -#ifndef DATE_TIME_DATE_DEFS_HPP -#define DATE_TIME_DATE_DEFS_HPP - -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -namespace boost { -namespace date_time { - - //! An enumeration of weekday names - enum weekdays {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}; - - //! Simple enum to allow for nice programming with Jan, Feb, etc - enum months_of_year {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec,NotAMonth,NumMonths}; - -} } //namespace date_time - -/* Copyright (c) 2000,2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - - -#endif diff --git a/sdk/include/boost/date_time/date_duration.hpp b/sdk/include/boost/date_time/date_duration.hpp deleted file mode 100644 index 53cefd19916..00000000000 --- a/sdk/include/boost/date_time/date_duration.hpp +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef DATE_TIME_DATE_DURATION__ -#define DATE_TIME_DATE_DURATION__ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -#include - -namespace boost { -namespace date_time { - - - //! Duration type with date level resolution - template - class date_duration : private - boost::less_than_comparable - , boost::equality_comparable< date_duration< duration_rep> - > > - { - public: - //! Construct from a day count - explicit date_duration(duration_rep days) : days_(days) {}; - duration_rep days() const - { - return days_; - }; - //! Returns the smallest duration -- used by to calculate 'end' - static date_duration unit() - { - return date_duration(1); - } - //! Equality - bool operator==(const date_duration& rhs) const - { - return days_ == rhs.days_; - } - //! Less - bool operator<(const date_duration& rhs) const - { - return days_ < rhs.days_; - } - //! Subtract another duration -- result is signed - date_duration operator-(const date_duration& rhs) const - { - return date_duration(days_ - rhs.days_); - } - //! Add a duration -- result is signed - date_duration operator+(const date_duration& rhs) const - { - return date_duration(days_ + rhs.days_); - } - //! return sign information - bool is_negative() const - { - return days_ < 0; - } - private: - duration_rep days_; - }; - -} } //namspace date_time - -/* Copyright (c) 2000, 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/date_format_simple.hpp b/sdk/include/boost/date_time/date_format_simple.hpp deleted file mode 100644 index e79ba604f72..00000000000 --- a/sdk/include/boost/date_time/date_format_simple.hpp +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef DATE_TIME_SIMPLE_FORMAT_HPP___ -#define DATE_TIME_SIMPLE_FORMAT_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/parse_format_base.hpp" - -namespace boost { -namespace date_time { - -//! Class to provide simple basic formatting rules -class simple_format { -public: - - //! String used printed is date is invalid - static const char* not_a_date() - { - return "not-a-date"; - } - //! String used to for positive infinity value - static const char* pos_infinity() - { //2001-Jan-03 - return "+infinity "; - } - //! String used to for positive infinity value - static const char* neg_infinity() - { - return "-infinity "; - } - //! Describe month format - static month_format_spec month_format() - { - return month_as_short_string; - } - static ymd_order_spec date_order() - { - return ymd_order_iso; //YYYY-MM-DD - } - //! This format uses '-' to separate date elements - static bool has_date_sep_chars() - { - return true; - } - //! Char to sep? - static char year_sep_char() - { - return '-'; - } - //! char between year-month - static char month_sep_char() - { - return '-'; - } - //! Char to separate month-day - static char day_sep_char() - { - return '-'; - } - //! char between date-hours - static char hour_sep_char() - { - return ' '; - } - //! char between hour and minute - static char minute_sep_char() - { - return ':'; - } - //! char for second - static char second_sep_char() - { - return ':'; - } - -}; - -} } //namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - - -#endif diff --git a/sdk/include/boost/date_time/date_formatting.hpp b/sdk/include/boost/date_time/date_formatting.hpp deleted file mode 100644 index 24740a2fb4d..00000000000 --- a/sdk/include/boost/date_time/date_formatting.hpp +++ /dev/null @@ -1,127 +0,0 @@ -#ifndef DATE_TIME_DATE_FORMATTING_HPP___ -#define DATE_TIME_DATE_FORMATTING_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/iso_format.hpp" -#include -#include -#include - - -namespace boost { -namespace date_time { - - //! Formats a month as as string into an ostream - template - class month_formatter - { - public: - //! Formats a month as as string into an ostream - /*! This function demands that month_type provide - * functions for converting to short and long strings - * if that capability is used. - */ - static std::ostream& format_month(const month_type& month, - std::ostream& os) - { - switch (format_type::month_format()) - { - case month_as_short_string: - { - os << month.as_short_string(); - break; - } - case month_as_long_string: - { - os << month.as_long_string(); - break; - } - case month_as_integer: - { - os << std::setw(2) << std::setfill('0') << month.as_number(); - break; - } - - } - return os; - } // format_month - }; - - - //! Convert ymd to a standard string formatting policies - template - class ymd_formatter - { - public: - //! Convert ymd to a standard string formatting policies - /*! This is standard code for handling date formatting with - * year-month-day based date information. This function - * uses the format_type to control whether the string will - * contain separator characters, and if so what the character - * will be. In addtion, it can format the month as either - * an integer or a string as controled by the formatting - * policy - */ - static std::string ymd_to_string(ymd_type ymd) - { - typedef typename ymd_type::month_type month_type; - std::ostringstream ss; - ss << ymd.year; - if (format_type::has_date_sep_chars()) { - ss << format_type::month_sep_char(); - } - //this name is a bit ugly, oh well.... - month_formatter::format_month(ymd.month, ss); - if (format_type::has_date_sep_chars()) { - ss << format_type::day_sep_char(); - } - ss << std::setw(2) << std::setfill('0') - << ymd.day; - return ss.str(); - } - }; - - - //! Convert a date to string using format policies - template - class date_formatter - { - public: - //! Convert to a date to standard string using format policies - static std::string date_to_string(date_type d) - { - typedef typename date_type::ymd_type ymd_type; - if (d.is_not_a_date()) { - return format_type::not_a_date(); - } - if (d.is_neg_infinity()) { - return format_type::neg_infinity(); - } - if (d.is_pos_infinity()) { - return format_type::pos_infinity(); - } - ymd_type ymd = d.year_month_day(); - return ymd_formatter::ymd_to_string(ymd); - } - }; - -} } //namespace date_time - - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif - diff --git a/sdk/include/boost/date_time/date_formatting_locales.hpp b/sdk/include/boost/date_time/date_formatting_locales.hpp deleted file mode 100644 index 427cf1b46b1..00000000000 --- a/sdk/include/boost/date_time/date_formatting_locales.hpp +++ /dev/null @@ -1,238 +0,0 @@ -#ifndef DATE_TIME_DATE_FORMATTING_LOCALES_HPP___ -#define DATE_TIME_DATE_FORMATTING_LOCALES_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -#include "boost/date_time/locale_config.hpp" // set BOOST_DATE_TIME_NO_LOCALE - -#ifndef BOOST_DATE_TIME_NO_LOCALE - -#include "boost/date_time/iso_format.hpp" -#include "boost/date_time/date_names_put.hpp" -#include "boost/date_time/parse_format_base.hpp" -//#include -#include -#include - - -namespace boost { -namespace date_time { - - //! Formats a month as as string into an ostream - template - class ostream_month_formatter - { - public: - typedef typename facet_type::month_type month_type; - typedef std::basic_ostream ostream_type; - - //! Formats a month as as string into an output iterator - static void format_month(const month_type& month, - ostream_type& os, - const facet_type& f) - { - - switch (f.month_format()) - { - case month_as_short_string: - { - std::ostreambuf_iterator oitr(os); - f.put_month_short(oitr, month.as_enum()); - break; - } - case month_as_long_string: - { - std::ostreambuf_iterator oitr(os); - f.put_month_long(oitr, month.as_enum()); - break; - } - case month_as_integer: - { - os << std::setw(2) << std::setfill('0') << month.as_number(); - break; - } - - } - } // format_month - - }; - - - //! Formats a weekday - template - class ostream_weekday_formatter - { - public: - typedef typename facet_type::month_type month_type; - typedef std::basic_ostream ostream_type; - - //! Formats a month as as string into an output iterator - static void format_weekday(const weekday_type& wd, - ostream_type& os, - const facet_type& f, - bool as_long_string) - { - - std::ostreambuf_iterator oitr(os); - if (as_long_string) { - f.put_weekday_long(oitr, wd.as_enum()); - } - else { - f.put_weekday_short(oitr, wd.as_enum()); - } - - } // format_weekday - - }; - - - //! Convert ymd to a standard string formatting policies - template - class ostream_ymd_formatter - { - public: - typedef typename ymd_type::month_type month_type; - typedef ostream_month_formatter month_formatter; - typedef std::basic_ostream ostream_type; - typedef std::basic_string foo_type; - - //! Convert ymd to a standard string formatting policies - /*! This is standard code for handling date formatting with - * year-month-day based date information. This function - * uses the format_type to control whether the string will - * contain separator characters, and if so what the character - * will be. In addtion, it can format the month as either - * an integer or a string as controled by the formatting - * policy - */ - // static string_type ymd_to_string(ymd_type ymd) -// { -// std::ostringstream ss; -// facet_type dnp; -// ymd_put(ymd, ss, dnp); -// return ss.str(); -// } - - - // Put ymd to ostream -- part of ostream refactor - static void ymd_put(ymd_type ymd, - ostream_type& os, - const facet_type& f) - { - std::ostreambuf_iterator oitr(os); - switch (f.date_order()) { - case ymd_order_iso: { - os << ymd.year; - if (f.has_date_sep_chars()) { - f.month_sep_char(oitr); - } - month_formatter::format_month(ymd.month, os, f); - if (f.has_date_sep_chars()) { - f.day_sep_char(oitr); - } - os << std::setw(2) << std::setfill('0') - << ymd.day; - break; - } - case ymd_order_us: { - month_formatter::format_month(ymd.month, os, f); - if (f.has_date_sep_chars()) { - f.day_sep_char(oitr); - } - os << std::setw(2) << std::setfill('0') - << ymd.day; - if (f.has_date_sep_chars()) { - f.month_sep_char(oitr); - } - os << ymd.year; - break; - } - case ymd_order_dmy: { - os << std::setw(2) << std::setfill('0') - << ymd.day; - if (f.has_date_sep_chars()) { - f.day_sep_char(oitr); - } - month_formatter::format_month(ymd.month, os, f); - if (f.has_date_sep_chars()) { - f.month_sep_char(oitr); - } - os << ymd.year; - break; - } - } - } - }; - - - //! Convert a date to string using format policies - template - class ostream_date_formatter - { - public: - typedef std::basic_ostream ostream_type; - typedef typename date_type::ymd_type ymd_type; - - //! Put date into an ostream - static void date_put(const date_type& d, - ostream_type& os, - const facet_type& f) - { - special_values sv = d.as_special(); - if (sv == not_special) { - ymd_type ymd = d.year_month_day(); - ostream_ymd_formatter::ymd_put(ymd, os, f); - } - else { // output a special value - std::ostreambuf_iterator coi(os); - f.put_special_value(coi, sv); - } - } - - - //! Put date into an ostream - static void date_put(const date_type& d, - ostream_type& os) - { - //retrieve the local from the ostream - std::locale locale = os.getloc(); - if (std::has_facet(locale)) { - const facet_type& f = std::use_facet(locale); - date_put(d, os, f); - } - else { - //default to something sensible if no facet installed - facet_type default_facet; - date_put(d, os, default_facet); - } - } // date_to_ostream - }; //class date_formatter - - -} } //namespace date_time - -#endif - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif - diff --git a/sdk/include/boost/date_time/date_generators.hpp b/sdk/include/boost/date_time/date_generators.hpp deleted file mode 100644 index 781d7f20616..00000000000 --- a/sdk/include/boost/date_time/date_generators.hpp +++ /dev/null @@ -1,282 +0,0 @@ -#ifndef DATE_TIME_DATE_GENERATORS_HPP__ -#define DATE_TIME_DATE_GENERATORS_HPP__ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ -/*! @file date_generators.hpp - Definition and implementation of date algorithm templates -*/ - -#include "boost/date_time/date.hpp" - -namespace boost { -namespace date_time { - - - //! Generates a date by applying the year to the given month and day. - /*! - Example usage: - @code - partial_date pd(1, Jan); - date d = pd.get_date(2002); //2002-Jan-01 - @endcode - \ingroup date_alg - */ - template - class partial_date { - public: - typedef typename date_type::calendar_type calendar_type; - typedef typename calendar_type::day_type day_type; - typedef typename calendar_type::month_type month_type; - typedef typename calendar_type::year_type year_type; - typedef typename date_type::duration_type duration_type; - partial_date(day_type d, month_type m) : - day_(d), - month_(m) - {} - //! Return a concrete date when provided with a year specific year. - date_type get_date(year_type y) const - { - return date_type(y, month_, day_); - } - date_type operator()(year_type y) const - { - return date_type(y, month_, day_); - } - bool operator==(const partial_date& rhs) const - { - return (month_ == rhs.month_) && (day_ == rhs.day_); - } - bool operator<(const partial_date& rhs) const - { - if (month_ < rhs.month_) return true; - if (month_ > rhs.month_) return false; - //months are equal - return (day_ < rhs.day_); - } - - - private: - day_type day_; - month_type month_; - }; - - - //! Useful generator functor for finding holidays - /*! Based on the idea in Cal. Calc. for finding holidays that are - * the 'first Monday of September'. - * The algorithm here basically guesses for the first - * day of the month. Then finds the first day of the correct - * type. That is, if the first of the month is a Tuesday - * and it needs Wenesday then we simply increment by a day - * and then we can add the length of a week until we get - * to the 'nth kday'. There are probably more efficient - * algorithms based on using a mod 7, but this one works - * reasonably well for basic applications. - * \ingroup date_alg - */ - template - class nth_kday_of_month { - public: - typedef typename date_type::calendar_type calendar_type; - typedef typename calendar_type::day_of_week_type day_of_week_type; - typedef typename calendar_type::month_type month_type; - typedef typename calendar_type::year_type year_type; - typedef typename date_type::duration_type duration_type; - enum week_num {first=1, second, third, fourth, fifth}; - nth_kday_of_month(week_num week_no, - day_of_week_type dow, - month_type m) : - month_(m), - wn_(week_no), - dow_(dow) - {} - //! Return a concrete date when provided with a year specific year. - date_type get_date(year_type y) const - { - date_type d(y, month_, 1); //first day of month - duration_type one_day(1); - duration_type one_week(7); - while (dow_ != d.day_of_week()) { - d = d + one_day; - } - int week = 1; - while (week < wn_) { - d = d + one_week; - week++; - } - return d; - } - private: - month_type month_; - week_num wn_; - day_of_week_type dow_; - }; - - //! Useful generator functor for finding holidays and daylight savings - /*! Similar to nth_kday_of_month, but requires less paramters - * \ingroup date_alg - */ - template - class first_kday_of_month { - public: - typedef typename date_type::calendar_type calendar_type; - typedef typename calendar_type::day_of_week_type day_of_week_type; - typedef typename calendar_type::month_type month_type; - typedef typename calendar_type::year_type year_type; - typedef typename date_type::duration_type duration_type; - //!Specify the first 'Sunday' in 'April' spec - /*!@param dow The day of week, eg: Sunday, Monday, etc - * @param month The month of the year, eg: Jan, Feb, Mar, etc - */ - first_kday_of_month(day_of_week_type dow, month_type month) : - month_(month), - dow_(dow) - {} - //! Return a concrete date when provided with a year specific year. - date_type get_date(year_type year) const - { - date_type d(year, month_,1); - duration_type one_day(1); - while (dow_ != d.day_of_week()) { - d = d + one_day; - } - return d; - } - private: - month_type month_; - day_of_week_type dow_; - }; - - - - //! Calculate something like Last Sunday of January - /*! Useful generator functor for finding holidays and daylight savings - * Get the last day of the month and then calculate the difference - * to the last previous day. - * @param date_type A date class that exports day_of_week, month_type, etc. - * \ingroup date_alg - */ - template - class last_kday_of_month { - public: - typedef typename date_type::calendar_type calendar_type; - typedef typename calendar_type::day_of_week_type day_of_week_type; - typedef typename calendar_type::month_type month_type; - typedef typename calendar_type::year_type year_type; - typedef typename date_type::duration_type duration_type; - //!Specify the date spec like last 'Sunday' in 'April' spec - /*!@param dow The day of week, eg: Sunday, Monday, etc - * @param month The month of the year, eg: Jan, Feb, Mar, etc - */ - last_kday_of_month(day_of_week_type dow, month_type month) : - month_(month), - dow_(dow) - {} - //! Return a concrete date when provided with a year specific year. - date_type get_date(year_type year) const - { - date_type d(year, month_, calendar_type::end_of_month_day(year,month_)); - duration_type one_day(1); - while (dow_ != d.day_of_week()) { - d = d - one_day; - } - return d; - } - private: - month_type month_; - day_of_week_type dow_; - }; - - - //! Calculate something like "First Sunday after Jan 1,2002 - /*! Date generator that takes a date and finds kday after - *@code - typedef boost::date_time::first_kday_after firstkdayafter; - firstkdayafter fkaf(Monday); - fkaf.get_date(date(2002,Feb,1)); - @endcode - * \ingroup date_alg - */ - template - class first_kday_after { - public: - typedef typename date_type::calendar_type calendar_type; - typedef typename calendar_type::day_of_week_type day_of_week_type; - typedef typename date_type::duration_type duration_type; - first_kday_after(day_of_week_type dow) : - dow_(dow) - {} - //! Return next kday given. - date_type get_date(date_type start_day) const - { - duration_type one_day(1); - date_type d = start_day + one_day; - while (dow_ != d.day_of_week()) { - d = d + one_day; - } - return d; - } - - private: - day_of_week_type dow_; - }; - - //! Calculate something like "First Sunday before Jan 1,2002 - /*! Date generator that takes a date and finds kday after - *@code - typedef boost::date_time::first_kday_before firstkdaybefore; - firstkdaybefore fkbf(Monday); - fkbf.get_date(date(2002,Feb,1)); - @endcode - * \ingroup date_alg - */ - template - class first_kday_before { - public: - typedef typename date_type::calendar_type calendar_type; - typedef typename calendar_type::day_of_week_type day_of_week_type; - typedef typename date_type::duration_type duration_type; - first_kday_before(day_of_week_type dow) : - dow_(dow) - {} - //! Return next kday given. - date_type get_date(date_type start_day) const - { - duration_type one_day(1); - date_type d = start_day - one_day; - while (dow_ != d.day_of_week()) { - d = d - one_day; - } - return d; - } - - private: - day_of_week_type dow_; - }; - - -} } //namespace date_time - - -/* - * Copyright (c) 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided as is without express or implied warranty. - * - * - * Author: Jeff Garland (jeff@CrystalClearSoftware.com) - * Created: Sun Sep 9 17:20:39 2001 - * - */ - - -#endif diff --git a/sdk/include/boost/date_time/date_iterator.hpp b/sdk/include/boost/date_time/date_iterator.hpp deleted file mode 100644 index 95457654e17..00000000000 --- a/sdk/include/boost/date_time/date_iterator.hpp +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef DATE_ITERATOR_HPP___ -#define DATE_ITERATOR_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include - -namespace boost { -namespace date_time { - //! An iterator over dates with varying resolution (day, week, month, year, etc) - enum date_resolutions {day, week, months, year, decade, century, NumDateResolutions}; - - //! Base date iterator type - /*! This class provides the skeleton for the creation of iterators. - * New and interesting interators can be created by plugging in a new - * function that derives the next value from the current state. - * generation of various types of -based information. - * - * Template Parameters - * - * date_type - * - * The date_type is a concrete date_type. The date_type must - * define a duration_type and a calendar_type. - */ - template - class date_itr_base { - // works, but benefit unclear at the moment - // class date_itr_base : public std::iterator{ - public: - typedef typename date_type::duration_type duration_type; - typedef date_type value_type; - typedef std::input_iterator_tag iterator_category; - - date_itr_base(date_type d) : current_(d) {} - virtual ~date_itr_base() {}; - date_itr_base& operator++() - { - current_ = current_ + get_offset(current_); - return *this; - }; - virtual duration_type get_offset(const date_type& current) const=0; - date_type operator*() {return current_;}; - date_type* operator->() {return ¤t_;}; - bool operator< (const date_type& d) {return current_ < d;} - bool operator<= (const date_type& d) {return current_ <= d;} - bool operator> (const date_type& d) {return current_ > d;} - bool operator>= (const date_type& d) {return current_ >= d;} - bool operator== (const date_type& d) {return current_ == d;} - bool operator!= (const date_type& d) {return current_ != d;} - private: - date_type current_; - }; - - //! Overrides the base date iterator providing hook for functors - /* - * offset_functor - * - * The offset functor must define a get_offset function that takes the - * current point in time and calculates and offset. - * - */ - template - class date_itr : public date_itr_base { - public: - typedef typename date_type::duration_type duration_type; - date_itr(date_type d, int factor=1) : - date_itr_base(d), - of_(factor) - {} - virtual duration_type get_offset(const date_type& current) const - { - return of_.get_offset(current); - } - private: - offset_functor of_; - }; - - - -} } //namespace date_time - -/* Copyright (c) 2000, 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/date_names_put.hpp b/sdk/include/boost/date_time/date_names_put.hpp deleted file mode 100644 index 312a2615c7d..00000000000 --- a/sdk/include/boost/date_time/date_names_put.hpp +++ /dev/null @@ -1,286 +0,0 @@ -#ifndef DATE_TIME_DATE_NAMES_PUT_HPP___ -#define DATE_TIME_DATE_NAMES_PUT_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -#include "boost/date_time/locale_config.hpp" // set BOOST_DATE_TIME_NO_LOCALE - -#ifndef BOOST_DATE_TIME_NO_LOCALE - -#include "boost/date_time/special_defs.hpp" -#include "boost/date_time/date_defs.hpp" -#include "boost/date_time/parse_format_base.hpp" -#include - - -namespace boost { -namespace date_time { - - //! Output facet base class for gregorian dates. - /*! This class is a base class for date facets used to localize the - * names of months and the names of days in the week. - * - * Requirements of Config - * - define an enumeration month_enum that enumerates the months. - * The enumeration should be '1' based eg: Jan==1 - * - define as_short_string and as_long_string - * - * (see langer & kreft p334). - * - */ - template > - class date_names_put : public std::locale::facet - { - public: - date_names_put() {}; - typedef OutputIterator iter_type; - typedef typename Config::month_type month_type; - typedef typename Config::month_enum month_enum; - typedef typename Config::weekday_enum weekday_enum; - typedef typename Config::special_value_enum special_value_enum; - //typedef typename Config::format_type format_type; - typedef std::basic_string string_type; - - static std::locale::id id; - void put_special_value(iter_type& oitr, special_value_enum sv) const - { - do_put_special_value(oitr, sv); - } - void put_month_short(iter_type& oitr, month_enum moy) const - { - do_put_month_short(oitr, moy); - } - void put_month_long(iter_type& oitr, month_enum moy) const - { - do_put_month_long(oitr, moy); - } - void put_weekday_short(iter_type& oitr, weekday_enum wd) const - { - do_put_weekday_short(oitr, wd); - } - void put_weekday_long(iter_type& oitr, weekday_enum wd) const - { - do_put_weekday_long(oitr, wd); - } - bool has_date_sep_chars() const - { - return do_has_date_sep_chars(); - } - void year_sep_char(iter_type& oitr) const - { - do_year_sep_char(oitr); - } - //! char between year-month - void month_sep_char(iter_type& oitr) const - { - do_month_sep_char(oitr); - } - //! Char to separate month-day - void day_sep_char(iter_type& oitr) const - { - do_day_sep_char(oitr); - } - //! Determines the order to put the date elements - ymd_order_spec date_order() const - { - return do_date_order(); - } - //! Determines if month is displayed as integer, short or long string - month_format_spec month_format() const - { - return do_month_format(); - } - - protected: - //! Default facet implementation uses month_type defaults - virtual void do_put_month_short(iter_type& oitr, month_enum moy) const - { - month_type gm(moy); - put_string(oitr, gm.as_short_string()); - } - //! Default facet implementation uses month_type defaults - virtual void do_put_month_long(iter_type& oitr, - month_enum moy) const - { - month_type gm(moy); - put_string(oitr, gm.as_long_string()); - } - //! Default facet implementation for special value types - virtual void do_put_special_value(iter_type& oitr, special_value_enum sv) const - { - switch (sv) { - case not_a_date_time: - { - put_string(oitr, "not-a-date-time"); - break; - } - case pos_infin: - { - put_string(oitr, "+infinity"); - break; - } - case neg_infin: - { - put_string(oitr, "-infinity"); - break; - } - default: {} //quiet compilers that want all cases covered here (eg: gcc 3.1) - } - } - virtual void do_put_weekday_short(iter_type& oitr, weekday_enum wd) const - { - } - virtual void do_put_weekday_long(iter_type& oitr, weekday_enum wd) const - { - } - virtual bool do_has_date_sep_chars() const - { - return true; - } - virtual void do_year_sep_char(iter_type& oitr) const - { - put_string(oitr, "-"); - } - //! char between year-month - virtual void do_month_sep_char(iter_type& oitr) const - { - put_string(oitr, "-"); - } - //! Char to separate month-day - virtual void do_day_sep_char(iter_type& oitr) const - { - put_string(oitr, "-"); - } - //! Default for date order - virtual ymd_order_spec do_date_order() const - { - return ymd_order_iso; - } - //! Default month format - virtual month_format_spec do_month_format() const - { - return month_as_short_string; - } - void put_string(iter_type& oi, const char* const s) const - { - string_type s1(s); - typename string_type::iterator si,end; - for (si=s1.begin(), end=s1.end(); si!=end; si++, oi++) { - *oi = *si; - } - } - }; - - //! Generate storage location for a std::locale::id - template - std::locale::id date_names_put::id; - - //! An date name output facet that takes an array of char* to define strings - template > - class all_date_names_put : public date_names_put - { - public: - all_date_names_put(const char* const month_short_names[], - const char* const month_long_names[], - const char* const special_value_names[], - const char* const weekday_short_names[], - const char* const weekday_long_names[], - char separator_char = '-', - ymd_order_spec order_spec = ymd_order_iso, - month_format_spec month_format = month_as_short_string) : - month_short_names_(month_short_names), - month_long_names_(month_long_names), - special_value_names_(special_value_names), - weekday_short_names_(weekday_short_names), - weekday_long_names_(weekday_long_names), - order_spec_(order_spec), - month_format_spec_(month_format) - { - separator_char_[0] = separator_char; - separator_char_[1] = '\0'; - - }; - typedef OutputIterator iter_type; - typedef typename Config::month_enum month_enum; - typedef typename Config::weekday_enum weekday_enum; - typedef typename Config::special_value_enum special_value_enum; - - protected: - //! Generic facet that takes array of chars - virtual void do_put_month_short(iter_type& oitr, month_enum moy) const - { - put_string(oitr, month_short_names_[moy-1]); - } - //! Long month names - virtual void do_put_month_long(iter_type& oitr, month_enum moy) const - { - put_string(oitr, month_long_names_[moy-1]); - } - //! Special values names - virtual void do_put_special_value(iter_type& oitr, special_value_enum sv) const - { - put_string(oitr, special_value_names_[sv]); - } - virtual void do_put_weekday_short(iter_type& oitr, weekday_enum wd) const - { - put_string(oitr, weekday_short_names_[wd]); - } - virtual void do_put_weekday_long(iter_type& oitr, weekday_enum wd) const - { - put_string(oitr, weekday_long_names_[wd]); - } - //! char between year-month - virtual void do_month_sep_char(iter_type& oitr) const - { - put_string(oitr, separator_char_); - } - //! Char to separate month-day - virtual void do_day_sep_char(iter_type& oitr) const - { - put_string(oitr, separator_char_); - } - //! Set the date ordering - virtual ymd_order_spec do_date_order() const - { - return order_spec_; - } - //! Set the date ordering - virtual month_format_spec do_month_format() const - { - return month_format_spec_; - } - - private: - const char* const* month_short_names_; - const char* const* month_long_names_; - const char* const* special_value_names_; - const char* const* weekday_short_names_; - const char* const* weekday_long_names_; - char separator_char_[2]; - ymd_order_spec order_spec_; - month_format_spec month_format_spec_; - }; - -} } //namespace boost::date_time - -#endif //BOOST_NO_STD_LOCALE - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif diff --git a/sdk/include/boost/date_time/date_parsing.hpp b/sdk/include/boost/date_time/date_parsing.hpp deleted file mode 100644 index f617f933487..00000000000 --- a/sdk/include/boost/date_time/date_parsing.hpp +++ /dev/null @@ -1,103 +0,0 @@ - -#ifndef _DATE_TIME_DATE_PARSING_HPP___ -#define _DATE_TIME_DATE_PARSING_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/tokenizer.hpp" -#include "boost/lexical_cast.hpp" - - -namespace boost { - -namespace date_time { - - - //! Generic function to parse a delimited date (eg: 2002-02-10) - template - date_type - parse_date(const std::string& s) - { - typedef typename date_type::year_type year_type; - int pos = 0; - typename date_type::ymd_type ymd(year_type::min(),1,1); - boost::tokenizer > tok(s); - for(boost::tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){ - int i = boost::lexical_cast(*beg); - switch(pos) { - case 0: ymd.year = i; break; - case 1: ymd.month = i; break; - case 2: ymd.day = i; break; - }; - pos++; - } - return date_type(ymd); - } - - //! Generic function to parse undelimited date (eg: 20020201) - template - date_type - parse_undelimited_date(const std::string& s) - { - int offsets[] = {4,2,2}; - int pos = 0; - typedef typename date_type::year_type year_type; - typename date_type::ymd_type ymd(year_type::min(),1,1); - boost::offset_separator osf(offsets, offsets+3); - boost::tokenizer tok(s, osf); - for(boost::tokenizer::iterator ti=tok.begin(); ti!=tok.end();++ti){ - int i = boost::lexical_cast(*ti); - // std::cout << i << std::endl; - switch(pos) { - case 0: ymd.year = i; break; - case 1: ymd.month = i; break; - case 2: ymd.day = i; break; - }; - pos++; - } - return date_type(ymd); - } - - - template - date_type - parse_date2(const std::string& s) - { - //using namespace boost; - int pos = 0; - typedef typename date_type::year_type year_type; - typename date_type::ymd_type ymd(year_type::min(),1,1); - boost::char_delimiters_separator delim("DT"); - boost::tokenizer > tok(s); - for(boost::tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){ - int i = boost::lexical_cast(*beg); - switch(pos) { - case 0: ymd.year = i; break; - case 1: ymd.month = i; break; - case 2: ymd.day = i; break; - }; - pos++; - } - return date_type(ymd); - } - - -} } //namespace date_time - - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/dst_rules.hpp b/sdk/include/boost/date_time/dst_rules.hpp deleted file mode 100644 index e90111f3267..00000000000 --- a/sdk/include/boost/date_time/dst_rules.hpp +++ /dev/null @@ -1,354 +0,0 @@ -#ifndef DATE_TIME_DST_RULES_HPP__ -#define DATE_TIME_DST_RULES_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -/*! @file dst_rules.hpp - Contains template class to provide static dst rule calculations -*/ - -#include "boost/date_time/date_generators.hpp" -#include "boost/date_time/period.hpp" -#include "boost/date_time/date_defs.hpp" -#include - -namespace boost { - namespace date_time { - - enum time_is_dst_result {is_not_in_dst, is_in_dst, - ambiguous, invalid_time_label}; - - - //! Dynamic class used to caluclate dst transition information - template - class dst_calculator - { - public: - typedef time_duration_type_ time_duration_type; - typedef date_type_ date_type; - - //! Check the local time offset when on dst start day - /*! On this dst transition, the time label between - * the transition boundary and the boudary + the offset - * are invalid times. If before the boundary then still - * not in dst. - *@param time_of_day Time offset in the day for the local time - *@param dst_start_offset_minutes Local day offset for start of dst - *@param dst_length_minutes Number of minutes to adjust clock forward - *@retval status of time label w.r.t. dst - */ - static time_is_dst_result - process_local_dst_start_day(const time_duration_type& time_of_day, - unsigned int dst_start_offset_minutes, - long dst_length_minutes) - { - //std::cout << "here" << std::endl; - if (time_of_day < time_duration_type(0,dst_start_offset_minutes,0)) { - return is_not_in_dst; - } - long offset = dst_start_offset_minutes + dst_length_minutes; - if (time_of_day >= time_duration_type(0,offset,0)) { - return is_in_dst; - } - return invalid_time_label; - } - - //! Check the local time offset when on the last day of dst - /*! This is the calculation for the DST end day. On that day times - * prior to the conversion time - dst_length (1 am in US) are still - * in dst. Times between the above and the switch time are - * ambiguous. Times after the start_offset are not in dst. - *@param time_of_day Time offset in the day for the local time - *@param dst_end_offset_minutes Local time of day for end of dst - *@retval status of time label w.r.t. dst - */ - static time_is_dst_result - process_local_dst_end_day(const time_duration_type& time_of_day, - unsigned int dst_end_offset_minutes, - long dst_length_minutes) - { - //in US this will be 60 so offset in day is 1,0,0 - int offset = dst_end_offset_minutes-dst_length_minutes; - if (time_of_day < time_duration_type(0,offset,0)) { - return is_in_dst; - } - if (time_of_day >= time_duration_type(0,dst_end_offset_minutes,0)) { - return is_not_in_dst; - } - return ambiguous; - } - - //! Calculates if the given local time is dst or not - /*! Determines if the time is really in DST or not. Also checks for - * invalid and ambiguous. - * @param current_day The day to check for dst - * @param time_of_day Time offset within the day to check - * @param dst_start_day Starting day of dst for the given locality - * @param dst_start_offset_minutes Offset within day for dst - * boundary (eg 120 for US which is 02:00:00) - * @param dst_end_day Ending day of dst for the given locality - * @param dst_end_offset_minutes Offset within day given in dst for dst - * boundary (eg 120 for US which is 02:00:00) - * @param dst_length_minutes Length of dst adjusment (eg: 60 for US) - * @retval The time is either ambiguous, invalid, in dst, or not in dst - */ - static time_is_dst_result - local_is_dst(const date_type& current_day, - const time_duration_type& time_of_day, - const date_type& dst_start_day, - unsigned int dst_start_offset_minutes, - const date_type& dst_end_day, - unsigned int dst_end_offset_minutes, - long dst_length_minutes) - { - //in northern hemisphere dst is in the middle of the year - if (dst_start_day < dst_end_day) { - if ((current_day > dst_start_day) && (current_day < dst_end_day)) { - return is_in_dst; - } - if ((current_day < dst_start_day) || (current_day > dst_end_day)) { - return is_not_in_dst; - } - } - else {//southern hemisphere dst is at begining /end of year - if ((current_day < dst_start_day) && (current_day > dst_end_day)) { - return is_not_in_dst; - } - if ((current_day > dst_start_day) || (current_day < dst_end_day)) { - return is_in_dst; - } - } - - if (current_day == dst_start_day) { - return process_local_dst_start_day(time_of_day, - dst_start_offset_minutes, - dst_length_minutes); - } - - if (current_day == dst_end_day) { - return process_local_dst_end_day(time_of_day, - dst_end_offset_minutes, - dst_length_minutes); - } - //you should never reach this statement - return invalid_time_label; - } - - }; - - - //! Compile-time configurable daylight savings time calculation engine - /* This template provides the ability to configure a daylight savings - * calculation at compile time covering all the cases. Unfortunately - * because of the number of dimensions related to daylight savings - * calculation the number of parameters is high. In addition, the - * start and end transition rules are complex types that specify - * an algorithm for calculation of the starting day and ending - * day of daylight savings time including the month and day - * specifications (eg: last sunday in October). - * - * @param date_type A type that represents dates, typically gregorian::date - * @param time_duration_type Used for the offset in the day calculations - * @param dst_traits A set of traits that define the rules of dst - * calculation. The dst_trait must include the following: - * start_rule_functor - Rule to calculate the starting date of a - * dst transition (eg: last_kday_of_month). - * start_day - static function that returns month of dst start for - * start_rule_functor - * start_month -static function that returns day or day of week for - * dst start of dst - * end_rule_functor - Rule to calculate the end of dst day. - * end_day - static fucntion that returns end day for end_rule_functor - * end_month - static function that returns end month for end_rule_functor - * dst_start_offset_minutes - number of minutes from start of day to transition to dst -- 120 (or 2:00 am) is typical for the U.S. and E.U. - * dst_start_offset_minutes - number of minutes from start of day to transition off of dst -- 180 (or 3:00 am) is typical for E.U. - * dst_length_minutes - number of minutes that dst shifts clock - */ - template - class dst_calc_engine - { - public: - typedef typename date_type::year_type year_type; - typedef typename date_type::calendar_type calendar_type; - typedef dst_calculator dstcalc; - - //! Calculates if the given local time is dst or not - /*! Determines if the time is really in DST or not. Also checks for - * invalid and ambiguous. - * @retval The time is either ambiguous, invalid, in dst, or not in dst - */ - static time_is_dst_result local_is_dst(const date_type& d, - const time_duration_type& td) - { - - year_type y = d.year(); - date_type dst_start = local_dst_start_day(y); - date_type dst_end = local_dst_end_day(y); - return dstcalc::local_is_dst(d,td, - dst_start, - dst_traits::dst_start_offset_minutes(), - dst_end, - dst_traits::dst_end_offset_minutes(), - dst_traits::dst_shift_length_minutes()); - - } - - static bool is_dst_boundary_day(date_type d) - { - year_type y = d.year(); - return ((d == local_dst_start_day(y)) || - (d == local_dst_end_day(y))); - } - - //! The time of day for the dst transition (eg: typically 01:00:00 or 02:00:00) - static time_duration_type dst_offset() - { - return time_duration_type(0,dst_traits::dst_shift_length_minutes(),0); - } - - static date_type local_dst_start_day(year_type year) - { - typedef typename dst_traits::start_rule_functor start_rule; - start_rule start(dst_traits::start_day(), - dst_traits::start_month()); - return start.get_date(year); - } - - static date_type local_dst_end_day(year_type year) - { - typedef typename dst_traits::end_rule_functor end_rule; - end_rule end(dst_traits::end_day(), - dst_traits::end_month()); - return end.get_date(year); - } - - - }; - - //! Depricated: Class to calculate dst boundaries for US time zones - /* Use dst_calc_engine instead. - */ - template //1 hour == 60 min in US - class us_dst_rules - { - public: - typedef time_duration_type_ time_duration_type; - typedef date_type_ date_type; - typedef typename date_type::year_type year_type; - typedef typename date_type::calendar_type calendar_type; - typedef date_time::last_kday_of_month lkday; - typedef date_time::first_kday_of_month fkday; - typedef dst_calculator dstcalc; - - //! Calculates if the given local time is dst or not - /*! Determines if the time is really in DST or not. Also checks for - * invalid and ambiguous. - * @retval The time is either ambiguous, invalid, in dst, or not in dst - */ - static time_is_dst_result local_is_dst(const date_type& d, - const time_duration_type& td) - { - - year_type y = d.year(); - date_type dst_start = local_dst_start_day(y); - date_type dst_end = local_dst_end_day(y); - return dstcalc::local_is_dst(d,td, - dst_start,dst_start_offset_minutes, - dst_end, dst_start_offset_minutes, - dst_length_minutes); - - } - - - static bool is_dst_boundary_day(date_type d) - { - year_type y = d.year(); - return ((d == local_dst_start_day(y)) || - (d == local_dst_end_day(y))); - } - - static date_type local_dst_start_day(year_type year) - { - //first sunday in april - fkday fsia(Sunday, gregorian::Apr); - return fsia.get_date(year); - } - - static date_type local_dst_end_day(year_type year) - { - //last sunday in october - lkday lsio(Sunday, gregorian::Oct); - return lsio.get_date(year); - } - - static time_duration_type dst_offset() - { - return time_duration_type(0,dst_length_minutes,0); - } - - - }; - - //! Used for local time adjustments in places that don't use dst - template - class null_dst_rules - { - public: - typedef time_duration_type_ time_duration_type; - typedef date_type_ date_type; - - - //! Calculates if the given local time is dst or not - /*! @retval Always is_not_in_dst since this is for zones without dst - */ - static time_is_dst_result local_is_dst(const date_type&, - const time_duration_type&) - { - return is_not_in_dst; - } - - //! Calculates if the given utc time is in dst - static time_is_dst_result utc_is_dst(const date_type&, - const time_duration_type&) - { - return is_not_in_dst; - } - - static bool is_dst_boundary_day(date_type d) - { - return false; - } - - static time_duration_type dst_offset() - { - return time_duration_type(0,0,0); - } - - }; - - - } } //namespace date_time - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif diff --git a/sdk/include/boost/date_time/gregorian/formatters.hpp b/sdk/include/boost/date_time/gregorian/formatters.hpp deleted file mode 100644 index 6d7673d06a4..00000000000 --- a/sdk/include/boost/date_time/gregorian/formatters.hpp +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef GREGORIAN_FORMATTERS_HPP___ -#define GREGORIAN_FORMATTERS_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/gregorian/gregorian_types.hpp" -#include "boost/date_time/gregorian/greg_facet.hpp" -#include "boost/date_time/date_formatting.hpp" -#include "boost/date_time/iso_format.hpp" -#include "boost/date_time/date_format_simple.hpp" - -namespace boost { -namespace gregorian { - - - - //! To YYYY-mmm-DD string where mmm 3 char month name. Example: 2002-Jan-01 - /*!\ingroup date_format - */ - inline std::string to_simple_string(const date& d) { - return date_time::date_formatter::date_to_string(d); - } - - //! Convert date period to simple string. Example: [2002-Jan-01/2002-Jan-02] - /*!\ingroup date_format - */ - inline std::string to_simple_string(const date_period& d) { - std::string s("["); - std::string d1(date_time::date_formatter::date_to_string(d.begin())); - std::string d2(date_time::date_formatter::date_to_string(d.last())); - return std::string("[" + d1 + "/" + d2 + "]"); - } - - //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231 - /*!\ingroup date_format - */ - inline std::string to_iso_string(const date_period& d) { - std::string s(date_time::date_formatter::date_to_string(d.begin())); - return s + "/" + date_time::date_formatter::date_to_string(d.last()); - } - - - //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31 - /*!\ingroup date_format - */ - inline std::string to_iso_extended_string(const date& d) { - return date_time::date_formatter::date_to_string(d); - } - - //! Convert to iso standard string YYYYMMDD. Example: 20021231 - /*!\ingroup date_format - */ - inline std::string to_iso_string(const date& d) { - return date_time::date_formatter::date_to_string(d); - } - - - - inline std::string to_sql_string(const date& d) - { - date::ymd_type ymd = d.year_month_day(); - std::ostringstream ss; - ss << ymd.year << "-" - << std::setw(2) << std::setfill('0') - << ymd.month.as_number() //solves problem with gcc 3.1 hanging - << "-" - << std::setw(2) << std::setfill('0') - << ymd.day; - return ss.str(); - } - -} } //namespace gregorian - - - - - - - - - - - - - - - - - - - - - - - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif - diff --git a/sdk/include/boost/date_time/gregorian/greg_calendar.hpp b/sdk/include/boost/date_time/gregorian/greg_calendar.hpp deleted file mode 100644 index 7434dffa42a..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_calendar.hpp +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef GREGORIAN_GREGORIAN_CALENDAR_HPP__ -#define GREGORIAN_GREGORIAN_CALENDAR_HPP__ -/* Copyright (c) 2001 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/gregorian/greg_weekday.hpp" -#include "boost/date_time/gregorian/greg_day_of_year.hpp" -#include "boost/date_time/gregorian_calendar.hpp" -#include "boost/date_time/gregorian/greg_ymd.hpp" -#include "boost/date_time/int_adapter.hpp" - -namespace boost { -namespace gregorian { - - //!An internal date representation that includes infinities, not a date - typedef date_time::int_adapter fancy_date_rep; - - //! Gregorian calendar for this implementation, hard work in the base - class gregorian_calendar : - public date_time::gregorian_calendar_base { - public: - //! Type to hold a weekday (eg: Sunday, Monday,...) - typedef greg_weekday day_of_week_type; - //! Counter type from 1 to 366 for gregorian dates. - typedef greg_day_of_year_rep day_of_year_type; - //! Internal date representation that handles infinity, not a date - typedef fancy_date_rep date_rep_type; - //! Date rep implements the traits stuff as well - typedef fancy_date_rep date_traits_type; - - - private: - }; - -} } //namespace gregorian - - -/* Copyright (c) 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif - diff --git a/sdk/include/boost/date_time/gregorian/greg_date.hpp b/sdk/include/boost/date_time/gregorian/greg_date.hpp deleted file mode 100644 index 8c4dc6c553e..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_date.hpp +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef GREG_DATE_HPP___ -#define GREG_DATE_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/date.hpp" -#include "boost/date_time/special_defs.hpp" -#include "boost/date_time/gregorian/greg_calendar.hpp" -#include "boost/date_time/gregorian/greg_duration.hpp" - -namespace boost { -namespace gregorian { - - //bring special enum values into the namespace - using date_time::special_values; - using date_time::not_special; - using date_time::neg_infin; - using date_time::pos_infin; - using date_time::not_a_date_time; - using date_time::max_date_time; - using date_time::min_date_time; - - //! A date type based on gregorian_calendar - /*! This class is the primary interface for programming with - greogorian dates. The is a lightweight type that can be - freely passed by value. All comparison operators are - supported. - \ingroup date_basics - */ - class date : public date_time::date - { - public: - typedef gregorian_calendar::year_type year_type; - typedef gregorian_calendar::month_type month_type; - typedef gregorian_calendar::day_type day_type; - typedef gregorian_calendar::day_of_year_type day_of_year_type; - typedef gregorian_calendar::ymd_type ymd_type; - typedef gregorian_calendar::date_rep_type date_rep_type; - typedef gregorian_calendar::date_int_type date_int_type; - typedef date_duration duration_type; - //! Main constructor with year, month, day - date(year_type year, month_type month, day_type day) - : date_time::date(year, month, day) - { - if (gregorian_calendar::end_of_month_day(year, month) < day) { - throw bad_day_of_month(); - } - } - //! Constructor from a ymd_type structure - explicit date(const ymd_type& ymd) - : date_time::date(ymd) - {} - //! Needed copy constructor - date(const date_int_type& rhs): - date_time::date(rhs) - {} - //! Needed copy constructor - date(date_rep_type rhs): - date_time::date(rhs) - {} - //! Constructor for infinities, not a date, max and min date - explicit date(special_values sv): - date_time::date(date_rep_type::from_special(sv)) - {} - //!Return the Julian Day number for the date. - date_int_type julian_day() const - { - ymd_type ymd = year_month_day(); - return gregorian_calendar::julian_day_number(ymd); - } - //!Return the day of year 1..365 or 1..366 (for leap year) - day_of_year_type day_of_year() const - { - date start_of_year(year(), 1, 1); - return ((*this-start_of_year).days() + 1); - } - //!Return the Modified Julian Day number for the date. - long modjulian_day() const - { - ymd_type ymd = year_month_day(); - return gregorian_calendar::modjulian_day_number(ymd); - } - //!Return the iso 8601 week number 1..53 - int week_number() const - { - ymd_type ymd = year_month_day(); - return gregorian_calendar::week_number(ymd); - } - //! Return the day number from the calendar - date_int_type day_number() const - { - return days_; - } - - private: - - }; - - - -} } //namespace gregorian - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/gregorian/greg_day.hpp b/sdk/include/boost/date_time/gregorian/greg_day.hpp deleted file mode 100644 index 02e67bc2eae..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_day.hpp +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef GREG_DAY_HPP___ -#define GREG_DAY_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/constrained_value.hpp" -#include -#include - -namespace boost { -namespace gregorian { - - //! Exception type for gregorian day of month (1..31) - struct bad_day_of_month : public std::out_of_range - { - bad_day_of_month() : - std::out_of_range(std::string("Day of month value is out of range 1..31")) - {} - }; - //! Policy class that declares error handling and day of month ranges - typedef CV::simple_exception_policy greg_day_policies; - - //! Generated represetation for gregorian day of month - typedef CV::constrained_value greg_day_rep; - - //! Represent a day of the month (range 1 - 31) - /*! This small class allows for simple conversion an integer value into - a day of the month for a standard gregorian calendar. The type - is automatically range checked so values outside of the range 1-31 - will cause a bad_day_of_month exception - */ - class greg_day : public greg_day_rep { - public: - greg_day(unsigned short day_of_month) : greg_day_rep(day_of_month) {} - unsigned short as_number() const {return value_;} - operator unsigned short() const {return value_;} - private: - - }; - - - -} } //namespace gregorian - -/* Copyright (c) 2000 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/gregorian/greg_day_of_year.hpp b/sdk/include/boost/date_time/gregorian/greg_day_of_year.hpp deleted file mode 100644 index 26bc0184e01..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_day_of_year.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef GREG_DAY_OF_YEAR_HPP___ -#define GREG_DAY_OF_YEAR_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/constrained_value.hpp" -#include -#include - -namespace boost { -namespace gregorian { - - //! Exception type for day of year (1..366) - struct bad_day_of_year : public std::out_of_range - { - bad_day_of_year() : - std::out_of_range(std::string("Day of year value is out of range 1..366")) - {} - }; - - //! A day of the year range (1..366) - typedef CV::simple_exception_policy greg_day_of_year_policies; - - //! Define a range representation type for the day of the year 1..366 - typedef CV::constrained_value greg_day_of_year_rep; - - -} } //namespace gregorian - -/* Copyright (c) 2000 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/gregorian/greg_duration.hpp b/sdk/include/boost/date_time/gregorian/greg_duration.hpp deleted file mode 100644 index 1acf250d1f2..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_duration.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef GREG_DURATION_HPP___ -#define GREG_DURATION_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/date_duration.hpp" -#include "boost/date_time/int_adapter.hpp" - - -namespace boost { -namespace gregorian { - - //!An internal date representation that includes infinities, not a date - //typedef date_time::int_adapter date_duration_rep; - typedef long date_duration_rep; - - //! Durations in days for gregorian system - /*! \ingroup date_basics - */ - typedef date_time::date_duration date_duration; - // typedef date_time::date_duration date_duration; - typedef date_duration days; - -} } //namespace gregorian - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/gregorian/greg_facet.hpp b/sdk/include/boost/date_time/gregorian/greg_facet.hpp deleted file mode 100644 index 73381825622..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_facet.hpp +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef GREGORIAN_FACET_HPP___ -#define GREGORIAN_FACET_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/gregorian/gregorian_types.hpp" -#include "boost/date_time/date_formatting_locales.hpp" // sets BOOST_DATE_TIME_NO_LOCALE - -//This file is basically commented out if locales are not supported -#ifndef BOOST_DATE_TIME_NO_LOCALE - - -namespace boost { -namespace gregorian { - - //! Configuration of the output facet template - struct greg_facet_config - { - typedef boost::gregorian::greg_month month_type; - typedef boost::date_time::special_values special_value_enum; - typedef boost::gregorian::months_of_year month_enum; - typedef boost::date_time::weekdays weekday_enum; - }; - - //! Create the base facet type for gregorian::date - typedef boost::date_time::date_names_put greg_base_facet; - - //! ostream operator for gregorian::date - /*! Uses the date facet to determine various output parameters including: - * - string values for the month (eg: Jan, Feb, Mar) (default: English) - * - string values for special values (eg: not-a-date-time) (default: English) - * - selection of long, short strings, or numerical month representation (default: short string) - * - month day year order (default yyyy-mmm-dd) - */ - template - inline - std::basic_ostream& - operator<<(std::basic_ostream& os, const date& d) - { - typedef boost::date_time::ostream_date_formatter greg_ostream_formatter; - greg_ostream_formatter::date_put(d, os); - return os; - } - - //! operator<< for gregorian::greg_month typically streaming: Jan, Feb, Mar... - /*! Uses the date facet to determine output string as well as selection of long or short strings. - * Default if no facet is installed is to output a 2 wide numeric value for the month - * eg: 01 == Jan, 02 == Feb, ... 12 == Dec. - */ - template - inline - std::basic_ostream& - operator<<(std::basic_ostream& os, const greg_month& m) - { - typedef boost::date_time::ostream_month_formatter greg_month_formatter; - std::locale locale = os.getloc(); - if (std::has_facet(locale)) { - const greg_base_facet& f = std::use_facet(locale); - greg_month_formatter::format_month(m, os, f); - - } - else { //default to numeric - os << std::setw(2) << std::setfill('0') << m; - } - - return os; - } - - //! operator<< for gregorian::greg_weekday typically streaming: Sun, Mon, Tue, ... - /*! Uses the date facet to determine output string as well as selection of long or short string. - * Default if no facet is installed is to output a 3 char english string for the - * day of the week. - */ - template - inline - std::basic_ostream& - operator<<(std::basic_ostream& os, const greg_weekday& wd) - { - typedef boost::date_time::ostream_weekday_formatter greg_weekday_formatter; - std::locale locale = os.getloc(); - if (std::has_facet(locale)) { - const greg_base_facet& f = std::use_facet(locale); - greg_weekday_formatter::format_weekday(wd.as_enum(), os, f, true); - } - else { //default to short English string eg: Sun, Mon, Tue, Wed... - os << wd.as_short_string(); - } - - return os; - } - - //! operator<< for gregorian::date_period typical output: [2002-Jan-01/2002-Jan-31] - /*! Uses the date facet to determine output string as well as selection of long - * or short string fr dates. - * Default if no facet is installed is to output a 3 char english string for the - * day of the week. - */ - template - inline - std::basic_ostream& - operator<<(std::basic_ostream& os, const date_period& dp) - { - os << '['; //TODO: facet or manipulator for periods? - os << dp.begin(); - os << '/'; //TODO: facet or manipulator for periods? - os << dp.last(); - os << ']'; - return os; - } - - -} } //namespace gregorian - -#endif - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif - diff --git a/sdk/include/boost/date_time/gregorian/greg_month.hpp b/sdk/include/boost/date_time/gregorian/greg_month.hpp deleted file mode 100644 index 0a9ba5287bd..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_month.hpp +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef GREG_MONTH_HPP___ -#define GREG_MONTH_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/constrained_value.hpp" -#include "boost/date_time/date_defs.hpp" -#include -#include - - -namespace boost { -namespace gregorian { - - typedef date_time::months_of_year months_of_year; - - //bring enum values into the namespace - using date_time::Jan; - using date_time::Feb; - using date_time::Mar; - using date_time::Apr; - using date_time::May; - using date_time::Jun; - using date_time::Jul; - using date_time::Aug; - using date_time::Sep; - using date_time::Oct; - using date_time::Nov; - using date_time::Dec; - using date_time::NotAMonth; - using date_time::NumMonths; - - //! Exception thrown if a greg_month is constructed with a value out of range - struct bad_month : public std::out_of_range - { - bad_month() : std::out_of_range(std::string("Month number is out of range 1..12")) {} - }; - //! Build a policy class for the greg_month_rep - typedef CV::simple_exception_policy greg_month_policies; - //! A constrained range that implements the gregorian_month rules - typedef CV::constrained_value greg_month_rep; - - - //! Wrapper class to represent months in gregorian based calendar - class greg_month : public greg_month_rep { - public: - typedef date_time::months_of_year month_enum; - //! Construct a month from the months_of_year enumeration - greg_month(month_enum theMonth) : greg_month_rep(theMonth) {} - //! Construct from a short value - greg_month(unsigned short theMonth) : greg_month_rep(theMonth) {} - //! Convert the value back to a short - operator unsigned short() const {return value_;} - //! Returns month as number from 1 to 12 - unsigned short as_number() const {return value_;} - month_enum as_enum() const {return static_cast(value_);} - const char* as_short_string() const; - const char* as_long_string() const; - }; - -} } //namespace gregorian - -/* Copyright (c) 2000 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/gregorian/greg_weekday.hpp b/sdk/include/boost/date_time/gregorian/greg_weekday.hpp deleted file mode 100644 index 32012cad4de..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_weekday.hpp +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef GREG_WEEKDAY_HPP___ -#define GREG_WEEKDAY_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/constrained_value.hpp" -#include "boost/date_time/date_defs.hpp" -#include -#include - -namespace boost { -namespace gregorian { - - //bring enum values into the namespace - using date_time::Sunday; - using date_time::Monday; - using date_time::Tuesday; - using date_time::Wednesday; - using date_time::Thursday; - using date_time::Friday; - using date_time::Saturday; - - - //! Exception that flags that a weekday number is incorrect - struct bad_weekday : public std::out_of_range - { - bad_weekday() : std::out_of_range(std::string("Weekday os out of range 0..6")) {} - }; - typedef CV::simple_exception_policy greg_weekday_policies; - typedef CV::constrained_value greg_weekday_rep; - - - //! Represent a day within a week (range 0==Sun to 6==Sat) - class greg_weekday : public greg_weekday_rep { - public: - typedef boost::date_time::weekdays weekday_enum; - greg_weekday(unsigned short day_of_week_num) : - greg_weekday_rep(day_of_week_num) - {} - - unsigned short as_number() const {return value_;} - const char* as_short_string() const; - const char* as_long_string() const; - weekday_enum as_enum() const {return static_cast(value_);} - - - }; - - - -} } //namespace gregorian - -/* Copyright (c) 2000 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/gregorian/greg_year.hpp b/sdk/include/boost/date_time/gregorian/greg_year.hpp deleted file mode 100644 index c001cc28e94..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_year.hpp +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef GREG_YEAR_HPP___ -#define GREG_YEAR_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/constrained_value.hpp" -#include -#include - -namespace boost { -namespace gregorian { - - //! Exception type for gregorian year - struct bad_year : public std::out_of_range - { - bad_year() : - std::out_of_range(std::string("Year is out of valid range: 1400..10000")) - {} - }; - //! Policy class that declares error handling gregorian year type - typedef CV::simple_exception_policy greg_year_policies; - - //! Generated representation for gregorian year - typedef CV::constrained_value greg_year_rep; - - //! Represent a day of the month (range 1900 - 10000) - /*! This small class allows for simple conversion an integer value into - a year for the gregorian calendar. This currently only allows a - range of 1900 to 10000. Both ends of the range are a bit arbitrary - at the moment, but they are the limits of current testing of the - library. As such they may be increased in the future. - */ - class greg_year : public greg_year_rep { - public: - greg_year(unsigned short year) : greg_year_rep(year) {} - operator unsigned short() const {return value_;} - private: - - }; - - - -} } //namespace gregorian - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/gregorian/greg_ymd.hpp b/sdk/include/boost/date_time/gregorian/greg_ymd.hpp deleted file mode 100644 index f6ded451893..00000000000 --- a/sdk/include/boost/date_time/gregorian/greg_ymd.hpp +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef DATE_TIME_GREG_YMD_HPP__ -#define DATE_TIME_GREG_YMD_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/year_month_day.hpp" -#include "boost/date_time/special_defs.hpp" -#include "boost/date_time/gregorian/greg_day.hpp" -#include "boost/date_time/gregorian/greg_year.hpp" -#include "boost/date_time/gregorian/greg_month.hpp" - -namespace boost { -namespace gregorian { - - typedef date_time::year_month_day_base greg_year_month_day; - - - -} } //namespace gregorian - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif - diff --git a/sdk/include/boost/date_time/gregorian/gregorian.hpp b/sdk/include/boost/date_time/gregorian/gregorian.hpp deleted file mode 100644 index 7c7d05ac066..00000000000 --- a/sdk/include/boost/date_time/gregorian/gregorian.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef GREGORIAN_HPP__ -#define GREGORIAN_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ -/*! @file gregorian.hpp - Single file header that provides overall include for all elements of - the gregorian date-time system. This includes the various types - defined, but also other functions for formatting and parsing. -*/ - - -#include "boost/date_time/gregorian/gregorian_types.hpp" -#include "boost/date_time/gregorian/formatters.hpp" -#include "boost/date_time/gregorian/greg_facet.hpp" -#include "boost/date_time/gregorian/parsers.hpp" - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/gregorian/gregorian_types.hpp b/sdk/include/boost/date_time/gregorian/gregorian_types.hpp deleted file mode 100644 index cb2f96e3851..00000000000 --- a/sdk/include/boost/date_time/gregorian/gregorian_types.hpp +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef _GREGORIAN_TYPES_HPP__ -#define _GREGORIAN_TYPES_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ -/*! @file gregorian_types.hpp - Single file header that defines most of the types for the gregorian - date-time system. -*/ - - -#include "boost/date_time/date.hpp" -#include "boost/date_time/period.hpp" -#include "boost/date_time/gregorian/greg_calendar.hpp" -#include "boost/date_time/gregorian/greg_duration.hpp" -#include "boost/date_time/gregorian/greg_date.hpp" -#include "boost/date_time/date_generators.hpp" -#include "boost/date_time/date_clock_device.hpp" -#include "boost/date_time/date_iterator.hpp" -#include "boost/date_time/adjust_functors.hpp" - -namespace boost { - -//! Gregorian date system based on date_time components -/*! This date system defines a full complement of types including - * a date, date_duration, date_period, day_clock, and a - * day_iterator. - */ -namespace gregorian { - //! Date periods for the gregorian system - /*!\ingroup date_basics - */ - typedef date_time::period date_period; - //! A date generation object type - typedef date_time::partial_date partial_date; - //! A clock to get the current day from the local computer - /*!\ingroup date_basics - */ - typedef date_time::day_clock day_clock; - - //! Base date_iterator type for gregorian types. - /*!\ingroup date_basics - */ - typedef date_time::date_itr_base date_iterator; - - //! A day level iterator - /*!\ingroup date_basics - */ - typedef date_time::date_itr, - date> day_iterator; - //! A week level iterator - /*!\ingroup date_basics - */ - typedef date_time::date_itr, - date> week_iterator; - //! A month level iterator - /*!\ingroup date_basics - */ - typedef date_time::date_itr, - date> month_iterator; - //! A year level iterator - /*!\ingroup date_basics - */ - typedef date_time::date_itr, - date> year_iterator; -} } //namespace gregorian - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/gregorian/parsers.hpp b/sdk/include/boost/date_time/gregorian/parsers.hpp deleted file mode 100644 index 3850c3e1a49..00000000000 --- a/sdk/include/boost/date_time/gregorian/parsers.hpp +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef GREGORIAN_PARSERS_HPP___ -#define GREGORIAN_PARSERS_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/gregorian/gregorian_types.hpp" -#include "boost/date_time/date_parsing.hpp" - - -namespace boost { -namespace gregorian { - - //! From delimited date string where with order year-month-day eg: 2002-1-25 - inline date from_string(std::string s) { - return date_time::parse_date(s); - } - - //! From iso type date string where with order year-month-day eg: 20020125 - inline date from_undelimited_string(std::string s) { - return date_time::parse_undelimited_date(s); - } - -} } //namespace gregorian - - - - - - - - - - - - - - - - - - - - - - - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif - diff --git a/sdk/include/boost/date_time/gregorian_calendar.hpp b/sdk/include/boost/date_time/gregorian_calendar.hpp deleted file mode 100644 index 1d9be794d68..00000000000 --- a/sdk/include/boost/date_time/gregorian_calendar.hpp +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef DATE_TIME_GREGORIAN_CALENDAR_HPP__ -#define DATE_TIME_GREGORIAN_CALENDAR_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -namespace boost { -namespace date_time { - - - //! An implementation of the Gregorian calendar - /*! This is a parameterized implementation of a proleptic Gregorian Calendar that - can be used in the creation of date systems or just to perform calculations. - All the methods of this class are static functions, so the intent is to - never create instances of this class. - @param ymd_type_ Struct type representing the year, month, day. The ymd_type must - define a of types for the year, month, and day. These types need to be - arithmetic types. - @param date_int_type_ Underlying type for the date count. Must be an arithmetic type. - */ - template - class gregorian_calendar_base { - public: - //! define a type a date split into components - typedef ymd_type_ ymd_type; - //! define a type for representing months - typedef typename ymd_type::month_type month_type; - //! define a type for representing days - typedef typename ymd_type::day_type day_type; - //! Type to hold a stand alone year value (eg: 2002) - typedef typename ymd_type::year_type year_type; - //! Define the integer type to use for internal calculations - typedef date_int_type_ date_int_type; - - - static unsigned short day_of_week(const ymd_type& ymd); - static int week_number(const ymd_type&ymd); - //static unsigned short day_of_year(date_int_type); - static date_int_type day_number(const ymd_type& ymd); - static date_int_type julian_day_number(const ymd_type& ymd); - static long modjulian_day_number(const ymd_type& ymd); - static ymd_type from_day_number(date_int_type); - static ymd_type from_julian_day_number(date_int_type); - static ymd_type from_modjulian_day_number(long); - static bool is_leap_year(year_type); - static unsigned short end_of_month_day(year_type y, month_type m); - static ymd_type epoch(); - static unsigned short days_in_week(); - - }; - - - -} } //namespace - -#ifndef NO_BOOST_DATE_TIME_INLINE -#include "gregorian_calendar.ipp" -#endif - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif - - diff --git a/sdk/include/boost/date_time/gregorian_calendar.ipp b/sdk/include/boost/date_time/gregorian_calendar.ipp deleted file mode 100644 index f9f2de082a5..00000000000 --- a/sdk/include/boost/date_time/gregorian_calendar.ipp +++ /dev/null @@ -1,229 +0,0 @@ -/* Copyright (c) 2001-2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#ifndef NO_BOOST_DATE_TIME_INLINE - #undef BOOST_DATE_TIME_INLINE - #define BOOST_DATE_TIME_INLINE inline -#endif - -namespace boost { -namespace date_time { - //! Return the day of the week (0==Sunday, 1==Monday, etc) - /*! Converts a the year-month-day into a day of the week number - */ - template - BOOST_DATE_TIME_INLINE - unsigned short - gregorian_calendar_base::day_of_week(const ymd_type& ymd) - { - unsigned short a = (14-ymd.month)/12; - unsigned short y = ymd.year - a; - unsigned short m = ymd.month + 12*a - 2; - unsigned short d = (ymd.day + y + (y/4) - (y/100) + (y/400) + (31*m)/12) % 7; - //std::cout << year << "-" << month << "-" << day << " is day: " << d << "\n"; - return d; - } - - //!Return the iso week number for the date - /*!Implements the rules associated with the iso 8601 week number. - Basically the rule is that Week 1 of the year is the week that contains - January 4th or the week that contains the first Thursday in January. - Reference for this algorithm is the Calendar FAQ by Claus Todering, April 2000. - */ - template - BOOST_DATE_TIME_INLINE - int - gregorian_calendar_base::week_number(const ymd_type& ymd) - { - unsigned long julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); - unsigned long juliantoday = julian_day_number(ymd); - unsigned long day = (julianbegin + 3) % 7; - unsigned long week = (juliantoday + day - julianbegin + 4)/7; - - if ((week >= 1) && (week <= 52)) { - return week; - } - - if ((week == 53)) { - if((day==6) ||(day == 5 && is_leap_year(ymd.year))) { - return week; //under these circumstances week == 53. - } - else if (day != 5) { - return 1; //monday - thursday is in week 1 of next year - } - } - //if the week is not in current year recalculate using the previous year as the beginning year - else if (week == 0) { - julianbegin = julian_day_number(ymd_type((ymd.year-1),1,1)); - juliantoday = julian_day_number(ymd); - day = (julianbegin + 3) % 7; - week = (juliantoday + day - julianbegin + 4)/7; - return week; - } - - return week; //not reachable -- well except if day == 5 and is_leap_year != true - - } - - //! Convert a ymd_type into a day number - /*! The day number is an absolute number of days since the start of count - */ - template - BOOST_DATE_TIME_INLINE - date_int_type_ - gregorian_calendar_base::day_number(const ymd_type& ymd) - { - unsigned short a = (14-ymd.month)/12; - unsigned short y = ymd.year + 4800 - a; - unsigned short m = ymd.month + 12*a - 3; - unsigned long d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; - return d; - } - - //! Convert a year-month-day into the julian day number - /*! Since this implementation uses julian day internally, this is the same as the day_number. - */ - template - BOOST_DATE_TIME_INLINE - date_int_type_ - gregorian_calendar_base::julian_day_number(const ymd_type& ymd) - { - return day_number(ymd); - } - - //! Convert year-month-day into a modified julian day number - /*! The day number is an absolute number of days. - * MJD 0 thus started on 17 Nov 1858(Gregorian) at 00:00:00 UTC - */ - template - BOOST_DATE_TIME_INLINE - long - gregorian_calendar_base::modjulian_day_number(const ymd_type& ymd) - { - return julian_day_number(ymd)-2400001; //prerounded - } - - //! Change a day number into a year-month-day - template - BOOST_DATE_TIME_INLINE - ymd_type_ - gregorian_calendar_base::from_day_number(date_int_type dayNumber) - { - date_int_type a = dayNumber + 32044; - date_int_type b = (4*a + 3)/146097; - date_int_type c = a-((146097*b)/4); - date_int_type d = (4*c + 3)/1461; - date_int_type e = c - (1461*d)/4; - date_int_type m = (5*e + 2)/153; - unsigned short day = e - ((153*m + 2)/5) + 1; - unsigned short month = m + 3 - 12 * (m/10); - date_int_type year = 100*b + d - 4800 + (m/10); - //std::cout << year << "-" << month << "-" << day << "\n"; - - return ymd_type(year,month,day); - } - - //! Change a day number into a year-month-day - template - BOOST_DATE_TIME_INLINE - ymd_type_ - gregorian_calendar_base::from_julian_day_number(date_int_type dayNumber) - { - date_int_type a = dayNumber + 32044; - date_int_type b = (4*a+3)/146097; - date_int_type c = a - ((146097*b)/4); - date_int_type d = (4*c + 3)/1461; - date_int_type e = c - ((1461*d)/4); - date_int_type m = (5*e + 2)/153; - unsigned short day = e - ((153*m + 2)/5) + 1; - unsigned short month = m + 3 - 12 * (m/10); - date_int_type year = 100*b + d - 4800 + (m/10); - //std::cout << year << "-" << month << "-" << day << "\n"; - - return ymd_type(year,month,day); - } - - //! Change a modified julian day number into a year-month-day - template - BOOST_DATE_TIME_INLINE - ymd_type_ - gregorian_calendar_base::from_modjulian_day_number(long dayNumber) - { - date_int_type jd = dayNumber + 2400001; //is 2400000.5 prerounded - return from_julian_day_number(jd); - } - - //! Determine if the provided year is a leap year - /*! - *@return true if year is a leap year, false otherwise - */ - template - BOOST_DATE_TIME_INLINE - bool - gregorian_calendar_base::is_leap_year(year_type year) - { - //divisible by 4, not if divisible by 100, but true if divisible by 400 - return (!(year % 4)) && ((year % 100) || (!(year % 400))); - } - - //! Calculate the last day of the month - /*! Find the day which is the end of the month given year and month - * No error checking is performed. - */ - template - BOOST_DATE_TIME_INLINE - unsigned short - gregorian_calendar_base::end_of_month_day(year_type year, - month_type month) - { - switch (month) { - case 2: - if (is_leap_year(year)) {return 29;} - else {return 28;}; - case 4: - case 6: - case 9: - case 11: - return 30; - default: - return 31; - }; - - } - - //! Provide the ymd_type specification for the calandar start - template - BOOST_DATE_TIME_INLINE - ymd_type_ - gregorian_calendar_base::epoch() - { - return ymd_type(1400,1,1); - } - - //! Defines length of a week for week calculations - template - BOOST_DATE_TIME_INLINE - unsigned short - gregorian_calendar_base::days_in_week() - { - return 7; - } - - -} } //namespace gregorian - -/* Copyright (c) 2001-2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - diff --git a/sdk/include/boost/date_time/int_adapter.hpp b/sdk/include/boost/date_time/int_adapter.hpp deleted file mode 100644 index ee823a2e249..00000000000 --- a/sdk/include/boost/date_time/int_adapter.hpp +++ /dev/null @@ -1,212 +0,0 @@ -#ifndef _DATE_TIME_INT_ADAPTER_HPP__ -#define _DATE_TIME_INT_ADAPTER_HPP__ -/* Copyright (c) 2001 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -#include "boost/limits.hpp" //work around compilers without limits -#include "boost/date_time/special_defs.hpp" - -namespace boost { -namespace date_time { - -//! Adapter to create integer types with +-infinity, and not a value -/*! This class is used internally in counted date/time representations. - * It adds the floating point like features of infinities and - * not a number. - */ - -template -class int_adapter { -public: - typedef int_type_ int_type; - int_adapter(int_type v) : - value_(v) - {} - static bool has_infinity() - { - return true; - } - static const int_adapter pos_infinity() - { - return ::std::numeric_limits::max(); - } - static const int_adapter neg_infinity() - { - return ::std::numeric_limits::min(); - } - static const int_adapter not_a_number() - { - return ::std::numeric_limits::max()-1; - } - static int_adapter max() - { - return ::std::numeric_limits::max()-2; - } - static int_adapter min() - { - return ::std::numeric_limits::min()+1; - } - static int_adapter from_special(special_values sv) - { - switch (sv) { - case not_a_date_time: return not_a_number(); - case neg_infin: return neg_infinity(); - case pos_infin: return pos_infinity(); - case max_date_time: return max(); - case min_date_time: return min(); - default: return not_a_number(); - } - - } - static bool is_inf(int_type v) - { - return (v == neg_infinity().as_number() || - v == pos_infinity().as_number()); - } - static bool is_neg_infinity(int_type v) - { - return (v == neg_infinity().as_number()); - } - static bool is_pos_infinity(int_type v) - { - return (v == pos_infinity().as_number()); - } - static bool is_not_a_number(int_type v) - { - return (v == not_a_number().as_number()); - } - //! Returns either special value type or is_not_special - static special_values to_special(int_type v) - { - if (is_not_a_number(v)) return not_a_date_time; - if (is_neg_infinity(v)) return neg_infin; - if (is_pos_infinity(v)) return pos_infin; - return not_special; - } - - - //-3 leaves room for representations of infinity and not a date - static int_type maxcount() - { - return ::std::numeric_limits::max()-3; - } - bool is_infinity() const - { - return (value_ == neg_infinity().as_number() || - value_ == pos_infinity().as_number()); - } - bool is_nan() const - { - return (value_ == not_a_number().as_number()); - } - bool operator==(const int_adapter& rhs) const - { - return value_ == rhs.value_; - } - bool operator!=(const int_adapter& rhs) const - { - return value_ != rhs.value_; - } - bool operator<(const int_adapter& rhs) const - { - return value_ < rhs.value_; - } - bool operator>(const int_adapter& rhs) const - { - return value_ > rhs.value_; - } - int_type as_number() const - { - return value_; - } - //! Returns either special value type or is_not_special - special_values as_special() const - { - return int_adapter::to_special(value_); - } - //creates nasty ambiguities -// operator int_type() const -// { -// return value_; -// } - int_adapter operator+(const int_adapter& rhs) const - { - if (is_nan() || rhs.is_nan()) { - return int_adapter(not_a_number()); - } - if (is_infinity()) { - return *this; - } - if (rhs.is_infinity()) { - return rhs; - } - return value_ + rhs.value_; - } - - int_adapter operator+(int_type rhs) const - { - if (is_nan()) { - return int_adapter(not_a_number()); - } - if (is_infinity()) { - return *this; - } - return value_ + rhs; - } - - int_adapter operator-(const int_adapter& rhs) const - { - if (is_nan() || rhs.is_nan()) { - return int_adapter(not_a_number()); - } - if (is_infinity()) { - return *this; - } - if (rhs.is_infinity()) { - return rhs; - } - return int_adapter(value_ - rhs.value_); - } - - int_adapter operator-(int_type rhs) const - { - if (is_nan()) { - return int_adapter(not_a_number()); - } - if (is_infinity()) { - return *this; - } - return int_adapter(value_ - rhs); - } - - - -private: - int_type value_; -}; - -} } //namespace date_time - -/* - * Copyright (c) 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided as is without express or implied warranty. - * - * - * Author: Jeff Garland (jeff@CrystalClearSoftware.com) - * Created: Sat Sep 8 19:37:11 2001 - * - */ - - -#endif diff --git a/sdk/include/boost/date_time/iso_format.hpp b/sdk/include/boost/date_time/iso_format.hpp deleted file mode 100644 index 252a85bba24..00000000000 --- a/sdk/include/boost/date_time/iso_format.hpp +++ /dev/null @@ -1,177 +0,0 @@ -#ifndef ISO_FORMAT_HPP___ -#define ISO_FORMAT_HPP___ -/* Copyright (c) 2001 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/parse_format_base.hpp" - -namespace boost { -namespace date_time { - -//! Class to provide common iso formatting spec -class iso_format_base { -public: - //! Describe month format -- its an integer in iso format - static month_format_spec month_format() - { - return month_as_integer; - } - - //! String used printed is date is invalid - static const char* not_a_date() - { //20010102 - return "NotADate"; - } - //! String used to for positive infinity value - static const char* pos_infinity() - { - return "+infin "; - } - //! String used to for positive infinity value - static const char* neg_infinity() - { - return "-infin "; - } - - //! ISO char for a year -- used in durations - static char year_sep_char() - { - return 'Y'; - } - //! ISO char for a month - static char month_sep_char() - { - return '-'; - } - //! ISO char for a day - static char day_sep_char() - { - return '-'; - } - //! char for minute - static char hour_sep_char() - { - return ':'; - } - //! char for minute - static char minute_sep_char() - { - return ':'; - } - //! char for second - static char second_sep_char() - { - return ':'; - } - //! ISO char for a period - static char period_start_char() - { - return 'P'; - } - //! Used in time in mixed strings to set start of time - static char time_start_char() - { - return 'T'; - } - - //! Used in mixed strings to identify start of a week number - static char week_start_char() - { - return 'W'; - } - - //! Separators for periods - static char period_sep_char() - { - return '/'; - } - //! Separator for hh:mm:ss - static char time_sep_char() - { - return ':'; - } - //! Preferred Separator for hh:mm:ss,decimal_fraction - static char fractional_time_sep_char() - { - return ','; - } - - static bool is_component_sep(char sep) - { - switch(sep) { - case 'H': - case 'M': - case 'S': - case 'W': - case 'T': - case 'Y': - case 'D':return true; - default: - return false; - } - } - - static bool is_fractional_time_sep(char sep) - { - switch(sep) { - case ',': - case '.': return true; - default: return false; - } - } - static bool is_timezone_sep(char sep) - { - switch(sep) { - case '+': - case '-': return true; - default: return false; - } - } - static char element_sep_char() - { - return '-'; - } - -}; - - -//! Format description for iso normal YYYYMMDD -class iso_format : public iso_format_base { -public: - //! The ios standard format doesn't use char separators - static bool has_date_sep_chars() - { - return false; - } -}; - -//! Extended format uses seperators YYYY-MM-DD -class iso_extended_format : public iso_format_base { -public: - //! Extended format needs char separators - static bool has_date_sep_chars() - { - return true; - } - -}; - -} } //namespace date_time - -/* Copyright (c) 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - - -#endif diff --git a/sdk/include/boost/date_time/local_time_adjustor.hpp b/sdk/include/boost/date_time/local_time_adjustor.hpp deleted file mode 100644 index b23f74d784d..00000000000 --- a/sdk/include/boost/date_time/local_time_adjustor.hpp +++ /dev/null @@ -1,221 +0,0 @@ -#ifndef DATE_TIME_LOCAL_TIME_ADJUSTOR_HPP__ -#define DATE_TIME_LOCAL_TIME_ADJUSTOR_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -/*! @file local_time_adjustor.hpp - Time adjustment calculations for local times -*/ - -#include "boost/date_time/date_generators.hpp" -#include "boost/date_time/dst_rules.hpp" -#include - -namespace boost { - namespace date_time { - - - //! Provides a base offset adjustment from utc - template - class utc_adjustment - { - public: - static time_duration_type local_to_utc_base_offset() - { - time_duration_type td(hours,minutes,0); - return td.invert_sign(); - } - static time_duration_type utc_to_local_base_offset() - { - return time_duration_type(hours,minutes,0); - } - }; - - - - //! Allow sliding utc adjustment with fixed dst rules - template - class dynamic_local_time_adjustor : public dst_rules - { - public: - typedef typename time_type::time_duration_type time_duration_type; - typedef typename time_type::date_type date_type; - - dynamic_local_time_adjustor(time_duration_type utc_offset) : - utc_offset_(utc_offset) - {} - - //! Presumes local time - time_duration_type utc_offset(bool is_dst) - { - if (is_dst) { - return utc_offset_ + dst_offset(); - } - else { - return utc_offset_; - } - - } - private: - time_duration_type utc_offset_; - - }; - - - - //! Embed the rules for local time adjustments at compile time - template - class static_local_time_adjustor: public dst_rules, public utc_offset_rules - { - public: - typedef typename time_type::time_duration_type time_duration_type; - typedef typename time_type::date_type date_type; - - //! Calculates the offset from a utc time to local based on dst and utc offset - /*! @param t UTC time to calculate offset to local time - * This adjustment depends on the following observations about the - * workings of the DST boundary offset. Since UTC time labels are - * monotonically increasing we can determine if a given local time - * is in DST or not and therefore adjust the offset appropriately. - * - * The logic is as follows. Starting with UTC time use the offset to - * create a label for an non-dst adjusted local time. Then call - * dst_rules::local_is_dst with the non adjust local time. The - * results of this function will either unabiguously decide that - * the initial local time is in dst or return an illegal or - * ambiguous result. An illegal result only occurs at the end - * of dst (where labels are skipped) and indicates that dst has - * ended. An ambiguous result means that we need to recheck by - * making a dst adjustment and then rechecking. If the dst offset - * is added to the utc time and the recheck proves non-ambiguous - * then we are past the boundary. If it is still ambiguous then - * we are ahead of the boundary and dst is still in effect. - * - * TODO -- check if all dst offsets are positive. If not then - * the algorithm needs to check for this and reverse the - * illegal/ambiguous logic. - */ - static time_duration_type utc_to_local_offset(const time_type& t) - { - //get initial local time guess by applying utc offset - time_type initial = t + utc_to_local_base_offset(); - time_is_dst_result dst_flag = - dst_rules::local_is_dst(initial.date(), initial.time_of_day()); - switch(dst_flag) { - case is_in_dst: return utc_to_local_base_offset() + dst_offset(); - case is_not_in_dst: return utc_to_local_base_offset(); - case invalid_time_label:return utc_to_local_base_offset() + dst_offset(); - case ambiguous: { - time_type retry = initial + dst_offset(); - dst_flag = dst_rules::local_is_dst(retry.date(), retry.time_of_day()); - //if still ambibuous then the utc time still translates to a dst time - if (dst_flag == ambiguous) { - return utc_to_local_base_offset() + dst_offset(); - } - // we are past the dst boundary - else { - return utc_to_local_base_offset(); - } - } - }//case - //TODO better excpetion type - throw std::out_of_range("Unreachable case"); - - } - - //! Get the offset to UTC given a local time - static time_duration_type local_to_utc_offset(const time_type& t, - date_time::dst_flags dst=date_time::calculate) - { - switch (dst) { - case is_dst: - return local_to_utc_base_offset() - dst_offset(); - case not_dst: - return local_to_utc_base_offset(); - case calculate: - time_is_dst_result res = - dst_rules::local_is_dst(t.date(), t.time_of_day()); - switch(res) { - case is_in_dst: return local_to_utc_base_offset() - dst_offset(); - case is_not_in_dst: return local_to_utc_base_offset(); - case ambiguous: return local_to_utc_base_offset(); - case invalid_time_label: throw std::out_of_range("Time label invalid"); - } - } - throw std::out_of_range("Time label invalid"); - } - - - private: - - }; - - void dummy_to_prevent_msvc6_ice(); //why ask why? - - //! Template that simplifies the creation of local time calculator - /*! Use this template to create the timezone to utc convertors as required. - * - * This class will also work for other regions that don't use dst and - * have a utc offset which is an integral number of hours. - * - * Template Parameters - * -time_type -- Time class to use - * -utc_offset -- Number hours local time is adjust from utc - * -use_dst -- true (default) if region uses dst, false otherwise - * For example: - * @code - * //eastern timezone is utc-5 - typedef date_time::local_adjustor us_eastern; - typedef date_time::local_adjustor us_central; - typedef date_time::local_adjustor us_mountain; - typedef date_time::local_adjustor us_pacific; - typedef date_time::local_adjustor us_arizona; - @endcode - - */ - template - class local_adjustor - { - public: - typedef typename time_type::time_duration_type time_duration_type; - typedef typename time_type::date_type date_type; - typedef static_local_time_adjustor > dst_adjustor; - //! Convert a utc time to local time - static time_type utc_to_local(const time_type& t) - { - time_duration_type td = dst_adjustor::utc_to_local_offset(t); - return t + td; - } - //! Convert a local time to utc - static time_type local_to_utc(const time_type& t, - date_time::dst_flags dst=date_time::calculate) - { - time_duration_type td = dst_adjustor::local_to_utc_offset(t, dst); - return t + td; - } - }; - - - } } //namespace date_time - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif diff --git a/sdk/include/boost/date_time/local_timezone_defs.hpp b/sdk/include/boost/date_time/local_timezone_defs.hpp deleted file mode 100644 index 0f8b369e52e..00000000000 --- a/sdk/include/boost/date_time/local_timezone_defs.hpp +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef DATE_TIME_LOCAL_TIMEZONE_DEFS_HPP__ -#define DATE_TIME_LOCAL_TIMEZONE_DEFS_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/dst_rules.hpp" - -namespace boost { - namespace date_time { - - // Configurations for common dst rules cases: - // See http://www.wharton.co.uk/Support/sup_dst.htm for more - // information on how various locales use dst rules - - //! Specification for daylight savings start rules in US - /*! This class is used to configure dst_calc_engine template typically - as follows: - @code - using namespace boost::gregorian; - using namespace boost::posix_time; - typedef us_dst_trait us_dst_traits; - typedef boost::date_time::dst_calc_engine - us_dst_calc; - //calculate the 2002 transition day of USA April 7 2002 - date dst_start = us_dst_calc::local_dst_start_day(2002); - - //calculate the 2002 transition day of USA Oct 27 2002 - date dst_end = us_dst_calc::local_dst_end_day(2002); - - //check if a local time is in dst or not -- posible answers - //are yes, no, invalid time label, ambiguous - ptime t(...some time...); - if (us_dst::local_is_dst(t.date(), t.time_of_day()) - == boost::date_time::is_not_in_dst) - { - - } - - @endcode - This generates a type suitable for the calculation of dst - transitions for the United States. Of course other templates - can be used for other locales. - - */ - - template - struct us_dst_trait - { - typedef typename date_type::day_of_week_type day_of_week_type; - typedef typename date_type::month_type month_type; - typedef date_time::first_kday_of_month start_rule_functor; - typedef date_time::last_kday_of_month end_rule_functor; - static day_of_week_type start_day() {return Sunday;} - static month_type start_month() {return Apr;} - static day_of_week_type end_day() {return Sunday;} - static month_type end_month() {return Oct;} - static int dst_start_offset_minutes() { return 120;} - static int dst_end_offset_minutes() { return 120; } - static int dst_shift_length_minutes() { return 60; } - }; - - //!Rules for daylight savings start in the EU (Last Sun in Mar) - /*!These amount to the following: - - Start of dst day is last Sunday in March - - End day of dst is last Sunday in Oct - - Going forward switch time is 2:00 am (offset 120 minutes) - - Going back switch time is 3:00 am (off set 180 minutes) - - Shift duration is one hour (60 minutes) - */ - template - struct eu_dst_trait - { - typedef typename date_type::day_of_week_type day_of_week_type; - typedef typename date_type::month_type month_type; - typedef date_time::last_kday_of_month start_rule_functor; - typedef date_time::last_kday_of_month end_rule_functor; - static day_of_week_type start_day() {return Sunday;} - static month_type start_month() {return Mar;} - static day_of_week_type end_day() {return Sunday;} - static month_type end_month() {return Oct;} - static int dst_start_offset_minutes() { return 120;} - static int dst_end_offset_minutes() { return 180; } - static int dst_shift_length_minutes() { return 60; } - }; - - //! Alternative dst traits for some parts of the United Kingdom - /* Several places in the UK use EU start and end rules for the - day, but different local conversion times (eg: forward change at 1:00 - am local and backward change at 2:00 am dst instead of 2:00am - forward and 3:00am back for the EU). - */ - template - struct uk_dst_trait : public eu_dst_trait - { - static int dst_start_offset_minutes() { return 60;} - static int dst_end_offset_minutes() { return 120; } - static int dst_shift_length_minutes() { return 60; } - }; - - //Rules for Adelaide Australia - template - struct acst_dst_trait - { - typedef typename date_type::day_of_week_type day_of_week_type; - typedef typename date_type::month_type month_type; - typedef date_time::last_kday_of_month start_rule_functor; - typedef date_time::last_kday_of_month end_rule_functor; - static day_of_week_type start_day() {return Sunday;} - static month_type start_month() {return Oct;} - static day_of_week_type end_day() {return Sunday;} - static month_type end_month() {return Mar;} - static int dst_start_offset_minutes() { return 120;} - static int dst_end_offset_minutes() { return 120; } - static int dst_shift_length_minutes() { return 60; } - }; - - - - - - -} } //namespace boost::date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif diff --git a/sdk/include/boost/date_time/locale_config.hpp b/sdk/include/boost/date_time/locale_config.hpp deleted file mode 100644 index 6b79f83a181..00000000000 --- a/sdk/include/boost/date_time/locale_config.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef DATE_TIME_LOCALE_CONFIG_HPP___ -#define DATE_TIME_LOCALE_CONFIG_HPP____ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -// This file configures whether the library will support locales and hence -// iostream based i/o. Even if a compiler has some support for locales, -// any failure to be compatible gets the compiler on the exclusion list. -// -// At the moment this is defined for MSVC 6 and any compiler that -// defines BOOST_NO_STD_LOCALE (gcc 2.95.x) - -#include "boost/config.hpp" //sets BOOST_NO_STD_LOCALE - -//This file basically becomes a noop if locales are not properly supported -#if (defined(BOOST_NO_STD_LOCALE) || (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) || (defined(__BORLANDC__))) -#define BOOST_DATE_TIME_NO_LOCALE -#endif - - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif diff --git a/sdk/include/boost/date_time/microsec_time_clock.hpp b/sdk/include/boost/date_time/microsec_time_clock.hpp deleted file mode 100644 index 44ed007a120..00000000000 --- a/sdk/include/boost/date_time/microsec_time_clock.hpp +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef DATE_TIME_HIGHRES_TIME_CLOCK_HPP___ -#define DATE_TIME_HIGHRES_TIME_CLOCK_HPP___ - -/*! @file highres_time_clock.hpp - This file contains the interface for clock devices -*/ - -#include "boost/date_time/c_time.hpp" -#ifdef BOOST_DATE_TIME_HAS_GETTIMEOFDAY_HIGH_PRECISION_CLOCK - -namespace boost { -namespace date_time { - - - //! A clock providing microsecond level resolution - /*! A high precision clock that measures the local time - * at a resolution up to microseconds and adjusts to the - * resolution of the time system. For example, for the - * a library configuration with nano second resolution, - * the last 3 places of the fractional seconds will always - * be 000 since there are 1000 nano-seconds in a micro second. - * - * This clock is only available on platforms with a gettimeofday - * function. - */ - template - class microsec_clock - { - public: - typedef typename time_type::date_type date_type; - typedef typename time_type::time_duration_type time_duration_type; - typedef typename time_duration_type::rep_type resolution_traits_type; - - //! Return the local time based on computer clock settings - static time_type local_time() { - timeval tv; - gettimeofday(&tv, 0); //gettimeofday does not support TZ adjust on Linux. - return create_time(&tv); - } - - private: - static time_type create_time(timeval* tv) { - time_t t = tv->tv_sec; - boost::uint32_t fs = tv->tv_usec; - ::std::time(&t); - tm* curr = localtime(&t); - date_type d(curr->tm_year + 1900, - curr->tm_mon + 1, - curr->tm_mday); - //The following line will adjusts the fractional second tick in terms - //of the current time system. For example, if the time system - //doesn't support fractional seconds then res_adjust returns 0 - //and all the fractional seconds return 0. - int adjust = resolution_traits_type::res_adjust()/1000000; - - time_duration_type td(curr->tm_hour, - curr->tm_min, - curr->tm_sec, - fs*adjust); - return time_type(d,td); - - } - - - }; - - -} } //namespace date_time - -#endif //BOOST_DATE_TIME_HAS_GETTIMEOFDAY_HIGH_PRECISION_CLOCK - -#endif diff --git a/sdk/include/boost/date_time/parse_format_base.hpp b/sdk/include/boost/date_time/parse_format_base.hpp deleted file mode 100644 index ff3ed44d311..00000000000 --- a/sdk/include/boost/date_time/parse_format_base.hpp +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef DATE_TIME_PARSE_FORMAT_BASE_HPP___ -#define DATE_TIME_PARSE_FORMAT_BASE_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -namespace boost { -namespace date_time { - - //! Enum for distinguishing parsing and formatting options - enum month_format_spec {month_as_integer, month_as_short_string, - month_as_long_string}; - - enum ymd_order_spec {ymd_order_iso, //order is year-month-day - ymd_order_dmy, //day-month-year - ymd_order_us}; //order is month-day-year - - -} }//namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif diff --git a/sdk/include/boost/date_time/period.hpp b/sdk/include/boost/date_time/period.hpp deleted file mode 100644 index b7cc34be427..00000000000 --- a/sdk/include/boost/date_time/period.hpp +++ /dev/null @@ -1,338 +0,0 @@ -#ifndef DATE_TIME_PERIOD_HPP___ -#define DATE_TIME_PERIOD_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -/*! \file period.hpp - This file contain the implementation of the period abstraction. This is - basically the same idea as a range. Although this class is intended for - use in the time library, it is pretty close to general enough for other - numeric uses. - -*/ - -#include "boost/operators.hpp" - - -namespace boost { -namespace date_time { - //!Provides generalized period type useful in date-time systems - /*!This template uses a class to represent a time point within the period - and another class to represent a duration. As a result, this class is - not appropriate for use when the number and duration representation - are the same (eg: in the regular number domain). - - A period can be specified by providing either the starting point and - a duration or the starting point and the last point. A period - will always have a duration of at least 1 and it's start will always - be before or eqaul to the last. - - In the case that the begin and last are the same, the period has a - length of one unit. For example, suppose this is a period of days. - That is, each "point" represents a single day. If the start and the - last is the same day then the period represents that single day for - a length of one. The same applies if each "point" represents a month - or a year. The way to think of this is that the granularity of the - point_rep class is similar to the ticks on a ruler. The more ticks, - the finer the resolution of a range that can be defined. A range - defined on a ruler with 1cm resolution between the 1cm mark and the - 2cm mark is 1cm long. In the ruler range, the 1cm mark is in the - range while the 2cm mark is not. - - While the ruler analogy useful, it is not how date ranges are naturally - thought about (at least by me). That is, it is more natural to think - of a date as including up to the end of the second time point. So when - I say day 1 to day 2 I usually mean from the beginning of day 1 to the - end of day 2. - - The best way to handle periods is usually to provide a start point and - a duration. So, day1 + 7 days is a week period which includes all of the - first day and 6 more days (eg: Sun to Sat). - - */ - template - class period : private - boost::less_than_comparable - , boost::equality_comparable< period - > > - { - public: - typedef point_rep point_type; - typedef duration_rep duration_type; - - period(point_rep begin, point_rep last); - period(point_rep begin, duration_rep len); - point_rep begin() const; - point_rep end() const; - point_rep last() const; - duration_rep length() const; - bool is_null() const; - bool operator==(const period& rhs) const; - bool operator<(const period& rhs) const; - void shift(const duration_rep& d); - bool contains(const point_rep& point) const; - bool contains(const period& other) const; - bool intersects(const period& other) const; - bool is_adjacent(const period& other) const; - bool is_before(const point_rep& point) const; - bool is_after(const point_rep& point) const; - period intersection(const period& other) const; - period merge(const period& other) const; - private: - point_rep begin_; - point_rep last_; - }; - - //! create a period from begin to last eg: [begin,end) - /*! If last <= begin then the period will is defined as null - */ - template - inline - period::period(point_rep begin, - point_rep end) : - begin_(begin), - last_(end - duration_rep::unit()) - {} - - //! create a period as [begin, begin+len) - /*! If len is <= 0 then the period will be defined as null - */ - template - inline - period::period(point_rep begin, duration_rep len) : - begin_(begin), - last_(begin + len-duration_rep::unit()) - {} - - - //! Return the first element in the period - template - inline - point_rep period::begin() const - { - return begin_; - } - - //! Return one past the last element - template - inline - point_rep period::end() const - { - return last_ + duration_rep::unit(); - } - - //! Return the last item in the period - template - inline - point_rep period::last() const - { - return last_; - } - - //! True if period is ill formed - template - inline - bool period::is_null() const - { - return last_ <= begin_; - } - - //! Return the length of the period - template - inline - duration_rep period::length() const - { - return end() - begin_; - } - - //! Equality operator - template - inline - bool period::operator==(const period& rhs) const - { - return ((begin_ == rhs.begin_) && - (last_ == rhs.last_)); - } - - //! Strict as defined by rhs.last <= lhs.last - template - inline - bool period::operator<(const period& rhs) const - { - return (last_ <= rhs.begin_); - } - - - //! Shift the start and end by the specified amount - template - inline - void period::shift(const duration_rep& d) - { - begin_ = begin_ + d; - last_ = last_ + d; - } - - //! True if the point is inside the period - template - inline - bool period::contains(const point_rep& point) const - { - return ((point >= begin_) && - (point <= last_)); - } - - - //! True if this period fully contains (or equals) the other period - template - inline - bool period::contains(const period& other) const - { - return ((begin_ <= other.begin_) && (last_ >= other.last_)); - } - - - //! True if periods are next to each other without a gap. - /* In the example below, p1 and p2 are adjacent, but p3 is not adjacent - * with either of p1 or p2. - *@code - * [-p1-) - * [-p2-) - * [-p3-) - *@endcode - */ - template - inline - bool - period::is_adjacent(const period& other) const - { - return (other.begin() == end() || - begin_ == other.end()); - } - - - //! True if all of the period is prior or t < start - /* In the example below only point 1 would evaluate to true. - *@code - * [---------]) - * ^ ^ ^ ^ ^ - * 1 2 3 4 5 - * - *@endcode - */ - template - inline - bool - period::is_after(const point_rep& t) const - { - if (is_null()) - { - return false; //null period isn't after - } - - return t < begin_; - } - - //! True if all of the period is prior to the passed point or end <= t - /* In the example below points 4 and 5 return true. - *@code - * [---------]) - * ^ ^ ^ ^ ^ - * 1 2 3 4 5 - * - *@endcode - */ - template - inline - bool - period::is_before(const point_rep& t) const - { - if (is_null()) - { - return false; //null period isn't before anything - } - - return last_ < t; - } - - - //! True if the periods overlap in any way - /* In the example below p1 intersects with p2, p4, and p6. - *@code - * [---p1---) - * [---p2---) - * [---p3---) - * [---p4---) - * [-p5-) - * [-p6-) - *@endcode - */ - template - inline - bool period::intersects(const period& other) const - { - return ( contains(other.begin_) || - other.contains(begin_) || - ((other.begin_ < begin_) && (other.last_ >= begin_))); - } - - //! Returns the period of intersection or invalid range no intersection - template - inline - period - period::intersection(const period& other) const - { - if (begin_ > other.begin_) { - if (last_ <= other.last_) { //case2 - return *this; - } - //case 1 - return period(begin_, other.end()); - } - else { - if (last_ <= other.last_) { //case3 - return period(other.begin_, this->end()); - } - //case4 - return other; - } - //unreachable - } - - //! Returns the union of intersecting periods -- or null period - /*! - */ - template - inline - period - period::merge(const period& other) const - { - if (this->intersects(other)) { - if (begin_ < other.begin_) { - return period(begin_, last_ > other.last_ ? this->end() : other.end()); - } - - return period(other.begin_, last_ > other.last_ ? this->end() : other.end()); - - } - return period(begin_,begin_); // no intersect return null - } - - -} } //namespace date_time - -/* Copyright (c) 2000 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/posix_time/posix_time.hpp b/sdk/include/boost/date_time/posix_time/posix_time.hpp deleted file mode 100644 index c4e014ef06d..00000000000 --- a/sdk/include/boost/date_time/posix_time/posix_time.hpp +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef POSIX_TIME_HPP___ -#define POSIX_TIME_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ -//!@file Global header file to get all of posix time types - -#include "boost/date_time/posix_time/ptime.hpp" -#include "boost/date_time/posix_time/time_formatters.hpp" -#include "boost/date_time/posix_time/time_parsers.hpp" - - - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif - diff --git a/sdk/include/boost/date_time/posix_time/posix_time_config.hpp b/sdk/include/boost/date_time/posix_time/posix_time_config.hpp deleted file mode 100644 index 8086ac967c4..00000000000 --- a/sdk/include/boost/date_time/posix_time/posix_time_config.hpp +++ /dev/null @@ -1,154 +0,0 @@ -#ifndef POSIX_TIME_CONFIG_HPP___ -#define POSIX_TIME_CONFIG_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/time_duration.hpp" -#include "boost/date_time/time_resolution_traits.hpp" -#include "boost/date_time/gregorian/gregorian_types.hpp" -#include "boost/date_time/wrapping_int.hpp" -#include "boost/limits.hpp" -#include "boost/date_time/compiler_config.hpp" - -//force the definition of INT64_C macro used in posix_time_system -#ifndef __STDC_CONSTANT_MACROS -#define __STDC_CONSTANT_MACROS -# if __GNUC__ >= 2 -# undef BOOST_HAS_STDINT_H -# endif -#endif -#include "boost/cstdint.hpp" -#include -#include //for MCW 7.2 std::abs(long long) - -namespace boost { -namespace posix_time { - -//Remove the following line if you want 64 bit millisecond resolution time -//#define BOOST_GDTL_POSIX_TIME_STD_CONFIG - -#ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG - // set up conditional test compilations -#define BOOST_DATE_TIME_HAS_MILLISECONDS -#define BOOST_DATE_TIME_HAS_MICROSECONDS -#define BOOST_DATE_TIME_HAS_NANOSECONDS - typedef date_time::time_resolution_traits time_res_traits; -#else - // set up conditional test compilations -#define BOOST_DATE_TIME_HAS_MILLISECONDS -#define BOOST_DATE_TIME_HAS_MICROSECONDS -#undef BOOST_DATE_TIME_HAS_NANOSECONDS - typedef date_time::time_resolution_traits time_res_traits; - - -// #undef BOOST_DATE_TIME_HAS_MILLISECONDS -// #undef BOOST_DATE_TIME_HAS_MICROSECONDS -// #undef BOOST_DATE_TIME_HAS_NANOSECONDS -// typedef date_time::time_resolution_traits time_res_traits; - -#endif - - - //! Base time duration type - /*! \ingroup time_basics - */ - class time_duration : - public date_time::time_duration - { - public: - typedef time_res_traits rep_type; - typedef time_res_traits::day_type day_type; - typedef time_res_traits::hour_type hour_type; - typedef time_res_traits::min_type min_type; - typedef time_res_traits::sec_type sec_type; - typedef time_res_traits::fractional_seconds_type fractional_seconds_type; - typedef time_res_traits::tick_type tick_type; - time_duration(hour_type hour, - min_type min, - sec_type sec, - fractional_seconds_type fs=0) : - date_time::time_duration(hour,min,sec,fs) - {} - time_duration() : - date_time::time_duration(0,0,0) - {} - //Give duration access to ticks constructor -- hide from users - friend class date_time::time_duration; - private: - explicit time_duration(tick_type ticks) : - date_time::time_duration(ticks) - {} - }; - -#ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG - - //! Simple implementation for the time rep - struct simple_time_rep - { - typedef gregorian::date date_type; - typedef time_duration time_duration_type; - simple_time_rep(date_type d, time_duration_type tod) : - day(d), - time_of_day(tod) - {} - date_type day; - time_duration_type time_of_day; - }; - - class posix_time_system_config - { - public: - typedef simple_time_rep time_rep_type; - typedef gregorian::date date_type; - typedef gregorian::date_duration date_duration_type; - typedef time_duration time_duration_type; - typedef time_res_traits::tick_type int_type; - typedef time_res_traits resolution_traits; -#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) //help bad compilers -#else - BOOST_STATIC_CONSTANT(boost::int64_t, tick_per_second = 1000000000); -#endif - }; - -#else - - class millisec_posix_time_system_config - { - public: - typedef boost::int64_t time_rep_type; - typedef gregorian::date date_type; - typedef gregorian::date_duration date_duration_type; - typedef time_duration time_duration_type; - typedef time_res_traits::tick_type int_type; - typedef time_res_traits resolution_traits; -#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) //help bad compilers -#else - BOOST_STATIC_CONSTANT(boost::int64_t, tick_per_second = 1000000); -#endif - }; - -#endif - -} }//namespace posix_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif - - diff --git a/sdk/include/boost/date_time/posix_time/posix_time_duration.hpp b/sdk/include/boost/date_time/posix_time/posix_time_duration.hpp deleted file mode 100644 index a4679a2dfb9..00000000000 --- a/sdk/include/boost/date_time/posix_time/posix_time_duration.hpp +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef POSIX_TIME_DURATION_HPP___ -#define POSIX_TIME_DURATION_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/posix_time/posix_time_config.hpp" - -namespace boost { -namespace posix_time { - - //! Allows expression of durations as an hour count - /*! \ingroup time_basics - */ - class hours : public time_duration - { - public: - explicit hours(long h) : - time_duration(h,0,0) - {} - }; - - //! Allows expression of durations as a minute count - /*! \ingroup time_basics - */ - class minutes : public time_duration - { - public: - explicit minutes(long m) : - time_duration(0,m,0) - {} - }; - - //! Allows expression of durations as a seconds count - /*! \ingroup time_basics - */ - class seconds : public time_duration - { - public: - explicit seconds(long s) : - time_duration(0,0,s) - {} - }; - - - //! Allows expression of durations as milli seconds - /*! \ingroup time_basics - */ - typedef date_time::millisec_duration millisec; - - //! Allows expression of durations as micro seconds - /*! \ingroup time_basics - */ - typedef date_time::microsec_duration microsec; - - //This is probably not needed anymore... -#if defined(BOOST_DATE_TIME_HAS_NANOSECONDS) - - //! Allows expression of durations as nano seconds - /*! \ingroup time_basics - */ - typedef date_time::nanosec_duration nanosec; - - -#endif - - - - -} }//namespace posix_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif - diff --git a/sdk/include/boost/date_time/posix_time/posix_time_system.hpp b/sdk/include/boost/date_time/posix_time/posix_time_system.hpp deleted file mode 100644 index c20e9a2f3bd..00000000000 --- a/sdk/include/boost/date_time/posix_time/posix_time_system.hpp +++ /dev/null @@ -1,77 +0,0 @@ - - -#ifndef POSIX_TIME_SYSTEM_HPP___ -#define POSIX_TIME_SYSTEM_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/posix_time/posix_time_config.hpp" -#include "boost/date_time/time_system_split.hpp" -#include "boost/date_time/time_system_counted.hpp" -#include "boost/date_time/compiler_config.hpp" - - -namespace boost { -namespace posix_time { - -#ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG - -#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) //help bad compilers - typedef date_time::split_timedate_system posix_time_system; -#else - typedef date_time::split_timedate_system posix_time_system; -#endif - -#else - - typedef date_time::counted_time_rep int64_time_rep; - typedef date_time::counted_time_system posix_time_system; - -#endif - -} }//namespace posix_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sdk/include/boost/date_time/posix_time/posix_time_types.hpp b/sdk/include/boost/date_time/posix_time/posix_time_types.hpp deleted file mode 100644 index fde296fca51..00000000000 --- a/sdk/include/boost/date_time/posix_time/posix_time_types.hpp +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef POSIX_TIME_TYPES_HPP___ -#define POSIX_TIME_TYPES_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/time_clock.hpp" -#include "boost/date_time/microsec_time_clock.hpp" -#include "boost/date_time/posix_time/ptime.hpp" -#include "boost/date_time/posix_time/posix_time_duration.hpp" -#include "boost/date_time/posix_time/posix_time_system.hpp" -#include "boost/date_time/posix_time/time_period.hpp" -#include "boost/date_time/time_iterator.hpp" -#include "boost/date_time/dst_rules.hpp" - -namespace boost { - -//!Defines a non-adjusted time system with nano-second resolution and stable calculation properties -namespace posix_time { - - //! Iterator over a defined time duration - /*! \ingroup time_basics - */ - typedef date_time::time_itr time_iterator; - //! A time clock that has a resolution of one second - /*! \ingroup time_basics - */ - typedef date_time::second_clock second_clock; - -#ifdef BOOST_DATE_TIME_HAS_GETTIMEOFDAY_HIGH_PRECISION_CLOCK - //! A time clock that has a resolution of one microsecond - /*! \ingroup time_basics - */ - typedef date_time::microsec_clock microsec_clock; -#endif - - //! Define a dst null dst rule for the posix_time system - typedef date_time::null_dst_rules no_dst; - //! Define US dst rule calculator for the posix_time system - typedef date_time::us_dst_rules us_dst; - - -} } //namespace posix_time - - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif - diff --git a/sdk/include/boost/date_time/posix_time/ptime.hpp b/sdk/include/boost/date_time/posix_time/ptime.hpp deleted file mode 100644 index f7a5e16fe42..00000000000 --- a/sdk/include/boost/date_time/posix_time/ptime.hpp +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef POSIX_PTIME_HPP___ -#define POSIX_PTIME_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/posix_time/posix_time_system.hpp" -#include "boost/date_time/time.hpp" - -namespace boost { - -namespace posix_time { - - //! Time type with no timezone or other adjustments - /*! \ingroup time_basics - */ - class ptime : public date_time::base_time - { - public: - typedef posix_time_system time_system_type; - typedef time_system_type::time_rep_type time_rep_type; - typedef time_system_type::time_duration_type time_duration_type; - typedef ptime time_type; - //! Construct with date and offset in day - ptime(gregorian::date d,time_duration_type td) : date_time::base_time(d,td) - {} - //! Construct a time at start of the given day (midnight) - explicit ptime(gregorian::date d) : date_time::base_time(d,time_duration_type(0,0,0)) - {} - //! Copy from time_rep - ptime(const time_rep_type& rhs): - date_time::base_time(rhs) - {} - }; - - - -} }//namespace posix_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif - diff --git a/sdk/include/boost/date_time/posix_time/time_formatters.hpp b/sdk/include/boost/date_time/posix_time/time_formatters.hpp deleted file mode 100644 index a0b39ef4089..00000000000 --- a/sdk/include/boost/date_time/posix_time/time_formatters.hpp +++ /dev/null @@ -1,169 +0,0 @@ -#ifndef POSIXTIME_FORMATTERS_HPP___ -#define POSIXTIME_FORMATTERS_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/gregorian/gregorian.hpp" -#include "boost/date_time/iso_format.hpp" -#include "boost/date_time/date_format_simple.hpp" -#include "boost/date_time/posix_time/posix_time_types.hpp" -#include "boost/date_time/time_formatting_streams.hpp" - -namespace boost { - -namespace posix_time { - - //! Time duration to string hh::mm::ss.fffffff. Example: 10:09:03.0123456 - /*!\ingroup time_format - */ - inline std::string to_simple_string(time_duration td) { - std::ostringstream ss; - ss << std::setw(2) << std::setfill('0') << td.hours() << ":"; - ss << std::setw(2) << std::setfill('0') << td.minutes() << ":"; - ss << std::setw(2) << std::setfill('0') << td.seconds(); - //TODO the following is totally non-generic, yelling FIXME -#if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0 - boost::int64_t frac_sec = td.fractional_seconds(); -// JDG [7/6/02 VC++ compatibility] - char buff[32]; - _i64toa(frac_sec, buff, 10); -#else - time_duration::fractional_seconds_type frac_sec = td.fractional_seconds(); -#endif - if (frac_sec != 0) { - ss << "." << std::setw(time_duration::num_fractional_digits()) - << std::setfill('0') - -// JDG [7/6/02 VC++ compatibility] -#if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0 - << buff; -#else - << frac_sec; -#endif - } - return ss.str(); - } - - //! Time duration in iso format hhmmss,fffffff Example: 10:09:03,0123456 - /*!\ingroup time_format - */ - inline std::string to_iso_string(time_duration td) { - std::ostringstream ss; - ss << std::setw(2) << std::setfill('0') << td.hours(); - ss << std::setw(2) << std::setfill('0') << td.minutes(); - ss << std::setw(2) << std::setfill('0') << td.seconds(); - //TODO the following is totally non-generic, yelling FIXME -#if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0 - boost::int64_t frac_sec = td.fractional_seconds(); - // JDG [7/6/02 VC++ compatibility] - char buff[32]; - _i64toa(frac_sec, buff, 10); -#else - time_duration::fractional_seconds_type frac_sec = td.fractional_seconds(); -#endif - if (frac_sec != 0) { - ss << "." << std::setw(time_duration::num_fractional_digits()) - << std::setfill('0') - -// JDG [7/6/02 VC++ compatibility] -#if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0 - << buff; -#else - << frac_sec; -#endif - } - return ss.str(); - } - - //! Time to simple format CCYY-mmm-dd hh:mm:ss.fffffff - /*!\ingroup time_format - */ - inline std::string to_simple_string(ptime t) { - std::string ts = gregorian::to_simple_string(t.date()) + " "; - return ts + to_simple_string(t.time_of_day()); - } - - //! Convert to string of form [YYYY-mmm-DD HH:MM::SS.ffffff/YYYY-mmm-DD HH:MM::SS.fffffff] - /*!\ingroup time_format - */ - inline std::string to_simple_string(time_period tp) { - std::string d1(to_simple_string(tp.begin())); - std::string d2(to_simple_string(tp.last())); - return std::string("[" + d1 + "/" + d2 +"]"); - } - - //! Convert iso short form YYYYMMDDTHHMMSS where T is the date-time separator - /*!\ingroup time_format - */ - inline std::string to_iso_string(ptime t) { - std::string ts = gregorian::to_iso_string(t.date()) + "T"; - return ts + to_iso_string(t.time_of_day()); - } - - //! Convert to form YYYY-MM-DDTHH:MM:SS where T is the date-time separator - /*!\ingroup time_format - */ - inline std::string to_iso_extended_string(ptime t) { - std::string ts = gregorian::to_iso_extended_string(t.date()) + "T"; - return ts + to_simple_string(t.time_of_day()); - } - -//The following code is removed for configurations with good std::locale support (eg: MSVC6, gcc 2.9x) -#ifndef BOOST_DATE_TIME_NO_LOCALE - - //! ostream operator for posix_time::time_duration - template - inline - std::basic_ostream& - operator<<(std::basic_ostream& os, const time_duration& td) - { - typedef boost::date_time::ostream_time_duration_formatter duration_formatter; - duration_formatter::duration_put(td, os); - return os; - } - - //! ostream operator for posix_time::ptime - template - inline - std::basic_ostream& - operator<<(std::basic_ostream& os, const ptime& t) - { - typedef boost::date_time::ostream_time_formatter time_formatter; - time_formatter::time_put(t, os); - return os; - } - - //! ostream operator for posix_time::time_period - template - inline - std::basic_ostream& - operator<<(std::basic_ostream& os, const time_period& tp) - { - typedef boost::date_time::ostream_time_period_formatter period_formatter; - period_formatter::period_put(tp, os); - return os; - } - - - -#endif - - -} } //namespace posix_time - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif - diff --git a/sdk/include/boost/date_time/posix_time/time_parsers.hpp b/sdk/include/boost/date_time/posix_time/time_parsers.hpp deleted file mode 100644 index e9b9b80734d..00000000000 --- a/sdk/include/boost/date_time/posix_time/time_parsers.hpp +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef POSIXTIME_PARSERS_HPP___ -#define POSIXTIME_PARSERS_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/gregorian/gregorian.hpp" -#include "boost/date_time/time_parsing.hpp" -#include "boost/date_time/posix_time/posix_time_types.hpp" - - -namespace boost { - -namespace posix_time { - - inline time_duration duration_from_string(const std::string& s) { - return date_time::parse_delimited_time_duration(s); - } - - inline ptime time_from_string(const std::string& s) { - return date_time::parse_delimited_time(s, ' '); - } - - inline ptime from_iso_string(const std::string& s) { - return date_time::parse_iso_time(s, 'T'); - } - - - -} } //namespace posix_time - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif - diff --git a/sdk/include/boost/date_time/posix_time/time_period.hpp b/sdk/include/boost/date_time/posix_time/time_period.hpp deleted file mode 100644 index db0e1071b90..00000000000 --- a/sdk/include/boost/date_time/posix_time/time_period.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef POSIX_TIME_PERIOD_HPP___ -#define POSIX_TIME_PERIOD_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/date_time/period.hpp" -#include "boost/date_time/posix_time/posix_time_duration.hpp" -#include "boost/date_time/posix_time/ptime.hpp" - -namespace boost { -namespace posix_time { - - //! Time period type - /*! \ingroup time_basics - */ - typedef date_time::period time_period; - - -} }//namespace posix_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif - diff --git a/sdk/include/boost/date_time/special_defs.hpp b/sdk/include/boost/date_time/special_defs.hpp deleted file mode 100644 index 2b205c97630..00000000000 --- a/sdk/include/boost/date_time/special_defs.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef DATE_TIME_SPECIAL_DEFS_HPP__ -#define DATE_TIME_SPECIAL_DEFS_HPP__ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -namespace boost { -namespace date_time { - - enum special_values {not_a_date_time, - neg_infin, pos_infin, - min_date_time, max_date_time, - not_special}; - - -} } //namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif - diff --git a/sdk/include/boost/date_time/testfrmwk.hpp b/sdk/include/boost/date_time/testfrmwk.hpp deleted file mode 100644 index de2505bee6d..00000000000 --- a/sdk/include/boost/date_time/testfrmwk.hpp +++ /dev/null @@ -1,74 +0,0 @@ - -#ifndef TEST_FRMWK_HPP___ -#define TEST_FRMWK_HPP___ -/* - * Copyright (c) 2000 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * - * Author: Jeff Garland - */ - - -#include -#include - -//! Really simple test framework for counting and printing -class TestStats -{ -public: - static TestStats& instance() {static TestStats ts; return ts;} - void addPassingTest() {testcount_++; passcount_++;} - void addFailingTest() {testcount_++;} - unsigned int testcount() const {return testcount_;} - unsigned int passcount() const {return passcount_;} - void print(std::ostream& out = std::cout) const - { - out << testcount_ << " Tests Executed: " ; - if (passcount() != testcount()) { - out << (testcount() - passcount()) << " FAILURES"; - } - else { - out << "All Succeeded" << std::endl; - } - out << std::endl; - } -private: - TestStats() : testcount_(0), passcount_(0) {} - unsigned int testcount_; - unsigned int passcount_; -}; - - -bool check(const std::string& testname, bool testcond) -{ - TestStats& stat = TestStats::instance(); - if (testcond) { - std::cout << "Pass :: " << testname << " " << std::endl; - stat.addPassingTest(); - return true; - } - else { - stat.addFailingTest(); - std::cout << "FAIL :: " << testname << " " << std::endl; - return false; - } -}; - - -int printTestStats() -{ - TestStats& stat = TestStats::instance(); - stat.print(); - return stat.testcount() - stat.passcount(); -}; - -#endif diff --git a/sdk/include/boost/date_time/time.hpp b/sdk/include/boost/date_time/time.hpp deleted file mode 100644 index 8385eceb62c..00000000000 --- a/sdk/include/boost/date_time/time.hpp +++ /dev/null @@ -1,156 +0,0 @@ - -#ifndef DATE_TIME_TIME_HPP___ -#define DATE_TIME_TIME_HPP___ -/* Copyright (c) 2000, 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -/*! @file time.hpp - This file contains the interface for the time associated classes. -*/ -#include "boost/date_time/time_defs.hpp" -#include "boost/operators.hpp" -#include - -namespace boost { -namespace date_time { - - //! Representation of a precise moment in time, including the date. - /*! - This class is a skeleton for the interface of a temporal type - with a resolution is higher than a day. It is intended that - this class be the base class and that the actual time - class be derived using the BN pattern. In this way, the derived - class can make decisions such as 'should there be a default constructor' - and what should it set its value to, should there be optional constructors - say allowing only an time_durations that generate a time from a clock,etc. - So, in fact multiple time types can be created for a time_system with - different construction policies, and all of them can perform basic - operations by only writing a copy constructor. Finally, compiler - errors are also shorter. - - The real behavior of the time class is provided by the time_system - template parameter. This class must provide all the logic - for addition, subtraction, as well as define all the interface - types. - - */ - - template - class base_time : private - boost::less_than_comparable > - { - public: - typedef T time_type; - typedef typename time_system::time_rep_type time_rep_type; - typedef typename time_system::date_type date_type; - typedef typename time_system::date_duration_type date_duration_type; - typedef typename time_system::time_duration_type time_duration_type; - //typedef typename time_system::hms_type hms_type; - - base_time(const date_type& day, - const time_duration_type& td, - dst_flags dst=not_dst) : - time_(time_system::get_time_rep(day, td, dst)) - {} - base_time(const time_rep_type& rhs) : - time_(rhs) - {} - date_type date() const - { - return time_system::get_date(time_); - } - time_duration_type time_of_day() const - { - return time_system::get_time_of_day(time_); - } - std::string zone_name() const - { - return time_system::zone_name(time_); - } - //TODO add these special functions -// //! check to see if date is not a value -// bool is_not_a_date() const -// { -// return traits_type::is_not_a_number(days_); -// } -// //! check to see if date is one of the infinity values -// bool is_infinity() const -// { -// return traits_type::is_infinity(days_); -// } - -// //! check to see if date is greater than all possible dates -// bool is_pos_infinity() const -// { -// return traits_type::is_pos_infinity(days_); -// } -// //! check to see if date is greater than all possible dates -// bool is_neg_infinity() const -// { -// return traits_type::is_neg_infinity(days_); -// } - - //!Equality operator -- others generated by boost::equality_comparable - bool operator==(const time_type& rhs) const - { - return time_system::is_equal(time_,rhs.time_); - } - //!Equality operator -- others generated by boost::less_than_comparable - bool operator<(const time_type& rhs) const - { - return time_system::is_less(time_,rhs.time_); - } - //! add date durations - time_type operator+(const date_duration_type& dd) const - { - return time_system::add_days(time_, dd); - } - //! subtract date durations - time_type operator-(const date_duration_type& dd) const - { - return time_system::subtract_days(time_, dd); - } - //! subtract time durations - time_type operator-(const time_duration_type& rhs) const - { - return time_system::subtract_time_duration(time_, rhs); - } - //! difference between to times - time_duration_type operator-(const time_type& rhs) const - { - return time_system::subtract_times(time_, rhs.time_); - } - //! add time durations - time_type operator+(const time_duration_type& td) const - { - return time_type(time_system::add_time_duration(time_, td)); - } - - protected: - time_rep_type time_; - }; - - - - - -} } //namespace date_time::boost - -/* Copyright (c) 2000,2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif diff --git a/sdk/include/boost/date_time/time_clock.hpp b/sdk/include/boost/date_time/time_clock.hpp deleted file mode 100644 index 6f256d37f4e..00000000000 --- a/sdk/include/boost/date_time/time_clock.hpp +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef DATE_TIME_TIME_CLOCK_HPP___ -#define DATE_TIME_TIME_CLOCK_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -/*! @file time_clock.hpp - This file contains the interface for clock devices. -*/ - -#include "boost/date_time/c_time.hpp" - -namespace boost { -namespace date_time { - - - //! A clock providing time level services based on C time_t capabilities - /*! This clock provides resolution to the 1 second level - */ - template - class second_clock - { - public: - // typedef typename time_type::date_type date_type; - typedef typename time_type::time_duration_type time_duration_type; - - static time_type local_time() - { - ::std::time_t t; - ::std::time(&t); - ::std::tm* curr = ::std::localtime(&t); - return create_time(curr); - } - - //! Get the current day in universal date as a ymd_type - static time_type universal_time() - { - - ::std::time_t t; - ::std::time(&t); - ::std::tm* curr= ::std::gmtime(&t); - return create_time(curr); - } - - private: - static time_type create_time(::std::tm* current) - { - date_type d(current->tm_year + 1900, - current->tm_mon + 1, - current->tm_mday); - time_duration_type td(current->tm_hour, - current->tm_min, - current->tm_sec); - return time_type(d,td); - } - - }; - - -} } //namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/time_defs.hpp b/sdk/include/boost/date_time/time_defs.hpp deleted file mode 100644 index 0233492cabb..00000000000 --- a/sdk/include/boost/date_time/time_defs.hpp +++ /dev/null @@ -1,49 +0,0 @@ - -#ifndef DATE_TIME_TIME_PRECISION_LIMITS_HPP -#define DATE_TIME_TIME_PRECISION_LIMITS_HPP - -/* Copyright (c) 2000, 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -/*! \file time_defs.hpp - This file contains nice definitions for handling the resoluion of various time - reprsentations. -*/ - -namespace boost { -namespace date_time { - - //!Defines some nice types for handling time level resolutions - enum time_resolutions {sec, tenth, hundreth, milli, ten_thousandth, micro, nano, NumResolutions }; - - //! Flags for daylight savings or summer time - enum dst_flags {not_dst, is_dst, calculate}; - - - //Todo move resolution strings - //!A resolution adjustment table which corresponds to the name table - // static const unsigned long resolution_adjust[NumResolutions] = {1,10,100,1000,1000000,1000000000 }; - //!Some strings for the various resolutions - //const char* const resolution_names[NumResolutions] = {"Second", "Tenth", "Hundreth", "Milli", "Micro", "Nano"}; - - -} } //namespace date_time - -/* Copyright (c) 2000,2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - - -#endif diff --git a/sdk/include/boost/date_time/time_duration.hpp b/sdk/include/boost/date_time/time_duration.hpp deleted file mode 100644 index a37e78b0d11..00000000000 --- a/sdk/include/boost/date_time/time_duration.hpp +++ /dev/null @@ -1,191 +0,0 @@ -#ifndef DATE_TIME_TIME_DURATION_HPP___ -#define DATE_TIME_TIME_DURATION_HPP___ -/* Copyright (c) 2000 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/operators.hpp" -#include "boost/date_time/time_defs.hpp" - -namespace boost { -namespace date_time { - - //! Simple function to calculate absolute value of a numeric type - template // JDG [7/6/02 made a template] - inline T absolute_value(T x) - { - return x < 0 ? -x : x; - } - - - //! Represents some amount of elapsed time measure to a given resolution - /*! This class represents a standard set of capabilities for all - counted time durations. Time duration implementations should derive - from this class passing their type as the first template parameter. - This design allows the subclass duration types to provide custom - construction policies or other custom features not provided here. - - @param T The subclass type - @param rep_type The time resolution traits for this duration type. - */ - template - class time_duration : private - boost::less_than_comparable > - { - public: - typedef T duration_type; //the subclass - typedef rep_type traits_type; - typedef typename rep_type::day_type day_type; - typedef typename rep_type::hour_type hour_type; - typedef typename rep_type::min_type min_type; - typedef typename rep_type::sec_type sec_type; - typedef typename rep_type::fractional_seconds_type fractional_seconds_type; - typedef typename rep_type::tick_type tick_type; - - time_duration() : ticks_(0) {} - time_duration(hour_type hours, - min_type minutes, - sec_type seconds=0, - fractional_seconds_type frac_sec = 0) : - ticks_(rep_type::to_tick_count(hours,minutes,seconds,frac_sec)) - {} - - //! Returns smallest representable duration - static duration_type unit() - { - return duration_type(0,0,0,1); - } - //! Provide the resolution of this duration type - static time_resolutions resolution() - { - return rep_type::resolution(); - } - //! Returns number of hours in the duration - hour_type hours() const - { - return (ticks_ / (3600*rep_type::res_adjust())); - } - //! Returns normalized number of minutes - min_type minutes() const - { - return absolute_value(((ticks() / (60*rep_type::res_adjust())) % 60)); - } - //! Returns normalized number of seconds - sec_type seconds() const - { - return absolute_value((ticks()/rep_type::res_adjust()) % 60); - } - //! Returns count of fractional seconds at given resolution - fractional_seconds_type fractional_seconds() const - { - return absolute_value((ticks()%rep_type::res_adjust())); - } - //! Returns number of possible digits in fractional seconds - static unsigned short num_fractional_digits() - { - return rep_type::num_fractional_digits(); - } - duration_type invert_sign() const - { - return duration_type(-ticks_); - } - bool is_negative() const - { - return ticks_ < 0; - } - bool operator<(const time_duration& rhs) const - { - return ticks_ < rhs.ticks_; - } - bool operator==(const time_duration& rhs) const - { - return ticks_ == rhs.ticks_; - } - duration_type operator-(const duration_type& d) const - { - return duration_type(ticks_ - d.ticks_); - } - duration_type operator+(const duration_type& d) const - { - return duration_type(ticks_ + d.ticks_); - } - tick_type ticks() const - { - return ticks_; - } - - protected: - explicit time_duration(tick_type in) : ticks_(in) {}; - tick_type ticks_; - }; - - //! Template for instantiating derived adjusting durations - /* These templates are designed to work with multiples of - * 10 for frac_of_second and resoultion adjustment - */ - template - class subsecond_duration : public base_duration - { - public: - typedef typename base_duration::traits_type traits_type; - explicit subsecond_duration(long ss) : - base_duration(0,0,0,ss*traits_type::res_adjust()/frac_of_second) - {} - }; - - //The following types are supplied to allow simple typedefs later on - template - class millisec_duration : public base_duration - { - public: - typedef typename base_duration::traits_type traits_type; - explicit millisec_duration(long ss) : - base_duration(0,0,0,ss*traits_type::res_adjust()/1000) - {} - - }; - - template - class microsec_duration : public base_duration - { - public: - typedef typename base_duration::traits_type traits_type; - explicit microsec_duration(long ss) : - base_duration(0,0,0,ss*traits_type::res_adjust()/1000000) - {} - - }; - - template - class nanosec_duration : public base_duration - { - public: - typedef typename base_duration::traits_type traits_type; - explicit nanosec_duration(long ss) : - base_duration(0,0,0,ss*traits_type::res_adjust()/1000000000) - {} - - }; - - - -} } //namespace date_time - - -/* Copyright (c) 2000 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - - -#endif diff --git a/sdk/include/boost/date_time/time_formatting_streams.hpp b/sdk/include/boost/date_time/time_formatting_streams.hpp deleted file mode 100644 index 5099d8e6fc0..00000000000 --- a/sdk/include/boost/date_time/time_formatting_streams.hpp +++ /dev/null @@ -1,108 +0,0 @@ -#ifndef DATE_TIME_TIME_FORMATTING_STREAMS_HPP___ -#define DATE_TIME_TIME_FORMATTING_STREAMS_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -#include "boost/date_time/date_formatting_locales.hpp" - -#ifndef BOOST_DATE_TIME_NO_LOCALE - -namespace boost { -namespace date_time { - - - //! Put a time type into a stream using appropriate facets - template - class ostream_time_duration_formatter - { - public: - typedef std::basic_ostream ostream_type; - typedef typename time_duration_type::fractional_seconds_type fractional_seconds_type; - - //! Put time into an ostream - static void duration_put(const time_duration_type& td, - ostream_type& os) - { - os << std::setw(2) << std::setfill('0') << td.hours() << ":"; - os << std::setw(2) << std::setfill('0') << td.minutes() << ":"; - os << std::setw(2) << std::setfill('0') << td.seconds(); - fractional_seconds_type frac_sec = td.fractional_seconds(); - if (frac_sec != 0) { - os << "." << std::setw(time_duration_type::num_fractional_digits()) - << std::setfill('0') - << frac_sec; - } - - } // duration_put - }; //class ostream_time_duration_formatter - - //! Put a time type into a stream using appropriate facets - template - class ostream_time_formatter - { - public: - typedef std::basic_ostream ostream_type; - typedef typename time_type::date_type date_type; - typedef typename time_type::time_duration_type time_duration_type; - typedef ostream_time_duration_formatter duration_formatter; - - //! Put time into an ostream - static void time_put(const time_type& t, - ostream_type& os) - { - date_type d = t.date(); - os << d << " "; //TODO: fix the separator here. - duration_formatter::duration_put(t.time_of_day(), os); - - } // time_to_ostream - }; //class ostream_time_formatter - - - //! Put a time period into a stream using appropriate facets - template - class ostream_time_period_formatter - { - public: - typedef std::basic_ostream ostream_type; - typedef typename time_period_type::point_type time_type; - typedef ostream_time_formatter time_formatter; - - //! Put time into an ostream - static void period_put(const time_period_type& tp, - ostream_type& os) - { - os << '['; //TODO: facet or manipulator for periods? - time_formatter::time_put(tp.begin(), os); - os << '/'; //TODO: facet or manipulator for periods? - time_formatter::time_put(tp.last(), os); - os << ']'; - - } // period_put - - }; //class ostream_time_period_formatter - - - -} } //namespace date_time - -#endif //BOOST_DATE_TIME_NO_LOCALE - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ -#endif - diff --git a/sdk/include/boost/date_time/time_iterator.hpp b/sdk/include/boost/date_time/time_iterator.hpp deleted file mode 100644 index 8d351295b3e..00000000000 --- a/sdk/include/boost/date_time/time_iterator.hpp +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef DATE_TIME_TIME_ITERATOR_HPP___ -#define DATE_TIME_TIME_ITERATOR_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -namespace boost { -namespace date_time { - - - //! Simple time iterator skeleton class - template - class time_itr { - public: - typedef typename time_type::time_duration_type time_duration_type; - time_itr(time_type t, time_duration_type d) : current_(t), offset_(d) {}; - time_itr& operator++() - { - current_ = current_ + offset_; - return *this; - }; - time_type operator*() {return current_;}; - time_type* operator->() {return ¤t_;}; - bool operator< (const time_type& t) {return current_ < t;}; - bool operator<= (const time_type& t) {return current_ <= t;}; - bool operator!= (const time_type& t) {return current_ != t;}; - bool operator== (const time_type& t) {return current_ == t;}; - bool operator> (const time_type& t) {return current_ > t;}; - bool operator>= (const time_type& t) {return current_ >= t;}; - - private: - time_type current_; - time_duration_type offset_; - }; - - - -} }//namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/time_parsing.hpp b/sdk/include/boost/date_time/time_parsing.hpp deleted file mode 100644 index eafa9a87a88..00000000000 --- a/sdk/include/boost/date_time/time_parsing.hpp +++ /dev/null @@ -1,153 +0,0 @@ -#ifndef _DATE_TIME_TIME_PARSING_HPP___ -#define _DATE_TIME_TIME_PARSING_HPP___ -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include "boost/tokenizer.hpp" -#include "boost/lexical_cast.hpp" -#include "boost/date_time/date_parsing.hpp" -#include "boost/cstdint.hpp" - - -namespace boost { -namespace date_time { - - - template - inline - time_duration - parse_delimited_time_duration(const std::string& s) - { - unsigned short hour=0, min=0, sec =0; - boost::int64_t fs=0; - int pos = 0; - boost::tokenizer > tok(s); - for(boost::tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){ - switch(pos) { - case 0: { - hour = boost::lexical_cast(*beg); - break; - } - case 1: { - min = boost::lexical_cast(*beg); - break; - } - case 2: { - sec = boost::lexical_cast(*beg); - break; - }; - case 3: { - //Works around a bug in MSVC 6 library that does not support - //operator>> thus meaning lexical_cast will fail to compile. -#if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0 - fs = _atoi64(beg->c_str()); -#else - fs = boost::lexical_cast(*beg); -#endif - break; - } - }//switch - pos++; - } - return time_duration(hour, min, sec, fs); - } - - //TODO this could use some error checking! - inline - bool - split(const std::string& s, - char sep, - std::string& first, - std::string& second) - { - int sep_pos = s.find(sep); - first = s.substr(0,sep_pos); - second = s.substr(sep_pos+1); - return true; - } - - template - inline - time_type - parse_delimited_time(const std::string& s, char sep) - { - typedef typename time_type::time_duration_type time_duration; - typedef typename time_type::date_type date_type; - - //split date/time on a unique delimiter char such as ' ' or 'T' - std::string date_string, tod_string; - split(s, sep, date_string, tod_string); - //call parse_date with first string - date_type d = parse_date(date_string); - //call parse_time_duration with remaining string - time_duration td = parse_delimited_time_duration(tod_string); - //construct a time - return time_type(d, td); - - } - - //! Parse time duration part of an iso time of form: hhmmss (eg: 120259 is 12 hours 2 min 59 seconds) - template - inline - time_duration - parse_undelimited_time_duration(const std::string& s) - { - int offsets[] = {2,2,2}; - int pos = 0; - short hours, min, sec; - boost::offset_separator osf(offsets, offsets+3); - boost::tokenizer tok(s, osf); - for(boost::tokenizer::iterator ti=tok.begin(); ti!=tok.end();++ti){ - short i = boost::lexical_cast(*ti); - // std::cout << i << std::endl; - switch(pos) { - case 0: hours = i; break; - case 1: min = i; break; - case 2: sec = i; break; - }; - pos++; - } - return time_duration(hours, min, sec); - } - - //! Parse time string of form YYYYMMDDThhmmss where T is delimeter between date and time - template - inline - time_type - parse_iso_time(const std::string& s, char sep) - { - typedef typename time_type::time_duration_type time_duration; - typedef typename time_type::date_type date_type; - - //split date/time on a unique delimiter char such as ' ' or 'T' - std::string date_string, tod_string; - split(s, sep, date_string, tod_string); - //call parse_date with first string - date_type d = parse_undelimited_date(date_string); - //call parse_time_duration with remaining string - time_duration td = parse_undelimited_time_duration(tod_string); - //construct a time - return time_type(d, td); - } - - - -} }//namespace date_time - - - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif diff --git a/sdk/include/boost/date_time/time_resolution_traits.hpp b/sdk/include/boost/date_time/time_resolution_traits.hpp deleted file mode 100644 index de08ab6714c..00000000000 --- a/sdk/include/boost/date_time/time_resolution_traits.hpp +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef DATE_TIME_TIME_RESOLUTION_TRAITS_HPP -#define DATE_TIME_TIME_RESOLUTION_TRAITS_HPP - -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -#include "boost/date_time/time_defs.hpp" -#include "boost/cstdint.hpp" - -namespace boost { -namespace date_time { - - template - class time_resolution_traits { - public: - typedef frac_sec_type fractional_seconds_type; - typedef frac_sec_type tick_type; - typedef v_type day_type; - typedef v_type hour_type; - typedef v_type min_type; - typedef v_type sec_type; - - //Would like this to be frac_sec_type, but some compilers complain - BOOST_STATIC_CONSTANT(int, ticks_per_second = resolution_adjust); - // static const boost::int32_t ticks_per_second = resolution_adjust; - - static time_resolutions resolution() - { - return res; - } - static unsigned short num_fractional_digits() - { - return frac_digits; - } - static fractional_seconds_type res_adjust() - { - return resolution_adjust; - } - static tick_type to_tick_count(hour_type hours, - min_type minutes, - sec_type seconds, - fractional_seconds_type fs) - { - return (((hours*3600) + (minutes*60) + seconds)*res_adjust()) + fs; - } - - }; - - typedef time_resolution_traits milli_res; - typedef time_resolution_traits micro_res; - typedef time_resolution_traits nano_res; - - -} } //namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - - -#endif diff --git a/sdk/include/boost/date_time/time_system_counted.hpp b/sdk/include/boost/date_time/time_system_counted.hpp deleted file mode 100644 index 9e73109f5ca..00000000000 --- a/sdk/include/boost/date_time/time_system_counted.hpp +++ /dev/null @@ -1,149 +0,0 @@ - -#ifndef DATE_TIME_TIME_SYSTEM_COUNTED_HPP -#define DATE_TIME_TIME_SYSTEM_COUNTED_HPP - -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -#include "boost/date_time/time_defs.hpp" -#include - - -namespace boost { -namespace date_time { - - //! Time representation that uses a single integer count - template - struct counted_time_rep - { - typedef typename config::int_type int_type; - typedef typename config::date_type date_type; - typedef typename date_type::duration_type date_duration_type; - typedef typename date_type::calendar_type calendar_type; - typedef typename date_type::ymd_type ymd_type; - typedef typename config::time_duration_type time_duration_type; - typedef typename config::resolution_traits resolution_traits; - - counted_time_rep(const date_type& d, const time_duration_type& tod) - { - time_count_ = (d.day_number() * frac_sec_per_day()) + tod.ticks(); - } - explicit counted_time_rep(int_type count) : - time_count_(count) - {} - date_type date() const - { - typename calendar_type::date_int_type dc = day_count(); - //std::cout << "time_rep here:" << dc << std::endl; - ymd_type ymd = calendar_type::from_day_number(dc); - return date_type(ymd); - } - int_type day_count() const - { - return time_count_ / frac_sec_per_day(); - } - int_type time_count() const - { - return time_count_; - } - int_type tod() const - { - return time_count_ % frac_sec_per_day(); - } - static int_type frac_sec_per_day() - { - int_type seconds_per_day = 60*60*24; - int_type fractional_sec_per_sec(resolution_traits::res_adjust()); - return seconds_per_day*fractional_sec_per_sec; - } - private: - int_type time_count_; - }; - - //! An unadjusted time system implementation. - template - class counted_time_system - { - public: - typedef time_rep time_rep_type; - typedef typename time_rep_type::time_duration_type time_duration_type; - typedef typename time_duration_type::fractional_seconds_type fractional_seconds_type; - typedef typename time_rep_type::date_type date_type; - typedef typename time_rep_type::date_duration_type date_duration_type; - - static time_rep_type get_time_rep(const date_type& day, - const time_duration_type& tod, - date_time::dst_flags) - { - return time_rep_type(day, tod); - } - static date_type get_date(const time_rep_type& val) - { - return val.date(); - } - static time_duration_type get_time_of_day(const time_rep_type& val) - { - return time_duration_type(0,0,0,val.tod()); - } - static std::string zone_name(const time_rep_type&) - { - return ""; - } - static bool is_equal(const time_rep_type& lhs, const time_rep_type& rhs) - { - return (lhs.time_count() == rhs.time_count()); - } - static bool is_less(const time_rep_type& lhs, const time_rep_type& rhs) - { - return (lhs.time_count() < rhs.time_count()); - } - static time_rep_type add_days(const time_rep_type& base, - const date_duration_type& dd) - { - return time_rep_type(base.time_count() + (dd.days() * time_rep_type::frac_sec_per_day())); - } - static time_rep_type subtract_days(const time_rep_type& base, - const date_duration_type& dd) - { - return time_rep_type(base.time_count() - (dd.days() * time_rep_type::frac_sec_per_day())); - } - static time_rep_type subtract_time_duration(const time_rep_type& base, - const time_duration_type& td) - { - return time_rep_type(base.time_count() - td.ticks()); - } - static time_rep_type add_time_duration(const time_rep_type& base, - time_duration_type td) - { - return time_rep_type(base.time_count() + td.ticks()); - } - static time_duration_type subtract_times(const time_rep_type& lhs, - const time_rep_type& rhs) - { - fractional_seconds_type fs = lhs.time_count() - rhs.time_count(); - return time_duration_type(0,0,0,fs); - } - - }; - - -} } //namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - - -#endif diff --git a/sdk/include/boost/date_time/time_system_split.hpp b/sdk/include/boost/date_time/time_system_split.hpp deleted file mode 100644 index fc3680d27d8..00000000000 --- a/sdk/include/boost/date_time/time_system_split.hpp +++ /dev/null @@ -1,132 +0,0 @@ -#ifndef DATE_TIME_TIME_SYSTEM_SPLIT_HPP -#define DATE_TIME_TIME_SYSTEM_SPLIT_HPP - -/* Copyright (c) 2002 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -#include -#include "boost/date_time/compiler_config.hpp" - -namespace boost { -namespace date_time { - - //! An unadjusted time system implementation. -#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) - template -#else - template -#endif - class split_timedate_system - { - public: - typedef typename config::time_rep_type time_rep_type; - typedef typename config::date_type date_type; - typedef typename config::time_duration_type time_duration_type; - typedef typename config::date_duration_type date_duration_type; - typedef typename config::int_type int_type; - typedef typename config::resolution_traits resolution_traits; - - //86400 is number of seconds in a day... -#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) - typedef date_time::wrapping_int wrap_int_type; -#else - typedef date_time::wrapping_int wrap_int_type; -#endif - - static time_rep_type get_time_rep(const date_type& day, - const time_duration_type& tod, - date_time::dst_flags) - { - return time_rep_type(day, tod); - } - static date_type get_date(const time_rep_type& val) - { - return date_type(val.day); - } - static time_duration_type get_time_of_day(const time_rep_type& val) - { - return time_duration_type(val.time_of_day); - } - static std::string zone_name(const time_rep_type&) - { - return ""; - } - static bool is_equal(const time_rep_type& lhs, const time_rep_type& rhs) - { - return ((lhs.day == rhs.day) && (lhs.time_of_day == rhs.time_of_day)); - // return true; - } - static bool is_less(const time_rep_type& lhs, const time_rep_type& rhs) - { - if (lhs.day < rhs.day) return true; - if (lhs.day > rhs.day) return false; - return (lhs.time_of_day < rhs.time_of_day); - } - static time_rep_type add_days(const time_rep_type& base, - const date_duration_type& dd) - { - return time_rep_type(base.day+dd, base.time_of_day); - } - static time_rep_type subtract_days(const time_rep_type& base, - const date_duration_type& dd) - { - return time_rep_type(base.day-dd, base.time_of_day); - } - static time_rep_type subtract_time_duration(const time_rep_type& base, - const time_duration_type& td) - { - wrap_int_type day_offset(base.time_of_day.ticks()); - date_duration_type day_overflow(day_offset.subtract(td.ticks())); -// std::cout << "sub: " << base.time_of_day.ticks() << "|" -// << day_offset.as_int() << "|" -// << day_overflow.days() << std::endl; - return time_rep_type(base.day-day_overflow, - time_duration_type(0,0,0,day_offset.as_int())); - } - static time_rep_type add_time_duration(const time_rep_type& base, - time_duration_type td) - { - if (td.is_negative()) { - time_duration_type td1 = td.invert_sign(); - return subtract_time_duration(base,td1); - } - wrap_int_type day_offset(base.time_of_day.ticks()); - int_type doff = day_offset.add(td.ticks()); -// std::cout << "day overflow: " << doff << std::endl; -// std::cout << "ticks: " << td.ticks() << std::endl; - date_duration_type day_overflow(doff); -// std::cout << "base: " << to_simple_string(base.day) << std::endl; -// std::cout << "overflow " << day_overflow.days() << std::endl; - return time_rep_type(base.day+day_overflow, - time_duration_type(0,0,0,day_offset.as_int())); - } - static time_duration_type subtract_times(const time_rep_type& lhs, - const time_rep_type& rhs) - { - date_duration_type dd = lhs.day - rhs.day; - time_duration_type td(dd.days()*24,0,0); //days * 24 hours - time_duration_type td2 = lhs.time_of_day - rhs.time_of_day; - return td+td2; - // return time_rep_type(base.day-dd, base.time_of_day); - } - - }; - -} } //namespace date_time - -/* Copyright (c) 2002 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#endif diff --git a/sdk/include/boost/date_time/wrapping_int.hpp b/sdk/include/boost/date_time/wrapping_int.hpp deleted file mode 100644 index cfaec4df2ee..00000000000 --- a/sdk/include/boost/date_time/wrapping_int.hpp +++ /dev/null @@ -1,137 +0,0 @@ -#ifndef _DATE_TIME_WRAPPING_INT_HPP__ -#define _DATE_TIME_WRAPPING_INT_HPP__ -/* Copyright (c) 2001 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - - -namespace boost { -namespace date_time { - -//! A wrapping integer used to support time durations -/*! In composite date and time types this type is used to - * wrap at the day boundary. - * - */ -template -class wrapping_int { -public: - typedef int_type_ int_type; - //typedef overflow_type_ overflow_type; - static int_type wrap_value() {return wrap_val;} - //!Add, return true if wrapped - wrapping_int(int_type v) : value_(v) {}; - //! Explicit converion method - int_type as_int() const {return value_;} - operator int_type() const {return value_;} - int_type add(int_type v) - { - //take the mod here and assign it.... - int_type remainder = v % wrap_val; - int_type overflow = v / wrap_val; - value_ += remainder; - if ((value_) >= wrap_val) { - value_ -= wrap_val; - overflow++; - } - return overflow; - } - int_type subtract(int_type v) - { - //take the mod here and assign it.... - int_type remainder = v % wrap_val; - int_type underflow = v / wrap_val; - -// std::cout << "wi :" << value_ << "|" -// << v << "|" -// << underflow << "|" -// << remainder << "|" -// << wrap_val << std::endl; - if (remainder > value_) { - underflow++; - // value_ = remainder - value_; - value_ = wrap_val - (remainder-value_); - } - else { - value_ -= remainder; - //value_ = wrap_val-(remainder-value_); - // value_ = wrap_val -(value_-remainder); - } -// std::cout << "wi final uf: " << underflow -// << " value: " << value_ << std::endl; - return underflow; - } - -private: - int_type value_; - -}; - - -//! A wrapping integer used to wrap around at the top -/*! Bad name, quick impl to fix a bug -- fix later!! - * This allows the wrap to restart at a value other than 0. - * Currently this only works if wrap_min == 1 - */ -template -class wrapping_int2 { -public: - typedef int_type_ int_type; - static unsigned long wrap_value() {return wrap_max;} - static unsigned long min_value() {return wrap_min;} - //!Add, return true if wrapped - wrapping_int2(int_type v) : value_(v) {}; - //! Explicit converion method - int_type as_int() const {return value_;} - operator int_type() const {return value_;} - int_type add(int_type v) - { - //take the mod here and assign it.... - int_type remainder = v % wrap_max; - int_type overflow = v / wrap_max; -// std::cout << "wi2: " << value_ << "|" -// << v << "|" -// << remainder << "|" -// << wrap_max << "|" -// << wrap_min << std::endl; - value_ += remainder; - if ((value_) > wrap_max) { - overflow++; - value_ -= (wrap_max - wrap_min + 1); - } -// std::cout << "wi2 final: " -// << overflow << "|" -// << value_ << std::endl; - return overflow; - } - -private: - int_type value_; - -}; - - - -} } //namespace date_time - -/* - * Copyright (c) 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided as is without express or implied warranty. - * - * - * Author: Jeff Garland (jeff@CrystalClearSoftware.com) - * Created: Sat Sep 8 19:37:11 2001 - * - */ - - -#endif diff --git a/sdk/include/boost/date_time/year_month_day.hpp b/sdk/include/boost/date_time/year_month_day.hpp deleted file mode 100644 index 57022c086c5..00000000000 --- a/sdk/include/boost/date_time/year_month_day.hpp +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef YearMonthDayBase_HPP__ -#define YearMonthDayBase_HPP__ -/* Copyright (c) 2001 CrystalClear Software, Inc. - * Disclaimer & Full Copyright at end of file - * Author: Jeff Garland - */ - -namespace boost { -namespace date_time { - - //! Allow rapid creation of ymd triples of different types - template - struct year_month_day_base { - year_month_day_base(YearType year, - MonthType month, - DayType day); - YearType year; - MonthType month; - DayType day; - typedef YearType year_type; - typedef MonthType month_type; - typedef DayType day_type; - }; - - - //! A basic constructor - template - inline - year_month_day_base::year_month_day_base(YearType y, - MonthType m, - DayType d) : - year(y), - month(m), - day(d) - {} - -} }//namespace date_time - -/* Copyright (c) 2001 - * CrystalClear Software, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. CrystalClear Software makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#endif - diff --git a/sdk/include/boost/detail/algorithm.hpp b/sdk/include/boost/detail/algorithm.hpp deleted file mode 100644 index 4cc52c1e762..00000000000 --- a/sdk/include/boost/detail/algorithm.hpp +++ /dev/null @@ -1,249 +0,0 @@ -// (C) Copyright Jeremy Siek 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Hewlett-Packard Company makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * - * Copyright (c) 1996 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#ifndef BOOST_ALGORITHM_HPP -# define BOOST_ALGORITHM_HPP -# include -// Algorithms on sequences -// -// The functions in this file have not yet gone through formal -// review, and are subject to change. This is a work in progress. -// They have been checked into the detail directory because -// there are some graph algorithms that use these functions. - -#include -#include - -namespace boost { - - template - Iter1 begin(const std::pair& p) { return p.first; } - - template - Iter2 end(const std::pair& p) { return p.second; } - - template - typename boost::detail::iterator_traits::difference_type - size(const std::pair& p) { - return std::distance(p.first, p.second); - } - -#if 0 - // These seem to interfere with the std::pair overloads :( - template - typename Container::iterator - begin(Container& c) { return c.begin(); } - - template - typename Container::const_iterator - begin(const Container& c) { return c.begin(); } - - template - typename Container::iterator - end(Container& c) { return c.end(); } - - template - typename Container::const_iterator - end(const Container& c) { return c.end(); } - - template - typename Container::size_type - size(const Container& c) { return c.size(); } -#else - template - typename std::vector::iterator - begin(std::vector& c) { return c.begin(); } - - template - typename std::vector::const_iterator - begin(const std::vector& c) { return c.begin(); } - - template - typename std::vector::iterator - end(std::vector& c) { return c.end(); } - - template - typename std::vector::const_iterator - end(const std::vector& c) { return c.end(); } - - template - typename std::vector::size_type - size(const std::vector& c) { return c.size(); } -#endif - - template - void iota(ForwardIterator first, ForwardIterator last, T value) - { - for (; first != last; ++first, ++value) - *first = value; - } - template - void iota(Container& c, const T& value) - { - iota(begin(c), end(c), value); - } - - // Also do version with 2nd container? - template - OutIter copy(const Container& c, OutIter result) { - return std::copy(begin(c), end(c), result); - } - - template - bool equal(const Container1& c1, const Container2& c2) - { - if (size(c1) != size(c2)) - return false; - return std::equal(begin(c1), end(c1), begin(c2)); - } - - template - void sort(Container& c) { std::sort(begin(c), end(c)); } - - template - void sort(Container& c, const Predicate& p) { - std::sort(begin(c), end(c), p); - } - - template - void stable_sort(Container& c) { std::stable_sort(begin(c), end(c)); } - - template - void stable_sort(Container& c, const Predicate& p) { - std::stable_sort(begin(c), end(c), p); - } - - template - bool any_if(InputIterator first, InputIterator last, Predicate p) - { - return std::find_if(first, last, p) != last; - } - template - bool any_if(const Container& c, Predicate p) - { - return any_if(begin(c), end(c), p); - } - - template - bool contains(InputIterator first, InputIterator last, T value) - { - return std::find(first, last, value) != last; - } - template - bool contains(const Container& c, const T& value) - { - return contains(begin(c), end(c), value); - } - - template - bool all(InputIterator first, InputIterator last, Predicate p) - { - for (; first != last; ++first) - if (!p(*first)) - return false; - return true; - } - template - bool all(const Container& c, Predicate p) - { - return all(begin(c), end(c), p); - } - - template - bool none(InputIterator first, InputIterator last, Predicate p) - { - return std::find_if(first, last, p) == last; - } - template - bool none(const Container& c, Predicate p) - { - return none(begin(c), end(c), p); - } - - template - std::size_t count(const Container& c, const T& value) - { - return std::count(begin(c), end(c), value); - } - - template - std::size_t count_if(const Container& c, Predicate p) - { - return std::count_if(begin(c), end(c), p); - } - - template - bool is_sorted(ForwardIterator first, ForwardIterator last) - { - if (first == last) - return true; - - ForwardIterator next = first; - for (++next; next != last; first = next, ++next) { - if (*next < *first) - return false; - } - - return true; - } - - template - bool is_sorted(ForwardIterator first, ForwardIterator last, - StrictWeakOrdering comp) - { - if (first == last) - return true; - - ForwardIterator next = first; - for (++next; next != last; first = next, ++next) { - if (comp(*next, *first)) - return false; - } - - return true; - } - - template - bool is_sorted(const Container& c) - { - return is_sorted(begin(c), end(c)); - } - - template - bool is_sorted(const Container& c, StrictWeakOrdering comp) - { - return is_sorted(begin(c), end(c), comp); - } - -} // namespace boost - -#endif // BOOST_ALGORITHM_HPP diff --git a/sdk/include/boost/detail/allocator.hpp b/sdk/include/boost/detail/allocator.hpp deleted file mode 100644 index 278a2e5af20..00000000000 --- a/sdk/include/boost/detail/allocator.hpp +++ /dev/null @@ -1,283 +0,0 @@ -/* - * - * Copyright (c) 2001 - * Dr John Maddock - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Dr John Maddock makes no representations - * about the suitability of this software for any purpose. - * It is provided "as is" without express or implied warranty. - * - */ - -#ifndef BOOST_DETAIL_ALLOCATOR_HPP -#define BOOST_DETAIL_ALLOCATOR_HPP - -#include -#include -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ -using ::ptrdiff_t; -using ::size_t; -} -#endif - -// see if we have SGI alloc class: -#if defined(BOOST_NO_STD_ALLOCATOR) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__GLIBCPP__) || defined(__STL_CONFIG_H)) -# define BOOST_HAVE_SGI_ALLOCATOR -# include -# if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) -namespace boost{ namespace detail{ - typedef std::__sgi_alloc alloc_type; -}} -# else -namespace boost{ namespace detail{ - typedef std::alloc alloc_type; -}} -# endif -#endif - - -namespace boost{ namespace detail{ - -template -void allocator_construct(T* p, const T& t) -{ new (p) T(t); } - -template -void allocator_destroy(T* p) -{ - (void)p; // warning suppression - p->~T(); -} - -} } - -#if !defined(BOOST_NO_STD_ALLOCATOR) - -#include - -#define BOOST_DEFAULT_ALLOCATOR(T) std::allocator< T > - -namespace boost{ namespace detail{ - -template -struct rebind_allocator -{ - typedef typename A::template rebind binder; - typedef typename binder::other type; -}; - -} // namespace detail -} // namespace boost - -#elif !defined(BOOST_NO_MEMBER_TEMPLATES) - -// no std::allocator, but the compiler supports the necessary syntax, -// write our own allocator instead: - -#define BOOST_DEFAULT_ALLOCATOR(T) ::boost::detail::allocator< T > - -namespace boost{ namespace detail{ - -template -class allocator -{ -public: - - typedef T value_type; - typedef value_type * pointer; - typedef const T* const_pointer; - typedef T& reference; - typedef const T& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - template - struct rebind - { - typedef allocator other; - }; - - allocator(){} - - template - allocator(const allocator&){} - - allocator(const allocator&){} - - template - allocator& operator=(const allocator&) - { return *this; } - - ~allocator(){} - - pointer address(reference x) { return &x; } - - const_pointer address(const_reference x) const { return &x; } - - pointer allocate(size_type n, const void* = 0) - { - #ifdef BOOST_HAVE_SGI_ALLOCATOR - return n != 0 ? - reinterpret_cast(alloc_type::allocate(n * sizeof(value_type))) - : 0; - #else - return n != 0 ? - reinterpret_cast(::operator new(n * sizeof(value_type))) - : 0; - #endif - } - - void deallocate(pointer p, size_type n) - { - #ifdef BOOST_HAVE_SGI_ALLOCATOR - assert( (p == 0) == (n == 0) ); - if (p != 0) - alloc_type::deallocate((void*)p, n); - #else - assert( (p == 0) == (n == 0) ); - if (p != 0) - ::operator delete((void*)p); - #endif - } - - size_type max_size() const - { return size_t(-1) / sizeof(value_type); } - - void construct(pointer p, const T& val) const - { allocator_construct(p, val); } - - void destroy(pointer p) const - { allocator_destroy(p); } -}; - -template -struct rebind_allocator -{ - typedef typename A::template rebind binder; - typedef typename binder::other type; -}; - -} // namespace detail -} // namespace boost - -#else - -// no std::allocator, use workaround version instead, -// each allocator class must derive from a base class -// that allocates blocks of bytes: - -#define BOOST_DEFAULT_ALLOCATOR(T) ::boost::detail::allocator_adapter - -namespace boost{ namespace detail{ - -class simple_alloc -{ -public: - - typedef void value_type; - typedef value_type * pointer; - typedef const void* const_pointer; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - simple_alloc(){} - simple_alloc(const simple_alloc&){} - - ~simple_alloc(){} - - pointer allocate(size_type n, const void* = 0) - { - #ifdef BOOST_HAVE_SGI_ALLOCATOR - return n != 0 ? - reinterpret_cast(alloc_type::allocate(n)) - : 0; - #else - return n != 0 ? - reinterpret_cast(::operator new(n)) - : 0; - #endif - } - - void deallocate(pointer p, size_type n) - { - #ifdef BOOST_HAVE_SGI_ALLOCATOR - assert( (p == 0) == (n == 0) ); - if (p != 0) - alloc_type::deallocate((void*)p, n); - #else - assert( (p == 0) == (n == 0) ); - if (p != 0) - ::operator delete((void*)p); - #endif - } -}; - -template -class allocator_adapter : public Base -{ -public: - - typedef T value_type; - typedef value_type * pointer; - typedef const T* const_pointer; - typedef T& reference; - typedef const T& const_reference; - typedef size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef Base base_type; - - allocator_adapter(){} - allocator_adapter(const base_type& x) : Base(x){} - allocator_adapter& operator=(const base_type& x) - { - *(static_cast(this)) = x; - return *this; - } - - ~allocator_adapter(){} - - pointer address(reference x) { return &x; } - - const_pointer address(const_reference x) const { return &x; } - - pointer allocate(size_type n, const void* = 0) - { - return n != 0 ? - reinterpret_cast(base_type::allocate(n * sizeof(value_type))) - : 0; - } - - void deallocate(pointer p, size_type n) - { - assert( (p == 0) == (n == 0) ); - if (p != 0) - static_cast(this)->deallocate((void*)p, n * sizeof(value_type)); - } - - size_type max_size() const - { return size_t(-1) / sizeof(value_type); } - - void construct(pointer p, const T& val) const - { allocator_construct(p, val); } - - void destroy(pointer p) const - { allocator_destroy(p); } -}; - -template -struct rebind_allocator -{ - typedef allocator_adapter type; -}; - -} // namespace detail -} // namespace boost - -#endif - -#endif // include guard diff --git a/sdk/include/boost/detail/atomic_count.hpp b/sdk/include/boost/detail/atomic_count.hpp deleted file mode 100644 index 5321232349d..00000000000 --- a/sdk/include/boost/detail/atomic_count.hpp +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED -#define BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/atomic_count.hpp - thread/SMP safe reference counter -// -// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// typedef boost::detail::atomic_count; -// -// atomic_count a(n); -// -// (n is convertible to long) -// -// Effects: Constructs an atomic_count with an initial value of n -// -// a; -// -// Returns: (long) the current value of a -// -// ++a; -// -// Effects: Atomically increments the value of a -// Returns: nothing -// -// --a; -// -// Effects: Atomically decrements the value of a -// Returns: (long) zero if the new value of a is zero, -// unspecified non-zero value otherwise (usually the new value) -// -// Important note: when --a returns zero, it must act as a -// read memory barrier (RMB); i.e. the calling thread must -// have a synchronized view of the memory -// -// On Intel IA-32 (x86) memory is always synchronized, so this -// is not a problem. -// -// On many architectures the atomic instructions already act as -// a memory barrier. -// -// This property is necessary for proper reference counting, since -// a thread can update the contents of a shared object, then -// release its reference, and another thread may immediately -// release the last reference causing object destruction. -// -// The destructor needs to have a synchronized view of the -// object to perform proper cleanup. -// -// Original example by Alexander Terekhov: -// -// Given: -// -// - a mutable shared object OBJ; -// - two threads THREAD1 and THREAD2 each holding -// a private smart_ptr object pointing to that OBJ. -// -// t1: THREAD1 updates OBJ (thread-safe via some synchronization) -// and a few cycles later (after "unlock") destroys smart_ptr; -// -// t2: THREAD2 destroys smart_ptr WITHOUT doing any synchronization -// with respect to shared mutable object OBJ; OBJ destructors -// are called driven by smart_ptr interface... -// - -// Note: atomic_count_linux.hpp has been disabled by default; see the -// comments inside for more info. - -#include - -#ifndef BOOST_HAS_THREADS - -namespace boost -{ - -namespace detail -{ - -typedef long atomic_count; - -} - -} - -#elif defined(BOOST_USE_ASM_ATOMIC_H) -# include -#elif defined(BOOST_AC_USE_PTHREADS) -# include -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) -# include -#elif defined(__GLIBCPP__) -# include -#elif defined(BOOST_HAS_PTHREADS) -# define BOOST_AC_USE_PTHREADS -# include -#else - -// Use #define BOOST_DISABLE_THREADS to avoid the error -#error Unrecognized threading platform - -#endif - -#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED diff --git a/sdk/include/boost/detail/atomic_count_gcc.hpp b/sdk/include/boost/detail/atomic_count_gcc.hpp deleted file mode 100644 index c3d29a8736a..00000000000 --- a/sdk/include/boost/detail/atomic_count_gcc.hpp +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef BOOST_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED -#define BOOST_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED - -// -// boost/detail/atomic_count_gcc.hpp -// -// atomic_count for GNU libstdc++ v3 -// -// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html -// -// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// Copyright (c) 2002 Lars Gullik Bjønnes -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#include - -namespace boost -{ - -namespace detail -{ - -class atomic_count -{ -public: - - explicit atomic_count(long v) : value_(v) {} - - void operator++() - { - __atomic_add(&value_, 1); - } - - long operator--() - { - return !__exchange_and_add(&value_, -1); - } - - operator long() const - { - return __exchange_and_add(&value_, 0); - } - -private: - - atomic_count(atomic_count const &); - atomic_count & operator=(atomic_count const &); - - _Atomic_word value_; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED diff --git a/sdk/include/boost/detail/atomic_count_linux.hpp b/sdk/include/boost/detail/atomic_count_linux.hpp deleted file mode 100644 index 1a69cec6cb5..00000000000 --- a/sdk/include/boost/detail/atomic_count_linux.hpp +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef BOOST_DETAIL_ATOMIC_COUNT_LINUX_HPP_INCLUDED -#define BOOST_DETAIL_ATOMIC_COUNT_LINUX_HPP_INCLUDED - -// -// boost/detail/atomic_count_linux.hpp -// -// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -// -// This implementation uses . This is a kernel header; -// using kernel headers in a user program may cause a number of problems, -// and not all flavors of Linux provide the atomic instructions. -// -// This file is only provided because the performance of this implementation -// is significantly higher than the pthreads version. Use at your own risk -// (by defining BOOST_USE_ASM_ATOMIC_H.) -// - -#include - -namespace boost -{ - -namespace detail -{ - -class atomic_count -{ -public: - - explicit atomic_count(long v) - { - atomic_t init = ATOMIC_INIT(v); - value_ = init; - } - - void operator++() - { - atomic_inc(&value_); - } - - long operator--() - { - return !atomic_dec_and_test(&value_); - } - - operator long() const - { - return atomic_read(&value_); - } - -private: - - atomic_count(atomic_count const &); - atomic_count & operator=(atomic_count const &); - - atomic_t value_; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_LINUX_HPP_INCLUDED diff --git a/sdk/include/boost/detail/atomic_count_pthreads.hpp b/sdk/include/boost/detail/atomic_count_pthreads.hpp deleted file mode 100644 index 0f8c66368b9..00000000000 --- a/sdk/include/boost/detail/atomic_count_pthreads.hpp +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef BOOST_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED -#define BOOST_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED - -// -// boost/detail/atomic_count_pthreads.hpp -// -// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#include - -// -// The generic pthread_mutex-based implementation sometimes leads to -// inefficiencies. Example: a class with two atomic_count members -// can get away with a single mutex. -// -// Users can detect this situation by checking BOOST_AC_USE_PTHREADS. -// - -namespace boost -{ - -namespace detail -{ - -class atomic_count -{ -private: - - class scoped_lock - { - public: - - scoped_lock(pthread_mutex_t & m): m_(m) - { - pthread_mutex_lock(&m_); - } - - ~scoped_lock() - { - pthread_mutex_unlock(&m_); - } - - private: - - pthread_mutex_t & m_; - }; - -public: - - explicit atomic_count(long v): value_(v) - { - pthread_mutex_init(&mutex_, 0); - } - - ~atomic_count() - { - pthread_mutex_destroy(&mutex_); - } - - void operator++() - { - scoped_lock lock(mutex_); - ++value_; - } - - long operator--() - { - scoped_lock lock(mutex_); - return --value_; - } - - operator long() const - { - scoped_lock lock(mutex_); - return value_; - } - -private: - - atomic_count(atomic_count const &); - atomic_count & operator=(atomic_count const &); - - mutable pthread_mutex_t mutex_; - long value_; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED diff --git a/sdk/include/boost/detail/atomic_count_win32.hpp b/sdk/include/boost/detail/atomic_count_win32.hpp deleted file mode 100644 index 0f00c43a2a0..00000000000 --- a/sdk/include/boost/detail/atomic_count_win32.hpp +++ /dev/null @@ -1,96 +0,0 @@ -#ifndef BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED -#define BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/atomic_count_win32.hpp -// -// Copyright (c) 2001, 2002, 2003 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#ifdef BOOST_USE_WINDOWS_H -# include -#endif - -namespace boost -{ - -namespace detail -{ - -#ifndef BOOST_USE_WINDOWS_H - -#ifdef _WIN64 - -// Intel 6.0 on Win64 version, posted by Tim Fenders to [boost-users] - -extern "C" long_type __cdecl _InterlockedIncrement(long volatile *); -extern "C" long_type __cdecl _InterlockedDecrement(long volatile *); - -#pragma intrinsic(_InterlockedIncrement) -#pragma intrinsic(_InterlockedDecrement) - -inline long InterlockedIncrement(long volatile * lp) -{ - return _InterlockedIncrement(lp); -} - -inline long InterlockedDecrement(long volatile* lp) -{ - return _InterlockedDecrement(lp); -} - -#else // _WIN64 - -extern "C" __declspec(dllimport) long __stdcall InterlockedIncrement(long volatile *); -extern "C" __declspec(dllimport) long __stdcall InterlockedDecrement(long volatile *); - -#endif // _WIN64 - -#endif // #ifndef BOOST_USE_WINDOWS_H - -class atomic_count -{ -public: - - explicit atomic_count(long v): value_(v) - { - } - - long operator++() - { - // Some older versions do not accept volatile - return InterlockedIncrement(const_cast(&value_)); - } - - long operator--() - { - return InterlockedDecrement(const_cast(&value_)); - } - - operator long() const - { - return value_; - } - -private: - - atomic_count(atomic_count const &); - atomic_count & operator=(atomic_count const &); - - volatile long value_; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED diff --git a/sdk/include/boost/detail/binary_search.hpp b/sdk/include/boost/detail/binary_search.hpp deleted file mode 100644 index c19763e1b00..00000000000 --- a/sdk/include/boost/detail/binary_search.hpp +++ /dev/null @@ -1,217 +0,0 @@ -// Copyright (c) 2000 David Abrahams. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -// -// Copyright (c) 1994 -// Hewlett-Packard Company -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appear in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. Hewlett-Packard Company makes no -// representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied warranty. -// -// Copyright (c) 1996 -// Silicon Graphics Computer Systems, Inc. -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appear in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. Silicon Graphics makes no -// representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied warranty. -// -#ifndef BINARY_SEARCH_DWA_122600_H_ -# define BINARY_SEARCH_DWA_122600_H_ - -# include -# include - -namespace boost { namespace detail { - -template -ForwardIter lower_bound(ForwardIter first, ForwardIter last, - const Tp& val) -{ - typedef detail::iterator_traits traits; - - typename traits::difference_type len = boost::detail::distance(first, last); - typename traits::difference_type half; - ForwardIter middle; - - while (len > 0) { - half = len >> 1; - middle = first; - std::advance(middle, half); - if (*middle < val) { - first = middle; - ++first; - len = len - half - 1; - } - else - len = half; - } - return first; -} - -template -ForwardIter lower_bound(ForwardIter first, ForwardIter last, - const Tp& val, Compare comp) -{ - typedef detail::iterator_traits traits; - - typename traits::difference_type len = boost::detail::distance(first, last); - typename traits::difference_type half; - ForwardIter middle; - - while (len > 0) { - half = len >> 1; - middle = first; - std::advance(middle, half); - if (comp(*middle, val)) { - first = middle; - ++first; - len = len - half - 1; - } - else - len = half; - } - return first; -} - -template -ForwardIter upper_bound(ForwardIter first, ForwardIter last, - const Tp& val) -{ - typedef detail::iterator_traits traits; - - typename traits::difference_type len = boost::detail::distance(first, last); - typename traits::difference_type half; - ForwardIter middle; - - while (len > 0) { - half = len >> 1; - middle = first; - std::advance(middle, half); - if (val < *middle) - len = half; - else { - first = middle; - ++first; - len = len - half - 1; - } - } - return first; -} - -template -ForwardIter upper_bound(ForwardIter first, ForwardIter last, - const Tp& val, Compare comp) -{ - typedef detail::iterator_traits traits; - - typename traits::difference_type len = boost::detail::distance(first, last); - typename traits::difference_type half; - ForwardIter middle; - - while (len > 0) { - half = len >> 1; - middle = first; - std::advance(middle, half); - if (comp(val, *middle)) - len = half; - else { - first = middle; - ++first; - len = len - half - 1; - } - } - return first; -} - -template -std::pair -equal_range(ForwardIter first, ForwardIter last, const Tp& val) -{ - typedef detail::iterator_traits traits; - - typename traits::difference_type len = boost::detail::distance(first, last); - typename traits::difference_type half; - ForwardIter middle, left, right; - - while (len > 0) { - half = len >> 1; - middle = first; - std::advance(middle, half); - if (*middle < val) { - first = middle; - ++first; - len = len - half - 1; - } - else if (val < *middle) - len = half; - else { - left = boost::detail::lower_bound(first, middle, val); - std::advance(first, len); - right = boost::detail::upper_bound(++middle, first, val); - return std::pair(left, right); - } - } - return std::pair(first, first); -} - -template -std::pair -equal_range(ForwardIter first, ForwardIter last, const Tp& val, - Compare comp) -{ - typedef detail::iterator_traits traits; - - typename traits::difference_type len = boost::detail::distance(first, last); - typename traits::difference_type half; - ForwardIter middle, left, right; - - while (len > 0) { - half = len >> 1; - middle = first; - std::advance(middle, half); - if (comp(*middle, val)) { - first = middle; - ++first; - len = len - half - 1; - } - else if (comp(val, *middle)) - len = half; - else { - left = boost::detail::lower_bound(first, middle, val, comp); - std::advance(first, len); - right = boost::detail::upper_bound(++middle, first, val, comp); - return std::pair(left, right); - } - } - return std::pair(first, first); -} - -template -bool binary_search(ForwardIter first, ForwardIter last, - const Tp& val) { - ForwardIter i = boost::detail::lower_bound(first, last, val); - return i != last && !(val < *i); -} - -template -bool binary_search(ForwardIter first, ForwardIter last, - const Tp& val, - Compare comp) { - ForwardIter i = boost::detail::lower_bound(first, last, val, comp); - return i != last && !comp(val, *i); -} - -}} // namespace boost::detail - -#endif // BINARY_SEARCH_DWA_122600_H_ diff --git a/sdk/include/boost/detail/call_traits.hpp b/sdk/include/boost/detail/call_traits.hpp deleted file mode 100644 index c1fd918dc84..00000000000 --- a/sdk/include/boost/detail/call_traits.hpp +++ /dev/null @@ -1,158 +0,0 @@ -// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version including documentation. - -// call_traits: defines typedefs for function usage -// (see libs/utility/call_traits.htm) - -/* Release notes: - 23rd July 2000: - Fixed array specialization. (JM) - Added Borland specific fixes for reference types - (issue raised by Steve Cleary). -*/ - -#ifndef BOOST_DETAIL_CALL_TRAITS_HPP -#define BOOST_DETAIL_CALL_TRAITS_HPP - -#ifndef BOOST_CONFIG_HPP -#include -#endif - -#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP -#include -#endif -#ifndef BOOST_COMPOSITE_TYPE_TRAITS_HPP -#include -#endif - -namespace boost{ - -namespace detail{ - -template -struct ct_imp2 -{ - typedef const T& param_type; -}; - -template -struct ct_imp2 -{ - typedef const T param_type; -}; - -template -struct ct_imp -{ - typedef const T& param_type; -}; - -template -struct ct_imp -{ - typedef typename ct_imp2::param_type param_type; -}; - -template -struct ct_imp -{ - typedef T const param_type; -}; - -} - -template -struct call_traits -{ -public: - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - // - // C++ Builder workaround: we should be able to define a compile time - // constant and pass that as a single template parameter to ct_imp, - // however compiler bugs prevent this - instead pass three bool's to - // ct_imp and add an extra partial specialisation - // of ct_imp to handle the logic. (JM) - typedef typename detail::ct_imp< - T, - ::boost::is_pointer::value, - ::boost::is_arithmetic::value - >::param_type param_type; -}; - -template -struct call_traits -{ - typedef T& value_type; - typedef T& reference; - typedef const T& const_reference; - typedef T& param_type; // hh removed const -}; - -#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x560) -// these are illegal specialisations; cv-qualifies applied to -// references have no effect according to [8.3.2p1], -// C++ Builder requires them though as it treats cv-qualified -// references as distinct types... -template -struct call_traits -{ - typedef T& value_type; - typedef T& reference; - typedef const T& const_reference; - typedef T& param_type; // hh removed const -}; -template -struct call_traits -{ - typedef T& value_type; - typedef T& reference; - typedef const T& const_reference; - typedef T& param_type; // hh removed const -}; -template -struct call_traits -{ - typedef T& value_type; - typedef T& reference; - typedef const T& const_reference; - typedef T& param_type; // hh removed const -}; -#endif -#ifndef __SUNPRO_CC -template -struct call_traits -{ -private: - typedef T array_type[N]; -public: - // degrades array to pointer: - typedef const T* value_type; - typedef array_type& reference; - typedef const array_type& const_reference; - typedef const T* const param_type; -}; - -template -struct call_traits -{ -private: - typedef const T array_type[N]; -public: - // degrades array to pointer: - typedef const T* value_type; - typedef array_type& reference; - typedef const array_type& const_reference; - typedef const T* const param_type; -}; -#endif - -} - -#endif // BOOST_DETAIL_CALL_TRAITS_HPP diff --git a/sdk/include/boost/detail/catch_exceptions.hpp b/sdk/include/boost/detail/catch_exceptions.hpp deleted file mode 100644 index 3fb2fdea23e..00000000000 --- a/sdk/include/boost/detail/catch_exceptions.hpp +++ /dev/null @@ -1,147 +0,0 @@ -// boost/catch_exceptions.hpp -----------------------------------------------// - -// (C) Copyright Beman Dawes 1995-2001. Permission to copy, use, modify, sell -// and distribute this software is granted provided this copyright notice -// appears in all copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for updates, documentation, and revision history. - -// Revision History -// 13 Jun 01 report_exception() made inline. (John Maddock, Jesse Jones) -// 26 Feb 01 Numerous changes suggested during formal review. (Beman) -// 25 Jan 01 catch_exceptions.hpp code factored out of cpp_main.cpp. -// 22 Jan 01 Remove test_tools dependencies to reduce coupling. -// 5 Nov 00 Initial boost version (Beman Dawes) - -#ifndef BOOST_CATCH_EXCEPTIONS_HPP -#define BOOST_CATCH_EXCEPTIONS_HPP - -// header dependencies are deliberately restricted to the standard library -// to reduce coupling to other boost libraries. -#include // for string -#include // for bad_alloc -#include // for bad_cast, bad_typeid -#include // for exception, bad_exception -#include // for std exception hierarchy -#include // for exit codes -# if __GNUC__ != 2 || __GNUC_MINOR__ > 96 -# include // for ostream -# else -# include // workaround GNU missing ostream header -# endif - -# if defined(__BORLANDC__) && (__BORLANDC__ <= 0x0551) -# define BOOST_BUILT_IN_EXCEPTIONS_MISSING_WHAT -# endif - -#if defined(MPW_CPLUS) && (MPW_CPLUS <= 0x890) -# define BOOST_BUILT_IN_EXCEPTIONS_MISSING_WHAT - namespace std { class bad_typeid { }; } -# endif - -namespace boost -{ - - namespace detail - { - // A separate reporting function was requested during formal review. - inline void report_exception( std::ostream & os, - const char * name, const char * info ) - { os << "\n** uncaught exception: " << name << " " << info << std::endl; } - } - - // catch_exceptions ------------------------------------------------------// - - template< class Generator > // Generator is function object returning int - int catch_exceptions( Generator function_object, - std::ostream & out, std::ostream & err ) - { - int result = 0; // quiet compiler warnings - bool exception_thrown = true; // avoid setting result for each excptn type - -#ifndef BOOST_NO_EXCEPTIONS - try - { -#endif - result = function_object(); - exception_thrown = false; -#ifndef BOOST_NO_EXCEPTIONS - } - - // As a result of hard experience with strangely interleaved output - // under some compilers, there is a lot of use of endl in the code below - // where a simple '\n' might appear to do. - - // The rules for catch & arguments are a bit different from function - // arguments (ISO 15.3 paragraphs 18 & 19). Apparently const isn't - // required, but it doesn't hurt and some programmers ask for it. - - catch ( const char * ex ) - { detail::report_exception( out, "", ex ); } - catch ( const std::string & ex ) - { detail::report_exception( out, "", ex.c_str() ); } - - // std:: exceptions - catch ( const std::bad_alloc & ex ) - { detail::report_exception( out, "std::bad_alloc:", ex.what() ); } - -# ifndef BOOST_BUILT_IN_EXCEPTIONS_MISSING_WHAT - catch ( const std::bad_cast & ex ) - { detail::report_exception( out, "std::bad_cast:", ex.what() ); } - catch ( const std::bad_typeid & ex ) - { detail::report_exception( out, "std::bad_typeid:", ex.what() ); } -# else - catch ( const std::bad_cast & ) - { detail::report_exception( out, "std::bad_cast", "" ); } - catch ( const std::bad_typeid & ) - { detail::report_exception( out, "std::bad_typeid", "" ); } -# endif - - catch ( const std::bad_exception & ex ) - { detail::report_exception( out, "std::bad_exception:", ex.what() ); } - catch ( const std::domain_error & ex ) - { detail::report_exception( out, "std::domain_error:", ex.what() ); } - catch ( const std::invalid_argument & ex ) - { detail::report_exception( out, "std::invalid_argument:", ex.what() ); } - catch ( const std::length_error & ex ) - { detail::report_exception( out, "std::length_error:", ex.what() ); } - catch ( const std::out_of_range & ex ) - { detail::report_exception( out, "std::out_of_range:", ex.what() ); } - catch ( const std::range_error & ex ) - { detail::report_exception( out, "std::range_error:", ex.what() ); } - catch ( const std::overflow_error & ex ) - { detail::report_exception( out, "std::overflow_error:", ex.what() ); } - catch ( const std::underflow_error & ex ) - { detail::report_exception( out, "std::underflow_error:", ex.what() ); } - catch ( const std::logic_error & ex ) - { detail::report_exception( out, "std::logic_error:", ex.what() ); } - catch ( const std::runtime_error & ex ) - { detail::report_exception( out, "std::runtime_error:", ex.what() ); } - catch ( const std::exception & ex ) - { detail::report_exception( out, "std::exception:", ex.what() ); } - - catch ( ... ) - { detail::report_exception( out, "unknown exception", "" ); } -#endif // BOOST_NO_EXCEPTIONS - - if ( exception_thrown ) result = boost::exit_exception_failure; - - if ( result != 0 && result != exit_success ) - { - out << std::endl << "**** returning with error code " - << result << std::endl; - err - << "********** errors detected; see stdout for details ***********" - << std::endl; - } -#if !defined(BOOST_NO_CPP_MAIN_SUCCESS_MESSAGE) - else { out << std::flush << "no errors detected" << std::endl; } -#endif - return result; - } // catch_exceptions - -} // boost - -#endif // BOOST_CATCH_EXCEPTIONS_HPP - diff --git a/sdk/include/boost/detail/compressed_pair.hpp b/sdk/include/boost/detail/compressed_pair.hpp deleted file mode 100644 index 0a74d8adbe8..00000000000 --- a/sdk/include/boost/detail/compressed_pair.hpp +++ /dev/null @@ -1,435 +0,0 @@ -// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version including documentation. - -// compressed_pair: pair that "compresses" empty members -// (see libs/utility/compressed_pair.htm) -// -// JM changes 25 Jan 2000: -// Removed default arguments from compressed_pair_switch to get -// C++ Builder 4 to accept them -// rewriten swap to get gcc and C++ builder to compile. -// added partial specialisations for case T1 == T2 to avoid duplicate constructor defs. - -#ifndef BOOST_DETAIL_COMPRESSED_PAIR_HPP -#define BOOST_DETAIL_COMPRESSED_PAIR_HPP - -#include -#ifndef BOOST_OBJECT_TYPE_TRAITS_HPP -#include -#endif -#ifndef BOOST_SAME_TRAITS_HPP -#include -#endif -#ifndef BOOST_CALL_TRAITS_HPP -#include -#endif - -namespace boost -{ - -template -class compressed_pair; - - -// compressed_pair - -namespace details -{ - // JM altered 26 Jan 2000: - template - struct compressed_pair_switch; - - template - struct compressed_pair_switch - {static const int value = 0;}; - - template - struct compressed_pair_switch - {static const int value = 3;}; - - template - struct compressed_pair_switch - {static const int value = 1;}; - - template - struct compressed_pair_switch - {static const int value = 2;}; - - template - struct compressed_pair_switch - {static const int value = 4;}; - - template - struct compressed_pair_switch - {static const int value = 5;}; - - template class compressed_pair_imp; - -#ifdef __GNUC__ - // workaround for GCC (JM): - using std::swap; -#endif - // - // can't call unqualified swap from within classname::swap - // as Koenig lookup rules will find only the classname::swap - // member function not the global declaration, so use cp_swap - // as a forwarding function (JM): - template - inline void cp_swap(T& t1, T& t2) - { -#ifndef __GNUC__ - using std::swap; -#endif - swap(t1, t2); - } - - // 0 derive from neither - - template - class compressed_pair_imp - { - public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_imp() {} - - compressed_pair_imp(first_param_type x, second_param_type y) - : first_(x), second_(y) {} - - compressed_pair_imp(first_param_type x) - : first_(x) {} - - compressed_pair_imp(second_param_type y) - : second_(y) {} - - first_reference first() {return first_;} - first_const_reference first() const {return first_;} - - second_reference second() {return second_;} - second_const_reference second() const {return second_;} - - void swap(::boost::compressed_pair& y) - { - cp_swap(first_, y.first()); - cp_swap(second_, y.second()); - } - private: - first_type first_; - second_type second_; - }; - - // 1 derive from T1 - - template - class compressed_pair_imp - : private T1 - { - public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_imp() {} - - compressed_pair_imp(first_param_type x, second_param_type y) - : first_type(x), second_(y) {} - - compressed_pair_imp(first_param_type x) - : first_type(x) {} - - compressed_pair_imp(second_param_type y) - : second_(y) {} - - first_reference first() {return *this;} - first_const_reference first() const {return *this;} - - second_reference second() {return second_;} - second_const_reference second() const {return second_;} - - void swap(::boost::compressed_pair& y) - { - // no need to swap empty base class: - cp_swap(second_, y.second()); - } - private: - second_type second_; - }; - - // 2 derive from T2 - - template - class compressed_pair_imp - : private T2 - { - public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_imp() {} - - compressed_pair_imp(first_param_type x, second_param_type y) - : second_type(y), first_(x) {} - - compressed_pair_imp(first_param_type x) - : first_(x) {} - - compressed_pair_imp(second_param_type y) - : second_type(y) {} - - first_reference first() {return first_;} - first_const_reference first() const {return first_;} - - second_reference second() {return *this;} - second_const_reference second() const {return *this;} - - void swap(::boost::compressed_pair& y) - { - // no need to swap empty base class: - cp_swap(first_, y.first()); - } - - private: - first_type first_; - }; - - // 3 derive from T1 and T2 - - template - class compressed_pair_imp - : private T1, - private T2 - { - public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_imp() {} - - compressed_pair_imp(first_param_type x, second_param_type y) - : first_type(x), second_type(y) {} - - compressed_pair_imp(first_param_type x) - : first_type(x) {} - - compressed_pair_imp(second_param_type y) - : second_type(y) {} - - first_reference first() {return *this;} - first_const_reference first() const {return *this;} - - second_reference second() {return *this;} - second_const_reference second() const {return *this;} - // - // no need to swap empty bases: - void swap(::boost::compressed_pair&) {} - }; - - // JM - // 4 T1 == T2, T1 and T2 both empty - // Note does not actually store an instance of T2 at all - - // but reuses T1 base class for both first() and second(). - template - class compressed_pair_imp - : private T1 - { - public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_imp() {} - - compressed_pair_imp(first_param_type x, second_param_type) - : first_type(x) {} - - compressed_pair_imp(first_param_type x) - : first_type(x) {} - - first_reference first() {return *this;} - first_const_reference first() const {return *this;} - - second_reference second() {return *this;} - second_const_reference second() const {return *this;} - - void swap(::boost::compressed_pair&) {} - private: - }; - - // 5 T1 == T2 and are not empty: //JM - - template - class compressed_pair_imp - { - public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_imp() {} - - compressed_pair_imp(first_param_type x, second_param_type y) - : first_(x), second_(y) {} - - compressed_pair_imp(first_param_type x) - : first_(x), second_(x) {} - - first_reference first() {return first_;} - first_const_reference first() const {return first_;} - - second_reference second() {return second_;} - second_const_reference second() const {return second_;} - - void swap(::boost::compressed_pair& y) - { - cp_swap(first_, y.first()); - cp_swap(second_, y.second()); - } - private: - first_type first_; - second_type second_; - }; - -} // details - -template -class compressed_pair - : private ::boost::details::compressed_pair_imp::type, typename remove_cv::type>::value, - ::boost::is_empty::value, - ::boost::is_empty::value>::value> -{ -private: - typedef details::compressed_pair_imp::type, typename remove_cv::type>::value, - ::boost::is_empty::value, - ::boost::is_empty::value>::value> base; -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair() : base() {} - compressed_pair(first_param_type x, second_param_type y) : base(x, y) {} - explicit compressed_pair(first_param_type x) : base(x) {} - explicit compressed_pair(second_param_type y) : base(y) {} - - first_reference first() {return base::first();} - first_const_reference first() const {return base::first();} - - second_reference second() {return base::second();} - second_const_reference second() const {return base::second();} - - void swap(compressed_pair& y) { base::swap(y); } -}; - -// JM -// Partial specialisation for case where T1 == T2: -// -template -class compressed_pair - : private details::compressed_pair_imp::type, typename remove_cv::type>::value, - ::boost::is_empty::value, - ::boost::is_empty::value>::value> -{ -private: - typedef details::compressed_pair_imp::type, typename remove_cv::type>::value, - ::boost::is_empty::value, - ::boost::is_empty::value>::value> base; -public: - typedef T first_type; - typedef T second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair() : base() {} - compressed_pair(first_param_type x, second_param_type y) : base(x, y) {} -#if !(defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)) - explicit -#endif - compressed_pair(first_param_type x) : base(x) {} - - first_reference first() {return base::first();} - first_const_reference first() const {return base::first();} - - second_reference second() {return base::second();} - second_const_reference second() const {return base::second();} - - void swap(::boost::compressed_pair& y) { base::swap(y); } -}; - -template -inline -void -swap(compressed_pair& x, compressed_pair& y) -{ - x.swap(y); -} - -} // boost - -#endif // BOOST_DETAIL_COMPRESSED_PAIR_HPP - - - diff --git a/sdk/include/boost/detail/dynamic_bitset.hpp b/sdk/include/boost/detail/dynamic_bitset.hpp deleted file mode 100644 index 02df3ded954..00000000000 --- a/sdk/include/boost/detail/dynamic_bitset.hpp +++ /dev/null @@ -1,176 +0,0 @@ -// (C) Copyright Chuck Allison and Jeremy Siek 2001, 2002. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all -// copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any -// purpose. - -// With optimizations by Gennaro Prota. - -#ifndef BOOST_DETAIL_DYNAMIC_BITSET_HPP -#define BOOST_DETAIL_DYNAMIC_BITSET_HPP - -#include "boost/config.hpp" -#include "boost/detail/iterator.hpp" - -#if !(defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) || defined(__BORLANDC__)) -#define BOOST_DYN_BITSET_USE_FRIENDS -#endif - -namespace boost { - - namespace detail { - - // Forward references - template - std::size_t initial_num_blocks(BlockInputIterator first, - BlockInputIterator last, - std::input_iterator_tag); - template - std::size_t initial_num_blocks(BlockForwardIterator first, - BlockForwardIterator last, - std::forward_iterator_tag); - - // The following 2 classes make sure that the bitset - // gets allocated in an exception safe manner - template - class dynamic_bitset_alloc_base { - public: - dynamic_bitset_alloc_base(const Allocator& alloc) - : m_alloc(alloc) { } - protected: - Allocator m_alloc; - }; - - - template - class dynamic_bitset_base : -#ifdef BOOST_DYN_BITSET_USE_FRIENDS - protected -#else - public -#endif - dynamic_bitset_alloc_base - { - typedef std::size_t size_type; -#ifndef BOOST_DYN_BITSET_USE_FRIENDS - public: -#endif - enum { bits_per_block = CHAR_BIT * sizeof(Block) }; - public: - dynamic_bitset_base() - : m_bits(0), m_num_bits(0), m_num_blocks(0) { } - - dynamic_bitset_base(size_type num_bits, const Allocator& alloc) - : dynamic_bitset_alloc_base(alloc), - m_bits(dynamic_bitset_alloc_base:: - m_alloc.allocate(calc_num_blocks(num_bits), static_cast(0))), - m_num_bits(num_bits), - m_num_blocks(calc_num_blocks(num_bits)) - { - using namespace std; - memset(m_bits, 0, m_num_blocks * sizeof(Block)); // G.P.S. ask to Jeremy - } - ~dynamic_bitset_base() { - if (m_bits) - this->m_alloc.deallocate(m_bits, m_num_blocks); - } -#ifdef BOOST_DYN_BITSET_USE_FRIENDS - protected: -#endif - Block* m_bits; - size_type m_num_bits; - size_type m_num_blocks; - - static size_type word(size_type bit) { return bit / bits_per_block; } // [gps] - static size_type offset(size_type bit){ return bit % bits_per_block; } // [gps] - static Block mask1(size_type bit) { return Block(1) << offset(bit); } - static Block mask0(size_type bit) { return ~(Block(1) << offset(bit)); } - static size_type calc_num_blocks(size_type num_bits) - { return (num_bits + bits_per_block - 1) / bits_per_block; } - }; - - - // ------- count table implementation -------------- - - typedef unsigned char byte_t; - - // only count has a definition -#if 0 - // This was giving Intel C++ and Borland C++ trouble -JGS - template struct count; - template <> struct count { -#else - template - struct count { -#endif - typedef byte_t element_type; - static const byte_t table[]; - BOOST_STATIC_CONSTANT (unsigned int, max_bit = 8); // must be a power of two - - }; - //typedef count table_t; - - - // the table: wrapped in a class template, so - // that it is only instantiated if/when needed - // -#if 0 - // Intel C++ and Borland C++ trouble -JGS - template <> - const byte_t count ::table[] = -#else - template - const byte_t count::table[] = -#endif - { - // Automatically generated by GPTableGen.exe v.1.0 - // - 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 - }; - - - // ------------------------------------------------------- - - template - std::size_t initial_num_blocks(BlockInputIterator first, - BlockInputIterator last, - std::input_iterator_tag) - { - return 0; - } - - template - std::size_t initial_num_blocks(BlockForwardIterator first, - BlockForwardIterator last, - std::forward_iterator_tag) - { - std::size_t n = 0; - while (first != last) - ++first, ++n; - return n; - } - - template - std::size_t initial_num_blocks(BlockInputIterator first, - BlockInputIterator last) - { - typename detail::iterator_traits::iterator_category cat; - return initial_num_blocks(first, last, cat); - } - - - } // namespace detail - -} // namespace boost - -#endif // BOOST_DETAIL_DYNAMIC_BITSET_HPP - diff --git a/sdk/include/boost/detail/iterator.hpp b/sdk/include/boost/detail/iterator.hpp deleted file mode 100644 index 40bfd418740..00000000000 --- a/sdk/include/boost/detail/iterator.hpp +++ /dev/null @@ -1,432 +0,0 @@ -// (C) Copyright David Abrahams 2002. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -// Boost versions of -// -// std::iterator_traits<>::iterator_category -// std::iterator_traits<>::difference_type -// std::distance() -// -// ...for all compilers and iterators -// -// Additionally, if X is a pointer -// std::iterator_traits::pointer - -// Otherwise, if partial specialization is supported or X is not a pointer -// std::iterator_traits::value_type -// std::iterator_traits::pointer -// std::iterator_traits::reference -// -// See http://www.boost.org for most recent version including documentation. - -// Revision History -// 04 Mar 2001 - More attempted fixes for Intel C++ (David Abrahams) -// 03 Mar 2001 - Put all implementation into namespace -// boost::detail::iterator_traits_. Some progress made on fixes -// for Intel compiler. (David Abrahams) -// 02 Mar 2001 - Changed BOOST_MSVC to BOOST_MSVC_STD_ITERATOR in a few -// places. (Jeremy Siek) -// 19 Feb 2001 - Improved workarounds for stock MSVC6; use yes_type and -// no_type from type_traits.hpp; stopped trying to remove_cv -// before detecting is_pointer, in honor of the new type_traits -// semantics. (David Abrahams) -// 13 Feb 2001 - Make it work with nearly all standard-conforming iterators -// under raw VC6. The one category remaining which will fail is -// that of iterators derived from std::iterator but not -// boost::iterator and which redefine difference_type. -// 11 Feb 2001 - Clean away code which can never be used (David Abrahams) -// 09 Feb 2001 - Always have a definition for each traits member, even if it -// can't be properly deduced. These will be incomplete types in -// some cases (undefined), but it helps suppress MSVC errors -// elsewhere (David Abrahams) -// 07 Feb 2001 - Support for more of the traits members where possible, making -// this useful as a replacement for std::iterator_traits when -// used as a default template parameter. -// 06 Feb 2001 - Removed useless #includes of standard library headers -// (David Abrahams) - -#ifndef ITERATOR_DWA122600_HPP_ -# define ITERATOR_DWA122600_HPP_ - -# include -# include -# include -# include -# include -# include -# include -# include -# include - -// should be the last #include -#include "boost/type_traits/detail/bool_trait_def.hpp" - -// STLPort 4.0 and betas have a bug when debugging is enabled and there is no -// partial specialization: instead of an iterator_category typedef, the standard -// container iterators have _Iterator_category. -// -// Also, whether debugging is enabled or not, there is a broken specialization -// of std::iterator which has no -// typedefs but iterator_category. -# if defined(__SGI_STL_PORT) - -# if (__SGI_STL_PORT <= 0x410) && !defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && defined(__STL_DEBUG) -# define BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF -# endif - -# define BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION - -# endif // STLPort <= 4.1b4 && no partial specialization - -namespace boost { namespace detail { - -BOOST_MPL_HAS_XXX_TRAIT_DEF(value_type) -BOOST_MPL_HAS_XXX_TRAIT_DEF(reference) -BOOST_MPL_HAS_XXX_TRAIT_DEF(pointer) -BOOST_MPL_HAS_XXX_TRAIT_DEF(difference_type) -BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator_category) - -# if !defined(BOOST_NO_STD_ITERATOR_TRAITS) \ - && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_MSVC_STD_ITERATOR) -// Define a new template so it can be specialized -template -struct iterator_traits - : std::iterator_traits -{}; -using std::distance; -# elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_MSVC_STD_ITERATOR) - -// Rogue Wave Standard Library fools itself into thinking partial -// specialization is missing on some platforms (e.g. Sun), so fails to -// supply iterator_traits! -template -struct iterator_traits -{ - typedef typename Iterator::value_type value_type; - typedef typename Iterator::reference reference; - typedef typename Iterator::pointer pointer; - typedef typename Iterator::difference_type difference_type; - typedef typename Iterator::iterator_category iterator_category; -}; - -template -struct iterator_traits -{ - typedef T value_type; - typedef T& reference; - typedef T* pointer; - typedef std::ptrdiff_t difference_type; - typedef std::random_access_iterator_tag iterator_category; -}; - -template -struct iterator_traits -{ - typedef T value_type; - typedef T const& reference; - typedef T const* pointer; - typedef std::ptrdiff_t difference_type; - typedef std::random_access_iterator_tag iterator_category; -}; - -# else - -// is_mutable_iterator -- -// -// A metafunction returning true iff T is a mutable iterator type -// with a nested value_type. Will only work portably with iterators -// whose operator* returns a reference, but that seems to be OK for -// the iterators supplied by Dinkumware. Some input iterators may -// compile-time if they arrive here, and if the compiler is strict -// about not taking the address of an rvalue. - -// This one detects ordinary mutable iterators - the result of -// operator* is convertible to the value_type. -template -type_traits::yes_type is_mutable_iterator_helper(T const*, BOOST_DEDUCED_TYPENAME T::value_type*); - -// This one detects output iterators such as ostream_iterator which -// return references to themselves. -template -type_traits::yes_type is_mutable_iterator_helper(T const*, T const*); - -type_traits::no_type is_mutable_iterator_helper(...); - -template -struct is_mutable_iterator_impl -{ - static T t; - - BOOST_STATIC_CONSTANT(bool, value = sizeof( - detail::is_mutable_iterator_helper((T*)0, &*t)) - == sizeof(type_traits::yes_type) - ); -}; - -BOOST_TT_AUX_BOOL_TRAIT_DEF1( - is_mutable_iterator,T,::boost::detail::is_mutable_iterator_impl::value) - - -// is_full_iterator_traits -- -// -// A metafunction returning true iff T has all the requisite nested -// types to satisfy the requirements for a fully-conforming -// iterator_traits implementation. -template -struct is_full_iterator_traits_impl -{ - enum { value = - has_value_type::value - & has_reference::value - & has_pointer::value - & has_difference_type::value - & has_iterator_category::value - }; -}; - -BOOST_TT_AUX_BOOL_TRAIT_DEF1( - is_full_iterator_traits,T,::boost::detail::is_full_iterator_traits_impl::value) - - -# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF -BOOST_MPL_HAS_XXX_TRAIT_DEF(_Iterator_category) - -// is_stlport_40_debug_iterator -- -// -// A metafunction returning true iff T has all the requisite nested -// types to satisfy the requirements of an STLPort 4.0 debug iterator -// iterator_traits implementation. -template -struct is_stlport_40_debug_iterator_impl -{ - enum { value = - has_value_type::value - & has_reference::value - & has_pointer::value - & has_difference_type::value - & has__Iterator_category::value - }; -}; - -BOOST_TT_AUX_BOOL_TRAIT_DEF1( - is_stlport_40_debug_iterator,T,::boost::detail::is_stlport_40_debug_iterator_impl::value) - -template -struct stlport_40_debug_iterator_traits -{ - typedef typename T::value_type value_type; - typedef typename T::reference reference; - typedef typename T::pointer pointer; - typedef typename T::difference_type difference_type; - typedef typename T::_Iterator_category iterator_category; -}; -# endif // BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF - -template struct pointer_iterator_traits; - -# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -template -struct pointer_iterator_traits -{ - typedef remove_const::type value_type; - typedef T* pointer; - typedef T& reference; - typedef std::random_access_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; -}; -# else -template -struct must_manually_specialize_boost_detail_iterator_traits; - -template -struct pointer_iterator_traits -{ - typedef T pointer; - typedef std::random_access_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; - - // Makes MSVC6 happy under some circumstances - typedef must_manually_specialize_boost_detail_iterator_traits value_type; - typedef must_manually_specialize_boost_detail_iterator_traits reference; -}; - -// Use this as a base class in manual iterator_traits specializations -// for pointer types. T should be the value_type. CV should be the -// cv-qualified value_type to which */& is added in order to produce -// pointer/reference. -template -struct ptr_iter_traits -{ - typedef T value_type; - typedef CV* pointer; - typedef CV& reference; - typedef std::random_access_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; -}; -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -// We'll sort iterator types into one of these classifications, from which we -// can determine the difference_type, pointer, reference, and value_type -template -struct standard_iterator_traits -{ - typedef typename Iterator::difference_type difference_type; - typedef typename Iterator::value_type value_type; - typedef typename Iterator::pointer pointer; - typedef typename Iterator::reference reference; - typedef typename Iterator::iterator_category iterator_category; -}; - -template -struct msvc_stdlib_mutable_traits - : std::iterator_traits -{ - typedef typename std::iterator_traits::distance_type difference_type; - typedef value_type* pointer; - typedef value_type& reference; -}; - -template -struct msvc_stdlib_const_traits - : std::iterator_traits -{ - typedef typename std::iterator_traits::distance_type difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; -}; - -# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION -template -struct is_bad_output_iterator - : is_base_and_derived< - std::iterator - , Iterator> -{ -}; - -struct bad_output_iterator_traits -{ - typedef void value_type; - typedef void difference_type; - typedef std::output_iterator_tag iterator_category; - typedef void pointer; - typedef void reference; -}; -# endif - -// If we're looking at an MSVC6 (old Dinkumware) ``standard'' -// iterator, this will generate an appropriate traits class. -template -struct msvc_stdlib_iterator_traits - : mpl::if_< - is_mutable_iterator - , msvc_stdlib_mutable_traits - , msvc_stdlib_const_traits - >::type -{}; - -template -struct non_pointer_iterator_traits - : mpl::if_< - // if the iterator contains all the right nested types... - is_full_iterator_traits - // Use a standard iterator_traits implementation - , standard_iterator_traits -# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF - // Check for STLPort 4.0 broken _Iterator_category type - , mpl::if_< - is_stlport_40_debug_iterator - , stlport_40_debug_iterator_traits -# endif - // Otherwise, assume it's a Dinkum iterator - , msvc_stdlib_iterator_traits -# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF - >::type -# endif - >::type -{ -}; - -template -struct iterator_traits_aux - : mpl::if_< - is_pointer - , pointer_iterator_traits - , non_pointer_iterator_traits - >::type -{ -}; - -template -struct iterator_traits -{ - // Explicit forwarding from base class needed to keep MSVC6 happy - // under some circumstances. - private: -# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION - typedef - typename mpl::if_< - is_bad_output_iterator - , bad_output_iterator_traits - , iterator_traits_aux - >::type base; -# else - typedef iterator_traits_aux base; -# endif - public: - typedef typename base::value_type value_type; - typedef typename base::pointer pointer; - typedef typename base::reference reference; - typedef typename base::difference_type difference_type; - typedef typename base::iterator_category iterator_category; -}; - -// This specialization cuts off ETI (Early Template Instantiation) for MSVC. -template <> struct iterator_traits{}; - -namespace iterator_traits_ -{ - template - struct distance_select - { - static Difference execute(Iterator i1, const Iterator i2, ...) - { - typename Difference result = 0; - while (i1 != i2) - { - ++i1; - ++result; - } - return result; - } - - static Difference execute(Iterator i1, const Iterator i2, std::random_access_iterator_tag*) - { - return i2 - i1; - } - }; -} // namespace boost::detail::iterator_traits_ - -template -inline typename iterator_traits::difference_type -distance(Iterator first, Iterator last) -{ - typedef typename iterator_traits::difference_type diff_t; - typedef typename ::boost::detail::iterator_traits::iterator_category iterator_category; - - return iterator_traits_::distance_select::execute( - first, last, (iterator_category*)0); -} -# endif // workarounds - -}} // namespace boost::detail - -# undef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF -# undef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION - -#endif // ITERATOR_DWA122600_HPP_ diff --git a/sdk/include/boost/detail/lightweight_mutex.hpp b/sdk/include/boost/detail/lightweight_mutex.hpp deleted file mode 100644 index 1310da37559..00000000000 --- a/sdk/include/boost/detail/lightweight_mutex.hpp +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED -#define BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/lightweight_mutex.hpp - lightweight mutex -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// typedef boost::detail::lightweight_mutex; -// -// boost::detail::lightweight_mutex meets a subset of the Mutex concept -// requirements: http://www.boost.org/libs/thread/doc/mutex_concept.html#Mutex -// -// * Used by the smart pointer library -// * Performance oriented -// * Header-only implementation -// * Small memory footprint -// * Not a general purpose mutex, use boost::mutex, CRITICAL_SECTION or -// pthread_mutex instead. -// * Never spin in a tight lock/do-something/unlock loop, since -// lightweight_mutex does not guarantee fairness. -// * Never keep a lightweight_mutex locked for long periods. -// -// The current implementation can use a pthread_mutex, a CRITICAL_SECTION, -// or a platform-specific spinlock. -// -// You can force a particular implementation by defining BOOST_LWM_USE_PTHREADS, -// BOOST_LWM_USE_CRITICAL_SECTION, or BOOST_LWM_USE_SPINLOCK. -// -// If neither macro has been defined, the default is to use a spinlock on Win32, -// and a pthread_mutex otherwise. -// -// Note that a spinlock is not a general synchronization primitive. In particular, -// it is not guaranteed to be a memory barrier, and it is possible to "livelock" -// if a lower-priority thread has acquired the spinlock but a higher-priority -// thread is spinning trying to acquire the same lock. -// -// For these reasons, spinlocks have been disabled by default except on Windows, -// where a spinlock can be several orders of magnitude faster than a CRITICAL_SECTION. - - -// Note: lwm_linux.hpp has been disabled by default; see the comments -// inside for more info. - - -#include - -// Note to implementors: if you write a platform-specific spinlock -// for a platform that supports pthreads, be sure to test its performance -// against the pthreads-based version using shared_ptr_timing_test.cpp and -// shared_ptr_mt_test.cpp. Custom versions are usually not worth the trouble -// _unless_ the performance gains are substantial. -// -// Be sure to compare against a "real" pthreads library; -// shared_ptr_timing_test.cpp will compile succesfully with a stub do-nothing -// pthreads library, since it doesn't create any threads. - -#ifndef BOOST_HAS_THREADS -# include -#elif defined(BOOST_LWM_USE_SPINLOCK) && defined(BOOST_USE_ASM_ATOMIC_H) -# include -#elif defined(BOOST_LWM_USE_CRITICAL_SECTION) -# include -#elif defined(BOOST_LWM_USE_PTHREADS) -# include -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) -# include -#elif defined(BOOST_LWM_USE_SPINLOCK) && defined(__sgi) -# include -#elif defined(BOOST_LWM_USE_SPINLOCK) && defined(__GLIBCPP__) -# include -#elif defined(BOOST_HAS_PTHREADS) -# define BOOST_LWM_USE_PTHREADS -# include -#else -// Use #define BOOST_DISABLE_THREADS to avoid the error -# error Unrecognized threading platform -#endif - -#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED diff --git a/sdk/include/boost/detail/lightweight_test.hpp b/sdk/include/boost/detail/lightweight_test.hpp deleted file mode 100644 index 8c4fc33b074..00000000000 --- a/sdk/include/boost/detail/lightweight_test.hpp +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED -#define BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/lightweight_test.hpp - lightweight test library -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// BOOST_TEST(expression) -// BOOST_ERROR(message) -// -// int boost::report_errors() -// - -#include -#include - -namespace boost -{ - -namespace detail -{ - -inline int & test_errors() -{ - static int x = 0; - return x; -} - -inline void test_failed_impl(char const * expr, char const * file, int line, char const * function) -{ - std::cerr << file << "(" << line << "): test '" << expr << "' failed in function '" << function << "'" << std::endl; - ++test_errors(); -} - -inline void error_impl(char const * msg, char const * file, int line, char const * function) -{ - std::cerr << file << "(" << line << "): " << msg << " in function '" << function << "'" << std::endl; - ++test_errors(); -} - -} // namespace detail - -inline int report_errors() -{ - int errors = detail::test_errors(); - - if(errors == 0) - { - std::cerr << "No errors detected." << std::endl; - return 0; - } - else - { - std::cerr << errors << " error" << (errors == 1? "": "s") << " detected." << std::endl; - return 1; - } -} - -} // namespace boost - -#define BOOST_TEST(expr) ((expr)? (void)0: ::boost::detail::test_failed_impl(#expr, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION)) -#define BOOST_ERROR(msg) ::boost::detail::error_impl(msg, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) - -#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED diff --git a/sdk/include/boost/detail/limits.hpp b/sdk/include/boost/detail/limits.hpp deleted file mode 100644 index 5f478e3ece1..00000000000 --- a/sdk/include/boost/detail/limits.hpp +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -/* NOTE: This is not portable code. Parts of numeric_limits<> are - * inherently machine-dependent, and this file is written for the MIPS - * architecture and the SGI MIPSpro C++ compiler. Parts of it (in - * particular, some of the characteristics of floating-point types) - * are almost certainly incorrect for any other platform. - */ - -/* The above comment is almost certainly out of date. This file works - * on systems other than SGI MIPSpro C++ now. - */ - -/* - * Revision history: - * 21 Sep 2001: - * Only include if BOOST_NO_CWCHAR is defined. (Darin Adler) - * 10 Aug 2001: - * Added MIPS (big endian) to the big endian family. (Jens Maurer) - * 13 Apr 2001: - * Added powerpc to the big endian family. (Jeremy Siek) - * 5 Apr 2001: - * Added sparc (big endian) processor support (John Maddock). - * Initial sub: - * Modified by Jens Maurer for gcc 2.95 on x86. - */ - -#ifndef BOOST_SGI_CPP_LIMITS -#define BOOST_SGI_CPP_LIMITS - -#include -#include -#include - -#ifndef BOOST_NO_CWCHAR -#include // for WCHAR_MIN and WCHAR_MAX -#endif - -// The macros are not named appropriately. We don't care about integer -// bit layout, but about floating-point NaN (etc.) bit patterns. -#if defined(__sparc) || defined(__sparc__) || defined(__powerpc__) || defined(__ppc__) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) -#define BOOST_BIG_ENDIAN -#elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) -#define BOOST_LITTLE_ENDIAN -#else -#error The file boost/detail/limits.hpp needs to be set up for your CPU type. -#endif - -namespace std { - -enum float_round_style { - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 -}; - -enum float_denorm_style { - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 -}; - -// The C++ standard (section 18.2.1) requires that some of the members of -// numeric_limits be static const data members that are given constant- -// initializers within the class declaration. On compilers where the -// BOOST_NO_INCLASS_MEMBER_INITIALIZATION macro is defined, it is impossible to write -// a standard-conforming numeric_limits class. -// -// There are two possible workarounds: either initialize the data -// members outside the class, or change them from data members to -// enums. Neither workaround is satisfactory: the former makes it -// impossible to use the data members in constant-expressions, and the -// latter means they have the wrong type and that it is impossible to -// take their addresses. We choose the former workaround. - -#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \ - enum { __mem_name = __mem_value } -#else /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */ -# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \ - static const __mem_type __mem_name = __mem_value -#endif /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */ - -// Deal with min/max for MinGW -#ifdef min -# undef min -#endif - -#ifdef max -# undef max -#endif - -// Base class for all specializations of numeric_limits. -template -class _Numeric_limits_base { -public: - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, false); - - static __number min() throw() { return __number(); } - static __number max() throw() { return __number(); } - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, 0); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, false); - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 0); - - static __number epsilon() throw() { return __number(); } - static __number round_error() throw() { return __number(); } - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, 0); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style, - has_denorm, - denorm_absent); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false); - - static __number infinity() throw() { return __number(); } - static __number quiet_NaN() throw() { return __number(); } - static __number signaling_NaN() throw() { return __number(); } - static __number denorm_min() throw() { return __number(); } - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, false); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style, - round_style, - round_toward_zero); -}; - -// Base class for integers. - -template -class _Integer_limits : public _Numeric_limits_base<_Int> -{ -public: - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true); - - static _Int min() throw() { return __imin; } - static _Int max() throw() { return __imax; } - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, - digits, - (__idigits < 0) ? (int)(sizeof(_Int) * CHAR_BIT) - - (__imin == 0 ? 0 : 1) - : __idigits); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, (digits * 301) / 1000); - // log 2 = 0.301029995664... - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, __imin != 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, true); -}; - -#if defined(BOOST_BIG_ENDIAN) - - template - struct float_helper{ - static Number get_word() throw() { - // sizeof(long double) == 16 - const unsigned int _S_word[4] = { Word, 0, 0, 0 }; - return *reinterpret_cast(&_S_word); - } -}; - -#else - - template - struct float_helper{ - static Number get_word() throw() { - // sizeof(long double) == 12, but only 10 bytes significant - const unsigned int _S_word[4] = { 0, 0, 0, Word }; - return *reinterpret_cast( - reinterpret_cast(&_S_word)+16- - (sizeof(Number) == 12 ? 10 : sizeof(Number))); - } -}; - -#endif - -// Base class for floating-point numbers. -template -class _Floating_limits : public _Numeric_limits_base<__number> -{ -public: - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true); - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, __Digits); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, __Digits10); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, true); - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2); - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, __MinExp); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, __MaxExp); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, __MinExp10); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, __MaxExp10); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style, - has_denorm, - denorm_indeterminate); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false); - - - static __number infinity() throw() { - return float_helper<__number, __InfinityWord>::get_word(); - } - static __number quiet_NaN() throw() { - return float_helper<__number,__QNaNWord>::get_word(); - } - static __number signaling_NaN() throw() { - return float_helper<__number,__SNaNWord>::get_word(); - } - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, __IsIEC559); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false /* was: true */ ); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false); - - BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style, round_style, __RoundStyle); -}; - -// Class numeric_limits - -// The unspecialized class. - -template -class numeric_limits : public _Numeric_limits_base {}; - -// Specializations for all built-in integral types. - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -#ifndef BOOST_NO_INTRINSIC_WCHAR_T -template<> -class numeric_limits -#if !defined(WCHAR_MAX) || !defined(WCHAR_MIN) -#if defined(_WIN32) || defined(__CYGWIN__) - : public _Integer_limits -#elif defined(__hppa) -// wchar_t has "unsigned int" as the underlying type - : public _Integer_limits -#else -// assume that wchar_t has "int" as the underlying type - : public _Integer_limits -#endif -#else -// we have WCHAR_MIN and WCHAR_MAX defined, so use it - : public _Integer_limits -#endif -{}; -#endif - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -#ifdef __GNUC__ - -// Some compilers have long long, but don't define the -// LONGLONG_MIN and LONGLONG_MAX macros in limits.h. This -// assumes that long long is 64 bits. -#if !defined(LONGLONG_MAX) && !defined(ULONGLONG_MAX) - -# define ULONGLONG_MAX 0xffffffffffffffffLLU -# define LONGLONG_MAX 0x7fffffffffffffffLL - -#endif - -#if !defined(LONGLONG_MIN) -# define LONGLONG_MIN (-LONGLONG_MAX - 1) -#endif - - -#if !defined(ULONGLONG_MIN) -# define ULONGLONG_MIN 0 -#endif - -#endif /* __GNUC__ */ - -// Specializations for all built-in floating-point type. - -template<> class numeric_limits - : public _Floating_limits -{ -public: - static float min() throw() { return FLT_MIN; } - static float denorm_min() throw() { return FLT_MIN; } - static float max() throw() { return FLT_MAX; } - static float epsilon() throw() { return FLT_EPSILON; } - static float round_error() throw() { return 0.5f; } // Units: ulps. -}; - -template<> class numeric_limits - : public _Floating_limits -{ -public: - static double min() throw() { return DBL_MIN; } - static double denorm_min() throw() { return DBL_MIN; } - static double max() throw() { return DBL_MAX; } - static double epsilon() throw() { return DBL_EPSILON; } - static double round_error() throw() { return 0.5; } // Units: ulps. -}; - -template<> class numeric_limits - : public _Floating_limits -{ -public: - static long double min() throw() { return LDBL_MIN; } - static long double denorm_min() throw() { return LDBL_MIN; } - static long double max() throw() { return LDBL_MAX; } - static long double epsilon() throw() { return LDBL_EPSILON; } - static long double round_error() throw() { return 4; } // Units: ulps. -}; - -} // namespace std - -#endif /* BOOST_SGI_CPP_LIMITS */ - -// Local Variables: -// mode:C++ -// End: - - - diff --git a/sdk/include/boost/detail/lwm_gcc.hpp b/sdk/include/boost/detail/lwm_gcc.hpp deleted file mode 100644 index bf8a09a3613..00000000000 --- a/sdk/include/boost/detail/lwm_gcc.hpp +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef BOOST_DETAIL_LWM_GCC_HPP_INCLUDED -#define BOOST_DETAIL_LWM_GCC_HPP_INCLUDED - -// -// boost/detail/lwm_gcc.hpp -// -// lightweight_mutex for GNU libstdc++ v3 -// -// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// Copyright (c) 2002 Lars Gullik Bjønnes -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#include -#include - -namespace boost -{ - -namespace detail -{ - -class lightweight_mutex -{ -private: - - _Atomic_word a_; - - lightweight_mutex(lightweight_mutex const &); - lightweight_mutex & operator=(lightweight_mutex const &); - -public: - - lightweight_mutex(): a_(1) - { - } - - class scoped_lock; - friend class scoped_lock; - - class scoped_lock - { - private: - - lightweight_mutex & m_; - - scoped_lock(scoped_lock const &); - scoped_lock & operator=(scoped_lock const &); - - public: - - explicit scoped_lock(lightweight_mutex & m): m_(m) - { - while( !__exchange_and_add(&m_.a_, -1) ) - { - __atomic_add(&m_.a_, 1); - sched_yield(); - } - } - - ~scoped_lock() - { - __atomic_add(&m_.a_, 1); - } - }; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_LWM_GCC_HPP_INCLUDED diff --git a/sdk/include/boost/detail/lwm_irix.hpp b/sdk/include/boost/detail/lwm_irix.hpp deleted file mode 100644 index 2a5516182fb..00000000000 --- a/sdk/include/boost/detail/lwm_irix.hpp +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef BOOST_DETAIL_LWM_IRIX_HPP_INCLUDED -#define BOOST_DETAIL_LWM_IRIX_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/lwm_irix.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// Copyright (c) 2002 Dan Gohman -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#include -#include -#include - -namespace boost -{ - -namespace detail -{ - -class lightweight_mutex -{ -private: - - __uint32_t l_; - - lightweight_mutex(lightweight_mutex const &); - lightweight_mutex & operator=(lightweight_mutex const &); - -public: - - lightweight_mutex(): l_(0) - { - } - - class scoped_lock; - friend class scoped_lock; - - class scoped_lock - { - private: - - lightweight_mutex & m_; - - scoped_lock(scoped_lock const &); - scoped_lock & operator=(scoped_lock const &); - - public: - - explicit scoped_lock(lightweight_mutex & m): m_(m) - { - while( test_and_set32(&m_.l_, 1) ) - { - sched_yield(); - } - } - - ~scoped_lock() - { - m_.l_ = 0; - } - }; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_LWM_IRIX_HPP_INCLUDED diff --git a/sdk/include/boost/detail/lwm_linux.hpp b/sdk/include/boost/detail/lwm_linux.hpp deleted file mode 100644 index 62d8e64260c..00000000000 --- a/sdk/include/boost/detail/lwm_linux.hpp +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef BOOST_DETAIL_LWM_LINUX_HPP_INCLUDED -#define BOOST_DETAIL_LWM_LINUX_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/lwm_linux.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -// -// This implementation uses . This is a kernel header; -// using kernel headers in a user program may cause a number of problems, -// and not all flavors of Linux provide the atomic instructions. -// -// This file is only provided because the performance of this implementation -// is about 3.5 times higher than the pthreads version. Use at your own risk -// (by defining BOOST_USE_ASM_ATOMIC_H.) -// - -#include -#include - -namespace boost -{ - -namespace detail -{ - -class lightweight_mutex -{ -private: - - atomic_t a_; - - lightweight_mutex(lightweight_mutex const &); - lightweight_mutex & operator=(lightweight_mutex const &); - -public: - - lightweight_mutex() - { - atomic_t a = ATOMIC_INIT(1); - a_ = a; - } - - class scoped_lock; - friend class scoped_lock; - - class scoped_lock - { - private: - - lightweight_mutex & m_; - - scoped_lock(scoped_lock const &); - scoped_lock & operator=(scoped_lock const &); - - public: - - explicit scoped_lock(lightweight_mutex & m): m_(m) - { - while( !atomic_dec_and_test(&m_.a_) ) - { - atomic_inc(&m_.a_); - sched_yield(); - } - } - - ~scoped_lock() - { - atomic_inc(&m_.a_); - } - }; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_LWM_LINUX_HPP_INCLUDED diff --git a/sdk/include/boost/detail/lwm_nop.hpp b/sdk/include/boost/detail/lwm_nop.hpp deleted file mode 100644 index 671a5b0474a..00000000000 --- a/sdk/include/boost/detail/lwm_nop.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef BOOST_DETAIL_LWM_NOP_HPP_INCLUDED -#define BOOST_DETAIL_LWM_NOP_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/lwm_nop.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -namespace boost -{ - -namespace detail -{ - -class lightweight_mutex -{ -public: - - typedef lightweight_mutex scoped_lock; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_LWM_NOP_HPP_INCLUDED diff --git a/sdk/include/boost/detail/lwm_pthreads.hpp b/sdk/include/boost/detail/lwm_pthreads.hpp deleted file mode 100644 index 8ee5550e2ea..00000000000 --- a/sdk/include/boost/detail/lwm_pthreads.hpp +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef BOOST_DETAIL_LWM_PTHREADS_HPP_INCLUDED -#define BOOST_DETAIL_LWM_PTHREADS_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/lwm_pthreads.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#include - -namespace boost -{ - -namespace detail -{ - -class lightweight_mutex -{ -private: - - pthread_mutex_t m_; - - lightweight_mutex(lightweight_mutex const &); - lightweight_mutex & operator=(lightweight_mutex const &); - -public: - - lightweight_mutex() - { - -// HPUX 10.20 / DCE has a nonstandard pthread_mutex_init - -#if defined(__hpux) && defined(_DECTHREADS_) - pthread_mutex_init(&m_, pthread_mutexattr_default); -#else - pthread_mutex_init(&m_, 0); -#endif - } - - ~lightweight_mutex() - { - pthread_mutex_destroy(&m_); - } - - class scoped_lock; - friend class scoped_lock; - - class scoped_lock - { - private: - - pthread_mutex_t & m_; - - scoped_lock(scoped_lock const &); - scoped_lock & operator=(scoped_lock const &); - - public: - - scoped_lock(lightweight_mutex & m): m_(m.m_) - { - pthread_mutex_lock(&m_); - } - - ~scoped_lock() - { - pthread_mutex_unlock(&m_); - } - }; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_LWM_PTHREADS_HPP_INCLUDED diff --git a/sdk/include/boost/detail/lwm_win32.hpp b/sdk/include/boost/detail/lwm_win32.hpp deleted file mode 100644 index 6d37068e216..00000000000 --- a/sdk/include/boost/detail/lwm_win32.hpp +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef BOOST_DETAIL_LWM_WIN32_HPP_INCLUDED -#define BOOST_DETAIL_LWM_WIN32_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/lwm_win32.hpp -// -// Copyright (c) 2002, 2003 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#ifdef BOOST_USE_WINDOWS_H -# include -#endif - -#ifdef __BORLANDC__ -# pragma warn -8027 // Functions containing while are not expanded inline -#endif - -namespace boost -{ - -namespace detail -{ - -#ifndef BOOST_USE_WINDOWS_H - -#ifdef _WIN64 - -// Intel 6.0 on Win64 version, posted by Tim Fenders to [boost-users] - -extern "C" long_type __cdecl _InterlockedExchange(long volatile *, long); - -#pragma intrinsic(_InterlockedExchange) - -inline long InterlockedExchange(long volatile* lp, long l) -{ - return _InterlockedExchange(lp, l); -} - -#else // _WIN64 - -extern "C" __declspec(dllimport) long __stdcall InterlockedExchange(long volatile *, long); - -#endif // _WIN64 - -extern "C" __declspec(dllimport) void __stdcall Sleep(unsigned long); - -#endif // #ifndef BOOST_USE_WINDOWS_H - -class lightweight_mutex -{ -private: - - long l_; - - lightweight_mutex(lightweight_mutex const &); - lightweight_mutex & operator=(lightweight_mutex const &); - -public: - - lightweight_mutex(): l_(0) - { - } - - class scoped_lock; - friend class scoped_lock; - - class scoped_lock - { - private: - - lightweight_mutex & m_; - - scoped_lock(scoped_lock const &); - scoped_lock & operator=(scoped_lock const &); - - public: - - explicit scoped_lock(lightweight_mutex & m): m_(m) - { - while( InterlockedExchange(&m_.l_, 1) ) - { - // Note: changed to Sleep(1) from Sleep(0). - // According to MSDN, Sleep(0) will never yield - // to a lower-priority thread, whereas Sleep(1) - // will. Performance seems not to be affected. - - Sleep(1); - } - } - - ~scoped_lock() - { - InterlockedExchange(&m_.l_, 0); - - // Note: adding a yield here will make - // the spinlock more fair and will increase the overall - // performance of some applications substantially in - // high contention situations, but will penalize the - // low contention / single thread case up to 5x - } - }; -}; - -} // namespace detail - -} // namespace boost - -#ifdef __BORLANDC__ -# pragma warn .8027 // Functions containing while are not expanded inline -#endif - -#endif // #ifndef BOOST_DETAIL_LWM_WIN32_HPP_INCLUDED diff --git a/sdk/include/boost/detail/lwm_win32_cs.hpp b/sdk/include/boost/detail/lwm_win32_cs.hpp deleted file mode 100644 index 8b40ae9921e..00000000000 --- a/sdk/include/boost/detail/lwm_win32_cs.hpp +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef BOOST_DETAIL_LWM_WIN32_CS_HPP_INCLUDED -#define BOOST_DETAIL_LWM_WIN32_CS_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// boost/detail/lwm_win32_cs.hpp -// -// Copyright (c) 2002, 2003 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#ifdef BOOST_USE_WINDOWS_H -# include -#endif - -namespace boost -{ - -namespace detail -{ - -#ifndef BOOST_USE_WINDOWS_H - -struct CRITICAL_SECTION -{ - struct critical_section_debug * DebugInfo; - long LockCount; - long RecursionCount; - void * OwningThread; - void * LockSemaphore; -#if defined(_WIN64) - unsigned __int64 SpinCount; -#else - unsigned long SpinCount; -#endif -}; - -extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(CRITICAL_SECTION *); -extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(CRITICAL_SECTION *); -extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(CRITICAL_SECTION *); -extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(CRITICAL_SECTION *); - -#endif // #ifndef BOOST_USE_WINDOWS_H - -class lightweight_mutex -{ -private: - - CRITICAL_SECTION cs_; - - lightweight_mutex(lightweight_mutex const &); - lightweight_mutex & operator=(lightweight_mutex const &); - -public: - - lightweight_mutex() - { - InitializeCriticalSection(&cs_); - } - - ~lightweight_mutex() - { - DeleteCriticalSection(&cs_); - } - - class scoped_lock; - friend class scoped_lock; - - class scoped_lock - { - private: - - lightweight_mutex & m_; - - scoped_lock(scoped_lock const &); - scoped_lock & operator=(scoped_lock const &); - - public: - - explicit scoped_lock(lightweight_mutex & m): m_(m) - { - EnterCriticalSection(&m_.cs_); - } - - ~scoped_lock() - { - LeaveCriticalSection(&m_.cs_); - } - }; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_LWM_WIN32_CS_HPP_INCLUDED diff --git a/sdk/include/boost/detail/named_template_params.hpp b/sdk/include/boost/detail/named_template_params.hpp deleted file mode 100644 index 2af39ccf532..00000000000 --- a/sdk/include/boost/detail/named_template_params.hpp +++ /dev/null @@ -1,178 +0,0 @@ -// (C) Copyright Jeremy Siek 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -// Revision History: - -// 04 Oct 2001 David Abrahams -// Changed name of "bind" to "select" to avoid problems with MSVC. - -#ifndef BOOST_DETAIL_NAMED_TEMPLATE_PARAMS_HPP -#define BOOST_DETAIL_NAMED_TEMPLATE_PARAMS_HPP - -#include -#include // for is_reference -#if defined(__BORLANDC__) -#include -#endif - -namespace boost { - namespace detail { - - struct default_argument { }; - - struct dummy_default_gen { - template - struct select { - typedef default_argument type; - }; - }; - - // This class template is a workaround for MSVC. - template struct default_generator { - typedef detail::dummy_default_gen type; - }; - - template struct is_default { - enum { value = false }; - typedef type_traits::no_type type; - }; - template <> struct is_default { - enum { value = true }; - typedef type_traits::yes_type type; - }; - - struct choose_default { - template - struct select { - typedef typename default_generator::type Gen; - typedef typename Gen::template select::type type; - }; - }; - struct choose_arg { - template - struct select { - typedef Arg type; - }; - }; - -#if defined(__BORLANDC__) - template - struct choose_arg_or_default { typedef choose_arg type; }; - template <> - struct choose_arg_or_default { - typedef choose_default type; - }; -#else - template - struct choose_arg_or_default { typedef choose_arg type; }; - template <> - struct choose_arg_or_default { - typedef choose_default type; - }; -#endif - - template - class resolve_default { -#if defined(__BORLANDC__) - typedef typename choose_arg_or_default::type>::type Selector; -#else - // This usually works for Borland, but I'm seeing weird errors in - // iterator_adaptor_test.cpp when using this method. - enum { is_def = is_default::value }; - typedef typename choose_arg_or_default::type Selector; -#endif - public: - typedef typename Selector - ::template select::type type; - }; - - // To differentiate an unnamed parameter from a traits generator - // we use is_convertible. - struct named_template_param_base { }; - - template - struct is_named_param_list { - enum { value = is_convertible::value }; - }; - - struct choose_named_params { - template struct select { typedef Prev type; }; - }; - struct choose_default_arg { - template struct select { - typedef detail::default_argument type; - }; - }; - - template struct choose_default_dispatch_; - template <> struct choose_default_dispatch_ { - typedef choose_named_params type; - }; - template <> struct choose_default_dispatch_ { - typedef choose_default_arg type; - }; - // The use of inheritance here is a Solaris Forte 6 workaround. - template struct choose_default_dispatch - : public choose_default_dispatch_ { }; - - template - struct choose_default_argument { - enum { is_named = is_named_param_list::value }; - typedef typename choose_default_dispatch::type Selector; - typedef typename Selector::template select::type type; - }; - - // This macro assumes that there is a class named default_##TYPE - // defined before the application of the macro. This class should - // have a single member class template named "select" with two - // template parameters: the type of the class being created (e.g., - // the iterator_adaptor type when creating iterator adaptors) and - // a traits class. The select class should have a single typedef - // named "type" that produces the default for TYPE. See - // boost/iterator_adaptors.hpp for an example usage. Also, - // applications of this macro must be placed in namespace - // boost::detail. - -#define BOOST_NAMED_TEMPLATE_PARAM(TYPE) \ - struct get_##TYPE##_from_named { \ - template \ - struct select { \ - typedef typename NamedParams::traits NamedTraits; \ - typedef typename NamedTraits::TYPE TYPE; \ - typedef typename resolve_default::type type; \ - }; \ - }; \ - struct pass_thru_##TYPE { \ - template struct select { \ - typedef typename resolve_default::type type; \ - };\ - }; \ - template \ - struct get_##TYPE##_dispatch { }; \ - template <> struct get_##TYPE##_dispatch<1> { \ - typedef get_##TYPE##_from_named type; \ - }; \ - template <> struct get_##TYPE##_dispatch<0> { \ - typedef pass_thru_##TYPE type; \ - }; \ - template \ - class get_##TYPE { \ - enum { is_named = is_named_param_list::value }; \ - typedef typename get_##TYPE##_dispatch::type Selector; \ - public: \ - typedef typename Selector::template select::type type; \ - }; \ - template <> struct default_generator { \ - typedef default_##TYPE type; \ - } - - - } // namespace detail -} // namespace boost - -#endif // BOOST_DETAIL_NAMED_TEMPLATE_PARAMS_HPP diff --git a/sdk/include/boost/detail/numeric_traits.hpp b/sdk/include/boost/detail/numeric_traits.hpp deleted file mode 100644 index f8cbf36d43b..00000000000 --- a/sdk/include/boost/detail/numeric_traits.hpp +++ /dev/null @@ -1,198 +0,0 @@ -// (C) Copyright David Abrahams 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -// -// Template class is_signed and its documentation is: -// (C) Copyright Howard Hinnant 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -// -// Template class numeric_traits -- -// -// Supplies: -// -// typedef difference_type -- a type used to represent the difference -// between any two values of Number. -// -// Support: -// 1. Not all specializations are supplied -// -// 2. Use of specializations that are not supplied will cause a -// compile-time error -// -// 3. Users are free to specialize numeric_traits for any type. -// -// 4. Right now, specializations are only supplied for integer types. -// -// 5. On implementations which do not supply compile-time constants in -// std::numeric_limits<>, only specializations for built-in integer types -// are supplied. -// -// 6. Handling of numbers whose range of representation is at least as -// great as boost::intmax_t can cause some differences to be -// unrepresentable in difference_type: -// -// Number difference_type -// ------ --------------- -// signed Number -// unsigned intmax_t -// -// template typename numeric_traits::difference_type -// numeric_distance(Number x, Number y) -// computes (y - x), attempting to avoid overflows. -// - -// See http://www.boost.org for most recent version including documentation. - -// Revision History -// 11 Feb 2001 - Use BOOST_STATIC_CONSTANT (David Abrahams) -// 11 Feb 2001 - Rolled back ineffective Borland-specific code -// (David Abrahams) -// 10 Feb 2001 - Rolled in supposed Borland fixes from John Maddock, but -// not seeing any improvement yet (David Abrahams) -// 06 Feb 2001 - Factored if_true out into boost/detail/select_type.hpp -// (David Abrahams) -// 23 Jan 2001 - Fixed logic of difference_type selection, which was -// completely wack. In the process, added digit_traits<> -// to compute the number of digits in intmax_t even when -// not supplied by numeric_limits<>. (David Abrahams) -// 21 Jan 2001 - Created (David Abrahams) - -#ifndef BOOST_NUMERIC_TRAITS_HPP_DWA20001901 -# define BOOST_NUMERIC_TRAITS_HPP_DWA20001901 - -# include -# include -# include -# include -# include -# include - -namespace boost { namespace detail { - - // Template class is_signed -- determine whether a numeric type is signed - // Requires that T is constructable from the literals -1 and 0. Compile-time - // error results if that requirement is not met (and thus signedness is not - // likely to have meaning for that type). - template - struct is_signed - { -#if defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - BOOST_STATIC_CONSTANT(bool, value = (Number(-1) < Number(0))); -#else - BOOST_STATIC_CONSTANT(bool, value = std::numeric_limits::is_signed); -#endif - }; - -# ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - // digit_traits - compute the number of digits in a built-in integer - // type. Needed for implementations on which numeric_limits is not specialized - // for intmax_t (e.g. VC6). - template struct digit_traits_select; - - // numeric_limits is specialized; just select that version of digits - template <> struct digit_traits_select - { - template struct traits - { - BOOST_STATIC_CONSTANT(int, digits = std::numeric_limits::digits); - }; - }; - - // numeric_limits is not specialized; compute digits from sizeof(T) - template <> struct digit_traits_select - { - template struct traits - { - BOOST_STATIC_CONSTANT(int, digits = ( - sizeof(T) * std::numeric_limits::digits - - (is_signed::value ? 1 : 0)) - ); - }; - }; - - // here's the "usable" template - template struct digit_traits - { - typedef digit_traits_select< - ::std::numeric_limits::is_specialized> selector; - typedef typename selector::template traits traits; - BOOST_STATIC_CONSTANT(int, digits = traits::digits); - }; -#endif - - // Template class integer_traits -- traits of various integer types - // This should probably be rolled into boost::integer_traits one day, but I - // need it to work without - template - struct integer_traits - { -# ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - private: - typedef Integer integer_type; - typedef std::numeric_limits x; -# if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - // for some reason, MSVC asserts when it shouldn't unless we make these - // local definitions - BOOST_STATIC_CONSTANT(bool, is_integer = x::is_integer); - BOOST_STATIC_CONSTANT(bool, is_specialized = x::is_specialized); - - BOOST_STATIC_ASSERT(is_integer); - BOOST_STATIC_ASSERT(is_specialized); -# endif - public: - typedef typename - if_true<(int(x::is_signed) - && (!int(x::is_bounded) - // digits is the number of no-sign bits - || (int(x::digits) + 1 >= digit_traits::digits)))>::template then< - Integer, - - typename if_true<(int(x::digits) + 1 < digit_traits::digits)>::template then< - signed int, - - typename if_true<(int(x::digits) + 1 < digit_traits::digits)>::template then< - signed long, - - // else - intmax_t - >::type>::type>::type difference_type; -#else - BOOST_STATIC_ASSERT(boost::is_integral::value); - - typedef typename - if_true<(sizeof(Integer) >= sizeof(intmax_t))>::template then< - - typename if_true<(is_signed::value)>::template then< - Integer, - intmax_t - >::type, - - typename if_true<(sizeof(Integer) < sizeof(std::ptrdiff_t))>::template then< - std::ptrdiff_t, - intmax_t - >::type - >::type difference_type; -# endif - }; - - // Right now, only supports integers, but should be expanded. - template - struct numeric_traits - { - typedef typename integer_traits::difference_type difference_type; - }; - - template - typename numeric_traits::difference_type numeric_distance(Number x, Number y) - { - typedef typename numeric_traits::difference_type difference_type; - return difference_type(y) - difference_type(x); - } -}} - -#endif // BOOST_NUMERIC_TRAITS_HPP_DWA20001901 diff --git a/sdk/include/boost/detail/ob_call_traits.hpp b/sdk/include/boost/detail/ob_call_traits.hpp deleted file mode 100644 index 9cb58adcd39..00000000000 --- a/sdk/include/boost/detail/ob_call_traits.hpp +++ /dev/null @@ -1,169 +0,0 @@ -// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version including documentation. -// -// Crippled version for crippled compilers: -// see libs/utility/call_traits.htm -// - -/* Release notes: - 01st October 2000: - Fixed call_traits on VC6, using "poor man's partial specialisation", - using ideas taken from "Generative programming" by Krzysztof Czarnecki - & Ulrich Eisenecker. -*/ - -#ifndef BOOST_OB_CALL_TRAITS_HPP -#define BOOST_OB_CALL_TRAITS_HPP - -#ifndef BOOST_CONFIG_HPP -#include -#endif - -#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP -#include -#endif -#ifndef BOOST_COMPOSITE_TYPE_TRAITS_HPP -#include -#endif - -namespace boost{ - -#ifdef BOOST_MSVC6_MEMBER_TEMPLATES -// -// use member templates to emulate -// partial specialisation: -// -namespace detail{ - -template -struct standard_call_traits -{ - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef const T& param_type; -}; -template -struct simple_call_traits -{ - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef const T param_type; -}; -template -struct reference_call_traits -{ - typedef T value_type; - typedef T reference; - typedef T const_reference; - typedef T param_type; -}; - -template -struct call_traits_chooser -{ - template - struct rebind - { - typedef standard_call_traits type; - }; -}; - -template <> -struct call_traits_chooser -{ - template - struct rebind - { - typedef simple_call_traits type; - }; -}; - -template <> -struct call_traits_chooser -{ - template - struct rebind - { - typedef reference_call_traits type; - }; -}; - -template -struct call_traits_sizeof_chooser2 -{ - template - struct small_rebind - { - typedef simple_call_traits small_type; - }; -}; - -template<> -struct call_traits_sizeof_chooser2 -{ - template - struct small_rebind - { - typedef standard_call_traits small_type; - }; -}; - -template <> -struct call_traits_chooser -{ - template - struct rebind - { - enum { sizeof_choice = (sizeof(T) <= sizeof(void*)) }; - typedef call_traits_sizeof_chooser2<(sizeof(T) <= sizeof(void*))> chooser; - typedef typename chooser::template small_rebind bound_type; - typedef typename bound_type::small_type type; - }; -}; - -} // namespace detail -template -struct call_traits -{ -private: - typedef detail::call_traits_chooser< - ::boost::is_pointer::value, - ::boost::is_arithmetic::value, - ::boost::is_reference::value - > chooser; - typedef typename chooser::template rebind bound_type; - typedef typename bound_type::type call_traits_type; -public: - typedef typename call_traits_type::value_type value_type; - typedef typename call_traits_type::reference reference; - typedef typename call_traits_type::const_reference const_reference; - typedef typename call_traits_type::param_type param_type; -}; - -#else -// -// sorry call_traits is completely non-functional -// blame your broken compiler: -// - -template -struct call_traits -{ - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef const T& param_type; -}; - -#endif // member templates - -} - -#endif // BOOST_OB_CALL_TRAITS_HPP diff --git a/sdk/include/boost/detail/ob_compressed_pair.hpp b/sdk/include/boost/detail/ob_compressed_pair.hpp deleted file mode 100644 index a9e7b3ef6f3..00000000000 --- a/sdk/include/boost/detail/ob_compressed_pair.hpp +++ /dev/null @@ -1,509 +0,0 @@ -// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version including documentation. -// see libs/utility/compressed_pair.hpp -// -/* Release notes: - 20 Jan 2001: - Fixed obvious bugs (David Abrahams) - 07 Oct 2000: - Added better single argument constructor support. - 03 Oct 2000: - Added VC6 support (JM). - 23rd July 2000: - Additional comments added. (JM) - Jan 2000: - Original version: this version crippled for use with crippled compilers - - John Maddock Jan 2000. -*/ - - -#ifndef BOOST_OB_COMPRESSED_PAIR_HPP -#define BOOST_OB_COMPRESSED_PAIR_HPP - -#include -#ifndef BOOST_OBJECT_TYPE_TRAITS_HPP -#include -#endif -#ifndef BOOST_SAME_TRAITS_HPP -#include -#endif -#ifndef BOOST_CALL_TRAITS_HPP -#include -#endif - -namespace boost -{ -#ifdef BOOST_MSVC6_MEMBER_TEMPLATES -// -// use member templates to emulate -// partial specialisation. Note that due to -// problems with overload resolution with VC6 -// each of the compressed_pair versions that follow -// have one template single-argument constructor -// in place of two specific constructors: -// - -template -class compressed_pair; - -namespace detail{ - -template -struct best_conversion_traits -{ - typedef char one; - typedef char (&two)[2]; - static A a; - static one test(T1); - static two test(T2); - - enum { value = sizeof(test(a)) }; -}; - -template -struct init_one; - -template <> -struct init_one<1> -{ - template - static void init(const A& a, T1* p1, T2*) - { - *p1 = a; - } -}; - -template <> -struct init_one<2> -{ - template - static void init(const A& a, T1*, T2* p2) - { - *p2 = a; - } -}; - - -// T1 != T2, both non-empty -template -class compressed_pair_0 -{ -private: - T1 _first; - T2 _second; -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_0() : _first(), _second() {} - compressed_pair_0(first_param_type x, second_param_type y) : _first(x), _second(y) {} - template - explicit compressed_pair_0(const A& val) - { - init_one::value>::init(val, &_first, &_second); - } - compressed_pair_0(const ::boost::compressed_pair& x) - : _first(x.first()), _second(x.second()) {} - -#if 0 - compressed_pair_0& operator=(const compressed_pair_0& x) { - cout << "assigning compressed pair 0" << endl; - _first = x._first; - _second = x._second; - cout << "finished assigning compressed pair 0" << endl; - return *this; - } -#endif - - first_reference first() { return _first; } - first_const_reference first() const { return _first; } - - second_reference second() { return _second; } - second_const_reference second() const { return _second; } - - void swap(compressed_pair_0& y) - { - using std::swap; - swap(_first, y._first); - swap(_second, y._second); - } -}; - -// T1 != T2, T2 empty -template -class compressed_pair_1 : T2 -{ -private: - T1 _first; -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_1() : T2(), _first() {} - compressed_pair_1(first_param_type x, second_param_type y) : T2(y), _first(x) {} - - template - explicit compressed_pair_1(const A& val) - { - init_one::value>::init(val, &_first, static_cast(this)); - } - - compressed_pair_1(const ::boost::compressed_pair& x) - : T2(x.second()), _first(x.first()) {} - -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - // Total weirdness. If the assignment to _first is moved after - // the call to the inherited operator=, then this breaks graph/test/graph.cpp - // by way of iterator_adaptor. - compressed_pair_1& operator=(const compressed_pair_1& x) { - _first = x._first; - T2::operator=(x); - return *this; - } -#endif - - first_reference first() { return _first; } - first_const_reference first() const { return _first; } - - second_reference second() { return *this; } - second_const_reference second() const { return *this; } - - void swap(compressed_pair_1& y) - { - // no need to swap empty base class: - using std::swap; - swap(_first, y._first); - } -}; - -// T1 != T2, T1 empty -template -class compressed_pair_2 : T1 -{ -private: - T2 _second; -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_2() : T1(), _second() {} - compressed_pair_2(first_param_type x, second_param_type y) : T1(x), _second(y) {} - template - explicit compressed_pair_2(const A& val) - { - init_one::value>::init(val, static_cast(this), &_second); - } - compressed_pair_2(const ::boost::compressed_pair& x) - : T1(x.first()), _second(x.second()) {} - -#if 0 - compressed_pair_2& operator=(const compressed_pair_2& x) { - cout << "assigning compressed pair 2" << endl; - T1::operator=(x); - _second = x._second; - cout << "finished assigning compressed pair 2" << endl; - return *this; - } -#endif - first_reference first() { return *this; } - first_const_reference first() const { return *this; } - - second_reference second() { return _second; } - second_const_reference second() const { return _second; } - - void swap(compressed_pair_2& y) - { - // no need to swap empty base class: - using std::swap; - swap(_second, y._second); - } -}; - -// T1 != T2, both empty -template -class compressed_pair_3 : T1, T2 -{ -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_3() : T1(), T2() {} - compressed_pair_3(first_param_type x, second_param_type y) : T1(x), T2(y) {} - template - explicit compressed_pair_3(const A& val) - { - init_one::value>::init(val, static_cast(this), static_cast(this)); - } - compressed_pair_3(const ::boost::compressed_pair& x) - : T1(x.first()), T2(x.second()) {} - - first_reference first() { return *this; } - first_const_reference first() const { return *this; } - - second_reference second() { return *this; } - second_const_reference second() const { return *this; } - - void swap(compressed_pair_3& y) - { - // no need to swap empty base classes: - } -}; - -// T1 == T2, and empty -template -class compressed_pair_4 : T1 -{ -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_4() : T1() {} - compressed_pair_4(first_param_type x, second_param_type) : T1(x) {} - // only one single argument constructor since T1 == T2 - explicit compressed_pair_4(first_param_type x) : T1(x) {} - compressed_pair_4(const ::boost::compressed_pair& x) - : T1(x.first()){} - - first_reference first() { return *this; } - first_const_reference first() const { return *this; } - - second_reference second() { return *this; } - second_const_reference second() const { return *this; } - - void swap(compressed_pair_4& y) - { - // no need to swap empty base classes: - } -}; - -// T1 == T2, not empty -template -class compressed_pair_5 -{ -private: - T1 _first; - T2 _second; -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair_5() : _first(), _second() {} - compressed_pair_5(first_param_type x, second_param_type y) : _first(x), _second(y) {} - // only one single argument constructor since T1 == T2 - explicit compressed_pair_5(first_param_type x) : _first(x), _second(x) {} - compressed_pair_5(const ::boost::compressed_pair& c) - : _first(c.first()), _second(c.second()) {} - - first_reference first() { return _first; } - first_const_reference first() const { return _first; } - - second_reference second() { return _second; } - second_const_reference second() const { return _second; } - - void swap(compressed_pair_5& y) - { - using std::swap; - swap(_first, y._first); - swap(_second, y._second); - } -}; - -template -struct compressed_pair_chooser -{ - template - struct rebind - { - typedef compressed_pair_0 type; - }; -}; - -template <> -struct compressed_pair_chooser -{ - template - struct rebind - { - typedef compressed_pair_1 type; - }; -}; - -template <> -struct compressed_pair_chooser -{ - template - struct rebind - { - typedef compressed_pair_2 type; - }; -}; - -template <> -struct compressed_pair_chooser -{ - template - struct rebind - { - typedef compressed_pair_3 type; - }; -}; - -template <> -struct compressed_pair_chooser -{ - template - struct rebind - { - typedef compressed_pair_4 type; - }; -}; - -template <> -struct compressed_pair_chooser -{ - template - struct rebind - { - typedef compressed_pair_5 type; - }; -}; - -template -struct compressed_pair_traits -{ -private: - typedef compressed_pair_chooser::value, is_empty::value, is_same::value> chooser; - typedef typename chooser::template rebind bound_type; -public: - typedef typename bound_type::type type; -}; - -} // namespace detail - -template -class compressed_pair : public detail::compressed_pair_traits::type -{ -private: - typedef typename detail::compressed_pair_traits::type base_type; -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair() : base_type() {} - compressed_pair(first_param_type x, second_param_type y) : base_type(x, y) {} - template - explicit compressed_pair(const A& x) : base_type(x){} - - first_reference first() { return base_type::first(); } - first_const_reference first() const { return base_type::first(); } - - second_reference second() { return base_type::second(); } - second_const_reference second() const { return base_type::second(); } -}; - -template -inline void swap(compressed_pair& x, compressed_pair& y) -{ - x.swap(y); -} - -#else -// no partial specialisation, no member templates: - -template -class compressed_pair -{ -private: - T1 _first; - T2 _second; -public: - typedef T1 first_type; - typedef T2 second_type; - typedef typename call_traits::param_type first_param_type; - typedef typename call_traits::param_type second_param_type; - typedef typename call_traits::reference first_reference; - typedef typename call_traits::reference second_reference; - typedef typename call_traits::const_reference first_const_reference; - typedef typename call_traits::const_reference second_const_reference; - - compressed_pair() : _first(), _second() {} - compressed_pair(first_param_type x, second_param_type y) : _first(x), _second(y) {} - explicit compressed_pair(first_param_type x) : _first(x), _second() {} - // can't define this in case T1 == T2: - // explicit compressed_pair(second_param_type y) : _first(), _second(y) {} - - first_reference first() { return _first; } - first_const_reference first() const { return _first; } - - second_reference second() { return _second; } - second_const_reference second() const { return _second; } - - void swap(compressed_pair& y) - { - using std::swap; - swap(_first, y._first); - swap(_second, y._second); - } -}; - -template -inline void swap(compressed_pair& x, compressed_pair& y) -{ - x.swap(y); -} - -#endif - -} // boost - -#endif // BOOST_OB_COMPRESSED_PAIR_HPP - - - diff --git a/sdk/include/boost/detail/quick_allocator.hpp b/sdk/include/boost/detail/quick_allocator.hpp deleted file mode 100644 index 58cc1d896a7..00000000000 --- a/sdk/include/boost/detail/quick_allocator.hpp +++ /dev/null @@ -1,187 +0,0 @@ -#ifndef BOOST_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED -#define BOOST_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// detail/quick_allocator.hpp -// -// Copyright (c) 2003 David Abrahams -// Copyright (c) 2003 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#include - -#include -#include -#include - -#include // ::operator new, ::operator delete -#include // std::size_t - -namespace boost -{ - -namespace detail -{ - -template union freeblock -{ - typedef typename boost::type_with_alignment::type aligner_type; - aligner_type aligner; - char bytes[size]; - freeblock * next; -}; - -template struct allocator_impl -{ - typedef freeblock block; - - // It may seem odd to use such small pages. - // - // However, on a typical Windows implementation that uses - // the OS allocator, "normal size" pages interact with the - // "ordinary" operator new, slowing it down dramatically. - // - // 512 byte pages are handled by the small object allocator, - // and don't interfere with ::new. - // - // The other alternative is to use much bigger pages (1M.) - // - // It is surprisingly easy to hit pathological behavior by - // varying the page size. g++ 2.96 on Red Hat Linux 7.2, - // for example, passionately dislikes 496. 512 seems OK. - -#if defined(BOOST_QA_PAGE_SIZE) - - enum { items_per_page = BOOST_QA_PAGE_SIZE / size }; - -#else - - enum { items_per_page = 512 / size }; // 1048560 / size - -#endif - -#ifdef BOOST_HAS_THREADS - static lightweight_mutex mutex; -#endif - - static block * free; - static block * page; - static unsigned last; - - static inline void * alloc() - { -#ifdef BOOST_HAS_THREADS - lightweight_mutex::scoped_lock lock(mutex); -#endif - if(block * x = free) - { - free = x->next; - return x; - } - else - { - if(last == items_per_page) - { - // "Listen to me carefully: there is no memory leak" - // -- Scott Meyers, Eff C++ 2nd Ed Item 10 - page = ::new block[items_per_page]; - last = 0; - } - - return &page[last++]; - } - } - - static inline void * alloc(std::size_t n) - { - if(n != size) // class-specific new called for a derived object - { - return ::operator new(n); - } - else - { -#ifdef BOOST_HAS_THREADS - lightweight_mutex::scoped_lock lock(mutex); -#endif - if(block * x = free) - { - free = x->next; - return x; - } - else - { - if(last == items_per_page) - { - page = ::new block[items_per_page]; - last = 0; - } - - return &page[last++]; - } - } - } - - static inline void dealloc(void * pv) - { - if(pv != 0) // 18.4.1.1/13 - { -#ifdef BOOST_HAS_THREADS - lightweight_mutex::scoped_lock lock(mutex); -#endif - block * pb = static_cast(pv); - pb->next = free; - free = pb; - } - } - - static inline void dealloc(void * pv, std::size_t n) - { - if(n != size) // class-specific delete called for a derived object - { - ::operator delete(pv); - } - else if(pv != 0) // 18.4.1.1/13 - { -#ifdef BOOST_HAS_THREADS - lightweight_mutex::scoped_lock lock(mutex); -#endif - block * pb = static_cast(pv); - pb->next = free; - free = pb; - } - } -}; - -#ifdef BOOST_HAS_THREADS -template - lightweight_mutex allocator_impl::mutex; -#endif - -template - freeblock * allocator_impl::free = 0; - -template - freeblock * allocator_impl::page = 0; - -template - unsigned allocator_impl::last = allocator_impl::items_per_page; - -template -struct quick_allocator: public allocator_impl< sizeof(T), boost::alignment_of::value > -{ -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED diff --git a/sdk/include/boost/detail/select_type.hpp b/sdk/include/boost/detail/select_type.hpp deleted file mode 100644 index 3d15a97e358..00000000000 --- a/sdk/include/boost/detail/select_type.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// (C) Copyright David Abrahams 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -// -// See http://www.boost.org for most recent version including documentation. - -// Revision History -// 09 Feb 01 Applied John Maddock's Borland patch Moving -// specialization to unspecialized template (David Abrahams) -// 06 Feb 01 Created (David Abrahams) - -#ifndef SELECT_TYPE_DWA20010206_HPP -# define SELECT_TYPE_DWA20010206_HPP - -namespace boost { namespace detail { - - // Template class if_true -- select among 2 types based on a bool constant expression - // Usage: - // typename if_true<(bool_const_expression)>::template then::type - - // HP aCC cannot deal with missing names for template value parameters - template struct if_true - { - template - struct then { typedef T type; }; - }; - - template <> - struct if_true - { - template - struct then { typedef F type; }; - }; -}} -#endif // SELECT_TYPE_DWA20010206_HPP diff --git a/sdk/include/boost/detail/shared_array_nmt.hpp b/sdk/include/boost/detail/shared_array_nmt.hpp deleted file mode 100644 index 8e9b727aa01..00000000000 --- a/sdk/include/boost/detail/shared_array_nmt.hpp +++ /dev/null @@ -1,152 +0,0 @@ -#ifndef BOOST_DETAIL_SHARED_ARRAY_NMT_HPP_INCLUDED -#define BOOST_DETAIL_SHARED_ARRAY_NMT_HPP_INCLUDED - -// -// detail/shared_array_nmt.hpp - shared_array.hpp without member templates -// -// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999. -// Copyright (c) 2001, 2002 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/smart_ptr/shared_array.htm for documentation. -// - -#include -#include -#include -#include - -#include // for std::ptrdiff_t -#include // for std::swap -#include // for std::less -#include // for std::bad_alloc - -namespace boost -{ - -template class shared_array -{ -private: - - typedef detail::atomic_count count_type; - -public: - - typedef T element_type; - - explicit shared_array(T * p = 0): px(p) - { -#ifndef BOOST_NO_EXCEPTIONS - - try // prevent leak if new throws - { - pn = new count_type(1); - } - catch(...) - { - boost::checked_array_delete(p); - throw; - } - -#else - - pn = new count_type(1); - - if(pn == 0) - { - boost::checked_array_delete(p); - boost::throw_exception(std::bad_alloc()); - } - -#endif - } - - ~shared_array() - { - if(--*pn == 0) - { - boost::checked_array_delete(px); - delete pn; - } - } - - shared_array(shared_array const & r) : px(r.px) // never throws - { - pn = r.pn; - ++*pn; - } - - shared_array & operator=(shared_array const & r) - { - shared_array(r).swap(*this); - return *this; - } - - void reset(T * p = 0) - { - BOOST_ASSERT(p == 0 || p != px); - shared_array(p).swap(*this); - } - - T * get() const // never throws - { - return px; - } - - T & operator[](std::ptrdiff_t i) const // never throws - { - BOOST_ASSERT(px != 0); - BOOST_ASSERT(i >= 0); - return px[i]; - } - - long use_count() const // never throws - { - return *pn; - } - - bool unique() const // never throws - { - return *pn == 1; - } - - void swap(shared_array & other) // never throws - { - std::swap(px, other.px); - std::swap(pn, other.pn); - } - -private: - - T * px; // contained pointer - count_type * pn; // ptr to reference counter - -}; // shared_array - -template inline bool operator==(shared_array const & a, shared_array const & b) -{ - return a.get() == b.get(); -} - -template inline bool operator!=(shared_array const & a, shared_array const & b) -{ - return a.get() != b.get(); -} - -template inline bool operator<(shared_array const & a, shared_array const & b) -{ - return std::less()(a.get(), b.get()); -} - -template void swap(shared_array & a, shared_array & b) -{ - a.swap(b); -} - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_SHARED_ARRAY_NMT_HPP_INCLUDED diff --git a/sdk/include/boost/detail/shared_count.hpp b/sdk/include/boost/detail/shared_count.hpp deleted file mode 100644 index 417071c615d..00000000000 --- a/sdk/include/boost/detail/shared_count.hpp +++ /dev/null @@ -1,552 +0,0 @@ -#ifndef BOOST_DETAIL_SHARED_COUNT_HPP_INCLUDED -#define BOOST_DETAIL_SHARED_COUNT_HPP_INCLUDED - -#if _MSC_VER >= 1020 -#pragma once -#endif - -// -// detail/shared_count.hpp -// -// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// - -#include - -#if defined(BOOST_SP_USE_STD_ALLOCATOR) && defined(BOOST_SP_USE_QUICK_ALLOCATOR) -# error BOOST_SP_USE_STD_ALLOCATOR and BOOST_SP_USE_QUICK_ALLOCATOR are incompatible. -#endif - -#include -#include -#include - -#if defined(BOOST_SP_USE_QUICK_ALLOCATOR) -#include -#endif - -#include // std::auto_ptr, std::allocator -#include // std::less -#include // std::exception -#include // std::bad_alloc -#include // std::type_info in get_deleter -#include // std::size_t - -#ifdef __BORLANDC__ -# pragma warn -8026 // Functions with excep. spec. are not expanded inline -# pragma warn -8027 // Functions containing try are not expanded inline -#endif - -namespace boost -{ - -// Debug hooks - -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - -void sp_scalar_constructor_hook(void * px, std::size_t size, void * pn); -void sp_array_constructor_hook(void * px); -void sp_scalar_destructor_hook(void * px, std::size_t size, void * pn); -void sp_array_destructor_hook(void * px); - -#endif - - -// The standard library that comes with Borland C++ 5.5.1 -// defines std::exception and its members as having C calling -// convention (-pc). When the definition of bad_weak_ptr -// is compiled with -ps, the compiler issues an error. -// Hence, the temporary #pragma option -pc below. The version -// check is deliberately conservative. - -#if defined(__BORLANDC__) && __BORLANDC__ == 0x551 -# pragma option push -pc -#endif - -class bad_weak_ptr: public std::exception -{ -public: - - virtual char const * what() const throw() - { - return "boost::bad_weak_ptr"; - } -}; - -#if defined(__BORLANDC__) && __BORLANDC__ == 0x551 -# pragma option pop -#endif - -namespace detail -{ - -class sp_counted_base -{ -private: - - typedef detail::lightweight_mutex mutex_type; - -public: - - sp_counted_base(): use_count_(1), weak_count_(1) - { - } - - virtual ~sp_counted_base() // nothrow - { - } - - // dispose() is called when use_count_ drops to zero, to release - // the resources managed by *this. - - virtual void dispose() = 0; // nothrow - - // destruct() is called when weak_count_ drops to zero. - - virtual void destruct() // nothrow - { - delete this; - } - - virtual void * get_deleter(std::type_info const & ti) = 0; - - void add_ref() - { -#if defined(BOOST_HAS_THREADS) - mutex_type::scoped_lock lock(mtx_); -#endif - if(use_count_ == 0 && weak_count_ != 0) boost::throw_exception(boost::bad_weak_ptr()); - ++use_count_; - ++weak_count_; - } - - void release() // nothrow - { - { -#if defined(BOOST_HAS_THREADS) - mutex_type::scoped_lock lock(mtx_); -#endif - long new_use_count = --use_count_; - - if(new_use_count != 0) - { - --weak_count_; - return; - } - } - - dispose(); - weak_release(); - } - - void weak_add_ref() // nothrow - { -#if defined(BOOST_HAS_THREADS) - mutex_type::scoped_lock lock(mtx_); -#endif - ++weak_count_; - } - - void weak_release() // nothrow - { - long new_weak_count; - - { -#if defined(BOOST_HAS_THREADS) - mutex_type::scoped_lock lock(mtx_); -#endif - new_weak_count = --weak_count_; - } - - if(new_weak_count == 0) - { - destruct(); - } - } - - long use_count() const // nothrow - { -#if defined(BOOST_HAS_THREADS) - mutex_type::scoped_lock lock(mtx_); -#endif - return use_count_; - } - -private: - - sp_counted_base(sp_counted_base const &); - sp_counted_base & operator= (sp_counted_base const &); - - // inv: use_count_ <= weak_count_ - - long use_count_; - long weak_count_; - -#if defined(BOOST_HAS_THREADS) - mutable mutex_type mtx_; -#endif -}; - -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - -template void cbi_call_constructor_hook(sp_counted_base * pn, T * px, checked_deleter const &, int) -{ - boost::sp_scalar_constructor_hook(px, sizeof(T), pn); -} - -template void cbi_call_constructor_hook(sp_counted_base *, T * px, checked_array_deleter const &, int) -{ - boost::sp_array_constructor_hook(px); -} - -template void cbi_call_constructor_hook(sp_counted_base *, P const &, D const &, long) -{ -} - -template void cbi_call_destructor_hook(sp_counted_base * pn, T * px, checked_deleter const &, int) -{ - boost::sp_scalar_destructor_hook(px, sizeof(T), pn); -} - -template void cbi_call_destructor_hook(sp_counted_base *, T * px, checked_array_deleter const &, int) -{ - boost::sp_array_destructor_hook(px); -} - -template void cbi_call_destructor_hook(sp_counted_base *, P const &, D const &, long) -{ -} - -#endif - -// -// Borland's Codeguard trips up over the -Vx- option here: -// -#ifdef __CODEGUARD__ -# pragma option push -Vx- -#endif - -template class sp_counted_base_impl: public sp_counted_base -{ -private: - - P ptr; // copy constructor must not throw - D del; // copy constructor must not throw - - sp_counted_base_impl(sp_counted_base_impl const &); - sp_counted_base_impl & operator= (sp_counted_base_impl const &); - - typedef sp_counted_base_impl this_type; - -public: - - // pre: initial_use_count <= initial_weak_count, d(p) must not throw - - sp_counted_base_impl(P p, D d): ptr(p), del(d) - { -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - detail::cbi_call_constructor_hook(this, p, d, 0); -#endif - } - - virtual void dispose() // nothrow - { -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - detail::cbi_call_destructor_hook(this, ptr, del, 0); -#endif - del(ptr); - } - - virtual void * get_deleter(std::type_info const & ti) - { - return ti == typeid(D)? &del: 0; - } - -#if defined(BOOST_SP_USE_STD_ALLOCATOR) - - void * operator new(std::size_t) - { - return std::allocator().allocate(1, static_cast(0)); - } - - void operator delete(void * p) - { - std::allocator().deallocate(static_cast(p), 1); - } - -#endif - -#if defined(BOOST_SP_USE_QUICK_ALLOCATOR) - - void * operator new(std::size_t) - { - return quick_allocator::alloc(); - } - - void operator delete(void * p) - { - quick_allocator::dealloc(p); - } - -#endif -}; - -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - -int const shared_count_id = 0x2C35F101; -int const weak_count_id = 0x298C38A4; - -#endif - -class weak_count; - -class shared_count -{ -private: - - sp_counted_base * pi_; - -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - int id_; -#endif - - friend class weak_count; - -public: - - shared_count(): pi_(0) // nothrow -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - , id_(shared_count_id) -#endif - { - } - - template shared_count(P p, D d): pi_(0) -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - , id_(shared_count_id) -#endif - { -#ifndef BOOST_NO_EXCEPTIONS - - try - { - pi_ = new sp_counted_base_impl(p, d); - } - catch(...) - { - d(p); // delete p - throw; - } - -#else - - pi_ = new sp_counted_base_impl(p, d); - - if(pi_ == 0) - { - d(p); // delete p - boost::throw_exception(std::bad_alloc()); - } - -#endif - } - -#ifndef BOOST_NO_AUTO_PTR - - // auto_ptr is special cased to provide the strong guarantee - - template - explicit shared_count(std::auto_ptr & r): pi_(new sp_counted_base_impl< Y *, checked_deleter >(r.get(), checked_deleter())) -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - , id_(shared_count_id) -#endif - { - r.release(); - } - -#endif - - ~shared_count() // nothrow - { - if(pi_ != 0) pi_->release(); -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - id_ = 0; -#endif - } - - shared_count(shared_count const & r): pi_(r.pi_) // nothrow -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - , id_(shared_count_id) -#endif - { - if(pi_ != 0) pi_->add_ref(); - } - - explicit shared_count(weak_count const & r); // throws bad_weak_ptr when r.use_count() == 0 - - shared_count & operator= (shared_count const & r) // nothrow - { - sp_counted_base * tmp = r.pi_; - if(tmp != 0) tmp->add_ref(); - if(pi_ != 0) pi_->release(); - pi_ = tmp; - - return *this; - } - - void swap(shared_count & r) // nothrow - { - sp_counted_base * tmp = r.pi_; - r.pi_ = pi_; - pi_ = tmp; - } - - long use_count() const // nothrow - { - return pi_ != 0? pi_->use_count(): 0; - } - - bool unique() const // nothrow - { - return use_count() == 1; - } - - friend inline bool operator==(shared_count const & a, shared_count const & b) - { - return a.pi_ == b.pi_; - } - - friend inline bool operator<(shared_count const & a, shared_count const & b) - { - return std::less()(a.pi_, b.pi_); - } - - void * get_deleter(std::type_info const & ti) const - { - return pi_? pi_->get_deleter(ti): 0; - } -}; - -#ifdef __CODEGUARD__ -# pragma option pop -#endif - - -class weak_count -{ -private: - - sp_counted_base * pi_; - -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - int id_; -#endif - - friend class shared_count; - -public: - - weak_count(): pi_(0) // nothrow -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - , id_(weak_count_id) -#endif - { - } - - weak_count(shared_count const & r): pi_(r.pi_) // nothrow -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - , id_(shared_count_id) -#endif - { - if(pi_ != 0) pi_->weak_add_ref(); - } - - weak_count(weak_count const & r): pi_(r.pi_) // nothrow -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - , id_(shared_count_id) -#endif - { - if(pi_ != 0) pi_->weak_add_ref(); - } - - ~weak_count() // nothrow - { - if(pi_ != 0) pi_->weak_release(); -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - id_ = 0; -#endif - } - - weak_count & operator= (shared_count const & r) // nothrow - { - sp_counted_base * tmp = r.pi_; - if(tmp != 0) tmp->weak_add_ref(); - if(pi_ != 0) pi_->weak_release(); - pi_ = tmp; - - return *this; - } - - weak_count & operator= (weak_count const & r) // nothrow - { - sp_counted_base * tmp = r.pi_; - if(tmp != 0) tmp->weak_add_ref(); - if(pi_ != 0) pi_->weak_release(); - pi_ = tmp; - - return *this; - } - - void swap(weak_count & r) // nothrow - { - sp_counted_base * tmp = r.pi_; - r.pi_ = pi_; - pi_ = tmp; - } - - long use_count() const // nothrow - { - return pi_ != 0? pi_->use_count(): 0; - } - - friend inline bool operator==(weak_count const & a, weak_count const & b) - { - return a.pi_ == b.pi_; - } - - friend inline bool operator<(weak_count const & a, weak_count const & b) - { - return std::less()(a.pi_, b.pi_); - } -}; - -inline shared_count::shared_count(weak_count const & r): pi_(r.pi_) -#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) - , id_(shared_count_id) -#endif -{ - if(pi_ != 0) - { - pi_->add_ref(); - } - else - { - boost::throw_exception(boost::bad_weak_ptr()); - } -} - -} // namespace detail - -} // namespace boost - -#ifdef __BORLANDC__ -# pragma warn .8027 // Functions containing try are not expanded inline -# pragma warn .8026 // Functions with excep. spec. are not expanded inline -#endif - -#endif // #ifndef BOOST_DETAIL_SHARED_COUNT_HPP_INCLUDED diff --git a/sdk/include/boost/detail/shared_ptr_nmt.hpp b/sdk/include/boost/detail/shared_ptr_nmt.hpp deleted file mode 100644 index 14fbe6522b9..00000000000 --- a/sdk/include/boost/detail/shared_ptr_nmt.hpp +++ /dev/null @@ -1,183 +0,0 @@ -#ifndef BOOST_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED -#define BOOST_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED - -// -// detail/shared_ptr_nmt.hpp - shared_ptr.hpp without member templates -// -// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999. -// Copyright (c) 2001, 2002 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/smart_ptr/shared_ptr.htm for documentation. -// - -#include -#include -#include -#include - -#ifndef BOOST_NO_AUTO_PTR -# include // for std::auto_ptr -#endif - -#include // for std::swap -#include // for std::less -#include // for std::bad_alloc - -namespace boost -{ - -template class shared_ptr -{ -private: - - typedef detail::atomic_count count_type; - -public: - - typedef T element_type; - typedef T value_type; - - explicit shared_ptr(T * p = 0): px(p) - { -#ifndef BOOST_NO_EXCEPTIONS - - try // prevent leak if new throws - { - pn = new count_type(1); - } - catch(...) - { - boost::checked_delete(p); - throw; - } - -#else - - pn = new count_type(1); - - if(pn == 0) - { - boost::checked_delete(p); - boost::throw_exception(std::bad_alloc()); - } - -#endif - } - - ~shared_ptr() - { - if(--*pn == 0) - { - boost::checked_delete(px); - delete pn; - } - } - - shared_ptr(shared_ptr const & r): px(r.px) // never throws - { - pn = r.pn; - ++*pn; - } - - shared_ptr & operator=(shared_ptr const & r) - { - shared_ptr(r).swap(*this); - return *this; - } - -#ifndef BOOST_NO_AUTO_PTR - - explicit shared_ptr(std::auto_ptr & r) - { - pn = new count_type(1); // may throw - px = r.release(); // fix: moved here to stop leak if new throws - } - - shared_ptr & operator=(std::auto_ptr & r) - { - shared_ptr(r).swap(*this); - return *this; - } - -#endif - - void reset(T * p = 0) - { - BOOST_ASSERT(p == 0 || p != px); - shared_ptr(p).swap(*this); - } - - T & operator*() const // never throws - { - BOOST_ASSERT(px != 0); - return *px; - } - - T * operator->() const // never throws - { - BOOST_ASSERT(px != 0); - return px; - } - - T * get() const // never throws - { - return px; - } - - long use_count() const // never throws - { - return *pn; - } - - bool unique() const // never throws - { - return *pn == 1; - } - - void swap(shared_ptr & other) // never throws - { - std::swap(px, other.px); - std::swap(pn, other.pn); - } - -private: - - T * px; // contained pointer - count_type * pn; // ptr to reference counter -}; - -template inline bool operator==(shared_ptr const & a, shared_ptr const & b) -{ - return a.get() == b.get(); -} - -template inline bool operator!=(shared_ptr const & a, shared_ptr const & b) -{ - return a.get() != b.get(); -} - -template inline bool operator<(shared_ptr const & a, shared_ptr const & b) -{ - return std::less()(a.get(), b.get()); -} - -template void swap(shared_ptr & a, shared_ptr & b) -{ - a.swap(b); -} - -// get_pointer() enables boost::mem_fn to recognize shared_ptr - -template inline T * get_pointer(shared_ptr const & p) -{ - return p.get(); -} - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED diff --git a/sdk/include/boost/detail/workaround.hpp b/sdk/include/boost/detail/workaround.hpp deleted file mode 100644 index 229b3cc1873..00000000000 --- a/sdk/include/boost/detail/workaround.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright David Abrahams 2002. Permission to copy, use, -// modify, sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -#ifndef WORKAROUND_DWA2002126_HPP -# define WORKAROUND_DWA2002126_HPP - -// Compiler/library version workaround macro -// -// Usage: -// -// #if BOOST_WORKAROUND(BOOST_MSVC, <= 1200) -// ... // workaround code here -// #endif -// -// When BOOST_STRICT_CONFIG is defined, expands to 0. Otherwise, the -// first argument must be undefined or expand to a numeric -// value. The above expands to: -// -// (BOOST_MSVC) != 0 && (BOOST_MSVC) <= 1200 -// -// When used for workarounds on the latest known version of a -// compiler, the following convention should be observed: -// -// #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301)) -// -// The version number in this case corresponds to the last version in -// which the workaround was known to have been required. It only has -// value as a comment unless BOOST_DETECT_OUTDATED_WORKAROUNDS is -// defined, in which case a compiler warning or error will be issued -// when the compiler version exceeds the argument to BOOST_TESTED_AT - -# ifndef BOOST_STRICT_CONFIG - -# define BOOST_WORKAROUND(symbol, test) \ - ((symbol != 0) && (1 % (( (symbol test) ) + 1))) -// ^ ^ ^ ^ -// The extra level of parenthesis nesting above, along with the -// BOOST_OPEN_PAREN indirection below, is required to satisfy the -// broken preprocessor in MWCW 8.3 and earlier. -// -// The basic mechanism works as follows: -// (symbol test) + 1 => 2 if the test passes, 1 otherwise -// 1 % ((symbol test) + 1) => 1 if the test passes, 0 otherwise -// -// The complication with % is for cooperation with BOOST_TESTED_AT(). -// When "test" is BOOST_TESTED_AT(x) and -// BOOST_DETECT_OUTDATED_WORKAROUNDS is #defined, -// -// symbol test => 1 if symbol <= x, -1 otherwise -// (symbol test) + 1 => 2 if symbol <= x, 0 otherwise -// 1 % ((symbol test) + 1) => 1 if symbol <= x, zero divide otherwise -// - -# ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS -# define BOOST_OPEN_PAREN ( -# define BOOST_TESTED_AT(value) > value) ?(-1): BOOST_OPEN_PAREN 1 -# else -# define BOOST_TESTED_AT(value) != 0 -# endif - -# else - -# define BOOST_WORKAROUND(symbol, test) 0 - -# endif - -#endif // WORKAROUND_DWA2002126_HPP diff --git a/sdk/include/boost/dynamic_bitset.hpp b/sdk/include/boost/dynamic_bitset.hpp deleted file mode 100644 index 8d589a07130..00000000000 --- a/sdk/include/boost/dynamic_bitset.hpp +++ /dev/null @@ -1,1415 +0,0 @@ -// (C) Copyright Chuck Allison and Jeremy Siek 2001, 2002. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all -// copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any -// purpose. - -// With optimizations, bug fixes, and improvements by Gennaro Prota. - -// See http://www.boost.org/libs/dynamic_bitset for documentation. - -// ------------------------------------- -// CHANGE LOG: -// -// - corrected workaround for Dinkum lib's allocate() [GP] -// - changed macro test for old iostreams [GP] -// - removed #include for now. [JGS] -// - Added __GNUC__ to compilers that cannot handle the constructor from basic_string. [JGS] -// - corrected to_block_range [GP] -// - corrected from_block_range [GP] -// - Removed __GNUC__ from compilers that cannot handle the constructor -// from basic_string and added the workaround suggested by GP. [JGS] -// - Removed __BORLANDC__ from the #if around the basic_string -// constructor. Luckily the fix by GP for g++ also fixes Borland. [JGS] - -#ifndef BOOST_DYNAMIC_BITSET_HPP -#define BOOST_DYNAMIC_BITSET_HPP - -#include -#include -#include -#include -#include // for memset, memcpy, memcmp, etc. -#include // for std::overflow_error -#include // for std::swap, std::min, std::copy, std::fill - -#if defined(__GNUC__) && !defined(__SGI_STL_PORT) -#include -#else -#include // for isspace -#endif - -#include "boost/dynamic_bitset_fwd.hpp" //G.P.S. -#include "boost/detail/dynamic_bitset.hpp" - -#if defined (__STL_CONFIG_H) && !defined (__STL_USE_NEW_IOSTREAMS) -#define BOOST_OLD_IOSTREAMS -#endif - - -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 -// in certain situations VC++ requires a redefinition of -// default template arguments, in contrast with 14.1/12 -// -# define BOOST_WORKAROUND_REPEAT_DEFAULT_TEMPLATE_ARGUMENTS // macro 'local' to this file -#endif - - - -namespace boost { - -#ifdef BOOST_WORKAROUND_REPEAT_DEFAULT_TEMPLATE_ARGUMENTS - template > -#else - template -#endif - -class dynamic_bitset : -#ifdef BOOST_DYN_BITSET_USE_FRIENDS - private -#else - public -#endif - detail::dynamic_bitset_base -{ - // Portability note: member function templates are defined inside - // this class definition to avoid problems with VC++. Similarly, - // with the member functions of the nested class. -public: - typedef Block block_type; - typedef std::size_t size_type; - enum { bits_per_block = CHAR_BIT * sizeof(Block) }; - - // reference to a bit - class reference - { - friend class dynamic_bitset; - dynamic_bitset* bs; - size_type bit; - reference(); // intentionally not implemented - reference(dynamic_bitset& bs_, size_type bit_) : bs(&bs_), bit(bit_){ } - public: - reference& operator=(bool value) // for b[i] = x - { - if (value) - bs->set(bit); - else - bs->reset(bit); - return *this; - } - reference& operator|=(bool value) // for b[i] |= x - { - if (value) - bs->set(bit); - return *this; - } - reference& operator&=(bool value) // for b[i] &= x - { - if (! (value && bs->test(bit))) - bs->reset(bit); - return *this; - } - reference& operator^=(bool value) // for b[i] ^= x - { - bs->set(bit, bs->test(bit) ^ value); - return *this; - } - reference& operator-=(bool value) // for b[i] -= x - { - if (!value) - bs->reset(bit); - return *this; - } - reference& operator=(const reference& j) // for b[i] = b[j] - { - if (j.bs->test(j.bit)) - bs->set(bit); - else - bs->reset(bit); - return *this; - } - reference& operator|=(const reference& j) // for b[i] |= b[j] - { - if (j.bs->test(j.bit)) - bs->set(bit); - return *this; - } - reference& operator&=(const reference& j) // for b[i] &= b[j] - { - if (! (j.bs->test(j.bit) && bs->test(bit))) - bs->reset(bit); - return *this; - } - reference& operator^=(const reference& j) // for b[i] ^= b[j] - { - bs->set(bit, bs->test(bit) ^ j.bs->test(j.bit)); - return *this; - } - reference& operator-=(const reference& j) // for b[i] -= b[j] - { - if (!j.bs->test(j.bit)) - bs->reset(bit); - return *this; - } - bool operator~() const // flips the bit - { - return ! bs->test(bit); - } - operator bool() const // for x = b[i] - { - return bs->test(bit); - } - reference& flip() // for b[i].flip(); - { - bs->flip(bit); - return *this; - } - }; - typedef bool const_reference; - - // constructors, etc. - explicit - dynamic_bitset(const Allocator& alloc = Allocator()); - - explicit - dynamic_bitset(size_type num_bits, unsigned long value = 0, - const Allocator& alloc = Allocator()); - - // from string -#if defined(BOOST_OLD_IOSTREAMS) - explicit - dynamic_bitset(const std::string& s, - std::string::size_type pos = 0, - std::string::size_type n = std::string::npos, - const Allocator& alloc = Allocator()) - : detail::dynamic_bitset_base - (std::min(n, s.size() - pos), alloc) -#else - // The parenthesis around std::basic_string::npos - // in the code below are to avoid a g++ 3.2 bug and a Borland bug. -JGS - template - explicit - dynamic_bitset(const std::basic_string& s, - typename std::basic_string::size_type pos = 0, - typename std::basic_string::size_type n - = (std::basic_string::npos), - const Allocator& alloc = Allocator()) - : detail::dynamic_bitset_base - (std::min(n, s.size() - pos), alloc) -#endif - { - // Locate sub string - assert(pos <= s.length()); - from_string(s, pos, std::min(n, s.size() - pos)); - } - - // The first bit in *first is the least significant bit, and the - // last bit in the block just before *last is the most significant bit. - template - dynamic_bitset(BlockInputIterator first, BlockInputIterator last, - const Allocator& alloc = Allocator()) - : detail::dynamic_bitset_base - (detail::initial_num_blocks(first, last) - * bits_per_block, alloc) - { - if (first != last) { - if (this->m_num_bits == 0) { // dealing with input iterators - this->append(first, last); - } else { - // dealing with forward iterators, memory has been allocated - for (std::size_t i = 0; first != last; ++first, ++i) - set_block_(i, *first); - } - } - } - - - // copy constructor - dynamic_bitset(const dynamic_bitset& b); - - void swap(dynamic_bitset& b); - - dynamic_bitset& operator=(const dynamic_bitset& b); - - // size changing operations - void resize(size_type num_bits, bool value = false); - void clear(); - void push_back(bool bit); - void append(Block block); - - // This is declared inside the class to avoid compiler bugs. - template - void append(BlockInputIterator first, BlockInputIterator last) - { - if (first != last) { - std::size_t nblocks = detail::initial_num_blocks(first, last); - if (nblocks == 0) { // dealing with input iterators - for (; first != last; ++first) - append(*first); - } else { // dealing with forward iterators - if (size() % bits_per_block == 0) { - std::size_t old_nblocks = this->m_num_blocks; - resize(size() + nblocks * bits_per_block); - for (std::size_t i = old_nblocks; first != last; ++first) - set_block_(i++, *first); - } else { - // probably should optimize this, - // but I'm sick of bit twiddling - for (; first != last; ++first) - append(*first); - } - } - } - } - - - // bitset operations - dynamic_bitset& operator&=(const dynamic_bitset& b); - dynamic_bitset& operator|=(const dynamic_bitset& b); - dynamic_bitset& operator^=(const dynamic_bitset& b); - dynamic_bitset& operator-=(const dynamic_bitset& b); - dynamic_bitset& operator<<=(size_type n); - dynamic_bitset& operator>>=(size_type n); - dynamic_bitset operator<<(size_type n) const; - dynamic_bitset operator>>(size_type n) const; - - // basic bit operations - dynamic_bitset& set(size_type n, bool val = true); - dynamic_bitset& set(); - dynamic_bitset& reset(size_type n); - dynamic_bitset& reset(); - dynamic_bitset& flip(size_type n); - dynamic_bitset& flip(); - bool test(size_type n) const; - bool any() const; - bool none() const; - dynamic_bitset operator~() const; - size_type count() const; - - // subscript - reference operator[](size_type pos) { return reference(*this, pos); } - bool operator[](size_type pos) const { return test_(pos); } //[gps] - - unsigned long to_ulong() const; - - size_type size() const; - size_type num_blocks() const; - - bool is_subset_of(const dynamic_bitset& a) const; - bool is_proper_subset_of(const dynamic_bitset& a) const; - - -#ifdef BOOST_DYN_BITSET_USE_FRIENDS - // lexicographical comparison - template - friend bool operator==(const dynamic_bitset& a, - const dynamic_bitset& b); - template - friend bool operator<(const dynamic_bitset& a, - const dynamic_bitset& b); - template - friend bool operator>(const dynamic_bitset& a, - const dynamic_bitset& b); - - template - friend void to_block_range(const dynamic_bitset& b, - BlockOutputIterator result); - - template - friend void from_block_range(BlockIterator first, BlockIterator last, - dynamic_bitset& result); - - template - friend void dump_to_string(const dynamic_bitset& b, - std::basic_string& s); -#endif - -private: - void m_zero_unused_bits(); - void set_(size_type bit); - bool set_(size_type bit, bool val); - void reset_(size_type bit); - bool test_(size_type bit) const; - void set_block_(size_type blocknum, Block b); - -public: - - // This is templated on the whole String instead of just CharT, - // Traits, Alloc to avoid compiler bugs. - template - void from_string(const String& s, typename String::size_type pos, - typename String::size_type rlen) - { - reset(); // bugfix [gps] - size_type const tot = std::min (rlen, s.length()); // bugfix [gps] - - // Assumes string contains only 0's and 1's - for (size_type i = 0; i < tot; ++i) { - if (s[pos + tot - i - 1] == '1') { - set_(i); - } else { - assert(s[pos + tot - i - 1] == '0'); - } - } - } - -}; - -// Global Functions: - -// comparison -template -bool operator!=(const dynamic_bitset& a, - const dynamic_bitset& b); - -template -bool operator<=(const dynamic_bitset& a, - const dynamic_bitset& b); - -template -bool operator>(const dynamic_bitset& a, - const dynamic_bitset& b); - -template -bool operator>=(const dynamic_bitset& a, - const dynamic_bitset& b); - -// stream operators -#ifdef BOOST_OLD_IOSTREAMS -template -std::ostream& operator<<(std::ostream& os, - const dynamic_bitset& b); - -template -std::istream& operator>>(std::istream& is, dynamic_bitset& b); -#else -template -std::basic_ostream& -operator<<(std::basic_ostream& os, - const dynamic_bitset& b); - -template -std::basic_istream& -operator>>(std::basic_istream& is, - dynamic_bitset& b); -#endif - -// bitset operations -template -dynamic_bitset -operator&(const dynamic_bitset& b1, - const dynamic_bitset& b2); - -template -dynamic_bitset -operator|(const dynamic_bitset& b1, - const dynamic_bitset& b2); - -template -dynamic_bitset -operator^(const dynamic_bitset& b1, - const dynamic_bitset& b2); - -template -dynamic_bitset -operator-(const dynamic_bitset& b1, - const dynamic_bitset& b2); - - -template -void -to_string(const dynamic_bitset& b, - std::basic_string& s); - -template -void -to_block_range(const dynamic_bitset& b, - BlockOutputIterator result); - -template -inline void -from_block_range(BlockIterator first, BlockIterator last, - dynamic_bitset& result); - -//============================================================================= -// dynamic_bitset implementation - -#ifdef BOOST_OLD_IOSTREAMS -template -inline std::ostream& -operator<<(std::ostream& os, - const typename dynamic_bitset::reference& br) -{ - return os << (bool)br; -} -#else -template -inline std::basic_ostream& -operator<<(std::basic_ostream& os, - const typename dynamic_bitset::reference& br) -{ - return os << (bool)br; -} -#endif - -//----------------------------------------------------------------------------- -// constructors, etc. - -template -dynamic_bitset::dynamic_bitset(const Allocator& alloc) - : detail::dynamic_bitset_base(0, alloc) { } - -template -dynamic_bitset:: -dynamic_bitset(size_type num_bits, unsigned long value, const Allocator& alloc) - : detail::dynamic_bitset_base(num_bits, alloc) -{ - const size_type M = std::min(sizeof(unsigned long) * CHAR_BIT, num_bits); - for(size_type i = 0; i < M; ++i, value >>= 1) // [G.P.S.] to be optimized - if ( value & 0x1 ) - set_(i); -} - -// copy constructor -template -inline dynamic_bitset:: -dynamic_bitset(const dynamic_bitset& b) - : detail::dynamic_bitset_base(b.size(), b.m_alloc) -{ - using namespace std; - memcpy(this->m_bits, b.m_bits, this->m_num_blocks * sizeof(Block)); -} - -template -inline void dynamic_bitset:: -swap(dynamic_bitset& b) -{ - std::swap(this->m_bits, b.m_bits); - std::swap(this->m_num_bits, b.m_num_bits); - std::swap(this->m_num_blocks, b.m_num_blocks); - std::swap(this->m_alloc, b.m_alloc); -} - -template -dynamic_bitset& dynamic_bitset:: -operator=(const dynamic_bitset& b) -{ - dynamic_bitset tmp(b); - this->swap(tmp); - return *this; -} - -//----------------------------------------------------------------------------- -// size changing operations - -template -void dynamic_bitset:: -resize(size_type num_bits, bool value) -{ - if (num_bits == size()) - return; - size_type new_nblocks = this->calc_num_blocks(num_bits); - Block* d = this->m_alloc.allocate(new_nblocks, static_cast(0)); - if (num_bits < size()) { // shrink - std::copy(this->m_bits, this->m_bits + new_nblocks, d); - std::swap(d, this->m_bits); - this->m_alloc.deallocate(d, this->m_num_blocks); - } else { // grow - std::copy(this->m_bits, this->m_bits + this->m_num_blocks, d); - Block val = value? ~static_cast(0) : static_cast(0); - std::fill(d + this->m_num_blocks, d + new_nblocks, val); - std::swap(d, this->m_bits); - for (std::size_t i = this->m_num_bits; - i < this->m_num_blocks * bits_per_block; ++i) - set_(i, value); - if (d != 0) - this->m_alloc.deallocate(d, this->m_num_blocks); - } - this->m_num_bits = num_bits; - this->m_num_blocks = this->calc_num_blocks(num_bits); - m_zero_unused_bits(); -} - -template -void dynamic_bitset:: -clear() -{ - if (this->m_bits != 0) { - this->m_alloc.deallocate(this->m_bits, this->m_num_blocks); - this->m_bits = 0; - this->m_num_bits = 0; - this->m_num_blocks = 0; - } -} - - -template -void dynamic_bitset:: -push_back(bool bit) -{ - this->resize(this->size() + 1); - set_(this->size() - 1, bit); -} - -template -void dynamic_bitset:: -append(Block value) -{ - std::size_t old_size = size(); - resize(old_size + bits_per_block); - if (size() % bits_per_block == 0) - set_block_(this->m_num_blocks - 1, value); - else { - // G.P.S. to be optimized - for (std::size_t i = old_size; i < size(); ++i, value >>= 1) - set_(i, value & 1); - } -} - - -//----------------------------------------------------------------------------- -// bitset operations -template -dynamic_bitset& -dynamic_bitset::operator&=(const dynamic_bitset& rhs) -{ - assert(size() == rhs.size()); - for (size_type i = 0; i < this->m_num_blocks; ++i) - this->m_bits[i] &= rhs.m_bits[i]; - return *this; -} - -template -dynamic_bitset& -dynamic_bitset::operator|=(const dynamic_bitset& rhs) -{ - assert(size() == rhs.size()); - for (size_type i = 0; i < this->m_num_blocks; ++i) - this->m_bits[i] |= rhs.m_bits[i]; - m_zero_unused_bits(); - return *this; -} - -template -dynamic_bitset& -dynamic_bitset::operator^=(const dynamic_bitset& rhs) -{ - assert(size() == rhs.size()); - for (size_type i = 0; i < this->m_num_blocks; ++i) - this->m_bits[i] ^= rhs.m_bits[i]; - m_zero_unused_bits(); - return *this; -} - -template -dynamic_bitset& -dynamic_bitset::operator-=(const dynamic_bitset& rhs) -{ - assert(size() == rhs.size()); - for (size_type i = 0; i < this->m_num_blocks; ++i) - this->m_bits[i] = this->m_bits[i] & ~rhs.m_bits[i]; - m_zero_unused_bits(); - return *this; -} - -/* [gps] - snipped -template -dynamic_bitset& -dynamic_bitset::operator<<=(size_type n) -{ - if (n >= this->m_num_bits) - reset(); - else - { - size_type i; - for (i = this->m_num_bits - 1; i > n; --i) - set_(i,test_(i-n)); - if (i == n) // careful, unsigned can't go negative! - set_(i,test_(i-n)); - for (i = 0; i < n; ++i) - reset_(i); - } - return *this; -}*/ - - -template -dynamic_bitset& -dynamic_bitset::operator<<=(size_type n) -{ - if (n >= this->m_num_bits) - return reset(); - //else - if (n > 0) - { - size_type const last = this->m_num_blocks - 1; // m_num_blocks is >= 1 - size_type const div = n / bits_per_block; // div is <= last - size_type const r = n % bits_per_block; - - // PRE: div != 0 or r != 0 - - if (r != 0) { - - block_type const rs = bits_per_block - r; - - for (size_type i = last-div; i>0; --i) { - this->m_bits[i+div] = (this->m_bits[i] << r) | (this->m_bits[i-1] >> rs); - } - this->m_bits[div] = this->m_bits[0] << r; - - } - else { - for (size_type i = last-div; i>0; --i) { - this->m_bits[i+div] = this->m_bits[i]; - } - this->m_bits[div] = this->m_bits[0]; - } - - - // div blocks are zero filled at the less significant end - std::fill(this->m_bits, this->m_bits+div, static_cast(0)); - - - } - - return *this; - - -} - - - - -/* [gps] - snipped -template -dynamic_bitset& -dynamic_bitset::operator>>=(size_type n) -{ - if (n >= this->m_num_bits) - reset(); - else - { - size_type i; - for (i = 0; i < this->m_num_bits - n; ++i) - set_(i,test_(i+n)); - - for (i = this->m_num_bits - n; i < this->m_num_bits; ++i) - reset_(i); - } - return *this; -}*/ - - - - -// NOTE: this assumes that within a single block bits are -// numbered from right to left. G.P.S. -// -// static Block offset(size_type bit) -// { return bit % bits_per_block; } -// -// -// In the implementation below the 'if (r != 0)' is logically -// unnecessary. It's there as an optimization only: in fact -// for r==0 the first branch becomes the second one with the -// b[last-div] = b[last] >> r; statement that does the work of -// the last iteration. -// -template -dynamic_bitset & dynamic_bitset::operator>>=(size_type n) { - if (n >= this->m_num_bits) { - return reset(); - } - //else - if (n>0){ - - size_type const last = this->m_num_blocks - 1; // m_num_blocks is >= 1 - size_type const div = n / bits_per_block; // div is <= last - size_type const r = n % bits_per_block; - - // PRE: div != 0 or r != 0 - - if (r != 0) { - - block_type const ls = bits_per_block - r; - - for (size_type i = div; i < last; ++i) { - this->m_bits[i-div] = (this->m_bits[i] >> r) | (this->m_bits[i+1] << ls); - } - // r bits go to zero - this->m_bits[last-div] = this->m_bits[last] >> r; - } - - else { - for (size_type i = div; i <= last; ++i) { - this->m_bits[i-div] = this->m_bits[i]; - } - // note the '<=': the last iteration 'absorbs' - // this->m_bits[last-div] = this->m_bits[last] >> 0; - } - - - - // div blocks are zero filled at the most significant end - std::fill(this->m_bits+(this->m_num_blocks-div), this->m_bits+this->m_num_blocks, static_cast(0)); - } - - return *this; -} - - - - - - - -template -dynamic_bitset -dynamic_bitset::operator<<(size_type n) const -{ - dynamic_bitset r(*this); - return r <<= n; -} - -template -dynamic_bitset -dynamic_bitset::operator>>(size_type n) const -{ - dynamic_bitset r(*this); - return r >>= n; -} - - -//----------------------------------------------------------------------------- -// basic bit operations - -template -dynamic_bitset& -dynamic_bitset::set(size_type pos, bool val) -{ - assert(pos < this->m_num_bits); - set_(pos, val); - return *this; -} - -template -dynamic_bitset& -dynamic_bitset::set() -{ - if (this->m_num_bits > 0) { - using namespace std; - memset(this->m_bits, ~0u, this->m_num_blocks * sizeof(this->m_bits[0])); - m_zero_unused_bits(); - } - return *this; -} - -template -dynamic_bitset& -dynamic_bitset::reset(size_type pos) -{ - assert(pos < this->m_num_bits); - reset_(pos); - return *this; -} - -template -dynamic_bitset& -dynamic_bitset::reset() -{ - if (this->m_num_bits > 0) { - using namespace std; - memset(this->m_bits, 0, this->m_num_blocks * sizeof(this->m_bits[0])); - } - return *this; -} - -template -dynamic_bitset& -dynamic_bitset::flip(size_type pos) -{ - assert(pos < this->m_num_bits); - this->m_bits[this->word(pos)] ^= this->mask1(pos); - return *this; -} - -template -dynamic_bitset& -dynamic_bitset::flip() -{ - for (size_type i = 0; i < this->m_num_blocks; ++i) - this->m_bits[i] = ~this->m_bits[i]; - m_zero_unused_bits(); - return *this; -} - -template -bool dynamic_bitset::test(size_type pos) const -{ - assert(pos < this->m_num_bits); - return test_(pos); -} - -template -bool dynamic_bitset::any() const -{ - for (size_type i = 0; i < this->m_num_blocks; ++i) - if (this->m_bits[i]) - return 1; - return 0; -} - -template -inline bool dynamic_bitset::none() const -{ - return !any(); -} - -template -dynamic_bitset -dynamic_bitset::operator~() const -{ - dynamic_bitset b(*this); - b.flip(); - return b; -} - - -/* snipped: [gps] - -The following is the straightforward implementation of count(), which -we leave here in a comment for documentation purposes. - -template -typename dynamic_bitset::size_type -dynamic_bitset::count() const -{ - size_type sum = 0; - for (size_type i = 0; i != this->m_num_bits; ++i) - if (test_(i)) - ++sum; - return sum; -} - -The actual algorithm used is based on using a lookup -table. - - - The basic idea of the method is to pick up X bits at a time - from the internal array of blocks and consider those bits as - the binary representation of a number N. Then, to use a table - of 1<::max_bits) and - the internal array of blocks is seen as an array of bytes: if - a byte has exactly 8 bits then it's enough to sum the value - of table[B] for each byte B. Otherwise 8 bits at a time are - 'extracted' from each byte by using another loop. As a further - efficiency consideration note that even if you have, let's say, - 32-bit chars the inner loop will not do 4 (i.e. 32/8) iterations, - unless you have at least one bit set in the highest 8 bits of the - byte. - - Note also that the outmost if/else is not necessary but is there - to help the optimizer (and one of the two branches is always dead - code). - -*/ - - -template -typename dynamic_bitset::size_type -dynamic_bitset::count() const -{ - using detail::byte_t; - - const byte_t * p = reinterpret_cast(this->m_bits); - const byte_t * past_end = p + this->m_num_blocks * sizeof(Block); - - size_type num = 0; - unsigned int const max_bit = detail::count<>::max_bit; - - if (CHAR_BIT <= max_bit) { // table is large enough - while (p < past_end) { - num += detail::count<>::table[*p]; - ++p; - } - } - else { - while (p < past_end) { - // this inner loop 'extracts' max_bit bits at a time - // from the byte at address p, and thus allows to use - // our (small) table for any (high) CHAR_BIT value - byte_t value = *p; - do { - num += detail::count<>::table[value & ((1<>= max_bit); - - ++p; - } - } - - - return num; -} - - -//----------------------------------------------------------------------------- -// conversions - -// take as ref param instead? -template -void -to_string(const dynamic_bitset& b, - std::basic_string& s) -{ - s.assign(b.size(), '0'); - for (std::size_t i = 0; i < b.size(); ++i) - if (b.test(i)) // [G.P.S.] - s[b.size() - 1 - i] = '1'; -} - - -// Differently from to_string this function dumps out -// every bit of the internal representation (useful -// for debugging purposes) -// -template -void -dump_to_string(const dynamic_bitset& b, - std::basic_string& s) -{ - std::size_t const len = b.m_num_blocks * (dynamic_bitset::bits_per_block); - s.assign(len, '0'); - for (std::size_t i = 0; i != len; ++i) - if (b[i])// could use test_ here, but we have friend issues.-JGS - s[len - 1 - i] = '1'; -} - -template -void -to_block_range(const dynamic_bitset& b, - BlockOutputIterator result) -{ - assert(b.size() != 0 || b.num_blocks() == 0); - std::copy (b.m_bits, b.m_bits + b.m_num_blocks, result); -} - -template -inline void -from_block_range(BlockIterator first, BlockIterator last, - dynamic_bitset& result) -{ - // PRE: distance(first, last) == numblocks() - std::copy (first, last, result.m_bits); -} - -template -unsigned long dynamic_bitset:: -to_ulong() const -{ - const std::overflow_error - overflow("boost::bit_set::operator unsigned long()"); - - if (this->m_num_blocks == 0) - return 0; - - if (sizeof(Block) >= sizeof(unsigned long)) { - for (size_type i = 1; i < this->m_num_blocks; ++i) - if (this->m_bits[i]) - throw overflow; - const Block mask = static_cast(static_cast(-1)); - if (this->m_bits[0] & ~mask) - throw overflow; - size_type N = std::min(sizeof(unsigned long) * CHAR_BIT, this->size()); - unsigned long num = 0; - for (size_type j = 0; j < N; ++j) - if (this->test(j)) - num |= (1 << j); - return num; - } - else { // sizeof(Block) < sizeof(unsigned long). - const size_type nwords = - (sizeof(unsigned long) + sizeof(Block) - 1) / sizeof(Block); - - size_type min_nwords = nwords; - if (this->m_num_blocks > nwords) { - for (size_type i = nwords; i < this->m_num_blocks; ++i) - if (this->m_bits[i]) - throw overflow; - } - else - min_nwords = this->m_num_blocks; - - unsigned long result = 0; - size_type N = std::min(sizeof(unsigned long) * CHAR_BIT, this->size()); - for (size_type i = 0; i < N; ++i) - if (this->test(i)) - result |= (1 << i); - return result; - } -} - - -template -inline typename dynamic_bitset::size_type -dynamic_bitset::size() const -{ - return this->m_num_bits; -} - -template -inline typename dynamic_bitset::size_type -dynamic_bitset::num_blocks() const -{ - return this->m_num_blocks; -} - - -template -bool dynamic_bitset:: -is_subset_of(const dynamic_bitset& a) const -{ - assert(this->size() == a.size()); - for (size_type i = 0; i < this->m_num_blocks; ++i) - if (this->m_bits[i] & ~a.m_bits[i]) - return false; - return true; -} - -template -bool dynamic_bitset:: -is_proper_subset_of(const dynamic_bitset& a) const -{ - assert(this->size() == a.size()); - bool proper = false; - for (size_type i = 0; i < this->m_num_blocks; ++i) { - Block bt = this->m_bits[i], ba = a.m_bits[i]; - if (ba & ~bt) - proper = true; - if (bt & ~ba) - return false; - } - return proper; -} - -//----------------------------------------------------------------------------- -// comparison - -template -bool operator==(const dynamic_bitset& a, - const dynamic_bitset& b) -{ - using namespace std; - return (a.m_num_bits == b.m_num_bits) && - ((a.m_num_bits == 0) || - !memcmp(a.m_bits, b.m_bits, a.m_num_blocks * sizeof(a.m_bits[0]))); -} - -template -inline bool operator!=(const dynamic_bitset& a, - const dynamic_bitset& b) -{ - return !(a == b); -} - -template -bool operator<(const dynamic_bitset& a, - const dynamic_bitset& b) -{ - assert(a.size() == b.size()); - typedef typename dynamic_bitset::size_type size_type; - - if (a.size() == 0) - return false; - - // Since we are storing the most significant bit - // at pos == size() - 1, we need to do the memcmp in reverse. - - // Compare a block at a time - for (size_type i = a.m_num_blocks - 1; i > 0; --i) - if (a.m_bits[i] < b.m_bits[i]) - return true; - else if (a.m_bits[i] > b.m_bits[i]) - return false; - - if (a.m_bits[0] < b.m_bits[0]) - return true; - else - return false; -} - -template -inline bool operator<=(const dynamic_bitset& a, - const dynamic_bitset& b) -{ - return !(a > b); -} - -template -inline bool operator>(const dynamic_bitset& a, - const dynamic_bitset& b) -{ - assert(a.size() == b.size()); - typedef typename dynamic_bitset::size_type size_type; - - if (a.size() == 0) - return false; - - // Since we are storing the most significant bit - // at pos == size() - 1, we need to do the memcmp in reverse. - - // Compare a block at a time - for (size_type i = a.m_num_blocks - 1; i > 0; --i) - if (a.m_bits[i] < b.m_bits[i]) - return false; - else if (a.m_bits[i] > b.m_bits[i]) - return true; - - if (a.m_bits[0] > b.m_bits[0]) - return true; - else - return false; -} - -template -inline bool operator>=(const dynamic_bitset& a, - const dynamic_bitset& b) -{ - return !(a < b); -} - -//----------------------------------------------------------------------------- -// stream operations - -#ifdef BOOST_OLD_IOSTREAMS -template < typename Block, typename Allocator> -std::ostream& -operator<<(std::ostream& os, const dynamic_bitset& b) -{ - std::string s; - to_string(b, s); - os << s.c_str(); - return os; -} -#else -template -std::basic_ostream& -operator<<(std::basic_ostream& os, - const dynamic_bitset& b) -{ - std::basic_string s; - to_string(b, s); - os << s; - return os; -} -#endif - -#ifdef BOOST_OLD_IOSTREAMS -template -std::istream& -operator>>(std::istream& is, dynamic_bitset& b) -{ - typedef char CharT; - std::string buf; - typedef typename std::string::size_type size_type; - const size_type N = b.size(); - buf.reserve(N); - - // skip whitespace - if (is.flags() & std::ios::skipws) { - char c; - do - is.get(c); -#if defined(__GNUC__) && !defined(__SGI_STL_PORT) - while (is && isspace(c)); -#else - while (is && std::isspace(c)); -#endif - if (is) - is.putback(c); - } - - size_type i; - for (i = 0; i < N; ++i) - { - CharT c; - is.get(c); - if (c == '0' || c == '1') - buf += c; - else - { - is.putback(c); - break; - } - } - - if (i == 0) - is.clear(is.rdstate() | std::ios::failbit); - else - { - dynamic_bitset tmp(buf); - b.swap(tmp); - } - return is; -} -#else -template -std::basic_istream& -operator>>(std::basic_istream& in_stream, - dynamic_bitset& b) -{ - std::basic_string tmp; - typedef typename std::basic_string::size_type size_type; - const size_type N = b.size(); - tmp.reserve(N); - - // skip whitespace - typename std::basic_istream::sentry sentry(in_stream); - if (sentry) { - std::basic_streambuf* read_buf = in_stream.rdbuf(); - - for (size_type i = 0; i < N; ++i) { - typename Traits::int_type c1 = read_buf->sbumpc(); - if (Traits::eq_int_type(c1, Traits::eof())) { - in_stream.setstate(std::ios_base::eofbit); - break; - } else { - char c2 = Traits::to_char_type(c1); - char c = in_stream.narrow(c2, '*'); - - if (c == '0' || c == '1') - tmp += c; // old dinkumware basic_string missing push_back - else if (Traits::eq_int_type(read_buf->sputbackc(c2), Traits::eof())) - { - in_stream.setstate(std::ios_base::failbit); - break; - } - } - } // for - - if (tmp.empty()) // did not read in enough bits - in_stream.setstate(std::ios_base::failbit); - else - b.from_string(tmp, static_cast(0), N); - } // if (sentry) - return in_stream; -} -#endif - - -//----------------------------------------------------------------------------- -// bitset operations - -template -dynamic_bitset -operator&(const dynamic_bitset& x, - const dynamic_bitset& y) -{ - dynamic_bitset b(x); - return b &= y; -} - -template -dynamic_bitset -operator|(const dynamic_bitset& x, - const dynamic_bitset& y) -{ - dynamic_bitset b(x); - return b |= y; -} - -template -dynamic_bitset -operator^(const dynamic_bitset& x, - const dynamic_bitset& y) -{ - dynamic_bitset b(x); - return b ^= y; -} - -template -dynamic_bitset -operator-(const dynamic_bitset& x, - const dynamic_bitset& y) -{ - dynamic_bitset b(x); - return b -= y; -} - - -//----------------------------------------------------------------------------- -// private member functions - -template -inline void dynamic_bitset:: -set_(size_type bit) -{ - this->m_bits[this->word(bit)] |= this->mask1(bit); -} - -template -inline void dynamic_bitset:: -set_block_(size_type blocknum, Block value) -{ - this->m_bits[blocknum] = value; -} - -template -inline void dynamic_bitset:: -reset_(size_type b) -{ - this->m_bits[this->word(b)] &= this->mask0(b); -} - -template -inline bool dynamic_bitset::test_(size_type b) const -{ - return (this->m_bits[this->word(b)] & this->mask1(b)) != static_cast(0); -} - -template -bool dynamic_bitset::set_(size_type n, bool value) -{ - if (value) - set_(n); - else - reset_(n); - return value != static_cast(0); -} - - -// If size() is not a multiple of bits_per_block -// then not all the bits in the last block are used. -// This function resets the unused bits (convenient -// for the implementation of many member functions) -// -template -inline void dynamic_bitset::m_zero_unused_bits() -{ - assert (this->m_num_blocks == this->calc_num_blocks(this->m_num_bits)); - - // if != 0 this is the number of bits used in the last block - const size_type used_bits = this->m_num_bits % bits_per_block; - - if (used_bits != 0) - this->m_bits[this->m_num_blocks - 1] &= ~(~static_cast(0) << used_bits); - -} - - -} // namespace boost - - -#undef BOOST_WORKAROUND_REPEAT_DEFAULT_TEMPLATE_ARGUMENTS - -#endif // BOOST_DYNAMIC_BITSET_HPP - - diff --git a/sdk/include/boost/dynamic_bitset_fwd.hpp b/sdk/include/boost/dynamic_bitset_fwd.hpp deleted file mode 100644 index bd91f52c38c..00000000000 --- a/sdk/include/boost/dynamic_bitset_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright Chuck Allison and Jeremy Siek 2001, 2002. -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all -// copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any -// purpose. - -// See http://www.boost.org/libs/dynamic_bitset for documentation. - -#ifndef BOOST_DYNAMIC_BITSET_FWD_HPP -#define BOOST_DYNAMIC_BITSET_FWD_HPP - -#include - -namespace boost { - -template > -class dynamic_bitset; - -} // namespace boost - -#endif // BOOST_DYNAMIC_BITSET_FWD_HPP diff --git a/sdk/include/boost/enable_shared_from_this.hpp b/sdk/include/boost/enable_shared_from_this.hpp deleted file mode 100644 index 4dfdab6549a..00000000000 --- a/sdk/include/boost/enable_shared_from_this.hpp +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED -#define BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED - -// -// enable_shared_from_this.hpp -// -// Copyright (c) 2002 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// http://www.boost.org/libs/smart_ptr/enable_shared_from_this.html -// - -#include -#include -#include -#include - -namespace boost -{ - -template class enable_shared_from_this -{ -public: - - shared_ptr shared_from_this() - { - shared_ptr p(_internal_weak_this); - BOOST_ASSERT(p.get() == this); - return p; - } - - shared_ptr shared_from_this() const - { - shared_ptr p(_internal_weak_this); - BOOST_ASSERT(p.get() == this); - return p; - } - - typedef T _internal_element_type; // for bcc 5.5.1 - weak_ptr<_internal_element_type> _internal_weak_this; -}; - -} // namespace boost - -#endif // #ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED diff --git a/sdk/include/boost/filesystem/convenience.hpp b/sdk/include/boost/filesystem/convenience.hpp deleted file mode 100644 index 5a5f428e327..00000000000 --- a/sdk/include/boost/filesystem/convenience.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// boost/filesystem/convenience.hpp ----------------------------------------// - -// (C) Copyright Beman Dawes, 2002 -// (C) Copyright Vladimir Prus, 2002 -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - - -// See http://www.boost.org/libs/filesystem for documentation. - -//----------------------------------------------------------------------------// - -#ifndef BOOST_FILESYSTEM_CONVENIENCE_HPP -#define BOOST_FILESYSTEM_CONVENIENCE_HPP - -#include -#include - -namespace boost -{ - namespace filesystem - { - -// create_directories (contributed by Vladimir Prus) -----------------------// - - - /** Creates directory 'ph' and all necessary parent directories. - @post exists(directory_ph) && is_directory(directory_ph) && is_empty(directory_ph) - */ - void create_directories(const path& ph); - - } // namespace filesystem -} // namespace boost -#endif // BOOST_FILESYSTEM_CONVENIENCE_HPP - - diff --git a/sdk/include/boost/filesystem/exception.hpp b/sdk/include/boost/filesystem/exception.hpp deleted file mode 100644 index 8f3c9ebda3e..00000000000 --- a/sdk/include/boost/filesystem/exception.hpp +++ /dev/null @@ -1,105 +0,0 @@ -// boost/filesystem/exception.hpp ------------------------------------------// - -// < ----------------------------------------------------------------------- > -// < Copyright © 2002 Beman Dawes > -// < Copyright © 2001 Dietmar Kühl, All Rights Reserved > -// < > -// < Permission to use, copy, modify, distribute and sell this > -// < software for any purpose is hereby granted without fee, provided > -// < that the above copyright notice appears in all copies and that > -// < both that copyright notice and this permission notice appear in > -// < supporting documentation. The authors make no representations about > -// < the suitability of this software for any purpose. It is provided > -// < "as is" without express or implied warranty. > -// < ----------------------------------------------------------------------- > - -// See http://www.boost.org/libs/filesystem for documentation. - -//----------------------------------------------------------------------------// - -#ifndef BOOST_FILESYSTEM_EXCEPTION_HPP -#define BOOST_FILESYSTEM_EXCEPTION_HPP - -#include - -#include -#include - -//----------------------------------------------------------------------------// - -namespace boost -{ - namespace filesystem - { - namespace detail - { - int system_error_code(); // artifact of POSIX and WINDOWS error reporting - } - - enum error_code - { - no_error = 0, - system_error, // system generated error; if possible, is translated - // to one of the more specific errors below. - other_error, // library generated error - security_error, // includes access rights, permissions failures - read_only_error, - io_error, - path_error, - not_found_error, - not_directory_error, - busy_error, // implies trying again might succeed - already_exists_error, - not_empty_error, - is_directory_error, - out_of_space_error, - out_of_memory_error, - out_of_resource_error - }; - - - class filesystem_error : public std::runtime_error - { - public: - - filesystem_error( - const std::string & who, - const std::string & message ); // assumed to be error_code::other_error - - filesystem_error( - const std::string & who, - const path & path1, - const std::string & message ); // assumed to be error_code::other_error - - filesystem_error( - const std::string & who, - const path & path1, - int sys_err_code ); - - filesystem_error( - const std::string & who, - const path & path1, - const path & path2, - int sys_err_code ); - - ~filesystem_error() throw(); - - int native_error() const { return m_sys_err; } - // Note: a value of 0 implies a library (rather than system) error - error_code error() const { return m_err; } - const std::string & who() const; // name of who throwing exception - const path & path1() const; // argument 1 to who; may be empty() - const path & path2() const; // argument 2 to who; may be empty() - - private: - int m_sys_err; - error_code m_err; - std::string m_who; - path m_path1; - path m_path2; - }; - - } // namespace filesystem -} // namespace boost - -#endif // BOOST_FILESYSTEM_EXCEPTION_HPP diff --git a/sdk/include/boost/filesystem/fstream.hpp b/sdk/include/boost/filesystem/fstream.hpp deleted file mode 100644 index 3c9a4d280d1..00000000000 --- a/sdk/include/boost/filesystem/fstream.hpp +++ /dev/null @@ -1,124 +0,0 @@ -// boost/filesystem/fstream.hpp --------------------------------------------// - -// (C) Copyright Beman Dawes 2002. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org/libs/filesystem for documentation. - -//----------------------------------------------------------------------------// - -#ifndef BOOST_FILESYSTEM_FSTREAM_HPP -#define BOOST_FILESYSTEM_FSTREAM_HPP - -#include - -#include -#include - -namespace boost -{ - namespace filesystem - { - template < class charT, class traits = std::char_traits > - class basic_filebuf : public std::basic_filebuf - { - public: - virtual ~basic_filebuf() {} - -#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 // VC++ 6.0 can't handle this - std::basic_filebuf * open( const path & file_ph, - std::ios_base::openmode mode ) - { - return std::basic_filebuf::open( - file_ph.native_file_string().c_str(), mode ); - } -#endif - }; - - typedef basic_filebuf filebuf; -# ifndef BOOST_NO_STD_WSTRING - typedef basic_filebuf wfilebuf; -# endif - - template < class charT, class traits = std::char_traits > - class basic_ifstream : public std::basic_ifstream - { - public: - basic_ifstream() {} - explicit basic_ifstream( const path & file_ph, - std::ios_base::openmode mode = std::ios_base::in ) - : std::basic_ifstream( - file_ph.native_file_string().c_str(), mode ) {} - virtual ~basic_ifstream() {} -#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 // VC++ 6.0 can't handle this - void open( const path & file_ph, - std::ios_base::openmode mode = std::ios_base::in ) - { - std::basic_ifstream::open( - file_ph.native_file_string().c_str(), mode ); - } -#endif - }; - - typedef basic_ifstream ifstream; -# ifndef BOOST_NO_STD_WSTRING - typedef basic_ifstream wifstream; -# endif - - template < class charT, class traits = std::char_traits > - class basic_ofstream : public std::basic_ofstream - { - public: - basic_ofstream() {} - explicit basic_ofstream( const path & file_ph, - std::ios_base::openmode mode = std::ios_base::out ) - : std::basic_ofstream( - file_ph.native_file_string().c_str(), mode ) {} - virtual ~basic_ofstream() {} -#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 // VC++ 6.0 can't handle this - void open( const path & file_ph, - std::ios_base::openmode mode = std::ios_base::out ) - { - std::basic_ofstream::open( - file_ph.native_file_string().c_str(), mode ); - } -#endif - }; - - typedef basic_ofstream ofstream; -# ifndef BOOST_NO_STD_WSTRING - typedef basic_ofstream wofstream; -# endif - - template < class charT, class traits = std::char_traits > - class basic_fstream : public std::basic_fstream - { - public: - basic_fstream() {} - explicit basic_fstream( const path & file_ph, - std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out ) - : std::basic_fstream( - file_ph.native_file_string().c_str(), mode ) {} - virtual ~basic_fstream() {} -#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 // VC++ 6.0 can't handle this - void open( const path & file_ph, - std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out ) - { - std::basic_fstream::open( - file_ph.native_file_string().c_str(), mode ); - } -#endif - }; - - typedef basic_fstream fstream; -# ifndef BOOST_NO_STD_WSTRING - typedef basic_fstream wfstream; -# endif - } // namespace filesystem - -} // namespace boost - -#endif // BOOST_FILESYSTEM_FSTREAM_HPP - diff --git a/sdk/include/boost/filesystem/operations.hpp b/sdk/include/boost/filesystem/operations.hpp deleted file mode 100644 index b5c38b93604..00000000000 --- a/sdk/include/boost/filesystem/operations.hpp +++ /dev/null @@ -1,121 +0,0 @@ -// boost/filesystem/directory.hpp ------------------------------------------// - -// < ----------------------------------------------------------------------- > -// < Copyright © 2002 Beman Dawes. > -// < Copyright © 2002 Jan Langer. > -// < Copyright © 2001 Dietmar Kühl, All Rights Reserved > -// < > -// < Permission to use, copy, modify, distribute and sell this > -// < software for any purpose is hereby granted without fee, provided > -// < that the above copyright notice appears in all copies and that > -// < both that copyright notice and this permission notice appear in > -// < supporting documentation. The authors make no representations about > -// < the suitability of this software for any purpose. It is provided > -// < "as is" without express or implied warranty. > -// < ----------------------------------------------------------------------- > - -// See http://www.boost.org/libs/filesystem for documentation. - -//----------------------------------------------------------------------------// - -#ifndef BOOST_FILESYSTEM_DIRECTORY_HPP -#define BOOST_FILESYSTEM_DIRECTORY_HPP - -#include -#include -#include -#include - -#include - -//----------------------------------------------------------------------------// - -namespace boost -{ - namespace filesystem - { - -// query functions ---------------------------------------------------------// - - bool exists( const path & ph ); - - bool is_directory( const path & ph ); - - // VC++ 7.0 and earlier has a serious namespace bug that causes a clash - // between boost::filesystem::is_empty and the unrelated type trait - // boost::is_empty. The workaround for those who must use broken versions - // of VC++ is to use the function _is_empty. All others should use the - // correct is_empty name. - bool _is_empty( const path & ph ); // deprecated - -# if !defined( BOOST_MSVC ) || BOOST_MSVC > 1300 - inline bool is_empty( const path & ph ) { return _is_empty( ph ); } -# endif - -// operations --------------------------------------------------------------// - - void create_directory( const path & directory_ph ); - - bool remove( const path & ph ); - unsigned long remove_all( const path & ph ); - - void rename( const path & from_path, - const path & to_path ); - - void copy_file( const path & from_file_ph, - const path & to_file_ph ); - - path current_path(); - const path & initial_path(); - - path system_complete( const path & ph ); - path complete( const path & ph, const path & base = initial_path() ); - -// directory_iterator ------------------------------------------------------// - - class directory_iterator - : public boost::iterator< std::input_iterator_tag, - path, std::ptrdiff_t, const path *, const path & > - { - private: - typedef directory_iterator self; - public: - directory_iterator(); // creates the "end" iterator - explicit directory_iterator( const path & p ); - - reference operator*() const { return m_deref(); } - pointer operator->() const { return &m_deref(); } - self & operator++() { m_inc(); return *this; } - - friend bool operator==( const self & x, const self & y ) - { return x.m_imp == y.m_imp; } - friend bool operator!=( const self & x, const self & y ) - { return !(x.m_imp == y.m_imp); } - - struct path_proxy // allows *i++ to work, as required by std - { - path pv; - explicit path_proxy( const path & p ) : pv(p) {} - path operator*() const { return pv; } - }; - - path_proxy operator++(int) - { - path_proxy pp( m_deref() ); - ++*this; - return pp; - } - - private: - class dir_itr_imp; - // shared_ptr provides shallow-copy semantics required for InputIterators - typedef boost::shared_ptr< dir_itr_imp > m_imp_ptr; - m_imp_ptr m_imp; - reference m_deref() const; - void m_inc(); - }; - - } // namespace filesystem -} // namespace boost - -#endif // BOOST_FILESYSTEM_DIRECTORY_HPP diff --git a/sdk/include/boost/filesystem/path.hpp b/sdk/include/boost/filesystem/path.hpp deleted file mode 100644 index 42e41d540a0..00000000000 --- a/sdk/include/boost/filesystem/path.hpp +++ /dev/null @@ -1,213 +0,0 @@ -// boost/filesystem/path.hpp -----------------------------------------------// - -// (C) Copyright Beman Dawes 2002. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - - -// See http://www.boost.org/libs/filesystem for documentation. - -//----------------------------------------------------------------------------// - -#ifndef BOOST_FILESYSTEM_PATH_HPP -#define BOOST_FILESYSTEM_PATH_HPP - -#include -#include -#include - -//----------------------------------------------------------------------------// - -namespace boost -{ - namespace filesystem - { - class path; - - namespace detail - { - struct path_itr_imp - { - std::string name; // cache current element. - const path * path_ptr; // path being iterated over. - std::string::size_type pos; // position of name in - // path_ptr->string(). The - // end() iterator is indicated by - // pos == path_ptr->string().size() - - const std::string & operator*() const { return name; } - void operator++(); - void operator--(); - bool operator==( const path_itr_imp & rhs ) const - { return path_ptr == rhs.path_ptr && pos == rhs.pos; } - }; - } // detail - - enum path_format { native }; // ugly enough to discourage use - // except when actually needed - - // path -------------------------------------------------------------------// - - class path - { - public: - // compiler generates copy constructor, copy assignment, and destructor - - path(){} - - path( const std::string & src ); - path( const char * src ); - - path( const std::string & src, path_format ); - path( const char * src, path_format ); - - // append operations: - path & operator /=( const path & rhs ); - path operator /( const path & rhs ) const - { return path( *this ) /= rhs; } - - // conversion functions: - const std::string & string() const { return m_path; } - std::string native_file_string() const; - std::string native_directory_string() const; - - // decomposition functions: - path root_path() const; - std::string root_name() const; - std::string root_directory() const; - path relative_path() const; - std::string leaf() const; - path branch_path() const; - - // query functions: - bool empty() const { return m_path.empty(); } // name consistent with std containers - - bool is_complete() const; - - bool has_root_path() const; - bool has_root_name() const; - bool has_root_directory() const; - bool has_relative_path() const; - bool has_leaf() const { return !m_path.empty(); } - bool has_branch_path() const; - - // iteration over the names in the path: - typedef boost::iterator_adaptor< - detail::path_itr_imp, - boost::default_iterator_policies, - std::string, - const std::string &, - const std::string *, - std::bidirectional_iterator_tag, - std::ptrdiff_t - > iterator; - - iterator begin() const; - iterator end() const - { - iterator itr; - itr.base().path_ptr = this; - itr.base().pos = m_path.size(); - return itr; - } - - private: - // Note: This is an implementation for POSIX and Windows, where there - // are only minor differences between generic and system-specific - // constructor input formats. Private members might be quite different - // in other implementations, particularly where there were wide - // differences between generic and system-specific argument formats, - // or between native_file_string() and native_directory_string() formats. - - std::string m_path; - - friend class directory_iterator; - friend struct boost::filesystem::detail::path_itr_imp; - - enum source_context { generic, platform, nocheck }; - - void m_path_append( const std::string & src, - source_context context = generic ); - - public: // should be private, but friend functions don't work for me - void m_replace_leaf( const char * new_leaf ); - }; - - // path non-member functions ---------------------------------------------// - - inline path operator / ( const char * lhs, const path & rhs ) - { return path( lhs ) /= rhs; } - - inline path operator / ( const std::string & lhs, const path & rhs ) - { return path( lhs ) /= rhs; } - - // error checking --------------------------------------------------------// - -// TODO: write a program that probes valid file and directory names. Ask -// Boost people to report results from many operating systems. Use results -// to adjust generic_name(). - - // generic_name() is extremely permissive; its intent is not to ensure - // general portablity, but rather to detect names so trouble-prone that - // they likely represent coding errors or gross misconceptions. - // - // Any characters are allowed except: - // - // Those characters < ' ', including '\0'. These are the so-called - // control characters, in both ASCII (and its decendents) and EBCDIC. - // Hard to imagine how these could be useful in a generic path name. - // - // < > : " / \ | * ? These have special meaning to enough operating - // systems that use in a generic name would be a serious problem. - // - // The names "." and ".." are not allowed. - // An empty name (null string) is not allowed. - // Names beginning or ending with spaces are not allowed. - // - bool generic_name( const std::string & name ); - - // posix_name() is based on POSIX (IEEE Std 1003.1-2001) - // "Portable Filename Character Set" rules. - // http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap03.html - // - // That character set only allows 0-9, a-z, A-Z, '.', '_', and '-'. - // Note that such names are also portable to other popular operating - // systems, such as Windows. - // - bool posix_name( const std::string & name ); - - const path & check_posix_leaf( const path & ph ); - // Throws: if !posix_name( ph.leaf() ) - // Returns: ph - // Note: Although useful in its own right, check_posix_leaf() also serves - // as an example. A user might provide similar functions; behavior might - // be to assert or warn rather than throw. A user provided function - // could also check the entire path instead of just the leaf; a leaf - // check is often, but not always, the required behavior. - // Rationale: For the "const path &" rather than "void" return is to - // allow (and encourage portability checking) uses like: - // create_directory( check_posix_leaf( "foo" ) ); - // While there is some chance of misuse (by passing through a reference - // to a temporary), the benefits outweigh the costs. - - // For Boost, we often tighten name restrictions for maximum portability: - // - // * The portable POSIX character restrictions, plus - // * Maximum name length 31 characters (for Classic Mac OS). - // * Lowercase only (so code written on case-insensitive platforms like - // Windows works properly when used on case-sensitive systems like - // POSIX. - // * Directory names do not contain '.', as this is not a valid character - // for directory names on some systems. - // - // TODO: provide some check_boost_xxx functions once error handling - // approach ratified. - - bool boost_file_name( const std::string & name ); - bool boost_directory_name( const std::string & name ); - - } // namespace filesystem -} // namespace boost - -#endif // BOOST_FILESYSTEM_PATH_HPP diff --git a/sdk/include/boost/format.hpp b/sdk/include/boost/format.hpp deleted file mode 100644 index 0cd5023fbda..00000000000 --- a/sdk/include/boost/format.hpp +++ /dev/null @@ -1,101 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream - -// ---------------------------------------------------------------------------- -// format.hpp : primary header -// ---------------------------------------------------------------------------- - -#ifndef BOOST_FORMAT_HPP -#define BOOST_FORMAT_HPP - -#include -#include -#include -#include -#include - -#ifndef BOOST_NO_STD_LOCALE -#include -#endif - - -// make sure our local macros wont override something : -#if defined(BOOST_NO_LOCALE_ISDIGIT) || defined(BOOST_OVERLOAD_FOR_NON_CONST) \ - || defined(BOOST_IO_STD) || defined( BOOST_IO_NEEDS_USING_DECLARATION ) -#error "a local macro would overwrite a previously defined macro" -#endif - - -#include // stlport workarounds -#include - -#if defined(BOOST_NO_STD_LOCALE) || \ - ( BOOST_WORKAROUND(__BORLANDC__, <= 0x564) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x570 ) ) ) -// some future __BORLANDC__ >0x564 versions might not need this -// 0x570 is Borland's kylix branch -#define BOOST_NO_LOCALE_ISIDIGIT -#endif - -#ifdef BOOST_NO_LOCALE_ISIDIGIT -#include // we'll use the non-locale 's std::isdigit(int) -#endif - - -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) ) || BOOST_WORKAROUND( BOOST_MSVC, BOOST_TESTED_AT(1300)) -#define BOOST_NO_OVERLOAD_FOR_NON_CONST -#endif - - -// **** Forward declarations ---------------------------------- -#include // basic_format, and other frontends -#include // misc forward declarations for internal use - - -// **** Auxiliary structs (stream_format_state , and format_item ) -#include - -// **** Format class interface -------------------------------- -#include - -// **** Exceptions ----------------------------------------------- -#include - -// **** Implementation ------------------------------------------- -#include // member functions - -#include // class for grouping arguments - -#include // argument-feeding functions -#include // format-string parsing (member-)functions - -// **** Implementation of the free functions ---------------------- -#include - - -// *** Undefine 'local' macros : -#ifdef BOOST_NO_OVERLOAD_FOR_NON_CONST -#undef BOOST_NO_OVERLOAD_FOR_NON_CONST -#endif -#ifdef BOOST_NO_LOCALE_ISIDIGIT -#undef BOOST_NO_LOCALE_ISIDIGIT -#endif -#ifdef BOOST_IO_STD -#undef BOOST_IO_STD -#endif -#ifdef BOOST_IO_NEEDS_USING_DECLARATION -#undef BOOST_IO_NEEDS_USING_DECLARATION -#endif - -#endif // BOOST_FORMAT_HPP diff --git a/sdk/include/boost/format/exceptions.hpp b/sdk/include/boost/format/exceptions.hpp deleted file mode 100644 index 79e452449ef..00000000000 --- a/sdk/include/boost/format/exceptions.hpp +++ /dev/null @@ -1,96 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) - -// ------------------------------------------------------------------------------ -// exceptions.hpp -// ------------------------------------------------------------------------------ - - -#ifndef BOOST_FORMAT_EXCEPTIONS_HPP -#define BOOST_FORMAT_EXCEPTIONS_HPP - - -#include - - -namespace boost { - -namespace io { - -// **** exceptions ----------------------------------------------- - -class format_error : public std::exception -{ -public: - format_error() {} - virtual const char *what() const throw() - { - return "boost::format_error: " - "format generic failure"; - } -}; - -class bad_format_string : public format_error -{ -public: - bad_format_string() {} - virtual const char *what() const throw() - { - return "boost::bad_format_string: " - "format-string is ill-formed"; - } -}; - -class too_few_args : public format_error -{ -public: - too_few_args() {} - virtual const char *what() const throw() - { - return "boost::too_few_args: " - "format-string refered to more arguments than were passed"; - } -}; - -class too_many_args : public format_error -{ -public: - too_many_args() {} - virtual const char *what() const throw() - { - return "boost::too_many_args: " - "format-string refered to less arguments than were passed"; - } -}; - - -class out_of_range : public format_error -{ -public: - out_of_range() {} - virtual const char *what() const throw() - { - return "boost::out_of_range: " - "tried to refer to an argument (or item) number which is out of range, " - "according to the format string."; - } -}; - - -} // namespace io - -} // namespace boost - - -#endif // BOOST_FORMAT_EXCEPTIONS_HPP diff --git a/sdk/include/boost/format/feed_args.hpp b/sdk/include/boost/format/feed_args.hpp deleted file mode 100644 index f392d7fc529..00000000000 --- a/sdk/include/boost/format/feed_args.hpp +++ /dev/null @@ -1,265 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream - -// ---------------------------------------------------------------------------- -// feed_args.hpp : functions for processing each argument -// (feed, feed_manip, and distribute) -// ---------------------------------------------------------------------------- - - -#ifndef BOOST_FORMAT_FEED_ARGS_HPP -#define BOOST_FORMAT_FEED_ARGS_HPP - -#include "boost/format/format_class.hpp" -#include "boost/format/group.hpp" - -#include "boost/format/msvc_disambiguater.hpp" -#include "boost/throw_exception.hpp" - -namespace boost { -namespace io { -namespace detail { -namespace { - - template inline - void empty_buf(BOOST_IO_STD basic_ostringstream & os) { - static const std::basic_string emptyStr; - os.str(emptyStr); - } - - template - void do_pad( std::basic_string & s, - std::streamsize w, - const Ch c, - std::ios_base::fmtflags f, - bool center) - // applies centered / left / right padding to the string s. - // Effects : string s is padded. - { - std::streamsize n=w-s.size(); - if(n<=0) { - return; - } - if(center) - { - s.reserve(w); // allocate once for the 2 inserts - const std::streamsize n1 = n /2, n0 = n - n1; - s.insert(s.begin(), n0, c); - s.append(n1, c); - } - else - { - if(f & std::ios_base::left) { - s.append(n, c); - } - else { - s.insert(s.begin(), n, c); - } - } - } // -do_pad(..) - - -#if BOOST_WORKAROUND( BOOST_MSVC, BOOST_TESTED_AT(1300)) -// MSVC needs to be tricked to disambiguate this simple overload.. -// the trick is in "boost/format/msvc_disambiguater.hpp" - - template< class Ch, class Tr, class T> inline - void put_head( BOOST_IO_STD basic_ostream& os, const T& x ) { - disambiguater::put_head(os, x, 1L); - } - template< class Ch, class Tr, class T> inline - void put_last( BOOST_IO_STD basic_ostream& os, const T& x ) { - disambiguater::put_last(os, x, 1L); - } - -#else - - template< class Ch, class Tr, class T> inline - void put_head(BOOST_IO_STD basic_ostream& , const T& ) { - } - - template< class Ch, class Tr, class T> inline - void put_head( BOOST_IO_STD basic_ostream& os, const group1& x ) { - os << group_head(x.a1_); // send the first N-1 items, not the last - } - - template< class Ch, class Tr, class T> inline - void put_last( BOOST_IO_STD basic_ostream& os, const T& x ) { - os << x ; - } - - template< class Ch, class Tr, class T> inline - void put_last( BOOST_IO_STD basic_ostream& os, const group1& x ) { - os << group_last(x.a1_); // this selects the last element - } - -#ifndef BOOST_NO_OVERLOAD_FOR_NON_CONST - template< class Ch, class Tr, class T> inline - void put_head( BOOST_IO_STD basic_ostream& , T& ) { - } - - template< class Ch, class Tr, class T> inline - void put_last( BOOST_IO_STD basic_ostream& os, T& x ) { - os << x ; - } -#endif -#endif // -msvc workaround - - - - -template< class Ch, class Tr, class T> -void put( T x, - const format_item& specs, - std::basic_string & res, - BOOST_IO_STD basic_ostringstream& oss_ ) -{ - // does the actual conversion of x, with given params, into a string - // using the *supplied* strinstream. (the stream state is important) - - typedef std::basic_string string_t; - typedef format_item format_item_t; - - stream_format_state prev_state(oss_); - - specs.state_.apply_on(oss_); - - // in case x is a group, apply the manip part of it, - // in order to find width - put_head( oss_, x ); - empty_buf( oss_); - - const std::streamsize w=oss_.width(); - const std::ios_base::fmtflags fl=oss_.flags(); - const bool internal = (fl & std::ios_base::internal) != 0; - const bool two_stepped_padding = internal - && ! ( specs.pad_scheme_ & format_item_t::spacepad ) - && specs.truncate_ < 0 ; - - - if(! two_stepped_padding) - { - if(w>0) // handle simple padding via do_pad, not natively in stream - oss_.width(0); - put_last( oss_, x); - res = oss_.str(); - - if (specs.truncate_ >= 0) - res.erase(specs.truncate_); - - // complex pads : - if(specs.pad_scheme_ & format_item_t::spacepad) - { - if( res.size()==0 || ( res[0]!='+' && res[0]!='-' )) - { - res.insert(res.begin(), 1, ' '); // insert 1 space at pos 0 - } - } - if(w > 0) // need do_pad - { - do_pad(res,w,oss_.fill(), fl, (specs.pad_scheme_ & format_item_t::centered) !=0 ); - } - } - else // 2-stepped padding - { - put_last( oss_, x); // oss_.width() may result in padding. - res = oss_.str(); - - if (specs.truncate_ >= 0) - res.erase(specs.truncate_); - - if( res.size() - w > 0) - { // length w exceeded - // either it was multi-output with first output padding up all width.. - // either it was one big arg and we are fine. - empty_buf( oss_); - oss_.width(0); - put_last(oss_, x ); - string_t tmp = oss_.str(); // minimal-length output - std::streamsize d; - if( (d=w - tmp.size()) <=0 ) - { - // minimal length is already >= w, so no padding (cool!) - res.swap(tmp); - } - else - { // hum.. we need to pad (it was necessarily multi-output) - typedef typename string_t::size_type size_type; - size_type i = 0; - while( i( d ), oss_.fill()); - res.swap( tmp ); - } - } - else - { // okay, only one thing was printed and padded, so res is fine. - } - } - - prev_state.apply_on(oss_); - empty_buf( oss_); - oss_.clear(); -} // end- put(..) - - -} // local namespace - - - - - -template< class Ch, class Tr, class T> -void distribute(basic_format& self, T x) - // call put(x, ..) on every occurence of the current argument : -{ - if(self.cur_arg_ >= self.num_args_) - { - if( self.exceptions() & too_many_args_bit ) - boost::throw_exception(too_many_args()); // too many variables have been supplied ! - else return; - } - for(unsigned long i=0; i < self.items_.size(); ++i) - { - if(self.items_[i].argN_ == self.cur_arg_) - { - put (x, self.items_[i], self.items_[i].res_, self.oss_ ); - } - } -} - -template -basic_format& feed(basic_format& self, T x) -{ - if(self.dumped_) self.clear(); - distribute (self, x); - ++self.cur_arg_; - if(self.bound_.size() != 0) - { - while( self.cur_arg_ < self.num_args_ && self.bound_[self.cur_arg_] ) - ++self.cur_arg_; - } - - // this arg is finished, reset the stream's format state - self.state0_.apply_on(self.oss_); - return self; -} - - -} // namespace detail -} // namespace io -} // namespace boost - - -#endif // BOOST_FORMAT_FEED_ARGS_HPP diff --git a/sdk/include/boost/format/format_class.hpp b/sdk/include/boost/format/format_class.hpp deleted file mode 100644 index 1e238e8f091..00000000000 --- a/sdk/include/boost/format/format_class.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) - -// ------------------------------------------------------------------------------ -// format_class.hpp : class interface -// ------------------------------------------------------------------------------ - - -#ifndef BOOST_FORMAT_CLASS_HPP -#define BOOST_FORMAT_CLASS_HPP - -#include -#include - -#include -#include - -#include - -namespace boost { - -template -class basic_format -{ -public: - typedef Ch CharT; // those 2 are necessary for borland compatibilty, - typedef Tr Traits; // in the body of the operator% template. - - - typedef std::basic_string string_t; - typedef BOOST_IO_STD basic_ostringstream internal_stream_t; -private: - typedef BOOST_IO_STD basic_ostream stream_t; - typedef io::detail::stream_format_state stream_format_state; - typedef io::detail::format_item format_item_t; - -public: - basic_format(const Ch* str); - basic_format(const string_t& s); -#ifndef BOOST_NO_STD_LOCALE - basic_format(const Ch* str, const std::locale & loc); - basic_format(const string_t& s, const std::locale & loc); -#endif // no locale - basic_format(const basic_format& x); - basic_format& operator= (const basic_format& x); - - basic_format& clear(); // empty the string buffers (except bound arguments, see clear_binds() ) - - // pass arguments through those operators : - template basic_format& operator%(const T& x) - { - return io::detail::feed(*this,x); - } - -#ifndef BOOST_NO_OVERLOAD_FOR_NON_CONST - template basic_format& operator%(T& x) - { - return io::detail::feed(*this,x); - } -#endif - - - // system for binding arguments : - template - basic_format& bind_arg(int argN, const T& val) - { - return io::detail::bind_arg_body(*this, argN, val); - } - basic_format& clear_bind(int argN); - basic_format& clear_binds(); - - // modify the params of a directive, by applying a manipulator : - template - basic_format& modify_item(int itemN, const T& manipulator) - { - return io::detail::modify_item_body(*this, itemN, manipulator) ; - } - - // Choosing which errors will throw exceptions : - unsigned char exceptions() const; - unsigned char exceptions(unsigned char newexcept); - - // final output - string_t str() const; - friend BOOST_IO_STD basic_ostream& -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1300) \ - && BOOST_WORKAROUND( BOOST_MSVC, BOOST_TESTED_AT( 1300) ) - operator<< ( BOOST_IO_STD basic_ostream& , const basic_format& ); -#else - operator<< ( BOOST_IO_STD basic_ostream& , const basic_format& ); -#endif - - -#if !defined( BOOST_NO_MEMBER_TEMPLATE_FRIENDS ) && ! BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) ) && !BOOST_WORKAROUND( _CRAYC, != 0) - - template friend basic_format& - io::detail::feed(basic_format&, T); - - template friend - void io::detail::distribute(basic_format&, T); - - template friend - basic_format& io::detail::modify_item_body(basic_format&, int, const T&); - - template friend - basic_format& io::detail::bind_arg_body(basic_format&, int, const T&); - -// make the members private only if the friend templates are supported -private: -#endif - - // flag bits, used for style_ - enum style_values { ordered = 1, // set only if all directives are positional directives - special_needs = 4 }; - - // parse the format string : - void parse(const string_t&); - - int style_; // style of format-string : positional or not, etc - int cur_arg_; // keep track of wich argument will come - int num_args_; // number of expected arguments - mutable bool dumped_; // true only after call to str() or << - std::vector items_; // vector of directives (aka items) - string_t prefix_; // piece of string to insert before first item - - std::vector bound_; // stores which arguments were bound - // size = num_args OR zero - internal_stream_t oss_; // the internal stream. - stream_format_state state0_; // reference state for oss_ - unsigned char exceptions_; -}; // class basic_format - - -} // namespace boost - - -#endif // BOOST_FORMAT_CLASS_HPP diff --git a/sdk/include/boost/format/format_fwd.hpp b/sdk/include/boost/format/format_fwd.hpp deleted file mode 100644 index 85ee1e678f1..00000000000 --- a/sdk/include/boost/format/format_fwd.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) - -// ------------------------------------------------------------------------------ -// format_fwd.hpp : forward declarations, for primary header format.hpp -// ------------------------------------------------------------------------------ - -#ifndef BOOST_FORMAT_FWD_HPP -#define BOOST_FORMAT_FWD_HPP - -#include -#include - -#include - -namespace boost { - -template > class basic_format; - -typedef basic_format format; - -#if !defined(BOOST_NO_STD_WSTRING) && !defined(BOOST_NO_STD_WSTREAMBUF) -typedef basic_format wformat; -#endif - -namespace io { -enum format_error_bits { bad_format_string_bit = 1, - too_few_args_bit = 2, too_many_args_bit = 4, - out_of_range_bit = 8, - all_error_bits = 255, no_error_bits=0 }; - -// Convertion: format to string -template -std::basic_string str(const basic_format& ) ; - -} // namespace io - - -template< class Ch, class Tr> -BOOST_IO_STD basic_ostream& -operator<<( BOOST_IO_STD basic_ostream&, const basic_format&); - - -} // namespace boost - -#endif // BOOST_FORMAT_FWD_HPP diff --git a/sdk/include/boost/format/format_implementation.hpp b/sdk/include/boost/format/format_implementation.hpp deleted file mode 100644 index a41113a9400..00000000000 --- a/sdk/include/boost/format/format_implementation.hpp +++ /dev/null @@ -1,268 +0,0 @@ -// -*- C++ -*- -// Boost general library format --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream - -// ---------------------------------------------------------------------------- -// format_implementation.hpp Implementation of the basic_format class -// ---------------------------------------------------------------------------- - - -#ifndef BOOST_FORMAT_IMPLEMENTATION_HPP -#define BOOST_FORMAT_IMPLEMENTATION_HPP - -#include -#include -#include - -namespace boost { - -// -------- format:: ------------------------------------------- -template< class Ch, class Tr> -basic_format ::basic_format(const Ch* str) - : style_(0), cur_arg_(0), num_args_(0), dumped_(false), - items_(), oss_(), exceptions_(io::all_error_bits) -{ - state0_.set_by_stream(oss_); - string_t emptyStr; - if( !str) str = emptyStr.c_str(); - parse( str ); -} - -#ifndef BOOST_NO_STD_LOCALE -template< class Ch, class Tr> -basic_format ::basic_format(const Ch* str, const std::locale & loc) - : style_(0), cur_arg_(0), num_args_(0), dumped_(false), - items_(), oss_(), exceptions_(io::all_error_bits) -{ - oss_.imbue( loc ); - state0_.set_by_stream(oss_); - string_t emptyStr; - if( !str) str = emptyStr.c_str(); - parse( str ); -} - -template< class Ch, class Tr> -basic_format ::basic_format(const string_t& s, const std::locale & loc) - : style_(0), cur_arg_(0), num_args_(0), dumped_(false), - items_(), oss_(), exceptions_(io::all_error_bits) -{ - oss_.imbue( loc ); - state0_.set_by_stream(oss_); - parse(s); -} -#endif //BOOST_NO_STD_LOCALE - -template< class Ch, class Tr> -basic_format ::basic_format(const string_t& s) - : style_(0), cur_arg_(0), num_args_(0), dumped_(false), - items_(), oss_(), exceptions_(io::all_error_bits) -{ - state0_.set_by_stream(oss_); - parse(s); -} - -template< class Ch, class Tr> -basic_format :: basic_format(const basic_format& x) - : style_(x.style_), cur_arg_(x.cur_arg_), num_args_(x.num_args_), dumped_(false), - items_(x.items_), prefix_(x.prefix_), bound_(x.bound_), - oss_(), // <- we obviously can't copy x.oss_ - state0_(x.state0_), exceptions_(x.exceptions_) -{ - state0_.apply_on(oss_); -} - -template< class Ch, class Tr> -basic_format& basic_format ::operator= (const basic_format& x) -{ - if(this == &x) - return *this; - state0_ = x.state0_; - state0_.apply_on(oss_); - - // plus all the other (trivial) assignments : - exceptions_ = x.exceptions_; - items_ = x.items_; - prefix_ = x.prefix_; - bound_=x.bound_; - style_=x.style_; - cur_arg_=x.cur_arg_; - num_args_=x.num_args_; - dumped_=x.dumped_; - return *this; -} - - -template< class Ch, class Tr> -unsigned char basic_format ::exceptions() const -{ - return exceptions_; -} - -template< class Ch, class Tr> -unsigned char basic_format ::exceptions(unsigned char newexcept) -{ - unsigned char swp = exceptions_; - exceptions_ = newexcept; - return swp; -} - - -template< class Ch, class Tr> -basic_format& basic_format ::clear() - // empty the string buffers (except bound arguments, see clear_binds() ) - // and make the format object ready for formatting a new set of arguments -{ - BOOST_ASSERT( bound_.size()==0 || num_args_ == static_cast(bound_.size()) ); - - for(unsigned long i=0; i -basic_format& basic_format ::clear_binds() - // cancel all bindings, and clear() -{ - bound_.resize(0); - clear(); - return *this; -} - -template< class Ch, class Tr> -basic_format& basic_format ::clear_bind(int argN) - // cancel the binding of ONE argument, and clear() -{ - if(argN<1 || argN > num_args_ || bound_.size()==0 || !bound_[argN-1] ) - { - if( exceptions() & io::out_of_range_bit ) - boost::throw_exception(io::out_of_range()); // arg not in range. - else return *this; - } - bound_[argN-1]=false; - clear(); - return *this; -} - - - -template< class Ch, class Tr> -std::basic_string basic_format ::str() const -{ - dumped_=true; - if(items_.size()==0) - return prefix_; - if( cur_arg_ < num_args_) - if( exceptions() & io::too_few_args_bit ) - boost::throw_exception(io::too_few_args()); // not enough variables have been supplied ! - - unsigned long sz = prefix_.size(); - unsigned long i; - for(i=0; i < items_.size(); ++i) - sz += items_[i].res_.size() + items_[i].appendix_.size(); - string_t res; - res.reserve(sz); - - res += prefix_; - for(i=0; i < items_.size(); ++i) - { - const format_item_t& item = items_[i]; - res += item.res_; - if( item.argN_ == format_item_t::argN_tabulation) - { - BOOST_ASSERT( item.pad_scheme_ & format_item_t::tabulation); - std::streamsize n = item.state_.width_ - res.size(); - if( n > 0 ) - res.append( n, item.state_.fill_ ); - } - res += item.appendix_; - } - return res; -} - -namespace io { -namespace detail { - -template -basic_format& bind_arg_body( basic_format& self, - int argN, - const T& val) - // bind one argument to a fixed value - // this is persistent over clear() calls, thus also over str() and << -{ - if(self.dumped_) self.clear(); // needed, because we will modify cur_arg_.. - if(argN<1 || argN > self.num_args_) - { - if( self.exceptions() & io::out_of_range_bit ) - boost::throw_exception(io::out_of_range()); // arg not in range. - else return self; - } - if(self.bound_.size()==0) - self.bound_.assign(self.num_args_,false); - else - BOOST_ASSERT( self.num_args_ == static_cast(self.bound_.size()) ); - int o_cur_arg = self.cur_arg_; - self.cur_arg_ = argN-1; // arrays begin at 0 - - self.bound_[self.cur_arg_]=false; // if already set, we unset and re-sets.. - self.operator%(val); // put val at the right place, because cur_arg is set - - - // Now re-position cur_arg before leaving : - self.cur_arg_ = o_cur_arg; - self.bound_[argN-1]=true; - if(self.cur_arg_ == argN-1 ) - // hum, now this arg is bound, so move to next free arg - { - while(self.cur_arg_ < self.num_args_ && self.bound_[self.cur_arg_]) ++self.cur_arg_; - } - // In any case, we either have all args, or are on a non-binded arg : - BOOST_ASSERT( self.cur_arg_ >= self.num_args_ || ! self.bound_[self.cur_arg_]); - return self; -} - -template -basic_format& modify_item_body( basic_format& self, - int itemN, - const T& manipulator) - // applies a manipulator to the format_item describing a given directive. - // this is a permanent change, clear or clear_binds won't cancel that. -{ - if(itemN<1 || itemN >= static_cast(self.items_.size() )) - { - if( self.exceptions() & io::out_of_range_bit ) - boost::throw_exception(io::out_of_range()); // item not in range. - else return self; - } - self.items_[itemN-1].ref_state_.apply_manip( manipulator ); - self.items_[itemN-1].state_ = self.items_[itemN-1].ref_state_; - return self; -} - -} // namespace detail - -} // namespace io - -} // namespace boost - - - -#endif // BOOST_FORMAT_IMPLEMENTATION_HPP diff --git a/sdk/include/boost/format/free_funcs.hpp b/sdk/include/boost/format/free_funcs.hpp deleted file mode 100644 index 95bbcc1b1ac..00000000000 --- a/sdk/include/boost/format/free_funcs.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) - -// ------------------------------------------------------------------------------ -// free_funcs.hpp : implementation of the free functions declared in namespace format -// ------------------------------------------------------------------------------ - -#ifndef BOOST_FORMAT_FUNCS_HPP -#define BOOST_FORMAT_FUNCS_HPP - -#include "boost/format/format_class.hpp" -#include "boost/throw_exception.hpp" - -namespace boost { - -namespace io { - template inline - std::basic_string str(const basic_format& f) - // adds up all pieces of strings and converted items, and return the formatted string - { - return f.str(); - } -} // - namespace io - -template< class Ch, class Tr> -BOOST_IO_STD basic_ostream& -operator<<( BOOST_IO_STD basic_ostream& os, - const boost::basic_format& f) - // effect: "return os << str(f);" but we can try to do it faster -{ - typedef boost::basic_format format_t; - if(f.items_.size()==0) - os << f.prefix_; - else { - if(f.cur_arg_ < f.num_args_) - if( f.exceptions() & io::too_few_args_bit ) - boost::throw_exception(io::too_few_args()); // not enough variables have been supplied ! - if(f.style_ & format_t::special_needs) - os << f.str(); - else { - // else we dont have to count chars output, so we dump directly to os : - os << f.prefix_; - for(unsigned long i=0; i -inline -BOOST_IO_STD basic_ostream& -operator << ( BOOST_IO_STD basic_ostream& os, - const group0& ) -{ - return os; -} - -template -struct group1 -{ - T1 a1_; - group1(T1 a1) - : a1_(a1) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group1& x) -{ - os << x.a1_; - return os; -} - - - - -template -struct group2 -{ - T1 a1_; - T2 a2_; - group2(T1 a1,T2 a2) - : a1_(a1),a2_(a2) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group2& x) -{ - os << x.a1_<< x.a2_; - return os; -} - -template -struct group3 -{ - T1 a1_; - T2 a2_; - T3 a3_; - group3(T1 a1,T2 a2,T3 a3) - : a1_(a1),a2_(a2),a3_(a3) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group3& x) -{ - os << x.a1_<< x.a2_<< x.a3_; - return os; -} - -template -struct group4 -{ - T1 a1_; - T2 a2_; - T3 a3_; - T4 a4_; - group4(T1 a1,T2 a2,T3 a3,T4 a4) - : a1_(a1),a2_(a2),a3_(a3),a4_(a4) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group4& x) -{ - os << x.a1_<< x.a2_<< x.a3_<< x.a4_; - return os; -} - -template -struct group5 -{ - T1 a1_; - T2 a2_; - T3 a3_; - T4 a4_; - T5 a5_; - group5(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) - : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group5& x) -{ - os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_; - return os; -} - -template -struct group6 -{ - T1 a1_; - T2 a2_; - T3 a3_; - T4 a4_; - T5 a5_; - T6 a6_; - group6(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6) - : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group6& x) -{ - os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_; - return os; -} - -template -struct group7 -{ - T1 a1_; - T2 a2_; - T3 a3_; - T4 a4_; - T5 a5_; - T6 a6_; - T7 a7_; - group7(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7) - : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group7& x) -{ - os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_; - return os; -} - -template -struct group8 -{ - T1 a1_; - T2 a2_; - T3 a3_; - T4 a4_; - T5 a5_; - T6 a6_; - T7 a7_; - T8 a8_; - group8(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) - : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group8& x) -{ - os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_; - return os; -} - -template -struct group9 -{ - T1 a1_; - T2 a2_; - T3 a3_; - T4 a4_; - T5 a5_; - T6 a6_; - T7 a7_; - T8 a8_; - T9 a9_; - group9(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9) - : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8),a9_(a9) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group9& x) -{ - os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_<< x.a9_; - return os; -} - -template -struct group10 -{ - T1 a1_; - T2 a2_; - T3 a3_; - T4 a4_; - T5 a5_; - T6 a6_; - T7 a7_; - T8 a8_; - T9 a9_; - T10 a10_; - group10(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9,T10 a10) - : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8),a9_(a9),a10_(a10) - {} -}; - -template -inline -BOOST_IO_STD basic_ostream& -operator << (BOOST_IO_STD basic_ostream& os, - const group10& x) -{ - os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_<< x.a9_<< x.a10_; - return os; -} - - - - -template -inline -group1 -group_head( group2 const& x) -{ - return group1 (x.a1_); -} - -template -inline -group1 -group_last( group2 const& x) -{ - return group1 (x.a2_); -} - - - -template -inline -group2 -group_head( group3 const& x) -{ - return group2 (x.a1_,x.a2_); -} - -template -inline -group1 -group_last( group3 const& x) -{ - return group1 (x.a3_); -} - - - -template -inline -group3 -group_head( group4 const& x) -{ - return group3 (x.a1_,x.a2_,x.a3_); -} - -template -inline -group1 -group_last( group4 const& x) -{ - return group1 (x.a4_); -} - - - -template -inline -group4 -group_head( group5 const& x) -{ - return group4 (x.a1_,x.a2_,x.a3_,x.a4_); -} - -template -inline -group1 -group_last( group5 const& x) -{ - return group1 (x.a5_); -} - - - -template -inline -group5 -group_head( group6 const& x) -{ - return group5 (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_); -} - -template -inline -group1 -group_last( group6 const& x) -{ - return group1 (x.a6_); -} - - - -template -inline -group6 -group_head( group7 const& x) -{ - return group6 (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_); -} - -template -inline -group1 -group_last( group7 const& x) -{ - return group1 (x.a7_); -} - - - -template -inline -group7 -group_head( group8 const& x) -{ - return group7 (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_); -} - -template -inline -group1 -group_last( group8 const& x) -{ - return group1 (x.a8_); -} - - - -template -inline -group8 -group_head( group9 const& x) -{ - return group8 (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_,x.a8_); -} - -template -inline -group1 -group_last( group9 const& x) -{ - return group1 (x.a9_); -} - - - -template -inline -group9 -group_head( group10 const& x) -{ - return group9 (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_,x.a8_,x.a9_); -} - -template -inline -group1 -group_last( group10 const& x) -{ - return group1 (x.a10_); -} - - - - - -} // namespace detail - - - -// helper functions - - -inline detail::group1< detail::group0 > -group() { return detail::group1< detail::group0 > ( detail::group0() ); } - -template -inline -detail::group1< detail::group2 > - group(T1 a1, Var const& var) -{ - return detail::group1< detail::group2 > - ( detail::group2 - (a1, var) - ); -} - -template -inline -detail::group1< detail::group3 > - group(T1 a1,T2 a2, Var const& var) -{ - return detail::group1< detail::group3 > - ( detail::group3 - (a1,a2, var) - ); -} - -template -inline -detail::group1< detail::group4 > - group(T1 a1,T2 a2,T3 a3, Var const& var) -{ - return detail::group1< detail::group4 > - ( detail::group4 - (a1,a2,a3, var) - ); -} - -template -inline -detail::group1< detail::group5 > - group(T1 a1,T2 a2,T3 a3,T4 a4, Var const& var) -{ - return detail::group1< detail::group5 > - ( detail::group5 - (a1,a2,a3,a4, var) - ); -} - -template -inline -detail::group1< detail::group6 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5, Var const& var) -{ - return detail::group1< detail::group6 > - ( detail::group6 - (a1,a2,a3,a4,a5, var) - ); -} - -template -inline -detail::group1< detail::group7 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6, Var const& var) -{ - return detail::group1< detail::group7 > - ( detail::group7 - (a1,a2,a3,a4,a5,a6, var) - ); -} - -template -inline -detail::group1< detail::group8 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7, Var const& var) -{ - return detail::group1< detail::group8 > - ( detail::group8 - (a1,a2,a3,a4,a5,a6,a7, var) - ); -} - -template -inline -detail::group1< detail::group9 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, Var const& var) -{ - return detail::group1< detail::group9 > - ( detail::group9 - (a1,a2,a3,a4,a5,a6,a7,a8, var) - ); -} - -template -inline -detail::group1< detail::group10 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9, Var const& var) -{ - return detail::group1< detail::group10 > - ( detail::group10 - (a1,a2,a3,a4,a5,a6,a7,a8,a9, var) - ); -} - - -#ifndef BOOST_NO_OVERLOAD_FOR_NON_CONST - -template -inline -detail::group1< detail::group2 > - group(T1 a1, Var& var) -{ - return detail::group1< detail::group2 > - ( detail::group2 - (a1, var) - ); -} - -template -inline -detail::group1< detail::group3 > - group(T1 a1,T2 a2, Var& var) -{ - return detail::group1< detail::group3 > - ( detail::group3 - (a1,a2, var) - ); -} - -template -inline -detail::group1< detail::group4 > - group(T1 a1,T2 a2,T3 a3, Var& var) -{ - return detail::group1< detail::group4 > - ( detail::group4 - (a1,a2,a3, var) - ); -} - -template -inline -detail::group1< detail::group5 > - group(T1 a1,T2 a2,T3 a3,T4 a4, Var& var) -{ - return detail::group1< detail::group5 > - ( detail::group5 - (a1,a2,a3,a4, var) - ); -} - -template -inline -detail::group1< detail::group6 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5, Var& var) -{ - return detail::group1< detail::group6 > - ( detail::group6 - (a1,a2,a3,a4,a5, var) - ); -} - -template -inline -detail::group1< detail::group7 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6, Var& var) -{ - return detail::group1< detail::group7 > - ( detail::group7 - (a1,a2,a3,a4,a5,a6, var) - ); -} - -template -inline -detail::group1< detail::group8 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7, Var& var) -{ - return detail::group1< detail::group8 > - ( detail::group8 - (a1,a2,a3,a4,a5,a6,a7, var) - ); -} - -template -inline -detail::group1< detail::group9 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, Var& var) -{ - return detail::group1< detail::group9 > - ( detail::group9 - (a1,a2,a3,a4,a5,a6,a7,a8, var) - ); -} - -template -inline -detail::group1< detail::group10 > - group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9, Var& var) -{ - return detail::group1< detail::group10 > - ( detail::group10 - (a1,a2,a3,a4,a5,a6,a7,a8,a9, var) - ); -} - - -#endif //end- #ifndef BOOST_NO_OVERLOAD_FOR_NON_CONST - - -} // namespace io - -} // namespace boost - - -#endif // BOOST_FORMAT_GROUP_HPP diff --git a/sdk/include/boost/format/internals.hpp b/sdk/include/boost/format/internals.hpp deleted file mode 100644 index 52448b731c2..00000000000 --- a/sdk/include/boost/format/internals.hpp +++ /dev/null @@ -1,169 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream - -// ---------------------------------------------------------------------------- -// internals.hpp : internal structs. included by format.hpp -// stream_format_state, and format_item -// ---------------------------------------------------------------------------- - - -#ifndef BOOST_FORMAT_INTERNALS_HPP -#define BOOST_FORMAT_INTERNALS_HPP - - -#include -#include - -namespace boost { -namespace io { -namespace detail { - - -// -------------- -// set of params that define the format state of a stream - -template -struct stream_format_state -{ - typedef BOOST_IO_STD basic_ios basic_ios; - - std::streamsize width_; - std::streamsize precision_; - Ch fill_; - std::ios_base::fmtflags flags_; - - stream_format_state() : width_(-1), precision_(-1), fill_(0), flags_(std::ios_base::dec) {} - stream_format_state(basic_ios& os) {set_by_stream(os); } - - void apply_on(basic_ios & os) const; //- applies format_state to the stream - template void apply_manip(T manipulator) //- modifies state by applying manipulator. - { apply_manip_body( *this, manipulator) ; } - void reset(); //- sets to default state. - void set_by_stream(const basic_ios& os); //- sets to os's state. -}; - - - -// -------------- -// format_item : stores all parameters that can be defined by directives in the format-string - -template -struct format_item -{ - enum pad_values { zeropad = 1, spacepad =2, centered=4, tabulation = 8 }; - - enum arg_values { argN_no_posit = -1, // non-positional directive. argN will be set later. - argN_tabulation = -2, // tabulation directive. (no argument read) - argN_ignored = -3 // ignored directive. (no argument read) - }; - typedef BOOST_IO_STD basic_ios basic_ios; - typedef detail::stream_format_state stream_format_state; - typedef std::basic_string string_t; - typedef BOOST_IO_STD basic_ostringstream internal_stream_t; - - - int argN_; //- argument number (starts at 0, eg : %1 => argN=0) - // negative values are used for items that don't process - // an argument - string_t res_; //- result of the formatting of this item - string_t appendix_; //- piece of string between this item and the next - - stream_format_state ref_state_;// set by parsing the format_string, is only affected by modify_item - stream_format_state state_; // always same as ref_state, _unless_ modified by manipulators 'group(..)' - - // non-stream format-state parameters - signed int truncate_; //- is >=0 for directives like %.5s (take 5 chars from the string) - unsigned int pad_scheme_; //- several possible padding schemes can mix. see pad_values - - format_item() : argN_(argN_no_posit), truncate_(-1), pad_scheme_(0) {} - - void compute_states(); // sets states according to truncate and pad_scheme. -}; - - - -// ----------------------------------------------------------- -// Definitions -// ----------------------------------------------------------- - -// --- stream_format_state:: ------------------------------------------- -template inline -void stream_format_state ::apply_on(basic_ios & os) const - // set the state of this stream according to our params -{ - if(width_ != -1) - os.width(width_); - if(precision_ != -1) - os.precision(precision_); - if(fill_ != 0) - os.fill(fill_); - os.flags(flags_); -} - -template inline -void stream_format_state ::set_by_stream(const basic_ios& os) - // set our params according to the state of this stream -{ - flags_ = os.flags(); - width_ = os.width(); - precision_ = os.precision(); - fill_ = os.fill(); -} - -template inline -void apply_manip_body( stream_format_state& self, - T manipulator) - // modify our params according to the manipulator -{ - BOOST_IO_STD basic_stringstream ss; - self.apply_on( ss ); - ss << manipulator; - self.set_by_stream( ss ); -} - -template inline -void stream_format_state ::reset() - // set our params to standard's default state -{ - width_=-1; precision_=-1; fill_=0; - flags_ = std::ios_base::dec; -} - - -// --- format_items:: ------------------------------------------- -template inline -void format_item ::compute_states() - // reflect pad_scheme_ on state_ and ref_state_ - // because some pad_schemes has complex consequences on several state params. -{ - if(pad_scheme_ & zeropad) - { - if(ref_state_.flags_ & std::ios_base::left) - { - pad_scheme_ = pad_scheme_ & (~zeropad); // ignore zeropad in left alignment - } - else - { - ref_state_.fill_='0'; - ref_state_.flags_ |= std::ios_base::internal; - } - } - state_ = ref_state_; -} - - -} } } // namespaces boost :: io :: detail - - -#endif // BOOST_FORMAT_INTERNALS_HPP diff --git a/sdk/include/boost/format/internals_fwd.hpp b/sdk/include/boost/format/internals_fwd.hpp deleted file mode 100644 index 2bceff8ff8a..00000000000 --- a/sdk/include/boost/format/internals_fwd.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) - -// ------------------------------------------------------------------------------ -// internals_fwd.hpp : forward declarations, for internal headers -// ------------------------------------------------------------------------------ - -#ifndef BOOST_FORMAT_INTERNAL_FWD_HPP -#define BOOST_FORMAT_INTERNAL_FWD_HPP - -#include "boost/format/format_fwd.hpp" -#include "boost/config.hpp" - - -namespace boost { -namespace io { - -namespace detail { - template struct stream_format_state; - template struct format_item; -} - - -namespace detail { - - // these functions were intended as methods, - // but MSVC have problems with template member functions : - - // defined in format_implementation.hpp : - template - basic_format& modify_item_body( basic_format& self, - int itemN, const T& manipulator); - - template - basic_format& bind_arg_body( basic_format& self, - int argN, const T& val); - - template - void apply_manip_body( stream_format_state& self, - T manipulator); - - // argument feeding (defined in feed_args.hpp ) : - template - void distribute(basic_format& self, T x); - - template - basic_format& feed(basic_format& self, T x); - -} // namespace detail - -} // namespace io -} // namespace boost - - -#endif // BOOST_FORMAT_INTERNAL_FWD_HPP diff --git a/sdk/include/boost/format/macros_default.hpp b/sdk/include/boost/format/macros_default.hpp deleted file mode 100644 index f0f2857a200..00000000000 --- a/sdk/include/boost/format/macros_default.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) - -// ------------------------------------------------------------------------------ -// macros_default.hpp : configuration for the format library -// provides default values for the stl workaround macros -// ------------------------------------------------------------------------------ - -#ifndef BOOST_FORMAT_MACROS_DEFAULT_HPP -#define BOOST_FORMAT_MACROS_DEFAULT_HPP - -#include - -// *** This should go to "boost/config/suffix.hpp". - -#ifndef BOOST_IO_STD -# define BOOST_IO_STD std:: -#endif - -// **** Workaround for io streams, stlport and msvc. -#ifdef BOOST_IO_NEEDS_USING_DECLARATION -namespace boost { - using std::char_traits; - using std::basic_ostream; - using std::basic_ostringstream; - namespace io { - using std::basic_ostream; - namespace detail { - using std::basic_ios; - using std::basic_ostream; - using std::basic_ostringstream; - } - } -} -#endif - -// ------------------------------------------------------------------------------ - -#endif // BOOST_FORMAT_MACROS_DEFAULT_HPP diff --git a/sdk/include/boost/format/macros_stlport.hpp b/sdk/include/boost/format/macros_stlport.hpp deleted file mode 100644 index 62f8e8cff73..00000000000 --- a/sdk/include/boost/format/macros_stlport.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) - -// ------------------------------------------------------------------------------ -// macros_stlport.hpp : configuration for the format library -// The contents of this file should be integrated into the boost config system. -// ------------------------------------------------------------------------------ - -#ifndef BOOST_MACROS_STLPORT_HPP -#define BOOST_MACROS_STLPORT_HPP - -#include - -// *** This should go to "boost/config/stdlib/stlport.hpp". - -// If the streams are not native and there are problems with using templates -// accross namespaces, we define some macros to enable a workaround for this. - -// STLport 4.5 -#if !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) -# define BOOST_IO_STD -# define BOOST_IO_NEEDS_USING_DECLARATION -#endif - -// STLport 4.0 -#if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_OWN_NAMESPACE) && defined(BOOST_NO_USING_TEMPLATE) -# define BOOST_IO_STD -# define BOOST_IO_NEEDS_USING_DECLARATION -#endif - - -// ------------------------------------------------------------------------------ - -#endif // BOOST_MACROS_STLPORT_HPP diff --git a/sdk/include/boost/format/msvc_disambiguater.hpp b/sdk/include/boost/format/msvc_disambiguater.hpp deleted file mode 100644 index 848d6bea2f4..00000000000 --- a/sdk/include/boost/format/msvc_disambiguater.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rüdiger Loos's format class -// and Karl Nelson's ofstream - -// ---------------------------------------------------------------------------- -// msvc_disambiguater.hpp : msvc workarounds. (for put_{head|last} overloads) -// the trick was described in boost's list by Aleksey Gurtovoy -// ---------------------------------------------------------------------------- - - -#ifndef BOOST_MSVC_DISAMBIGUATER_HPP -#define BOOST_MSVC_DISAMBIGUATER_HPP - -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 // this whole header is specifically for msvc - -#include "boost/format/group.hpp" -#include - -namespace boost { -namespace io { -namespace detail { - -template< class Ch, class Tr, class T > -struct disambiguater -{ - template< typename U > - static void put_head(BOOST_IO_STD basic_ostream& os, group1 const& x, long) - { - os << group_head(x.a1_); - } - static void put_head(BOOST_IO_STD basic_ostream& os, T const& x, int) - { - } - template< typename U > - static void put_last(BOOST_IO_STD basic_ostream& os, group1 const& x, long) - { - os << group_last(x.a1_); - } - static void put_last(BOOST_IO_STD basic_ostream& os, T const& x, int) - { - os << x; - } -}; - -} // namespace detail -} // namespace io -} // namespace boost - -#endif // -BOOST_MSVC - -#endif // -BOOST_MSVC_DISAMBIGUATER_HPP diff --git a/sdk/include/boost/format/parsing.hpp b/sdk/include/boost/format/parsing.hpp deleted file mode 100644 index 1e8bd904c38..00000000000 --- a/sdk/include/boost/format/parsing.hpp +++ /dev/null @@ -1,457 +0,0 @@ -// -*- C++ -*- -// Boost general library 'format' --------------------------- -// See http://www.boost.org for updates, documentation, and revision history. - -// (C) Samuel Krempp 2001 -// krempp@crans.ens-cachan.fr -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// ideas taken from Rudiger Loos's format class -// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) - -// ------------------------------------------------------------------------------ -// parsing.hpp : implementation of the parsing member functions -// ( parse, parse_printf_directive) -// ------------------------------------------------------------------------------ - - -#ifndef BOOST_FORMAT_PARSING_HPP -#define BOOST_FORMAT_PARSING_HPP - - -#include -#include -#include - - -namespace boost { -namespace io { -namespace detail { - - template inline - bool wrap_isdigit(Ch c, Stream &os) - { -#ifndef BOOST_NO_LOCALE_ISIDIGIT - return std::isdigit(c, os.rdbuf()->getloc() ); -# else - using namespace std; - return isdigit(c); -#endif - } //end- wrap_isdigit(..) - - template inline - Res str2int(const std::basic_string& s, - typename std::basic_string::size_type start, - BOOST_IO_STD basic_ios &os, - const Res = Res(0) ) - // Input : char string, with starting index - // a basic_ios& merely to call its widen/narrow member function in the desired locale. - // Effects : reads s[start:] and converts digits into an integral n, of type Res - // Returns : n - { - Res n = 0; - while(start - void skip_asterisk(const std::basic_string & buf, - typename std::basic_string::size_type * pos_p, - BOOST_IO_STD basic_ios &os) - // skip printf's "asterisk-fields" directives in the format-string buf - // Input : char string, with starting index *pos_p - // a basic_ios& merely to call its widen/narrow member function in the desired locale. - // Effects : advance *pos_p by skipping printf's asterisk fields. - // Returns : nothing - { - using namespace std; - BOOST_ASSERT( pos_p != 0); - if(*pos_p >= buf.size() ) return; - if(buf[ *pos_p]==os.widen('*')) { - ++ (*pos_p); - while (*pos_p < buf.size() && wrap_isdigit(buf[*pos_p],os)) ++(*pos_p); - if(buf[*pos_p]==os.widen('$')) ++(*pos_p); - } - } - - - inline void maybe_throw_exception( unsigned char exceptions) - // auxiliary func called by parse_printf_directive - // for centralising error handling - // it either throws if user sets the corresponding flag, or does nothing. - { - if(exceptions & io::bad_format_string_bit) - boost::throw_exception(io::bad_format_string()); - } - - - - template - bool parse_printf_directive(const std::basic_string & buf, - typename std::basic_string::size_type * pos_p, - detail::format_item * fpar, - BOOST_IO_STD basic_ios &os, - unsigned char exceptions) - // Input : a 'printf-directive' in the format-string, starting at buf[ *pos_p ] - // a basic_ios& merely to call its widen/narrow member function in the desired locale. - // a bitset'excpetions' telling whether to throw exceptions on errors. - // Returns : true if parse somehow succeeded (possibly ignoring errors if exceptions disabled) - // false if it failed so bad that the directive should be printed verbatim - // Effects : - *pos_p is incremented so that buf[*pos_p] is the first char after the directive - // - *fpar is set with the parameters read in the directive - { - typedef format_item format_item_t; - BOOST_ASSERT( pos_p != 0); - typename std::basic_string::size_type &i1 = *pos_p, - i0; - fpar->argN_ = format_item_t::argN_no_posit; // if no positional-directive - - bool in_brackets=false; - if(buf[i1]==os.widen('|')) - { - in_brackets=true; - if( ++i1 >= buf.size() ) { - maybe_throw_exception(exceptions); - return false; - } - } - - // the flag '0' would be picked as a digit for argument order, but here it's a flag : - if(buf[i1]==os.widen('0')) - goto parse_flags; - - // handle argument order (%2$d) or possibly width specification: %2d - i0 = i1; // save position before digits - while (i1 < buf.size() && wrap_isdigit(buf[i1], os)) - ++i1; - if (i1!=i0) - { - if( i1 >= buf.size() ) { - maybe_throw_exception(exceptions); - return false; - } - int n=str2int(buf,i0, os, int(0) ); - - // %N% case : this is already the end of the directive - if( buf[i1] == os.widen('%') ) - { - fpar->argN_ = n-1; - ++i1; - if( in_brackets) - maybe_throw_exception(exceptions); - // but don't return. maybe "%" was used in lieu of '$', so we go on. - else return true; - } - - if ( buf[i1]==os.widen('$') ) - { - fpar->argN_ = n-1; - ++i1; - } - else - { - // non-positionnal directive - fpar->ref_state_.width_ = n; - fpar->argN_ = format_item_t::argN_no_posit; - goto parse_precision; - } - } - - parse_flags: - // handle flags - while ( i1 ref_state_.flags_ |= std::ios_base::left; - break; - case '=': - fpar->pad_scheme_ |= format_item_t::centered; - break; - case ' ': - fpar->pad_scheme_ |= format_item_t::spacepad; - break; - case '+': - fpar->ref_state_.flags_ |= std::ios_base::showpos; - break; - case '0': - fpar->pad_scheme_ |= format_item_t::zeropad; - // need to know alignment before really setting flags, - // so just add 'zeropad' flag for now, it will be processed later. - break; - case '#': - fpar->ref_state_.flags_ |= std::ios_base::showpoint | std::ios_base::showbase; - break; - default: - goto parse_width; - } - ++i1; - } // loop on flag. - if( i1>=buf.size()) { - maybe_throw_exception(exceptions); - return true; - } - - parse_width: - // handle width spec - skip_asterisk(buf, &i1, os); // skips 'asterisk fields' : *, or *N$ - i0 = i1; // save position before digits - while (i1ref_state_.width_ = str2int( buf,i0, os, std::streamsize(0) ); } - - parse_precision: - if( i1>=buf.size()) { - maybe_throw_exception(exceptions); - return true; - } - // handle precision spec - if (buf[i1]==os.widen('.')) - { - ++i1; - skip_asterisk(buf, &i1, os); - i0 = i1; // save position before digits - while (i1ref_state_.precision_ = 0; - else - fpar->ref_state_.precision_ = str2int(buf,i0, os, std::streamsize(0) ); - } - - // handle formatting-type flags : - while( i1=buf.size()) { - maybe_throw_exception(exceptions); - return true; - } - - if( in_brackets && buf[i1]==os.widen('|') ) - { - ++i1; - return true; - } - switch (os.narrow(buf[i1], 0) ) - { - case 'X': - fpar->ref_state_.flags_ |= std::ios_base::uppercase; - case 'p': // pointer => set hex. - case 'x': - fpar->ref_state_.flags_ &= ~std::ios_base::basefield; - fpar->ref_state_.flags_ |= std::ios_base::hex; - break; - - case 'o': - fpar->ref_state_.flags_ &= ~std::ios_base::basefield; - fpar->ref_state_.flags_ |= std::ios_base::oct; - break; - - case 'E': - fpar->ref_state_.flags_ |= std::ios_base::uppercase; - case 'e': - fpar->ref_state_.flags_ &= ~std::ios_base::floatfield; - fpar->ref_state_.flags_ |= std::ios_base::scientific; - - fpar->ref_state_.flags_ &= ~std::ios_base::basefield; - fpar->ref_state_.flags_ |= std::ios_base::dec; - break; - - case 'f': - fpar->ref_state_.flags_ &= ~std::ios_base::floatfield; - fpar->ref_state_.flags_ |= std::ios_base::fixed; - case 'u': - case 'd': - case 'i': - fpar->ref_state_.flags_ &= ~std::ios_base::basefield; - fpar->ref_state_.flags_ |= std::ios_base::dec; - break; - - case 'T': - ++i1; - if( i1 >= buf.size()) - maybe_throw_exception(exceptions); - else - fpar->ref_state_.fill_ = buf[i1]; - fpar->pad_scheme_ |= format_item_t::tabulation; - fpar->argN_ = format_item_t::argN_tabulation; - break; - case 't': - fpar->ref_state_.fill_ = os.widen(' '); - fpar->pad_scheme_ |= format_item_t::tabulation; - fpar->argN_ = format_item_t::argN_tabulation; - break; - - case 'G': - fpar->ref_state_.flags_ |= std::ios_base::uppercase; - break; - case 'g': // 'g' conversion is default for floats. - fpar->ref_state_.flags_ &= ~std::ios_base::basefield; - fpar->ref_state_.flags_ |= std::ios_base::dec; - - // CLEAR all floatield flags, so stream will CHOOSE - fpar->ref_state_.flags_ &= ~std::ios_base::floatfield; - break; - - case 'C': - case 'c': - fpar->truncate_ = 1; - break; - case 'S': - case 's': - fpar->truncate_ = fpar->ref_state_.precision_; - fpar->ref_state_.precision_ = -1; - break; - case 'n' : - fpar->argN_ = format_item_t::argN_ignored; - break; - default: - maybe_throw_exception(exceptions); - } - ++i1; - - if( in_brackets ) - { - if( i1 -void basic_format ::parse(const string_t & buf) - // parse the format-string -{ - using namespace std; - const Ch arg_mark = oss_.widen('%'); - bool ordered_args=true; - int max_argN=-1; - typename string_t::size_type i1=0; - int num_items=0; - - // A: find upper_bound on num_items and allocates arrays - i1=0; - while( (i1=buf.find(arg_mark,i1)) != string::npos ) - { - if( i1+1 >= buf.size() ) { - if(exceptions() & io::bad_format_string_bit) - boost::throw_exception(io::bad_format_string()); // must not end in "bla bla %" - else break; // stop there, ignore last '%' - } - if(buf[i1+1] == buf[i1] ) { i1+=2; continue; } // escaped "%%" / "##" - ++i1; - - // in case of %N% directives, dont count it double (wastes allocations..) : - while(i1 < buf.size() && io::detail::wrap_isdigit(buf[i1],oss_)) ++i1; - if( i1 < buf.size() && buf[i1] == arg_mark ) ++ i1; - - ++num_items; - } - items_.assign( num_items, format_item_t() ); - - // B: Now the real parsing of the format string : - num_items=0; - i1 = 0; - typename string_t::size_type i0 = i1; - bool special_things=false; - int cur_it=0; - while( (i1=buf.find(arg_mark,i1)) != string::npos ) - { - string_t & piece = (cur_it==0) ? prefix_ : items_[cur_it-1].appendix_; - - if( buf[i1+1] == buf[i1] ) // escaped mark, '%%' - { - piece += buf.substr(i0, i1-i0) + buf[i1]; - i1+=2; i0=i1; - continue; - } - BOOST_ASSERT( static_cast(cur_it) < items_.size() || cur_it==0); - - if(i1!=i0) piece += buf.substr(i0, i1-i0); - ++i1; - - bool parse_ok; - parse_ok = io::detail::parse_printf_directive(buf, &i1, &items_[cur_it], oss_, exceptions()); - if( ! parse_ok ) continue; // the directive will be printed verbatim - - i0=i1; - items_[cur_it].compute_states(); // process complex options, like zeropad, into stream params. - - int argN=items_[cur_it].argN_; - if(argN == format_item_t::argN_ignored) - continue; - if(argN ==format_item_t::argN_no_posit) - ordered_args=false; - else if(argN == format_item_t::argN_tabulation) special_things=true; - else if(argN > max_argN) max_argN = argN; - ++num_items; - ++cur_it; - } // loop on %'s - BOOST_ASSERT(cur_it == num_items); - - // store the final piece of string - string_t & piece = (cur_it==0) ? prefix_ : items_[cur_it-1].appendix_; - piece += buf.substr(i0); - - if( !ordered_args) - { - if(max_argN >= 0 ) // dont mix positional with non-positionnal directives - { - if(exceptions() & io::bad_format_string_bit) - boost::throw_exception(io::bad_format_string()); - // else do nothing. => positionnal arguments are processed as non-positionnal - } - // set things like it would have been with positional directives : - int non_ordered_items = 0; - for(int i=0; i< num_items; ++i) - if(items_[i].argN_ == format_item_t::argN_no_posit) - { - items_[i].argN_ = non_ordered_items; - ++non_ordered_items; - } - max_argN = non_ordered_items-1; - } - - // C: set some member data : - items_.resize(num_items); - - if(special_things) style_ |= special_needs; - num_args_ = max_argN + 1; - if(ordered_args) style_ |= ordered; - else style_ &= ~ordered; -} - -} // namespace boost - - -#endif // BOOST_FORMAT_PARSING_HPP diff --git a/sdk/include/boost/function.hpp b/sdk/include/boost/function.hpp deleted file mode 100644 index 5d8bca539de..00000000000 --- a/sdk/include/boost/function.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2001, 2002 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org/libs/function - -// William Kempf, Jesse Jones and Karl Nelson were all very helpful in the -// design of this library. - -#include -#include - -#ifndef BOOST_FUNCTION_MAX_ARGS -# define BOOST_FUNCTION_MAX_ARGS 10 -#endif // BOOST_FUNCTION_MAX_ARGS - -// Include the prologue here so that the use of file-level iteration -// in anything that may be included by function_template.hpp doesn't break -#include - -// Visual Age C++ doesn't handle the file iteration well -#if BOOST_WORKAROUND(__IBMCPP__, <= 600) -# if BOOST_FUNCTION_MAX_ARGS >= 0 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 1 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 2 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 3 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 4 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 5 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 6 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 7 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 8 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 9 -# include -# endif -# if BOOST_FUNCTION_MAX_ARGS >= 10 -# include -# endif -#else -// What is the '3' for? -# define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_FUNCTION_MAX_ARGS,)) -# include BOOST_PP_ITERATE() -# undef BOOST_PP_ITERATION_PARAMS_1 -#endif diff --git a/sdk/include/boost/function/detail/function_iterate.hpp b/sdk/include/boost/function/detail/function_iterate.hpp deleted file mode 100644 index 4587b94ac7a..00000000000 --- a/sdk/include/boost/function/detail/function_iterate.hpp +++ /dev/null @@ -1,22 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org -#if !defined(BOOST_PP_IS_ITERATING) -# error Boost.Function - do not include this file! -#endif - -#define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION() -#include -#undef BOOST_FUNCTION_NUM_ARGS - diff --git a/sdk/include/boost/function/detail/gen_maybe_include.pl b/sdk/include/boost/function/detail/gen_maybe_include.pl deleted file mode 100644 index 4e8d4ca3560..00000000000 --- a/sdk/include/boost/function/detail/gen_maybe_include.pl +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/perl -w -# -# Boost.Function library -# -# Copyright (C) 2001-2003 Doug Gregor (gregod@cs.rpi.edu) -# -# Permission to copy, use, sell and distribute this software is granted -# provided this copyright notice appears in all copies. -# Permission to modify the code and to distribute modified code is granted -# provided this copyright notice appears in all copies, and a notice -# that the code was modified is included with the copyright notice. -# -# This software is provided "as is" without express or implied warranty, -# and with no claim as to its suitability for any purpose. -# -# For more information, see http://www.boost.org -use English; - -$max_args = $ARGV[0]; - -open (OUT, ">maybe_include.hpp") or die("Cannot write to maybe_include.hpp"); -for($on_arg = 0; $on_arg <= $max_args; ++$on_arg) { - if ($on_arg == 0) { - print OUT "#if"; - } - else { - print OUT "#elif"; - } - print OUT " BOOST_FUNCTION_NUM_ARGS == $on_arg\n"; - print OUT "# ifndef BOOST_FUNCTION_$on_arg\n"; - print OUT "# define BOOST_FUNCTION_$on_arg\n"; - print OUT "# include \n"; - print OUT "# endif\n"; -} -print OUT "#else\n"; -print OUT "# error Cannot handle Boost.Function objects that accept more than $max_args arguments!\n"; -print OUT "#endif\n"; diff --git a/sdk/include/boost/function/detail/maybe_include.hpp b/sdk/include/boost/function/detail/maybe_include.hpp deleted file mode 100644 index 83d82cb850d..00000000000 --- a/sdk/include/boost/function/detail/maybe_include.hpp +++ /dev/null @@ -1,273 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#if BOOST_FUNCTION_NUM_ARGS == 0 -# ifndef BOOST_FUNCTION_0 -# define BOOST_FUNCTION_0 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 1 -# ifndef BOOST_FUNCTION_1 -# define BOOST_FUNCTION_1 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 2 -# ifndef BOOST_FUNCTION_2 -# define BOOST_FUNCTION_2 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 3 -# ifndef BOOST_FUNCTION_3 -# define BOOST_FUNCTION_3 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 4 -# ifndef BOOST_FUNCTION_4 -# define BOOST_FUNCTION_4 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 5 -# ifndef BOOST_FUNCTION_5 -# define BOOST_FUNCTION_5 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 6 -# ifndef BOOST_FUNCTION_6 -# define BOOST_FUNCTION_6 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 7 -# ifndef BOOST_FUNCTION_7 -# define BOOST_FUNCTION_7 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 8 -# ifndef BOOST_FUNCTION_8 -# define BOOST_FUNCTION_8 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 9 -# ifndef BOOST_FUNCTION_9 -# define BOOST_FUNCTION_9 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 10 -# ifndef BOOST_FUNCTION_10 -# define BOOST_FUNCTION_10 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 11 -# ifndef BOOST_FUNCTION_11 -# define BOOST_FUNCTION_11 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 12 -# ifndef BOOST_FUNCTION_12 -# define BOOST_FUNCTION_12 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 13 -# ifndef BOOST_FUNCTION_13 -# define BOOST_FUNCTION_13 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 14 -# ifndef BOOST_FUNCTION_14 -# define BOOST_FUNCTION_14 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 15 -# ifndef BOOST_FUNCTION_15 -# define BOOST_FUNCTION_15 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 16 -# ifndef BOOST_FUNCTION_16 -# define BOOST_FUNCTION_16 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 17 -# ifndef BOOST_FUNCTION_17 -# define BOOST_FUNCTION_17 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 18 -# ifndef BOOST_FUNCTION_18 -# define BOOST_FUNCTION_18 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 19 -# ifndef BOOST_FUNCTION_19 -# define BOOST_FUNCTION_19 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 20 -# ifndef BOOST_FUNCTION_20 -# define BOOST_FUNCTION_20 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 21 -# ifndef BOOST_FUNCTION_21 -# define BOOST_FUNCTION_21 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 22 -# ifndef BOOST_FUNCTION_22 -# define BOOST_FUNCTION_22 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 23 -# ifndef BOOST_FUNCTION_23 -# define BOOST_FUNCTION_23 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 24 -# ifndef BOOST_FUNCTION_24 -# define BOOST_FUNCTION_24 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 25 -# ifndef BOOST_FUNCTION_25 -# define BOOST_FUNCTION_25 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 26 -# ifndef BOOST_FUNCTION_26 -# define BOOST_FUNCTION_26 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 27 -# ifndef BOOST_FUNCTION_27 -# define BOOST_FUNCTION_27 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 28 -# ifndef BOOST_FUNCTION_28 -# define BOOST_FUNCTION_28 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 29 -# ifndef BOOST_FUNCTION_29 -# define BOOST_FUNCTION_29 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 30 -# ifndef BOOST_FUNCTION_30 -# define BOOST_FUNCTION_30 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 31 -# ifndef BOOST_FUNCTION_31 -# define BOOST_FUNCTION_31 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 32 -# ifndef BOOST_FUNCTION_32 -# define BOOST_FUNCTION_32 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 33 -# ifndef BOOST_FUNCTION_33 -# define BOOST_FUNCTION_33 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 34 -# ifndef BOOST_FUNCTION_34 -# define BOOST_FUNCTION_34 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 35 -# ifndef BOOST_FUNCTION_35 -# define BOOST_FUNCTION_35 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 36 -# ifndef BOOST_FUNCTION_36 -# define BOOST_FUNCTION_36 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 37 -# ifndef BOOST_FUNCTION_37 -# define BOOST_FUNCTION_37 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 38 -# ifndef BOOST_FUNCTION_38 -# define BOOST_FUNCTION_38 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 39 -# ifndef BOOST_FUNCTION_39 -# define BOOST_FUNCTION_39 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 40 -# ifndef BOOST_FUNCTION_40 -# define BOOST_FUNCTION_40 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 41 -# ifndef BOOST_FUNCTION_41 -# define BOOST_FUNCTION_41 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 42 -# ifndef BOOST_FUNCTION_42 -# define BOOST_FUNCTION_42 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 43 -# ifndef BOOST_FUNCTION_43 -# define BOOST_FUNCTION_43 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 44 -# ifndef BOOST_FUNCTION_44 -# define BOOST_FUNCTION_44 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 45 -# ifndef BOOST_FUNCTION_45 -# define BOOST_FUNCTION_45 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 46 -# ifndef BOOST_FUNCTION_46 -# define BOOST_FUNCTION_46 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 47 -# ifndef BOOST_FUNCTION_47 -# define BOOST_FUNCTION_47 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 48 -# ifndef BOOST_FUNCTION_48 -# define BOOST_FUNCTION_48 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 49 -# ifndef BOOST_FUNCTION_49 -# define BOOST_FUNCTION_49 -# include -# endif -#elif BOOST_FUNCTION_NUM_ARGS == 50 -# ifndef BOOST_FUNCTION_50 -# define BOOST_FUNCTION_50 -# include -# endif -#else -# error Cannot handle Boost.Function objects that accept more than 50 arguments! -#endif diff --git a/sdk/include/boost/function/detail/prologue.hpp b/sdk/include/boost/function/detail/prologue.hpp deleted file mode 100644 index 5960134ca6a..00000000000 --- a/sdk/include/boost/function/detail/prologue.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#ifndef BOOST_FUNCTION_PROLOGUE_HPP -#define BOOST_FUNCTION_PROLOGUE_HPP -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -#endif // BOOST_FUNCTION_PROLOGUE_HPP diff --git a/sdk/include/boost/function/function0.hpp b/sdk/include/boost/function/function0.hpp deleted file mode 100644 index 133030a2423..00000000000 --- a/sdk/include/boost/function/function0.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 0 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function1.hpp b/sdk/include/boost/function/function1.hpp deleted file mode 100644 index 6c71d78cdb2..00000000000 --- a/sdk/include/boost/function/function1.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 1 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function10.hpp b/sdk/include/boost/function/function10.hpp deleted file mode 100644 index 736d1cde4e3..00000000000 --- a/sdk/include/boost/function/function10.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 10 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function2.hpp b/sdk/include/boost/function/function2.hpp deleted file mode 100644 index ca072502326..00000000000 --- a/sdk/include/boost/function/function2.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 2 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function3.hpp b/sdk/include/boost/function/function3.hpp deleted file mode 100644 index f1047c2bb76..00000000000 --- a/sdk/include/boost/function/function3.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 3 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function4.hpp b/sdk/include/boost/function/function4.hpp deleted file mode 100644 index bf749769587..00000000000 --- a/sdk/include/boost/function/function4.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 4 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function5.hpp b/sdk/include/boost/function/function5.hpp deleted file mode 100644 index 8cbc3b09d7b..00000000000 --- a/sdk/include/boost/function/function5.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 5 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function6.hpp b/sdk/include/boost/function/function6.hpp deleted file mode 100644 index 541b205b580..00000000000 --- a/sdk/include/boost/function/function6.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 6 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function7.hpp b/sdk/include/boost/function/function7.hpp deleted file mode 100644 index abd56fbdf84..00000000000 --- a/sdk/include/boost/function/function7.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 7 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function8.hpp b/sdk/include/boost/function/function8.hpp deleted file mode 100644 index 1bce61a4d77..00000000000 --- a/sdk/include/boost/function/function8.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 8 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function9.hpp b/sdk/include/boost/function/function9.hpp deleted file mode 100644 index 9b87add8f5c..00000000000 --- a/sdk/include/boost/function/function9.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2002-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#define BOOST_FUNCTION_NUM_ARGS 9 -#include -#undef BOOST_FUNCTION_NUM_ARGS diff --git a/sdk/include/boost/function/function_base.hpp b/sdk/include/boost/function/function_base.hpp deleted file mode 100644 index 22f379f1db5..00000000000 --- a/sdk/include/boost/function/function_base.hpp +++ /dev/null @@ -1,416 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2001-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -#ifndef BOOST_FUNCTION_BASE_HEADER -#define BOOST_FUNCTION_BASE_HEADER - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__ICL) && __ICL <= 600 || defined(__MWERKS__) && __MWERKS__ < 0x2406 && !defined(BOOST_STRICT_CONFIG) -# define BOOST_FUNCTION_TARGET_FIX(x) x -#else -# define BOOST_FUNCTION_TARGET_FIX(x) -#endif // not MSVC - -#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730 && !defined(BOOST_STRICT_CONFIG) -// Work around a compiler bug. -// boost::python::objects::function has to be seen by the compiler before the -// boost::function class template. -namespace boost { namespace python { namespace objects { - class function; -}}} -#endif - -// GCC 2.95.3 (or earlier) doesn't support enable_if -#if BOOST_WORKAROUND(__GNUC__, < 3) -# define BOOST_FUNCTION_NO_ENABLE_IF -#endif - -// MIPSpro 7.3.1.3m doesn't support enable_if -#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730 && !defined(BOOST_STRICT_CONFIG) -# define BOOST_FUNCTION_NO_ENABLE_IF -#endif - -// MSVC 7.0 doesn't support enable_if -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 && !defined(BOOST_STRICT_CONFIG) -# define BOOST_FUNCTION_NO_ENABLE_IF -#endif - -// Borland C++ 5.6.0 doesn't support enable_if -#if BOOST_WORKAROUND(__BORLANDC__, <= 0x562) -# define BOOST_FUNCTION_NO_ENABLE_IF -#endif - -// Metrowerks 7.2 doesn't support enable_if -#if BOOST_WORKAROUND(__MWERKS__, <= 0x2407) -# define BOOST_FUNCTION_NO_ENABLE_IF -#endif - -#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x540) -# define BOOST_FUNCTION_NO_ENABLE_IF -#endif - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -namespace boost { - -#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730 && !defined(BOOST_STRICT_CONFIG) -// The library shipping with MIPSpro 7.3.1.3m has a broken allocator -class function_base; - -template > -class function; -#else -template > -class function; -#endif - -template -inline void swap(function& f1, - function& f2) -{ - f1.swap(f2); -} - -} // end namespace boost -#endif // have partial specialization - -namespace boost { - namespace detail { - namespace function { - /** - * A union of a function pointer and a void pointer. This is necessary - * because 5.2.10/6 allows reinterpret_cast<> to safely cast between - * function pointer types and 5.2.9/10 allows static_cast<> to safely - * cast between a void pointer and an object pointer. But it is not legal - * to cast between a function pointer and a void* (in either direction), - * so function requires a union of the two. */ - union any_pointer - { - void* obj_ptr; - const void* const_obj_ptr; - void (*func_ptr)(); - char data[1]; - }; - - inline any_pointer make_any_pointer(void* o) - { - any_pointer p; - p.obj_ptr = o; - return p; - } - - inline any_pointer make_any_pointer(const void* o) - { - any_pointer p; - p.const_obj_ptr = o; - return p; - } - - inline any_pointer make_any_pointer(void (*f)()) - { - any_pointer p; - p.func_ptr = f; - return p; - } - - /** - * The unusable class is a placeholder for unused function arguments - * It is also completely unusable except that it constructable from - * anything. This helps compilers without partial specialization to - * handle Boost.Function objects returning void. - */ - struct unusable - { - unusable() {} - template unusable(const T&) {} - }; - - /* Determine the return type. This supports compilers that do not support - * void returns or partial specialization by silently changing the return - * type to "unusable". - */ - template struct function_return_type { typedef T type; }; - - template<> - struct function_return_type - { - typedef unusable type; - }; - - // The operation type to perform on the given functor/function pointer - enum functor_manager_operation_type { - clone_functor_tag, - destroy_functor_tag - }; - - // Tags used to decide between different types of functions - struct function_ptr_tag {}; - struct function_obj_tag {}; - struct member_ptr_tag {}; - struct function_obj_ref_tag {}; - struct stateless_function_obj_tag {}; - - template - class get_function_tag - { - typedef typename ct_if<(is_pointer::value), - function_ptr_tag, - function_obj_tag>::type ptr_or_obj_tag; - - typedef typename ct_if<(is_member_pointer::value), - member_ptr_tag, - ptr_or_obj_tag>::type ptr_or_obj_or_mem_tag; - - typedef typename ct_if<(is_reference_wrapper::value), - function_obj_ref_tag, - ptr_or_obj_or_mem_tag>::type or_ref_tag; - - public: - typedef typename ct_if<(is_stateless::value), - stateless_function_obj_tag, - or_ref_tag>::type type; - }; - - // The trivial manager does nothing but return the same pointer (if we - // are cloning) or return the null pointer (if we are deleting). - inline any_pointer trivial_manager(any_pointer f, - functor_manager_operation_type op) - { - if (op == clone_functor_tag) - return f; - else - return make_any_pointer(reinterpret_cast(0)); - } - - /** - * The functor_manager class contains a static function "manage" which - * can clone or destroy the given function/function object pointer. - */ - template - struct functor_manager - { - private: - typedef Functor functor_type; - - // For function pointers, the manager is trivial - static inline any_pointer - manager(any_pointer function_ptr, - functor_manager_operation_type op, - function_ptr_tag) - { - if (op == clone_functor_tag) - return function_ptr; - else - return make_any_pointer(static_cast(0)); - } - - // For function object pointers, we clone the pointer to each - // function has its own version. - static inline any_pointer - manager(any_pointer function_obj_ptr, - functor_manager_operation_type op, - function_obj_tag) - { -#ifndef BOOST_NO_STD_ALLOCATOR - typedef typename Allocator::template rebind::other - allocator_type; - typedef typename allocator_type::pointer pointer_type; -#else - typedef functor_type* pointer_type; -#endif // BOOST_NO_STD_ALLOCATOR - -# ifndef BOOST_NO_STD_ALLOCATOR - allocator_type allocator; -# endif // BOOST_NO_STD_ALLOCATOR - - if (op == clone_functor_tag) { - functor_type* f = - static_cast(function_obj_ptr.obj_ptr); - - // Clone the functor -# ifndef BOOST_NO_STD_ALLOCATOR - pointer_type copy = allocator.allocate(1); - allocator.construct(copy, *f); - - // Get back to the original pointer type - functor_type* new_f = static_cast(copy); -# else - functor_type* new_f = new functor_type(*f); -# endif // BOOST_NO_STD_ALLOCATOR - return make_any_pointer(static_cast(new_f)); - } - else { - /* Cast from the void pointer to the functor pointer type */ - functor_type* f = - reinterpret_cast(function_obj_ptr.obj_ptr); - -# ifndef BOOST_NO_STD_ALLOCATOR - /* Cast from the functor pointer type to the allocator's pointer - type */ - pointer_type victim = static_cast(f); - - // Destroy and deallocate the functor - allocator.destroy(victim); - allocator.deallocate(victim, 1); -# else - delete f; -# endif // BOOST_NO_STD_ALLOCATOR - - return make_any_pointer(static_cast(0)); - } - } - public: - /* Dispatch to an appropriate manager based on whether we have a - function pointer or a function object pointer. */ - static any_pointer - manage(any_pointer functor_ptr, functor_manager_operation_type op) - { - typedef typename get_function_tag::type tag_type; - return manager(functor_ptr, op, tag_type()); - } - }; - -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template struct enable_if; - template struct enable_if { typedef T type; }; - template struct enable_if {}; - - template - struct enabled - { - template - struct base - { - typedef T type; - }; - }; - - template<> - struct enabled - { - template - struct base - { - }; - }; - - template - struct enable_if : public enabled::template base - { - }; -#endif - - // A type that is only used for comparisons against zero - struct useless_clear_type {}; - } // end namespace function - } // end namespace detail - -/** - * The function_base class contains the basic elements needed for the - * function1, function2, function3, etc. classes. It is common to all - * functions (and as such can be used to tell if we have one of the - * functionN objects). - */ -class function_base -{ -public: - function_base() : manager(0) - { - functor.obj_ptr = 0; - } - - // Is this function empty? - bool empty() const { return !manager; } - -public: // should be protected, but GCC 2.95.3 will fail to allow access - detail::function::any_pointer (*manager)( - detail::function::any_pointer, - detail::function::functor_manager_operation_type); - detail::function::any_pointer functor; -}; - -/** - * The bad_function_call exception class is thrown when a boost::function - * object is invoked - */ -class bad_function_call : public std::runtime_error -{ -public: - bad_function_call() : std::runtime_error("call to empty boost::function") {} -}; - -/* Poison comparison between Boost.Function objects (because it is - * meaningless). The comparisons would otherwise be allowed because of the - * conversion required to allow syntax such as: - * boost::function f; - * if (f) { f(5); } - */ -void operator==(const function_base&, const function_base&); -void operator!=(const function_base&, const function_base&); - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -inline bool operator==(const function_base& f, - detail::function::useless_clear_type*) -{ - return f.empty(); -} - -inline bool operator!=(const function_base& f, - detail::function::useless_clear_type*) -{ - return !f.empty(); -} - -inline bool operator==(detail::function::useless_clear_type*, - const function_base& f) -{ - return f.empty(); -} - -inline bool operator!=(detail::function::useless_clear_type*, - const function_base& f) -{ - return !f.empty(); -} -#endif - -namespace detail { - namespace function { - inline bool has_empty_target(const function_base* f) - { - return f->empty(); - } - - inline bool has_empty_target(...) - { - return false; - } - } // end namespace function -} // end namespace detail -} // end namespace boost - -#endif // BOOST_FUNCTION_BASE_HEADER diff --git a/sdk/include/boost/function/function_template.hpp b/sdk/include/boost/function/function_template.hpp deleted file mode 100644 index 6680613f6ef..00000000000 --- a/sdk/include/boost/function/function_template.hpp +++ /dev/null @@ -1,674 +0,0 @@ -// Boost.Function library - -// Copyright (C) 2001-2003 Doug Gregor (gregod@cs.rpi.edu) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. - -// For more information, see http://www.boost.org - -// Note: this header is a header template and must NOT have multiple-inclusion -// protection. -#include - -#define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T) - -#define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T) - -#define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I) - -#define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY) - -#define BOOST_FUNCTION_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, a) - -#define BOOST_FUNCTION_ARG_TYPE(J,I,D) \ - typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(arg, BOOST_PP_CAT(BOOST_PP_INC(I),_type)); - -#define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY) - -// Type of the default allocator -#ifndef BOOST_NO_STD_ALLOCATOR -# define BOOST_FUNCTION_DEFAULT_ALLOCATOR std::allocator -#else -# define BOOST_FUNCTION_DEFAULT_ALLOCATOR int -#endif // BOOST_NO_STD_ALLOCATOR - -// Comma if nonzero number of arguments -#if BOOST_FUNCTION_NUM_ARGS == 0 -# define BOOST_FUNCTION_COMMA -#else -# define BOOST_FUNCTION_COMMA , -#endif // BOOST_FUNCTION_NUM_ARGS > 0 - -// Class names used in this version of the code -#define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_FUNCTION_INVOKER \ - BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_VOID_FUNCTION_INVOKER \ - BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER \ - BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER \ - BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_STATELESS_FUNCTION_OBJ_INVOKER \ - BOOST_JOIN(stateless_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_STATELESS_VOID_FUNCTION_OBJ_INVOKER \ - BOOST_JOIN(stateless_void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_GET_FUNCTION_INVOKER \ - BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER \ - BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) -#define BOOST_FUNCTION_GET_STATELESS_FUNCTION_OBJ_INVOKER \ - BOOST_JOIN(get_stateless_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) - -namespace boost { - namespace detail { - namespace function { - template< - typename FunctionPtr, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_FUNCTION_INVOKER - { - static R invoke(any_pointer function_ptr BOOST_FUNCTION_COMMA - BOOST_FUNCTION_PARMS) - { - FunctionPtr f = reinterpret_cast(function_ptr.func_ptr); - return f(BOOST_FUNCTION_ARGS); - } - }; - - template< - typename FunctionPtr, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_VOID_FUNCTION_INVOKER - { - static unusable invoke(any_pointer function_ptr BOOST_FUNCTION_COMMA - BOOST_FUNCTION_PARMS) - - { - FunctionPtr f = reinterpret_cast(function_ptr.func_ptr); - f(BOOST_FUNCTION_ARGS); - return unusable(); - } - }; - - template< - typename FunctionObj, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_FUNCTION_OBJ_INVOKER - { - static R invoke(any_pointer function_obj_ptr BOOST_FUNCTION_COMMA - BOOST_FUNCTION_PARMS) - - { - FunctionObj* f = (FunctionObj*)(function_obj_ptr.obj_ptr); - return (*f)(BOOST_FUNCTION_ARGS); - } - }; - - template< - typename FunctionObj, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER - { - static unusable invoke(any_pointer function_obj_ptr - BOOST_FUNCTION_COMMA - BOOST_FUNCTION_PARMS) - - { - FunctionObj* f = (FunctionObj*)(function_obj_ptr.obj_ptr); - (*f)(BOOST_FUNCTION_ARGS); - return unusable(); - } - }; - - template< - typename FunctionObj, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_STATELESS_FUNCTION_OBJ_INVOKER - { - static R invoke(any_pointer BOOST_FUNCTION_COMMA BOOST_FUNCTION_PARMS) - { - FunctionObj f = FunctionObj(); - return f(BOOST_FUNCTION_ARGS); - } - }; - - template< - typename FunctionObj, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_STATELESS_VOID_FUNCTION_OBJ_INVOKER - { - static unusable invoke(any_pointer BOOST_FUNCTION_COMMA - BOOST_FUNCTION_PARMS) - - { - FunctionObj f = FunctionObj(); - f(BOOST_FUNCTION_ARGS); - return unusable(); - } - }; - - template< - typename FunctionPtr, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_GET_FUNCTION_INVOKER - { - typedef typename ct_if<(is_void::value), - BOOST_FUNCTION_VOID_FUNCTION_INVOKER< - FunctionPtr, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - >, - BOOST_FUNCTION_FUNCTION_INVOKER< - FunctionPtr, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - > - >::type type; - }; - - template< - typename FunctionObj, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER - { - typedef typename ct_if<(is_void::value), - BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER< - FunctionObj, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - >, - BOOST_FUNCTION_FUNCTION_OBJ_INVOKER< - FunctionObj, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - > - >::type type; - }; - - template< - typename FunctionObj, - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS - > - struct BOOST_FUNCTION_GET_STATELESS_FUNCTION_OBJ_INVOKER - { - typedef typename ct_if<(is_void::value), - BOOST_FUNCTION_STATELESS_VOID_FUNCTION_OBJ_INVOKER< - FunctionObj, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - >, - BOOST_FUNCTION_STATELESS_FUNCTION_OBJ_INVOKER< - FunctionObj, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - > - >::type type; - }; - - } // end namespace function - } // end namespace detail - - template< - typename R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_PARMS, - typename Allocator = BOOST_FUNCTION_DEFAULT_ALLOCATOR - > - class BOOST_FUNCTION_FUNCTION : public function_base - { - typedef typename detail::function::function_return_type::type - internal_result_type; - - struct clear_type {}; - - public: - BOOST_STATIC_CONSTANT(int, args = BOOST_FUNCTION_NUM_ARGS); - - // add signature for boost::lambda - template - struct sig - { - typedef internal_result_type type; - }; - -#if BOOST_FUNCTION_NUM_ARGS == 1 - typedef T0 argument_type; -#elif BOOST_FUNCTION_NUM_ARGS == 2 - typedef T0 first_argument_type; - typedef T1 second_argument_type; -#endif - - BOOST_STATIC_CONSTANT(int, arity = BOOST_FUNCTION_NUM_ARGS); - BOOST_FUNCTION_ARG_TYPES - -#ifndef BOOST_NO_VOID_RETURNS - typedef R result_type; -#else - typedef internal_result_type result_type; -#endif // BOOST_NO_VOID_RETURNS - typedef Allocator allocator_type; - typedef BOOST_FUNCTION_FUNCTION self_type; - - BOOST_FUNCTION_FUNCTION() : function_base() - , invoker(0) {} - - // MSVC chokes if the following two constructors are collapsed into - // one with a default parameter. - template - BOOST_FUNCTION_FUNCTION(Functor BOOST_FUNCTION_TARGET_FIX(const &) f -#ifndef BOOST_FUNCTION_NO_ENABLE_IF - ,typename detail::function::enable_if< - (::boost::type_traits::ice_not< - (is_same::value)>::value), - int>::type = 0 -#endif // BOOST_FUNCTION_NO_ENABLE_IF - ) : - function_base(), - invoker(0) - { - this->assign_to(f); - } - -#ifndef BOOST_FUNCTION_NO_ENABLE_IF - BOOST_FUNCTION_FUNCTION(clear_type*) : function_base(), invoker(0) {} -#else - BOOST_FUNCTION_FUNCTION(int zero) : function_base(), invoker(0) - { - BOOST_ASSERT(zero == 0); - } -#endif - - BOOST_FUNCTION_FUNCTION(const BOOST_FUNCTION_FUNCTION& f) : - function_base(), - invoker(0) - { - this->assign_to_own(f); - } - - ~BOOST_FUNCTION_FUNCTION() { clear(); } - - result_type operator()(BOOST_FUNCTION_PARMS) const - { - if (this->empty()) - boost::throw_exception(bad_function_call()); - - internal_result_type result = invoker(function_base::functor - BOOST_FUNCTION_COMMA - BOOST_FUNCTION_ARGS); - -#ifndef BOOST_NO_VOID_RETURNS - return static_cast(result); -#else - return result; -#endif // BOOST_NO_VOID_RETURNS - } - - // The distinction between when to use BOOST_FUNCTION_FUNCTION and - // when to use self_type is obnoxious. MSVC cannot handle self_type as - // the return type of these assignment operators, but Borland C++ cannot - // handle BOOST_FUNCTION_FUNCTION as the type of the temporary to - // construct. - template -#ifndef BOOST_FUNCTION_NO_ENABLE_IF - typename detail::function::enable_if< - (::boost::type_traits::ice_not< - (is_same::value)>::value), - BOOST_FUNCTION_FUNCTION&>::type -#else - BOOST_FUNCTION_FUNCTION& -#endif - operator=(Functor BOOST_FUNCTION_TARGET_FIX(const &) f) - { - self_type(f).swap(*this); - return *this; - } - -#ifndef BOOST_FUNCTION_NO_ENABLE_IF - BOOST_FUNCTION_FUNCTION& operator=(clear_type*) - { - this->clear(); - return *this; - } -#else - BOOST_FUNCTION_FUNCTION& operator=(int zero) - { - BOOST_ASSERT(zero == 0); - this->clear(); - return *this; - } -#endif - - // Assignment from another BOOST_FUNCTION_FUNCTION - BOOST_FUNCTION_FUNCTION& operator=(const BOOST_FUNCTION_FUNCTION& f) - { - if (&f == this) - return *this; - - self_type(f).swap(*this); - return *this; - } - - void swap(BOOST_FUNCTION_FUNCTION& other) - { - if (&other == this) - return; - - std::swap(function_base::manager, other.manager); - std::swap(function_base::functor, other.functor); - std::swap(invoker, other.invoker); - } - - // Clear out a target, if there is one - void clear() - { - if (function_base::manager) { - function_base::functor = - function_base::manager(function_base::functor, - detail::function::destroy_functor_tag); - } - - function_base::manager = 0; - invoker = 0; - } - -#if (defined __SUNPRO_CC) && (__SUNPRO_CC <= 0x530) && !(defined BOOST_NO_COMPILER_CONFIG) - // Sun C++ 5.3 can't handle the safe_bool idiom, so don't use it - operator bool () const { return !this->empty(); } -#else - private: - struct dummy { - void nonnull() {}; - }; - - typedef void (dummy::*safe_bool)(); - - public: - operator safe_bool () const - { return (this->empty())? 0 : &dummy::nonnull; } - - bool operator!() const - { return this->empty(); } -#endif - - private: - void assign_to_own(const BOOST_FUNCTION_FUNCTION& f) - { - if (!f.empty()) { - invoker = f.invoker; - function_base::manager = f.manager; - function_base::functor = - f.manager(f.functor, detail::function::clone_functor_tag); - } - } - - template - void assign_to(Functor f) - { - typedef typename detail::function::get_function_tag::type tag; - this->assign_to(f, tag()); - } - - template - void assign_to(FunctionPtr f, detail::function::function_ptr_tag) - { - clear(); - - if (f) { - typedef typename detail::function::BOOST_FUNCTION_GET_FUNCTION_INVOKER< - FunctionPtr, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - >::type - invoker_type; - - invoker = &invoker_type::invoke; - function_base::manager = - &detail::function::functor_manager::manage; - function_base::functor = - function_base::manager(detail::function::make_any_pointer( - // should be a reinterpret cast, but some compilers - // insist on giving cv-qualifiers to free functions - (void (*)())(f) - ), - detail::function::clone_functor_tag); - } - } - -#if BOOST_FUNCTION_NUM_ARGS > 0 - template - void assign_to(MemberPtr f, detail::function::member_ptr_tag) - { - this->assign_to(mem_fn(f)); - } -#endif // BOOST_FUNCTION_NUM_ARGS > 0 - - template - void assign_to(FunctionObj f, detail::function::function_obj_tag) - { - if (!detail::function::has_empty_target(boost::addressof(f))) { - typedef - typename detail::function::BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER< - FunctionObj, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - >::type - invoker_type; - - invoker = &invoker_type::invoke; - function_base::manager = &detail::function::functor_manager< - FunctionObj, Allocator>::manage; -#ifndef BOOST_NO_STD_ALLOCATOR - typedef typename Allocator::template rebind::other - allocator_type; - typedef typename allocator_type::pointer pointer_type; - allocator_type allocator; - pointer_type copy = allocator.allocate(1); - allocator.construct(copy, f); - - // Get back to the original pointer type - FunctionObj* new_f = static_cast(copy); -#else - FunctionObj* new_f = new FunctionObj(f); -#endif // BOOST_NO_STD_ALLOCATOR - function_base::functor = - detail::function::make_any_pointer(static_cast(new_f)); - } - } - - template - void assign_to(const reference_wrapper& f, - detail::function::function_obj_ref_tag) - { - if (!detail::function::has_empty_target(f.get_pointer())) { - typedef - typename detail::function::BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER< - FunctionObj, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - >::type - invoker_type; - - invoker = &invoker_type::invoke; - function_base::manager = &detail::function::trivial_manager; - function_base::functor = - function_base::manager( - detail::function::make_any_pointer( - const_cast(f.get_pointer())), - detail::function::clone_functor_tag); - } - } - - template - void assign_to(FunctionObj, detail::function::stateless_function_obj_tag) - { - typedef - typename detail::function:: - BOOST_FUNCTION_GET_STATELESS_FUNCTION_OBJ_INVOKER< - FunctionObj, - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS - >::type - invoker_type; - invoker = &invoker_type::invoke; - function_base::manager = &detail::function::trivial_manager; - function_base::functor = detail::function::make_any_pointer(this); - } - - typedef internal_result_type (*invoker_type)(detail::function::any_pointer - BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS); - - invoker_type invoker; - }; - - template - inline void swap(BOOST_FUNCTION_FUNCTION< - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS , - Allocator - >& f1, - BOOST_FUNCTION_FUNCTION< - R BOOST_FUNCTION_COMMA - BOOST_FUNCTION_TEMPLATE_ARGS, - Allocator - >& f2) - { - f1.swap(f2); - } - -#if !defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \ - && (BOOST_STRICT_CONFIG || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540) - -#if BOOST_FUNCTION_NUM_ARGS == 0 -#define BOOST_FUNCTION_PARTIAL_SPEC R (void) -#else -#define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS,T)) -#endif - -template -class function - : public BOOST_FUNCTION_FUNCTION -{ - typedef BOOST_FUNCTION_FUNCTION base_type; - typedef function self_type; - - struct clear_type {}; - -public: - typedef typename base_type::allocator_type allocator_type; - - function() : base_type() {} - - template - function(Functor f -#ifndef BOOST_FUNCTION_NO_ENABLE_IF - ,typename detail::function::enable_if< - (::boost::type_traits::ice_not< - (is_same::value)>::value), - int>::type = 0 -#endif - ) : - base_type(f) - { - } - -#ifndef BOOST_FUNCTION_NO_ENABLE_IF - function(clear_type*) : base_type() {} -#endif - - function(const self_type& f) : base_type(static_cast(f)){} - - function(const base_type& f) : base_type(static_cast(f)){} - - self_type& operator=(const self_type& f) - { - self_type(f).swap(*this); - return *this; - } - - template -#ifndef BOOST_FUNCTION_NO_ENABLE_IF - typename detail::function::enable_if< - (::boost::type_traits::ice_not< - (is_same::value)>::value), - self_type&>::type -#else - self_type& -#endif - operator=(Functor f) - { - self_type(f).swap(*this); - return *this; - } - -#ifndef BOOST_FUNCTION_NO_ENABLE_IF - self_type& operator=(clear_type*) - { - this->clear(); - return *this; - } -#endif - - self_type& operator=(const base_type& f) - { - self_type(f).swap(*this); - return *this; - } -}; - -#undef BOOST_FUNCTION_PARTIAL_SPEC -#endif // have partial specialization - -} // end namespace boost - -// Cleanup after ourselves... -#undef BOOST_FUNCTION_DEFAULT_ALLOCATOR -#undef BOOST_FUNCTION_COMMA -#undef BOOST_FUNCTION_FUNCTION -#undef BOOST_FUNCTION_FUNCTION_INVOKER -#undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER -#undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER -#undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER -#undef BOOST_FUNCTION_STATELESS_FUNCTION_OBJ_INVOKER -#undef BOOST_FUNCTION_STATELESS_VOID_FUNCTION_OBJ_INVOKER -#undef BOOST_FUNCTION_GET_FUNCTION_INVOKER -#undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER -#undef BOOST_FUNCTION_GET_STATELESS_FUNCTION_OBJ_INVOKER -#undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER -#undef BOOST_FUNCTION_TEMPLATE_PARMS -#undef BOOST_FUNCTION_TEMPLATE_ARGS -#undef BOOST_FUNCTION_PARMS -#undef BOOST_FUNCTION_PARM -#undef BOOST_FUNCTION_ARGS -#undef BOOST_FUNCTION_ARG_TYPE -#undef BOOST_FUNCTION_ARG_TYPES diff --git a/sdk/include/boost/function/gen_function_N.pl b/sdk/include/boost/function/gen_function_N.pl deleted file mode 100644 index 0b20392cd77..00000000000 --- a/sdk/include/boost/function/gen_function_N.pl +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/perl -w -# -# Boost.Function library -# -# Copyright (C) 2001-2003 Doug Gregor (gregod@cs.rpi.edu) -# -# Permission to copy, use, sell and distribute this software is granted -# provided this copyright notice appears in all copies. -# Permission to modify the code and to distribute modified code is granted -# provided this copyright notice appears in all copies, and a notice -# that the code was modified is included with the copyright notice. -# -# This software is provided "as is" without express or implied warranty, -# and with no claim as to its suitability for any purpose. -# -# For more information, see http://www.boost.org -use English; - -if ($#ARGV < 0) { - print "Usage: perl gen_function_N \n"; - exit; -} - - -$totalNumArgs = $ARGV[0]; -for ($numArgs = 0; $numArgs <= $totalNumArgs; ++$numArgs) { - open OUT, ">function$numArgs.hpp"; - print OUT "#define BOOST_FUNCTION_NUM_ARGS $numArgs\n"; - print OUT "#include \n"; - print OUT "#undef BOOST_FUNCTION_NUM_ARGS\n"; - close OUT; -} diff --git a/sdk/include/boost/function_output_iterator.hpp b/sdk/include/boost/function_output_iterator.hpp deleted file mode 100644 index 764c118f1c0..00000000000 --- a/sdk/include/boost/function_output_iterator.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// (C) Copyright Jeremy Siek 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -// Revision History: - -// 27 Feb 2001 Jeremy Siek -// Initial checkin. - -#ifndef BOOST_FUNCTION_OUTPUT_ITERATOR_HPP -#define BOOST_FUNCTION_OUTPUT_ITERATOR_HPP - -#include - -namespace boost { - - template - class function_output_iterator { - typedef function_output_iterator self; - public: - typedef std::output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - explicit function_output_iterator(const UnaryFunction& f = UnaryFunction()) - : m_f(f) {} - - struct output_proxy { - output_proxy(UnaryFunction& f) : m_f(f) { } - template output_proxy& operator=(const T& value) { - m_f(value); - return *this; - } - UnaryFunction& m_f; - }; - output_proxy operator*() { return output_proxy(m_f); } - self& operator++() { return *this; } - self& operator++(int) { return *this; } - private: - UnaryFunction m_f; - }; - - template - inline function_output_iterator - make_function_output_iterator(const UnaryFunction& f = UnaryFunction()) { - return function_output_iterator(f); - } - -} // namespace boost - -#endif // BOOST_FUNCTION_OUTPUT_ITERATOR_HPP diff --git a/sdk/include/boost/functional.hpp b/sdk/include/boost/functional.hpp deleted file mode 100644 index e13267267e4..00000000000 --- a/sdk/include/boost/functional.hpp +++ /dev/null @@ -1,556 +0,0 @@ -// ------------------------------------------------------------------------------ -// Boost functional.hpp header file -// See http://www.boost.org/libs/functional for documentation. -// ------------------------------------------------------------------------------ -// Copyright (c) 2000 -// Cadenza New Zealand Ltd -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without -// fee, provided that the above copyright notice appears in all copies -// and that both the copyright notice and this permission notice -// appear in supporting documentation. Cadenza New Zealand Ltd makes -// no representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. -// ------------------------------------------------------------------------------ -// $Id: functional.hpp,v 1.4 2002/12/27 16:51:52 beman_dawes Exp $ -// ------------------------------------------------------------------------------ - -#ifndef BOOST_FUNCTIONAL_HPP -#define BOOST_FUNCTIONAL_HPP - -#include -#include -#include - -namespace boost -{ -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // -------------------------------------------------------------------------- - // The following traits classes allow us to avoid the need for ptr_fun - // because the types of arguments and the result of a function can be - // deduced. - // - // In addition to the standard types defined in unary_function and - // binary_function, we add - // - // - function_type, the type of the function or function object itself. - // - // - param_type, the type that should be used for passing the function or - // function object as an argument. - // -------------------------------------------------------------------------- - namespace detail - { - template - struct unary_traits_imp; - - template - struct unary_traits_imp - { - typedef Operation function_type; - typedef const function_type & param_type; - typedef typename Operation::result_type result_type; - typedef typename Operation::argument_type argument_type; - }; - - template - struct unary_traits_imp - { - typedef R (*function_type)(A); - typedef R (*param_type)(A); - typedef R result_type; - typedef A argument_type; - }; - - template - struct binary_traits_imp; - - template - struct binary_traits_imp - { - typedef Operation function_type; - typedef const function_type & param_type; - typedef typename Operation::result_type result_type; - typedef typename Operation::first_argument_type first_argument_type; - typedef typename Operation::second_argument_type second_argument_type; - }; - - template - struct binary_traits_imp - { - typedef R (*function_type)(A1,A2); - typedef R (*param_type)(A1,A2); - typedef R result_type; - typedef A1 first_argument_type; - typedef A2 second_argument_type; - }; - } // namespace detail - - template - struct unary_traits - { - typedef typename detail::unary_traits_imp::function_type function_type; - typedef typename detail::unary_traits_imp::param_type param_type; - typedef typename detail::unary_traits_imp::result_type result_type; - typedef typename detail::unary_traits_imp::argument_type argument_type; - }; - - template - struct unary_traits - { - typedef R (*function_type)(A); - typedef R (*param_type)(A); - typedef R result_type; - typedef A argument_type; - }; - - template - struct binary_traits - { - typedef typename detail::binary_traits_imp::function_type function_type; - typedef typename detail::binary_traits_imp::param_type param_type; - typedef typename detail::binary_traits_imp::result_type result_type; - typedef typename detail::binary_traits_imp::first_argument_type first_argument_type; - typedef typename detail::binary_traits_imp::second_argument_type second_argument_type; - }; - - template - struct binary_traits - { - typedef R (*function_type)(A1,A2); - typedef R (*param_type)(A1,A2); - typedef R result_type; - typedef A1 first_argument_type; - typedef A2 second_argument_type; - }; -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // -------------------------------------------------------------------------- - // If we have no partial specialisation available, decay to a situation - // that is no worse than in the Standard, i.e., ptr_fun will be required. - // -------------------------------------------------------------------------- - - template - struct unary_traits - { - typedef Operation function_type; - typedef const Operation& param_type; - typedef typename Operation::result_type result_type; - typedef typename Operation::argument_type argument_type; - }; - - template - struct binary_traits - { - typedef Operation function_type; - typedef const Operation & param_type; - typedef typename Operation::result_type result_type; - typedef typename Operation::first_argument_type first_argument_type; - typedef typename Operation::second_argument_type second_argument_type; - }; -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // -------------------------------------------------------------------------- - // unary_negate, not1 - // -------------------------------------------------------------------------- - template - class unary_negate - : public std::unary_function::argument_type,bool> - { - public: - explicit unary_negate(typename unary_traits::param_type x) - : - pred(x) - {} - bool operator()(typename call_traits::argument_type>::param_type x) const - { - return !pred(x); - } - private: - typename unary_traits::function_type pred; - }; - - template - unary_negate not1(const Predicate &pred) - { - // The cast is to placate Borland C++Builder in certain circumstances. - // I don't think it should be necessary. - return unary_negate((typename unary_traits::param_type)pred); - } - - template - unary_negate not1(Predicate &pred) - { - return unary_negate(pred); - } - - // -------------------------------------------------------------------------- - // binary_negate, not2 - // -------------------------------------------------------------------------- - template - class binary_negate - : public std::binary_function::first_argument_type, - typename binary_traits::second_argument_type, - bool> - { - public: - explicit binary_negate(typename binary_traits::param_type x) - : - pred(x) - {} - bool operator()(typename call_traits::first_argument_type>::param_type x, - typename call_traits::second_argument_type>::param_type y) const - { - return !pred(x,y); - } - private: - typename binary_traits::function_type pred; - }; - - template - binary_negate not2(const Predicate &pred) - { - // The cast is to placate Borland C++Builder in certain circumstances. - // I don't think it should be necessary. - return binary_negate((typename binary_traits::param_type)pred); - } - - template - binary_negate not2(Predicate &pred) - { - return binary_negate(pred); - } - - // -------------------------------------------------------------------------- - // binder1st, bind1st - // -------------------------------------------------------------------------- - template - class binder1st - : public std::unary_function::second_argument_type, - typename binary_traits::result_type> - { - public: - binder1st(typename binary_traits::param_type x, - typename call_traits::first_argument_type>::param_type y) - : - op(x), value(y) - {} - - typename binary_traits::result_type - operator()(typename call_traits::second_argument_type>::param_type x) const - { - return op(value, x); - } - - protected: - typename binary_traits::function_type op; - typename binary_traits::first_argument_type value; - }; - - template - inline binder1st bind1st(const Operation &op, - typename call_traits< - typename binary_traits::first_argument_type - >::param_type x) - { - // The cast is to placate Borland C++Builder in certain circumstances. - // I don't think it should be necessary. - return binder1st((typename binary_traits::param_type)op, x); - } - - template - inline binder1st bind1st(Operation &op, - typename call_traits< - typename binary_traits::first_argument_type - >::param_type x) - { - return binder1st(op, x); - } - - // -------------------------------------------------------------------------- - // binder2nd, bind2nd - // -------------------------------------------------------------------------- - template - class binder2nd - : public std::unary_function::first_argument_type, - typename binary_traits::result_type> - { - public: - binder2nd(typename binary_traits::param_type x, - typename call_traits::second_argument_type>::param_type y) - : - op(x), value(y) - {} - - typename binary_traits::result_type - operator()(typename call_traits::first_argument_type>::param_type x) const - { - return op(x, value); - } - - protected: - typename binary_traits::function_type op; - typename binary_traits::second_argument_type value; - }; - - template - inline binder2nd bind2nd(const Operation &op, - typename call_traits< - typename binary_traits::second_argument_type - >::param_type x) - { - // The cast is to placate Borland C++Builder in certain circumstances. - // I don't think it should be necessary. - return binder2nd((typename binary_traits::param_type)op, x); - } - - template - inline binder2nd bind2nd(Operation &op, - typename call_traits< - typename binary_traits::second_argument_type - >::param_type x) - { - return binder2nd(op, x); - } - - // -------------------------------------------------------------------------- - // mem_fun, etc - // -------------------------------------------------------------------------- - template - class mem_fun_t : public std::unary_function - { - public: - explicit mem_fun_t(S (T::*p)()) - : - ptr(p) - {} - S operator()(T* p) const - { - return (p->*ptr)(); - } - private: - S (T::*ptr)(); - }; - - template - class mem_fun1_t : public std::binary_function - { - public: - explicit mem_fun1_t(S (T::*p)(A)) - : - ptr(p) - {} - S operator()(T* p, typename call_traits::param_type x) const - { - return (p->*ptr)(x); - } - private: - S (T::*ptr)(A); - }; - - template - class const_mem_fun_t : public std::unary_function - { - public: - explicit const_mem_fun_t(S (T::*p)() const) - : - ptr(p) - {} - S operator()(const T* p) const - { - return (p->*ptr)(); - } - private: - S (T::*ptr)() const; - }; - - template - class const_mem_fun1_t : public std::binary_function - { - public: - explicit const_mem_fun1_t(S (T::*p)(A) const) - : - ptr(p) - {} - S operator()(const T* p, typename call_traits::param_type x) const - { - return (p->*ptr)(x); - } - private: - S (T::*ptr)(A) const; - }; - - template - inline mem_fun_t mem_fun(S (T::*f)()) - { - return mem_fun_t(f); - } - - template - inline mem_fun1_t mem_fun(S (T::*f)(A)) - { - return mem_fun1_t(f); - } - -#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST - template - inline const_mem_fun_t mem_fun(S (T::*f)() const) - { - return const_mem_fun_t(f); - } - - template - inline const_mem_fun1_t mem_fun(S (T::*f)(A) const) - { - return const_mem_fun1_t(f); - } -#endif // BOOST_NO_POINTER_TO_MEMBER_CONST - - // -------------------------------------------------------------------------- - // mem_fun_ref, etc - // -------------------------------------------------------------------------- - template - class mem_fun_ref_t : public std::unary_function - { - public: - explicit mem_fun_ref_t(S (T::*p)()) - : - ptr(p) - {} - S operator()(T& p) const - { - return (p.*ptr)(); - } - private: - S (T::*ptr)(); - }; - - template - class mem_fun1_ref_t : public std::binary_function - { - public: - explicit mem_fun1_ref_t(S (T::*p)(A)) - : - ptr(p) - {} - S operator()(T& p, typename call_traits::param_type x) const - { - return (p.*ptr)(x); - } - private: - S (T::*ptr)(A); - }; - - template - class const_mem_fun_ref_t : public std::unary_function - { - public: - explicit const_mem_fun_ref_t(S (T::*p)() const) - : - ptr(p) - {} - - S operator()(const T &p) const - { - return (p.*ptr)(); - } - private: - S (T::*ptr)() const; - }; - - template - class const_mem_fun1_ref_t : public std::binary_function - { - public: - explicit const_mem_fun1_ref_t(S (T::*p)(A) const) - : - ptr(p) - {} - - S operator()(const T& p, typename call_traits::param_type x) const - { - return (p.*ptr)(x); - } - private: - S (T::*ptr)(A) const; - }; - - template - inline mem_fun_ref_t mem_fun_ref(S (T::*f)()) - { - return mem_fun_ref_t(f); - } - - template - inline mem_fun1_ref_t mem_fun_ref(S (T::*f)(A)) - { - return mem_fun1_ref_t(f); - } - -#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST - template - inline const_mem_fun_ref_t mem_fun_ref(S (T::*f)() const) - { - return const_mem_fun_ref_t(f); - } - - template - inline const_mem_fun1_ref_t mem_fun_ref(S (T::*f)(A) const) - { - return const_mem_fun1_ref_t(f); - } -#endif // BOOST_NO_POINTER_TO_MEMBER_CONST - - // -------------------------------------------------------------------------- - // ptr_fun - // -------------------------------------------------------------------------- - template - class pointer_to_unary_function : public std::unary_function - { - public: - explicit pointer_to_unary_function(Result (*f)(Arg)) - : - func(f) - {} - - Result operator()(typename call_traits::param_type x) const - { - return func(x); - } - - private: - Result (*func)(Arg); - }; - - template - inline pointer_to_unary_function ptr_fun(Result (*f)(Arg)) - { - return pointer_to_unary_function(f); - } - - template - class pointer_to_binary_function : public std::binary_function - { - public: - explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2)) - : - func(f) - {} - - Result operator()(typename call_traits::param_type x, typename call_traits::param_type y) const - { - return func(x,y); - } - - private: - Result (*func)(Arg1, Arg2); - }; - - template - inline pointer_to_binary_function ptr_fun(Result (*f)(Arg1, Arg2)) - { - return pointer_to_binary_function(f); - } -} // namespace boost - -#endif diff --git a/sdk/include/boost/generator_iterator.hpp b/sdk/include/boost/generator_iterator.hpp deleted file mode 100644 index e27090cc63c..00000000000 --- a/sdk/include/boost/generator_iterator.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// (C) Copyright Jens Maurer 2001. Permission to copy, use, -// modify, sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -// -// Revision History: - -// 15 Nov 2001 Jens Maurer -// created. - -// See http://www.boost.org/libs/utility/iterator_adaptors.htm for documentation. - -#ifndef BOOST_ITERATOR_ADAPTOR_GENERATOR_ITERATOR_HPP -#define BOOST_ITERATOR_ADAPTOR_GENERATOR_ITERATOR_HPP - -#include -#include - -namespace boost { - -template -class generator_iterator_policies -{ -public: - generator_iterator_policies() { } - - template - void initialize(Base& base) { - m_value = (*base)(); - } - - // The Iter template argument is necessary for compatibility with a MWCW - // bug workaround - template - void increment(IteratorAdaptor& iter) { - m_value = (*iter.base())(); - } - - template - const typename Generator::result_type& - dereference(const IteratorAdaptor&) const - { return m_value; } - - template - bool equal(const IteratorAdaptor1& x, const IteratorAdaptor2& y) const - { return x.base() == y.base() && - x.policies().m_value == y.policies().m_value; } - -private: - typename Generator::result_type m_value; -}; - -template -struct generator_iterator_generator -{ - typedef iterator_adaptor, - typename Generator::result_type, const typename Generator::result_type&, - const typename Generator::result_type*, std::input_iterator_tag, - long> type; -}; - -template -inline typename generator_iterator_generator::type -make_generator_iterator(Generator & gen) -{ - typedef typename generator_iterator_generator::type result_t; - return result_t(&gen); -} - -} // namespace boost - - -#endif // BOOST_ITERATOR_ADAPTOR_GENERATOR_ITERATOR_HPP - diff --git a/sdk/include/boost/get_pointer.hpp b/sdk/include/boost/get_pointer.hpp deleted file mode 100644 index 09091e4f87a..00000000000 --- a/sdk/include/boost/get_pointer.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright Peter Dimov and David Abrahams 2002. Permission to copy, -// use, modify, sell and distribute this software is granted provided -// this copyright notice appears in all copies of the source. This -// software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. -#ifndef GET_POINTER_DWA20021219_HPP -# define GET_POINTER_DWA20021219_HPP - -# include - -namespace boost { - -// get_pointer(p) extracts a ->* capable pointer from p - -template T * get_pointer(T * p) -{ - return p; -} - -// get_pointer(shared_ptr const & p) has been moved to shared_ptr.hpp - -template T * get_pointer(std::auto_ptr const& p) -{ - return p.get(); -} - - -} // namespace boost - -#endif // GET_POINTER_DWA20021219_HPP diff --git a/sdk/include/boost/graph/adjacency_iterator.hpp b/sdk/include/boost/graph/adjacency_iterator.hpp deleted file mode 100644 index 1f10a4a5b49..00000000000 --- a/sdk/include/boost/graph/adjacency_iterator.hpp +++ /dev/null @@ -1,98 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_ADJACENCY_ITERATOR_HPP -#define BOOST_ADJACENCY_ITERATOR_HPP - -#include -#include - -namespace boost { - - namespace detail { - - template - struct adjacency_iterator_policies : - public boost::default_iterator_policies - { - inline adjacency_iterator_policies() { } - inline adjacency_iterator_policies(const Graph* g) : m_g(g) { } - - template - inline typename Iterator::reference - dereference(const Iterator& i) const - { return target(*i.base(), *m_g); } - - const Graph* m_g; - }; - - } // namespace detail - - template ::vertex_descriptor, - class OutEdgeIter=typename graph_traits::out_edge_iterator> - class adjacency_iterator_generator { - typedef typename boost::detail::iterator_traits - ::difference_type difference_type; - public: - typedef boost::iterator_adaptor, - Vertex, Vertex, Vertex*, boost::multi_pass_input_iterator_tag, - difference_type - > type; - }; - - namespace detail { - - template - struct inv_adjacency_iterator_policies : - public boost::default_iterator_policies - { - inline inv_adjacency_iterator_policies() { } - inline inv_adjacency_iterator_policies(Graph* g) : m_g(g) { } - - template - inline typename Iterator::reference - dereference(const Iterator& i) const - { return source(*i.base(), *m_g); } - - Graph* m_g; - }; - - } // namespace detail - - template - class inv_adjacency_iterator_generator { - typedef typename boost::detail::iterator_traits - ::difference_type difference_type; - public: - typedef boost::iterator_adaptor, - Vertex, Vertex, Vertex*, boost::multi_pass_input_iterator_tag, - difference_type - > type; - }; - -} // namespace boost - -#endif // BOOST_DETAIL_ADJACENCY_ITERATOR_HPP diff --git a/sdk/include/boost/graph/adjacency_list.hpp b/sdk/include/boost/graph/adjacency_list.hpp deleted file mode 100644 index eb5dd9e3a71..00000000000 --- a/sdk/include/boost/graph/adjacency_list.hpp +++ /dev/null @@ -1,431 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_ADJACENCY_LIST_HPP -#define BOOST_GRAPH_ADJACENCY_LIST_HPP - - -#include - -#include -#include -#include - -#if !defined BOOST_NO_HASH -#include -#endif - -#if !defined BOOST_NO_SLIST -#include -#endif - -#include -#include -#include -#include -#include - -namespace boost { - - //=========================================================================== - // Selectors for the VertexList and EdgeList template parameters of - // adjacency_list, and the container_gen traits class which is used - // to map the selectors to the container type used to implement the - // graph. - // - // The main container_gen traits class uses partial specialization, - // so we also include a workaround. - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#if !defined BOOST_NO_SLIST - struct slistS {}; -#endif - - struct vecS { }; - struct listS { }; - struct setS { }; - struct multisetS { }; - struct mapS { }; -#if !defined BOOST_NO_HASH - struct hash_mapS { }; - struct hash_setS { }; -#endif - - template - struct container_gen { }; - - template - struct container_gen { - typedef std::list type; - }; -#if !defined BOOST_NO_SLIST - template - struct container_gen { - typedef BOOST_STD_EXTENSION_NAMESPACE::slist type; - }; -#endif - template - struct container_gen { - typedef std::vector type; - }; - - template - struct container_gen { - typedef std::set type; - }; - - template - struct container_gen { - typedef std::set type; - }; - - template - struct container_gen { - typedef std::multiset type; - }; - -#if !defined BOOST_NO_HASH - template - struct container_gen { - typedef BOOST_STD_EXTENSION_NAMESPACE::hash_set type; - }; - - template - struct container_gen { - typedef BOOST_STD_EXTENSION_NAMESPACE::hash_set type; - }; -#endif - -#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#if !defined BOOST_NO_SLIST - struct slistS { - template - struct bind_ { typedef std::slist type; }; - }; -#endif - - struct vecS { - template - struct bind_ { typedef std::vector type; }; - }; - - struct listS { - template - struct bind_ { typedef std::list type; }; - }; - - struct setS { - template - struct bind_ { typedef std::set > type; }; - }; - - struct multisetS { - template - struct bind_ { typedef std::multiset > type; }; - }; - -#if !defined BOOST_NO_HASH - struct hash_setS { - template - struct bind_ { typedef BOOST_STD_EXTENSION_NAMESPACE::hash_set > type; }; - }; -#endif - - struct mapS { - template - struct bind_ { typedef std::set > type; }; - }; - -#if !defined BOOST_NO_HASH - struct hash_mapS { - template - struct bind_ { typedef BOOST_STD_EXTENSION_NAMESPACE::hash_set > type; }; - }; -#endif - - template struct container_selector { - typedef vecS type; - }; - -#define BOOST_CONTAINER_SELECTOR(NAME) \ - template <> struct container_selector { \ - typedef NAME type; \ - } - - BOOST_CONTAINER_SELECTOR(vecS); - BOOST_CONTAINER_SELECTOR(listS); - BOOST_CONTAINER_SELECTOR(mapS); - BOOST_CONTAINER_SELECTOR(setS); -#if !defined BOOST_NO_HASH - BOOST_CONTAINER_SELECTOR(hash_mapS); -#endif -#if !defined BOOST_NO_SLIST - BOOST_CONTAINER_SELECTOR(slistS); -#endif - - template - struct container_gen { - typedef typename container_selector::type Select; - typedef typename Select:: template bind_::type type; - }; - -#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - template - struct parallel_edge_traits { }; - - template <> - struct parallel_edge_traits { - typedef allow_parallel_edge_tag type; }; - - template <> - struct parallel_edge_traits { - typedef allow_parallel_edge_tag type; }; - -#if !defined BOOST_NO_SLIST - template <> - struct parallel_edge_traits { - typedef allow_parallel_edge_tag type; }; -#endif - - template <> - struct parallel_edge_traits { - typedef disallow_parallel_edge_tag type; }; - - template <> - struct parallel_edge_traits { - typedef allow_parallel_edge_tag type; }; - -#if !defined BOOST_NO_HASH - template <> - struct parallel_edge_traits { - typedef disallow_parallel_edge_tag type; - }; -#endif - - // mapS is obsolete, replaced with setS - template <> - struct parallel_edge_traits { - typedef disallow_parallel_edge_tag type; }; - -#if !defined BOOST_NO_HASH - template <> - struct parallel_edge_traits { - typedef disallow_parallel_edge_tag type; - }; -#endif - - namespace detail { - template struct is_random_access { - enum { value = false}; - typedef false_type type; - }; - template <> - struct is_random_access { - enum { value = true }; - typedef true_type type; - }; - - } // namespace detail - - - - //=========================================================================== - // The adjacency_list_traits class, which provides a way to access - // some of the associated types of an adjacency_list type without - // having to first create the adjacency_list type. This is useful - // when trying to create interior vertex or edge properties who's - // value type is a vertex or edge descriptor. - - template - struct adjacency_list_traits - { - typedef typename detail::is_random_access::type - is_rand_access; - typedef typename DirectedS::is_bidir_t is_bidir; - typedef typename DirectedS::is_directed_t is_directed; - - typedef typename boost::ct_if_t::type - >::type directed_category; - - typedef typename parallel_edge_traits::type - edge_parallel_category; - - typedef void* vertex_ptr; - typedef typename boost::ct_if_t::type vertex_descriptor; - typedef detail::edge_desc_impl - edge_descriptor; - }; - -} // namespace boost - -#include - -namespace boost { - - //=========================================================================== - // The adjacency_list class. - // - - template - class adjacency_list - : public detail::adj_list_gen< - adjacency_list, - VertexListS, OutEdgeListS, DirectedS, - VertexProperty, EdgeProperty, GraphProperty, EdgeListS>::type - { - typedef adjacency_list self; - typedef typename detail::adj_list_gen< - self, VertexListS, OutEdgeListS, DirectedS, - VertexProperty, EdgeProperty, GraphProperty, EdgeListS - >::type Base; - public: - typedef typename Base::stored_vertex stored_vertex; - typedef typename Base::vertices_size_type vertices_size_type; - typedef typename Base::edges_size_type edges_size_type; - typedef typename Base::degree_size_type degree_size_type; - - typedef EdgeProperty edge_property_type; - typedef VertexProperty vertex_property_type; - typedef GraphProperty graph_property_type; - - inline adjacency_list(const GraphProperty& p = GraphProperty()) - : m_property(p) { } - - inline adjacency_list(const adjacency_list& x) - : Base(x), m_property(x.m_property) { } - - inline adjacency_list& operator=(const adjacency_list& x) { - Base::operator=(x); - m_property = x.m_property; - return *this; - } - - // Required by Mutable Graph - inline adjacency_list(vertices_size_type num_vertices, - const GraphProperty& p = GraphProperty()) - : Base(num_vertices), m_property(p) { } - -#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300 - // Required by Iterator Constructible Graph - template - inline adjacency_list(EdgeIterator first, EdgeIterator last, - vertices_size_type n, - edges_size_type m = 0, - const GraphProperty& p = GraphProperty()) - : Base(n, first, last), m_property(p) { } - - template - inline adjacency_list(EdgeIterator first, EdgeIterator last, - EdgePropertyIterator ep_iter, - vertices_size_type n, - edges_size_type m = 0, - const GraphProperty& p = GraphProperty()) - : Base(n, first, last, ep_iter), m_property(p) { } -#endif - - void swap(adjacency_list& x) { - // Is there a more efficient way to do this? - adjacency_list tmp(x); - x = *this; - *this = tmp; - } - - // protected: (would be protected if friends were more portable) - GraphProperty m_property; - }; - - template - inline void - set_property(adjacency_list& g, Tag, - const Value& value) { - get_property_value(g.m_property, Tag()) = value;; - } - - template - inline - typename graph_property, Tag>::type& - get_property(adjacency_list& g, Tag) { - return get_property_value(g.m_property, Tag()); - } - - template - inline - const - typename graph_property, Tag>::type& - get_property(const adjacency_list& g, Tag) { - return get_property_value(g.m_property, Tag()); - } - - // dwa 09/25/00 - needed to be more explicit so reverse_graph would work. - template - inline Vertex - source(const detail::edge_base& e, - const adjacency_list&) - { - return e.m_source; - } - - template - inline Vertex - target(const detail::edge_base& e, - const adjacency_list&) - { - return e.m_target; - } - -} // namespace boost - - -#endif // BOOST_GRAPH_ADJACENCY_LIST_HPP diff --git a/sdk/include/boost/graph/adjacency_list_io.hpp b/sdk/include/boost/graph/adjacency_list_io.hpp deleted file mode 100644 index 46d42fe5dbf..00000000000 --- a/sdk/include/boost/graph/adjacency_list_io.hpp +++ /dev/null @@ -1,374 +0,0 @@ -//======================================================================= -// Copyright 2001 Universite Joseph Fourier, Grenoble. -// Author: François Faure -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - - -#ifndef ______adj_list_io_______ -#define ______adj_list_io_______ - -#include -#include -#include - -// Method read to parse an adjacency list from an input stream. Examples: -// cin >> read( G ); -// cin >> read( G, NodePropertySubset(), EdgepropertySubset() ); -// -// Method write to print an adjacency list to an output stream. Examples: -// cout << write( G ); -// cout << write( G, NodePropertySubset(), EdgepropertySubset() ); - -namespace boost { - -/* outline - - basic property input - - get property subset - - graph parser - - property printer - - graph printer - - user methods -*/ - -//=========================================================================== -// basic property input - -template -std::istream& operator >> ( std::istream& in, property& p ) -{ - in >> p.m_value >> *(static_cast(&p)); // houpla !! - return in; -} - -template -std::istream& operator >> ( std::istream& in, property& p ) -{ - in >> p.m_value; - return in; -} - -std::istream& operator >> ( std::istream& in, no_property& ) -{ - return in; -} - -// basic property input -//=========================================================================== -// get property subsets - -// get a single property tagged Stag -template -void get -( property& p, const V& v, Stag s ) -{ - get( *(static_cast(&p)),v,s ); -} - -template -void get -( property& p, const V& v, Stag ) -{ - p.m_value = v; -} - -// get a subset of properties tagged Stag -template -void getSubset -( property& p, const property& s ) -{ - get( p, s.m_value, Stag() ); - getSubset( p, Snext(s) ); -} - -template -void getSubset -( property& p, const property& s ) -{ - get( p, s.m_value, Stag() ); -} - -void getSubset -( no_property& p, const no_property& s ) -{ -} - -// get property subset -//=========================================================================== -// graph parser - -template -struct GraphParser -{ - - typedef Graph_t Graph; - - GraphParser( Graph* g ): graph(g) - {} - - GraphParser& operator () ( std::istream& in ) - { - typedef graph_traits::vertex_descriptor Vertex; - std::vector nodes; - - typedef enum{ PARSE_NUM_NODES, PARSE_VERTEX, PARSE_EDGE } State; - State state = PARSE_VERTEX; - - unsigned int numLine = 1; - char c; - while ( in.get(c) ) - { - if( c== '#' ) skip(in); - else if( c== 'n' ) state = PARSE_NUM_NODES; - else if( c== 'v' ) state = PARSE_VERTEX; - else if( c== 'e' ) state = PARSE_EDGE; - else if( c== '\n' ) numLine++; - else if( !isspace(c) ){ - in.putback(c); - if( state == PARSE_VERTEX ){ - VertexPropertySubset readProp; - if( in >> readProp ) - { - VertexProperty vp; - getSubset( vp, readProp ); - nodes.push_back( add_vertex(vp, *graph) ); - } - else - std::cerr<<"read vertex, parse error at line"<> source >> target; - if( in >> readProp ) - { - EdgeProperty ep; - getSubset( ep, readProp ); - add_edge(nodes[source], nodes[target], ep, *graph); - } - else - std::cerr<<"read edge, parse error at line"<> n ){ - for( int i=0; i -struct PropertyPrinter -{ - typedef typename Property::value_type Value; - typedef typename Property::tag_type Tag; - typedef typename Property::next_type Next; - - PropertyPrinter( Graph& g ):graph(&g){} - - template - PropertyPrinter& operator () ( std::ostream& out, Iterator it ) - { - property_map::type ps = get(Tag(), *graph); - out << ps[ *it ] <<" "; - PropertyPrinter print(*graph); - print(out, it); - return (*this); - } -private: - Graph* graph; -}; -template -struct PropertyPrinter -{ - PropertyPrinter( Graph& ){} - - template - PropertyPrinter& operator () ( std::ostream&, Iterator it ){ return *this; } -}; - -// property printer -//========================================================================= -// graph printer - -template -struct EdgePrinter -{ - - typedef Graph_t Graph; - typedef typename graph_traits::vertex_descriptor Vertex; - - EdgePrinter( Graph& g ) - : graph(g) - {} - - const EdgePrinter& operator () ( std::ostream& out ) const - { - // assign indices to vertices - std::map indices; - int num = 0; - graph_traits::vertex_iterator vi; - for (vi = vertices(graph).first; vi != vertices(graph).second; ++vi){ - indices[*vi] = num++; - } - - // write edges - PropertyPrinter print_Edge(graph); - out << "e" << std::endl; - graph_traits::edge_iterator ei; - for (ei = edges(graph).first; ei != edges(graph).second; ++ei){ - out << indices[source(*ei,graph)] << " " << indices[target(*ei,graph)] << " "; - print_Edge(out,ei); - out << std::endl; - } - out << std::endl; - return (*this); - } - -protected: - - Graph& graph; - -}; - -template -struct GraphPrinter: public EdgePrinter -{ - GraphPrinter( Graph& g ) - : EdgePrinter(g) - {} - - const GraphPrinter& operator () ( std::ostream& out ) const - { - PropertyPrinter printNode(this->graph); - out << "v"<::vertex_iterator vi; - for (vi = vertices(graph).first; vi != vertices(graph).second; ++vi){ - printNode(out,vi); - out << std::endl; - } - - EdgePrinter::operator ()( out ); - return (*this); - } -}; - -template -struct GraphPrinter - : public EdgePrinter -{ - GraphPrinter( G& g ) - : EdgePrinter(g) - {} - - const GraphPrinter& operator () ( std::ostream& out ) const - { - out << "n "<< num_vertices(graph) << std::endl; - EdgePrinter::operator ()( out ); - return (*this); - } -}; - -// graph printer -//========================================================================= -// user methods - -/// input stream for reading a graph -template -std::istream& operator >> ( std::istream& in, GraphParser gp ) -{ - gp(in); - return in; -} - -/// graph parser for given subsets of internal vertex and edge properties -template -GraphParser,VP,EP,VPS,EPS> -read( adjacency_list& g, VPS vps, EPS eps ) -{ - return GraphParser,VP,EP,VPS,EPS>(&g); -} - -/// graph parser for all internal vertex and edge properties -template -GraphParser,VP,EP,VP,EP> -read( adjacency_list& g ) -{ - return GraphParser,VP,EP,VP,EP>(&g); -} - - -/// output stream for writing a graph -template -std::ostream& operator << ( std::ostream& out, const GraphPrinter& gp ) -{ - gp(out); - return out; -} - -/// write the graph with given property subsets -template -GraphPrinter,VPS,EPS> -write( adjacency_list& g, VPS, EPS ) -{ - return GraphPrinter,VPS,EPS>(g); -} - -/// write the graph with all internal vertex and edge properties -template -GraphPrinter,VP,EP> -write( adjacency_list& g ) -{ - return GraphPrinter,VP,EP>(g); -} - -// user methods -//========================================================================= -}// boost -#endif diff --git a/sdk/include/boost/graph/adjacency_matrix.hpp b/sdk/include/boost/graph/adjacency_matrix.hpp deleted file mode 100644 index d2f0311c2ea..00000000000 --- a/sdk/include/boost/graph/adjacency_matrix.hpp +++ /dev/null @@ -1,915 +0,0 @@ -//======================================================================= -// Copyright 2001 University of Notre Dame. -// Author: Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_ADJACENCY_MATRIX_HPP -#define BOOST_ADJACENCY_MATRIX_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - namespace detail { - - template - class matrix_edge_desc_impl : public edge_desc_impl - { - typedef edge_desc_impl Base; - public: - matrix_edge_desc_impl() { } - matrix_edge_desc_impl(bool exists, Vertex s, Vertex d, - const void* ep = 0) - : Base(s, d, ep), m_exists(exists) { } - bool exists() const { return m_exists; } - private: - bool m_exists; - }; - - struct does_edge_exist { - template - bool operator()(const Edge& e) const { return e.exists(); } - }; - - template - bool get_edge_exists(const std::pair& stored_edge) { - return stored_edge.first; - } - template - void set_edge_exists(std::pair& stored_edge, - bool flag) { - stored_edge.first = flag; - } - - template - bool get_edge_exists(const EdgeProxy& edge_proxy) { - return edge_proxy; - } - template - EdgeProxy& set_edge_exists(EdgeProxy& edge_proxy, bool flag) { - edge_proxy = flag; - return edge_proxy; // just to avoid never used warning - } - - - - template - const EdgeProperty& - get_property(const std::pair& stored_edge) { - return stored_edge.second; - } - template - EdgeProperty& - get_property(std::pair& stored_edge) { - return stored_edge.second; - } - - template - inline void - set_property(std::pair& stored_edge, - const EdgeProperty& ep) { - stored_edge.second = ep; - } - - inline const no_property& get_property(const char&) { - static no_property s_prop; - return s_prop; - } - inline no_property& get_property(char&) { - static no_property s_prop; - return s_prop; - } - template - inline void - set_property(EdgeProxy, const EdgeProperty&) { } - - //======================================================================= - // Directed Out Edge Iterator - - template - struct dir_adj_matrix_out_edge_iter_policies - : public default_iterator_policies - { - dir_adj_matrix_out_edge_iter_policies() { } - dir_adj_matrix_out_edge_iter_policies(const VertexDescriptor& src, - const VerticesSizeType& n) - : m_src(src), m_targ(0), m_n(n) { } - - template - void increment(Iter& i) { - ++i.base(); - ++m_targ; - } - template - inline typename Iter::value_type - dereference(const Iter& i) const - { - typedef typename Iter::value_type EdgeDescriptor; - return EdgeDescriptor(get_edge_exists(*i.base()), m_src, m_targ, - &get_property(*i.base())); - } - VertexDescriptor m_src, m_targ; - VerticesSizeType m_n; - }; - - //======================================================================= - // Undirected Out Edge Iterator - - template - struct undir_adj_matrix_out_edge_iter_policies - { - undir_adj_matrix_out_edge_iter_policies() { } - undir_adj_matrix_out_edge_iter_policies(const VertexDescriptor& src, - const VerticesSizeType& n) - : m_src(src), m_inc(src), m_targ(0), m_n(n) { } - - void initialize(MatrixIter&) const{ } - - template - void increment(Iter& i) { - if (m_targ < m_src) // first half - ++i.base(); - else { // second half - ++m_inc; - i.base() += m_inc; - } - ++m_targ; - } - template - inline typename Iter::value_type - dereference(const Iter& i) const - { - typedef typename Iter::value_type EdgeDescriptor; - return EdgeDescriptor(get_edge_exists(*i.base()), m_src, m_targ, - &get_property(*i.base())); - } - template - bool equal(const Iter& x, const Iter& y) const - { return x.base() == y.base(); } - - VertexDescriptor m_src, m_inc, m_targ; - VerticesSizeType m_n; - }; - - //======================================================================= - // Edge Iterator - - template - struct adj_matrix_edge_iter_policies - : public default_iterator_policies - { - adj_matrix_edge_iter_policies() { } - adj_matrix_edge_iter_policies(const MatrixIter& start, - const VerticesSizeType& n) - : m_start(start), m_src(0), m_targ(0), m_n(n) { } - - void initialize(MatrixIter&) const{ } - - template - void increment(Iter& i) { - increment_dispatch(i.base(), Directed()); - } - void increment_dispatch(MatrixIter& i, directedS) { - ++i; - if (m_targ == m_n - 1) { - m_targ = 0; - ++m_src; - } else - ++m_targ; - } - void increment_dispatch(MatrixIter& i, undirectedS) { - ++i; - if (m_targ == m_src) { - m_targ = 0; - ++m_src; - } else - ++m_targ; - } - - template - inline typename Iter::value_type - dereference(const Iter& i) const - { - typedef typename Iter::value_type EdgeDescriptor; - return EdgeDescriptor(get_edge_exists(*i.base()), m_src, m_targ, - &get_property(*i.base())); - } - - MatrixIter m_start; - VerticesSizeType m_src, m_targ, m_n; - }; - - } // namespace detail - - //========================================================================= - // Adjacency Matrix Traits - template - class adjacency_matrix_traits { - typedef typename Directed::is_bidir_t is_bidir; - typedef typename Directed::is_directed_t is_directed; - public: - typedef typename boost::ct_if_t::type - >::type directed_category; - - typedef disallow_parallel_edge_tag edge_parallel_category; - - typedef std::size_t vertex_descriptor; - - typedef detail::matrix_edge_desc_impl edge_descriptor; - }; - - struct adjacency_matrix_class_tag { }; - - struct adj_matrix_traversal_tag : - public virtual adjacency_matrix_tag, - public virtual vertex_list_graph_tag, - public virtual incidence_graph_tag, - public virtual adjacency_graph_tag, - public virtual edge_list_graph_tag { }; - - //========================================================================= - // Adjacency Matrix Class - template > - class adjacency_matrix { - typedef adjacency_matrix self; - typedef adjacency_matrix_traits Traits; - public: // should be private - typedef typename ct_if_t::type, - std::pair, char>::type StoredEdge; -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - typedef std::vector Matrix; -#else - // This causes internal compiler error for MSVC - typedef typename Allocator::template rebind::other Alloc; - typedef std::vector Matrix; -#endif - typedef typename Matrix::iterator MatrixIter; - typedef typename Matrix::size_type size_type; - public: - // Graph concept required types - typedef typename Traits::vertex_descriptor vertex_descriptor; - typedef typename Traits::edge_descriptor edge_descriptor; - typedef typename Traits::directed_category directed_category; - typedef typename Traits::edge_parallel_category edge_parallel_category; - typedef adj_matrix_traversal_tag traversal_category; - - //private: if friends worked, these would be private - - typedef detail::dir_adj_matrix_out_edge_iter_policies< - vertex_descriptor, MatrixIter, size_type> DirOutEdgePolicies; - - typedef detail::undir_adj_matrix_out_edge_iter_policies< - vertex_descriptor, MatrixIter, size_type> UnDirOutEdgePolicies; - - typedef typename ct_if_t::type OutEdgePolicies; - typedef iterator_adaptor unfiltered_out_edge_iter; - - typedef detail::adj_matrix_edge_iter_policies< - Directed, MatrixIter, size_type> EdgePolicies; - typedef iterator_adaptor unfiltered_edge_iter; - - typedef filter_iterator_generator - OutEdgeFilterGen; - typedef typename OutEdgeFilterGen::type::policies_type - FilteredOutEdgePolicy; - - typedef filter_iterator_generator EdgeFilterGen; - typedef typename EdgeFilterGen::type::policies_type FilteredEdgePolicy; - public: - - // IncidenceGraph concept required types - typedef typename OutEdgeFilterGen::type out_edge_iterator; - - typedef size_type degree_size_type; - - // BidirectionalGraph required types - typedef void in_edge_iterator; - - // AdjacencyGraph required types - typedef typename adjacency_iterator_generator::type adjacency_iterator; - - // VertexListGraph required types - typedef size_type vertices_size_type; - typedef integer_range VertexList; - typedef typename VertexList::iterator vertex_iterator; - - // EdgeListGrpah required types - typedef size_type edges_size_type; - typedef typename EdgeFilterGen::type edge_iterator; - - // PropertyGraph required types - typedef EdgeProperty edge_property_type; - typedef VertexProperty vertex_property_type; - typedef adjacency_matrix_class_tag graph_tag; - - // Constructor required by MutableGraph - adjacency_matrix(vertices_size_type n_vertices) - : m_matrix(Directed::is_directed ? - (n_vertices * n_vertices) - : (n_vertices * (n_vertices + 1) / 2)), - m_vertex_set(0, n_vertices), - m_vertex_properties(n_vertices) { } - - - //private: if friends worked, these would be private - - typename Matrix::const_reference - get_edge(vertex_descriptor u, vertex_descriptor v) const { - if (Directed::is_directed) - return m_matrix[u * m_vertex_set.size() + v]; - else { - if (v > u) - std::swap(u, v); - return m_matrix[u * (u - 1)/2 + v]; - } - } - typename Matrix::reference - get_edge(vertex_descriptor u, vertex_descriptor v) { - if (Directed::is_directed) - return m_matrix[u * m_vertex_set.size() + v]; - else { - if (v > u) - std::swap(u, v); - return m_matrix[u * (u + 1)/2 + v]; - } - } - - Matrix m_matrix; - VertexList m_vertex_set; - std::vector m_vertex_properties; - }; - - //========================================================================= - // Functions required by the AdjacencyMatrix concept - - template - std::pair::edge_descriptor, - bool> - edge(typename adjacency_matrix::vertex_descriptor u, - typename adjacency_matrix::vertex_descriptor v, - const adjacency_matrix& g) - { - bool exists = detail::get_edge_exists(g.get_edge(u,v)); - typename adjacency_matrix::edge_descriptor - e(exists, u, v, &detail::get_property(g.get_edge(u,v))); - return std::make_pair(e, exists); - } - - //========================================================================= - // Functions required by the IncidenceGraph concept - - // O(1) - template - std::pair::out_edge_iterator, - typename adjacency_matrix::out_edge_iterator> - out_edges - (typename adjacency_matrix::vertex_descriptor u, - const adjacency_matrix& g_) - { - typedef adjacency_matrix Graph; - Graph& g = const_cast(g_); - typename Graph::vertices_size_type offset = u * g.m_vertex_set.size(); - typename Graph::MatrixIter f = g.m_matrix.begin() + offset; - typename Graph::MatrixIter l = f + g.m_vertex_set.size(); - typename Graph::OutEdgePolicies oep(u, g.m_vertex_set.size()); - typename Graph::unfiltered_out_edge_iter first(f, oep), last(l, oep); - detail::does_edge_exist pred; - typename Graph::FilteredOutEdgePolicy fp(pred, last); - typedef typename Graph::out_edge_iterator out_edge_iterator; - return std::make_pair(out_edge_iterator(first, fp), - out_edge_iterator(last, fp)); - } - - // O(1) - template - std::pair< - typename adjacency_matrix::out_edge_iterator, - typename adjacency_matrix::out_edge_iterator> - out_edges - (typename adjacency_matrix::vertex_descriptor u, - const adjacency_matrix& g_) - { - typedef adjacency_matrix Graph; - Graph& g = const_cast(g_); - typename Graph::vertices_size_type offset = u * (u + 1) / 2; - typename Graph::MatrixIter f = g.m_matrix.begin() + offset; - typename Graph::MatrixIter l = g.m_matrix.end() + u; - typename Graph::OutEdgePolicies oep(u, g.m_vertex_set.size()); - typename Graph::unfiltered_out_edge_iter first(f, oep), last(l, oep); - detail::does_edge_exist pred; - typename Graph::FilteredOutEdgePolicy fp(pred, last); - typedef typename Graph::out_edge_iterator out_edge_iterator; - return std::make_pair(out_edge_iterator(first, fp), - out_edge_iterator(last, fp)); - } - - // O(N) - template - typename adjacency_matrix::degree_size_type - out_degree(typename adjacency_matrix::vertex_descriptor u, - const adjacency_matrix& g) - { - typename adjacency_matrix::degree_size_type n = 0; - typename adjacency_matrix::out_edge_iterator f, l; - for (tie(f, l) = out_edges(u, g); f != l; ++f) - ++n; - return n; - } - - // O(1) - template - typename adjacency_matrix::vertex_descriptor - source(const detail::matrix_edge_desc_impl& e, - const adjacency_matrix&) - { - return e.m_source; - } - - // O(1) - template - typename adjacency_matrix::vertex_descriptor - target(const detail::matrix_edge_desc_impl& e, - const adjacency_matrix&) - { - return e.m_target; - } - - //========================================================================= - // Functions required by the AdjacencyGraph concept - - template - std::pair::adjacency_iterator, - typename adjacency_matrix::adjacency_iterator> - adjacent_vertices - (typename adjacency_matrix::vertex_descriptor u, - const adjacency_matrix& g_) - { - typedef adjacency_matrix Graph; - const Graph& cg = static_cast(g_); - Graph& g = const_cast(cg); - typedef typename Graph::adjacency_iterator adjacency_iterator; - typename Graph::out_edge_iterator first, last; - boost::tie(first, last) = out_edges(u, g); - return std::make_pair(adjacency_iterator(first, &g), - adjacency_iterator(last, &g)); - } - - //========================================================================= - // Functions required by the VertexListGraph concept - - template - std::pair::vertex_iterator, - typename adjacency_matrix::vertex_iterator> - vertices(const adjacency_matrix& g_) { - typedef adjacency_matrix Graph; - Graph& g = const_cast(g_); - return std::make_pair(g.m_vertex_set.begin(), g.m_vertex_set.end()); - } - - template - typename adjacency_matrix::vertices_size_type - num_vertices(const adjacency_matrix& g) { - return g.m_vertex_set.size(); - } - - //========================================================================= - // Functions required by the EdgeListGraph concept - - template - std::pair::edge_iterator, - typename adjacency_matrix::edge_iterator> - edges(const adjacency_matrix& g_) - { - typedef adjacency_matrix Graph; - Graph& g = const_cast(g_); - typename Graph::EdgePolicies ep(g.m_matrix.begin(), - g.m_vertex_set.size()); - typename Graph::unfiltered_edge_iter - first(g.m_matrix.begin(), ep), - last(g.m_matrix.end(), ep); - detail::does_edge_exist pred; - typename Graph::FilteredEdgePolicy fp(pred, last); - typedef typename Graph::edge_iterator edge_iterator; - return std::make_pair(edge_iterator(first, fp), - edge_iterator(last, fp)); - } - - template - typename adjacency_matrix::edges_size_type - num_edges(const adjacency_matrix& g) - { - typedef adjacency_matrix Graph; - typename Graph::edges_size_type num_e = 0; - typename Graph::vertex_iterator vi, vi_end; - for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) - num_e += out_degree(*vi, g); - return num_e; - } - - //========================================================================= - // Functions required by the MutableGraph concept - - // O(1) - template - std::pair::edge_descriptor, bool> - add_edge(typename adjacency_matrix::vertex_descriptor u, - typename adjacency_matrix::vertex_descriptor v, - const EP& ep, - adjacency_matrix& g) - { - typedef typename adjacency_matrix::edge_descriptor - edge_descriptor; - if (detail::get_edge_exists(g.get_edge(u,v)) == false) { - detail::set_property(g.get_edge(u,v), ep); - detail::set_edge_exists(g.get_edge(u,v), true); - return std::make_pair - (edge_descriptor(true, u, v, &detail::get_property(g.get_edge(u,v))), - true); - } else - return std::make_pair - (edge_descriptor(true, u, v, &detail::get_property(g.get_edge(u,v))), - false); - } - // O(1) - template - std::pair::edge_descriptor, bool> - add_edge(typename adjacency_matrix::vertex_descriptor u, - typename adjacency_matrix::vertex_descriptor v, - adjacency_matrix& g) - { - EP ep; - return add_edge(u, v, ep, g); - } - - // O(1) - template - void - remove_edge(typename adjacency_matrix::vertex_descriptor u, - typename adjacency_matrix::vertex_descriptor v, - adjacency_matrix& g) - { - detail::set_edge_exists(g.get_edge(u,v), false); - } - - // O(1) - template - void - remove_edge(typename adjacency_matrix::edge_descriptor e, - adjacency_matrix& g) - { - remove_edge(source(e, g), target(e, g), g); - } - - - template - inline typename adjacency_matrix::vertex_descriptor - add_vertex(adjacency_matrix& g) { - // UNDER CONSTRUCTION - assert(false); - return *vertices(g).first; - } - - template - inline typename adjacency_matrix::vertex_descriptor - add_vertex(const VP& vp, adjacency_matrix& g) { - // UNDER CONSTRUCTION - assert(false); - return *vertices(g).first; - } - - template - inline void - remove_vertex(typename adjacency_matrix::vertex_descriptor u, - adjacency_matrix& g) - { - // UNDER CONSTRUCTION - assert(false); - } - - // O(V) - template - void - clear_vertex - (typename adjacency_matrix::vertex_descriptor u, - adjacency_matrix& g) - { - typename adjacency_matrix::vertex_iterator - vi, vi_end; - for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) - remove_edge(u, *vi, g); - for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) - remove_edge(*vi, u, g); - } - - // O(V) - template - void - clear_vertex - (typename adjacency_matrix::vertex_descriptor u, - adjacency_matrix& g) - { - typename adjacency_matrix::vertex_iterator - vi, vi_end; - for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) - remove_edge(u, *vi, g); - } - - //========================================================================= - // Vertex Property Map - - template - class adj_matrix_vertex_property_map - : public put_get_helper > - { - public: - typedef T value_type; - typedef R reference; - typedef Vertex key_type; - typedef boost::lvalue_property_map_tag category; - adj_matrix_vertex_property_map() { } - adj_matrix_vertex_property_map(GraphPtr g) : m_g(g) { } - inline reference operator[](key_type v) const { - return get_property_value(m_g->m_vertex_properties[v], Tag()); - } - GraphPtr m_g; - }; - - template - struct adj_matrix_vertex_id_map - : public boost::put_get_helper > - { - typedef Vertex value_type; - typedef Vertex reference; - typedef Vertex key_type; - typedef boost::readable_property_map_tag category; - adj_matrix_vertex_id_map() { } - template - inline adj_matrix_vertex_id_map(const Graph&) { } - inline value_type operator[](key_type v) const { return v; } - }; - - namespace detail { - - struct adj_matrix_any_vertex_pa { - template - struct bind_ { - typedef typename property_value::type Value; - typedef typename boost::graph_traits::vertex_descriptor Vertex; - - typedef adj_matrix_vertex_property_map type; - typedef adj_matrix_vertex_property_map const_type; - }; - }; - struct adj_matrix_id_vertex_pa { - template - struct bind_ { - typedef typename Graph::vertex_descriptor Vertex; - typedef adj_matrix_vertex_id_map type; - typedef adj_matrix_vertex_id_map const_type; - }; - }; - - template - struct adj_matrix_choose_vertex_pa_helper { - typedef adj_matrix_any_vertex_pa type; - }; - template <> - struct adj_matrix_choose_vertex_pa_helper { - typedef adj_matrix_id_vertex_pa type; - }; - - template - struct adj_matrix_choose_vertex_pa { - typedef typename adj_matrix_choose_vertex_pa_helper::type Helper; - typedef typename Helper::template bind_ Bind; - typedef typename Bind::type type; - typedef typename Bind::const_type const_type; - }; - - struct adj_matrix_vertex_property_selector { - template - struct bind_ { - typedef adj_matrix_choose_vertex_pa Choice; - typedef typename Choice::type type; - typedef typename Choice::const_type const_type; - }; - }; - - } // namespace detail - - template <> - struct vertex_property_selector { - typedef detail::adj_matrix_vertex_property_selector type; - }; - - //========================================================================= - // Edge Property Map - - - template - class adj_matrix_edge_property_map - : public put_get_helper > - { - public: - typedef T value_type; - typedef R reference; - typedef detail::matrix_edge_desc_impl key_type; - typedef boost::lvalue_property_map_tag category; - inline reference operator[](key_type e) const { - Property& p = *(Property*)e.get_property(); - return get_property_value(p, Tag()); - } - }; - struct adj_matrix_edge_property_selector { - template - struct bind_ { - typedef typename property_value::type T; - typedef typename Graph::vertex_descriptor Vertex; - typedef adj_matrix_edge_property_map type; - typedef adj_matrix_edge_property_map const_type; - }; - }; - template <> - struct edge_property_selector { - typedef adj_matrix_edge_property_selector type; - }; - - //========================================================================= - // Functions required by PropertyGraph - - namespace detail { - - template - typename boost::property_map, - Property>::type - get_dispatch(adjacency_matrix& g, Property, - vertex_property_tag) - { - typedef adjacency_matrix Graph; - typedef typename boost::property_map, - Property>::type PA; - return PA(&g); - } - template - typename boost::property_map, - Property>::type - get_dispatch(adjacency_matrix& g, Property, - edge_property_tag) - { - typedef typename boost::property_map, - Property>::type PA; - return PA(); - } - template - typename boost::property_map, - Property>::const_type - get_dispatch(const adjacency_matrix& g, Property, - vertex_property_tag) - { - typedef adjacency_matrix Graph; - typedef typename boost::property_map, - Property>::const_type PA; - return PA(&g); - } - template - typename boost::property_map, - Property>::const_type - get_dispatch(const adjacency_matrix& g, Property, - edge_property_tag) - { - typedef typename boost::property_map, - Property>::const_type PA; - return PA(); - } - - } // namespace detail - - template - inline - typename property_map, Property>::type - get(Property p, adjacency_matrix& g) - { - typedef typename property_kind::type Kind; - return detail::get_dispatch(g, p, Kind()); - } - - template - inline - typename property_map, Property>::const_type - get(Property p, const adjacency_matrix& g) - { - typedef typename property_kind::type Kind; - return detail::get_dispatch(g, p, Kind()); - } - - template - inline - typename property_traits< - typename property_map, Property>::const_type - >::value_type - get(Property p, const adjacency_matrix& g, - const Key& key) - { - return get(get(p, g), key); - } - - template - inline void - put(Property p, adjacency_matrix& g, - const Key& key, const Value& value) - { - typedef adjacency_matrix Graph; - typedef typename boost::property_map::type Map; - Map pmap = get(p, g); - put(pmap, key, value); - } - - //========================================================================= - // Other Functions - - template - typename adjacency_matrix::vertex_descriptor - vertex(typename adjacency_matrix::vertices_size_type n, - const adjacency_matrix& g) - { - return n; - } - - -} // namespace boost - -#endif // BOOST_ADJACENCY_MATRIX_HPP diff --git a/sdk/include/boost/graph/bandwidth.hpp b/sdk/include/boost/graph/bandwidth.hpp deleted file mode 100644 index 885bf4c4043..00000000000 --- a/sdk/include/boost/graph/bandwidth.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) Jeremy Siek 2001, Marc Wintermantel 2002 -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appears in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. Silicon Graphics makes no -// representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied warranty. - -#ifndef BOOST_GRAPH_BANDWIDTH_HPP -#define BOOST_GRAPH_BANDWIDTH_HPP - -#include -#include - -namespace boost { - - template - typename graph_traits::vertices_size_type - ith_bandwidth(typename graph_traits::vertex_descriptor i, - const Graph& g, - VertexIndexMap index) - { - typedef typename graph_traits::vertices_size_type size_type; - size_type b = 0; - typename graph_traits::out_edge_iterator e, end; - for (tie(e, end) = out_edges(i, g); e != end; ++e) { - int f_i = get(index, i); - int f_j = get(index, target(*e, g)); - using namespace std; // to call abs() unqualified - if(f_i > f_j) - b = std::max(b, size_type(f_i - f_j)); - } - return b; - } - - template - typename graph_traits::vertices_size_type - ith_bandwidth(typename graph_traits::vertex_descriptor i, - const Graph& g) - { - return ith_bandwidth(i, g, get(vertex_index, g)); - } - - template - typename graph_traits::vertices_size_type - bandwidth(const Graph& g, VertexIndexMap index) - { - typename graph_traits::vertices_size_type b = 0; - typename graph_traits::vertex_iterator i, end; - for (tie(i, end) = vertices(g); i != end; ++i) - b = std::max(b, ith_bandwidth(*i, g, index)); - return b; - } - - template - typename graph_traits::vertices_size_type - bandwidth(const Graph& g) - { - return bandwidth(g, get(vertex_index, g)); - } - - template - typename graph_traits::vertices_size_type - edgesum(const Graph& g, VertexIndexMap index_map) - { - typedef typename graph_traits::vertices_size_type size_type; - typedef typename detail::numeric_traits::difference_type diff_t; - size_type sum = 0; - typename graph_traits::edge_iterator i, end; - for (tie(i, end) = edges(g); i != end; ++i) { - diff_t f_u = get(index_map, source(*i, g)); - diff_t f_v = get(index_map, target(*i, g)); - using namespace std; // to call abs() unqualified - sum += abs(f_u - f_v); - } - return sum; - } - -} // namespace boost - -#endif // BOOST_GRAPH_BANDWIDTH_HPP diff --git a/sdk/include/boost/graph/bellman_ford_shortest_paths.hpp b/sdk/include/boost/graph/bellman_ford_shortest_paths.hpp deleted file mode 100644 index 174f38b8127..00000000000 --- a/sdk/include/boost/graph/bellman_ford_shortest_paths.hpp +++ /dev/null @@ -1,199 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -/* - This file implements the function - - template - bool bellman_ford_shortest_paths(EdgeListGraph& g, Size N, - const bgl_named_params& params) - - */ - - -#ifndef BOOST_GRAPH_BELLMAN_FORD_SHORTEST_PATHS_HPP -#define BOOST_GRAPH_BELLMAN_FORD_SHORTEST_PATHS_HPP - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - template - struct BellmanFordVisitorConcept { - void constraints() { - function_requires< CopyConstructibleConcept >(); - vis.examine_edge(e, g); - vis.edge_relaxed(e, g); - vis.edge_not_relaxed(e, g); - vis.edge_minimized(e, g); - vis.edge_not_minimized(e, g); - } - Visitor vis; - Graph g; - typename graph_traits::edge_descriptor e; - }; - - template - class bellman_visitor { - public: - bellman_visitor() { } - bellman_visitor(Visitors vis) : m_vis(vis) { } - - template - void examine_edge(Edge u, Graph& g) { - invoke_visitors(m_vis, u, g, on_examine_edge()); - } - template - void edge_relaxed(Edge u, Graph& g) { - invoke_visitors(m_vis, u, g, on_edge_relaxed()); - } - template - void edge_not_relaxed(Edge u, Graph& g) { - invoke_visitors(m_vis, u, g, on_edge_not_relaxed()); - } - template - void edge_minimized(Edge u, Graph& g) { - invoke_visitors(m_vis, u, g, on_edge_minimized()); - } - template - void edge_not_minimized(Edge u, Graph& g) { - invoke_visitors(m_vis, u, g, on_edge_not_minimized()); - } - protected: - Visitors m_vis; - }; - template - bellman_visitor - make_bellman_visitor(Visitors vis) { - return bellman_visitor(vis); - } - typedef bellman_visitor<> default_bellman_visitor; - - template - bool bellman_ford_shortest_paths(EdgeListGraph& g, Size N, - WeightMap weight, - PredecessorMap pred, - DistanceMap distance, - BinaryFunction combine, - BinaryPredicate compare, - BellmanFordVisitor v) - { - function_requires >(); - typedef graph_traits GTraits; - typedef typename GTraits::edge_descriptor Edge; - typedef typename GTraits::vertex_descriptor Vertex; - function_requires >(); - function_requires >(); - typedef typename property_traits::value_type D_value; - typedef typename property_traits::value_type W_value; - - typename GTraits::edge_iterator i, end; - - for (Size k = 0; k < N; ++k) { - bool at_least_one_edge_relaxed = false; - for (tie(i, end) = edges(g); i != end; ++i) { - v.examine_edge(*i, g); - if (relax(*i, g, weight, pred, distance, combine, compare)) { - at_least_one_edge_relaxed = true; - v.edge_relaxed(*i, g); - } else - v.edge_not_relaxed(*i, g); - } - if (!at_least_one_edge_relaxed) - break; - } - - for (tie(i, end) = edges(g); i != end; ++i) - if (compare(combine(get(distance, source(*i, g)), - get(weight, *i)), - get(distance, target(*i,g)))) - { - v.edge_not_minimized(*i, g); - return false; - } else - v.edge_minimized(*i, g); - - return true; - } - - namespace detail { - - template - bool bellman_dispatch(EdgeListGraph& g, Size N, - WeightMap weight, DistanceMap distance, - const bgl_named_params& params) - { - typedef typename property_traits::value_type D; - bellman_visitor<> null_vis; - dummy_property_map dummy_pred; - return bellman_ford_shortest_paths - (g, N, weight, - choose_param(get_param(params, vertex_predecessor), dummy_pred), - distance, - choose_param(get_param(params, distance_combine_t()), - closed_plus()), - choose_param(get_param(params, distance_compare_t()), - std::less()), - choose_param(get_param(params, graph_visitor), - null_vis) - ); - } - - } // namespace detail - - template - bool bellman_ford_shortest_paths - (EdgeListGraph& g, Size N, - const bgl_named_params& params) - { - return detail::bellman_dispatch - (g, N, - choose_const_pmap(get_param(params, edge_weight), g, edge_weight), - choose_pmap(get_param(params, vertex_distance), g, vertex_distance), - params); - } - - template - bool bellman_ford_shortest_paths(EdgeListGraph& g, Size N) - { - bgl_named_params params(0); - return bellman_ford_shortest_paths(g, N, params); - } - -} // namespace boost - -#endif // BOOST_GRAPH_BELLMAN_FORD_SHORTEST_PATHS_HPP diff --git a/sdk/include/boost/graph/biconnected_components.hpp b/sdk/include/boost/graph/biconnected_components.hpp deleted file mode 100644 index 1fc279d13e4..00000000000 --- a/sdk/include/boost/graph/biconnected_components.hpp +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (c) Jeremy Siek 2001 -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appears in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. Silicon Graphics makes no -// representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied warranty. - -// NOTE: this final is generated by libs/graph/doc/biconnected_components.w - -#ifndef BOOST_GRAPH_BICONNECTED_COMPONENTS_HPP -#define BOOST_GRAPH_BICONNECTED_COMPONENTS_HPP - -#include -#include -#include -#include -#include - -namespace boost -{ - namespace detail - { - template < typename Graph, typename ComponentMap, - typename DiscoverTimeMap, typename LowPointMap, typename Stack > - void biconnect(typename graph_traits < Graph >::vertex_descriptor v, - typename graph_traits < Graph >::vertex_descriptor u, - bool at_top, - const Graph & g, - ComponentMap comp, - std::size_t & c, - DiscoverTimeMap d, - std::size_t & dfs_time, LowPointMap lowpt, Stack & S) - { - typedef typename graph_traits < Graph >::vertex_descriptor vertex_t; - typedef typename property_traits < DiscoverTimeMap >::value_type D; - D infinity = std::numeric_limits < D >::max(); - put(d, v, ++dfs_time); - put(lowpt, v, get(d, v)); - typename graph_traits < Graph >::out_edge_iterator ei, ei_end; - for (tie(ei, ei_end) = out_edges(v, g); ei != ei_end; ++ei) - { - vertex_t w = target(*ei, g); - if (get(d, w) == infinity) - { - S.push(*ei); - biconnect(w, v, false, g, comp, c, d, dfs_time, lowpt, S); - put(lowpt, v, std::min(get(lowpt, v), get(lowpt, w))); - if (get(lowpt, w) >= get(d, v)) - { - while (d[source(S.top(), g)] >= d[w]) { - put(comp, S.top(), c); - S.pop(); - } - put(comp, S.top(), c); - S.pop(); - ++c; - - } - } else if (get(d, w) < get(d, v) && (!at_top && w != u)) - { - S.push(*ei); - put(lowpt, v, std::min(get(lowpt, v), get(d, w))); - } - } - } - - } - - template < typename Graph, typename ComponentMap, - typename DiscoverTimeMap, typename LowPointMap > - void biconnected_components - (typename graph_traits < Graph >::vertex_descriptor v, - typename graph_traits < Graph >::vertex_descriptor u, - const Graph & g, - ComponentMap comp, - std::size_t & num_components, - DiscoverTimeMap discover_time, LowPointMap lowpt) - { - typedef graph_traits < Graph >::vertex_descriptor vertex_t; - typedef graph_traits < Graph >::edge_descriptor edge_t; - function_requires < VertexListGraphConcept < Graph > >(); - function_requires < IncidenceGraphConcept < Graph > >(); - function_requires < WritablePropertyMapConcept < ComponentMap, - edge_t > >(); - function_requires < ReadWritePropertyMapConcept < DiscoverTimeMap, - vertex_t > >(); - function_requires < ReadWritePropertyMapConcept < LowPointMap, - vertex_t > >(); - - typedef typename property_traits < DiscoverTimeMap >::value_type D; - num_components = 0; - std::size_t dfs_time = 0; - std::stack < edge_t > S; - typename graph_traits < Graph >::vertex_iterator wi, wi_end; - std::size_t infinity = std::numeric_limits < std::size_t >::max(); - for (tie(wi, wi_end) = vertices(g); wi != wi_end; ++wi) - put(discover_time, *wi, infinity); - - for (tie(wi, wi_end) = vertices(g); wi != wi_end; ++wi) - if (get(discover_time, *wi) == std::numeric_limits < D >::max()) - detail::biconnect(*wi, *wi, true, - g, comp, num_components, - discover_time, dfs_time, lowpt, S); - - } - -} // namespace boost - -#endif /* BOOST_GRAPH_BICONNECTED_COMPONENTS_HPP */ diff --git a/sdk/include/boost/graph/breadth_first_search.hpp b/sdk/include/boost/graph/breadth_first_search.hpp deleted file mode 100644 index 6feb6eebc89..00000000000 --- a/sdk/include/boost/graph/breadth_first_search.hpp +++ /dev/null @@ -1,298 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_BREADTH_FIRST_SEARCH_HPP -#define BOOST_GRAPH_BREADTH_FIRST_SEARCH_HPP - -/* - Breadth First Search Algorithm (Cormen, Leiserson, and Rivest p. 470) -*/ -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - template - struct BFSVisitorConcept { - void constraints() { - function_requires< CopyConstructibleConcept >(); - vis.initialize_vertex(u, g); - vis.discover_vertex(u, g); - vis.examine_vertex(u, g); - vis.examine_edge(e, g); - vis.tree_edge(e, g); - vis.non_tree_edge(e, g); - vis.gray_target(e, g); - vis.black_target(e, g); - vis.finish_vertex(u, g); - } - Visitor vis; - Graph g; - typename graph_traits::vertex_descriptor u; - typename graph_traits::edge_descriptor e; - }; - - - template - void breadth_first_visit - (const IncidenceGraph& g, - typename graph_traits::vertex_descriptor s, - Buffer& Q, BFSVisitor vis, ColorMap color) - { - function_requires< IncidenceGraphConcept >(); - typedef graph_traits GTraits; - typedef typename GTraits::vertex_descriptor Vertex; - typedef typename GTraits::edge_descriptor Edge; - function_requires< BFSVisitorConcept >(); - function_requires< ReadWritePropertyMapConcept >(); - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - typename GTraits::out_edge_iterator ei, ei_end; - - put(color, s, Color::gray()); vis.discover_vertex(s, g); - Q.push(s); - while (! Q.empty()) { - Vertex u = Q.top(); Q.pop(); vis.examine_vertex(u, g); - for (tie(ei, ei_end) = out_edges(u, g); ei != ei_end; ++ei) { - Vertex v = target(*ei, g); vis.examine_edge(*ei, g); - ColorValue v_color = get(color, v); - if (v_color == Color::white()) { vis.tree_edge(*ei, g); - put(color, v, Color::gray()); vis.discover_vertex(v, g); - Q.push(v); - } else { vis.non_tree_edge(*ei, g); - if (v_color == Color::gray()) vis.gray_target(*ei, g); - else vis.black_target(*ei, g); - } - } // end for - put(color, u, Color::black()); vis.finish_vertex(u, g); - } // end while - } // breadth_first_visit - - - template - void breadth_first_search - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - Buffer& Q, BFSVisitor vis, ColorMap color) - { - // Initialization - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - typename boost::graph_traits::vertex_iterator i, i_end; - for (tie(i, i_end) = vertices(g); i != i_end; ++i) { - put(color, *i, Color::white()); - vis.initialize_vertex(*i, g); - } - breadth_first_visit(g, s, Q, vis, color); - } - - - template - class bfs_visitor { - public: - bfs_visitor() { } - bfs_visitor(Visitors vis) : m_vis(vis) { } - - template - void initialize_vertex(Vertex u, Graph& g) { - invoke_visitors(m_vis, u, g, on_initialize_vertex()); - } - template - void discover_vertex(Vertex u, Graph& g) { - invoke_visitors(m_vis, u, g, on_discover_vertex()); - } - template - void examine_vertex(Vertex u, Graph& g) { - invoke_visitors(m_vis, u, g, on_examine_vertex()); - } - template - void examine_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_examine_edge()); - } - template - void tree_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_tree_edge()); - } - template - void non_tree_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_non_tree_edge()); - } - template - void gray_target(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_gray_target()); - } - template - void black_target(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_black_target()); - } - template - void finish_vertex(Vertex u, Graph& g) { - invoke_visitors(m_vis, u, g, on_finish_vertex()); - } - protected: - Visitors m_vis; - }; - template - bfs_visitor - make_bfs_visitor(Visitors vis) { - return bfs_visitor(vis); - } - typedef bfs_visitor<> default_bfs_visitor; - - - namespace detail { - - template - void bfs_helper - (VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - ColorMap color, - BFSVisitor vis, - const bgl_named_params& params) - { - typedef graph_traits Traits; - // Buffer default - typedef typename Traits::vertex_descriptor Vertex; - typedef boost::queue queue_t; - queue_t Q; - detail::wrap_ref Qref(Q); - breadth_first_search - (g, s, - choose_param(get_param(params, buffer_param_t()), Qref).ref, - vis, color); - } - - //------------------------------------------------------------------------- - // Choose between default color and color parameters. Using - // function dispatching so that we don't require vertex index if - // the color default is not being used. - - template - struct bfs_dispatch { - template - static void apply - (VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params, - ColorMap color) - { - bfs_helper - (g, s, color, - choose_param(get_param(params, graph_visitor), - make_bfs_visitor(null_visitor())), - params); - } - }; - - template <> - struct bfs_dispatch { - template - static void apply - (VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params, - detail::error_property_not_found) - { - std::vector color_vec(num_vertices(g)); - default_color_type c = white_color; - null_visitor null_vis; - - bfs_helper - (g, s, - make_iterator_property_map - (color_vec.begin(), - choose_const_pmap(get_param(params, vertex_index), - g, vertex_index), c), - choose_param(get_param(params, graph_visitor), - make_bfs_visitor(null_vis)), - params); - } - }; - - } // namespace detail - - - // Named Parameter Variant - template - void breadth_first_search - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params) - { - // The graph is passed by *const* reference so that graph adaptors - // (temporaries) can be passed into this function. However, the - // graph is not really const since we may write to property maps - // of the graph. - VertexListGraph& ng = const_cast(g); - typedef typename property_value< bgl_named_params, - vertex_color_t>::type C; - detail::bfs_dispatch::apply(ng, s, params, - get_param(params, vertex_color)); - } - - - // This version does not initialize colors, user has to. - - template - void breadth_first_visit - (const IncidenceGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params) - { - // The graph is passed by *const* reference so that graph adaptors - // (temporaries) can be passed into this function. However, the - // graph is not really const since we may write to property maps - // of the graph. - IncidenceGraph& ng = const_cast(g); - - typedef graph_traits Traits; - // Buffer default - typedef typename Traits::vertex_descriptor vertex_descriptor; - typedef boost::queue queue_t; - queue_t Q; - detail::wrap_ref Qref(Q); - - breadth_first_visit - (ng, s, - choose_param(get_param(params, buffer_param_t()), Qref).ref, - choose_param(get_param(params, graph_visitor), - make_bfs_visitor(null_visitor())), - choose_pmap(get_param(params, vertex_color), ng, vertex_color) - ); - } - -} // namespace boost - -#endif // BOOST_GRAPH_BREADTH_FIRST_SEARCH_HPP - diff --git a/sdk/include/boost/graph/connected_components.hpp b/sdk/include/boost/graph/connected_components.hpp deleted file mode 100644 index 6cb3b5bf31c..00000000000 --- a/sdk/include/boost/graph/connected_components.hpp +++ /dev/null @@ -1,113 +0,0 @@ -// -//======================================================================= -// Copyright 1997-2001 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_CONNECTED_COMPONENTS_HPP -#define BOOST_GRAPH_CONNECTED_COMPONENTS_HPP - -#include -#include -#include -#include - -#include - -namespace boost { - - namespace detail { - - // This visitor is used both in the connected_components algorithm - // and in the kosaraju strong components algorithm during the - // second DFS traversal. - template - class components_recorder : public dfs_visitor<> - { - typedef typename property_traits::value_type comp_type; - public: - components_recorder(ComponentsMap c, - comp_type& c_count) - : m_component(c), m_count(c_count) {} - - template - void start_vertex(Vertex, Graph&) { - if (m_count == std::numeric_limits::max()) - m_count = 0; // start counting components at zero - else - ++m_count; - } - template - void discover_vertex(Vertex u, Graph&) { - put(m_component, u, m_count); - } - protected: - ComponentsMap m_component; - comp_type& m_count; - }; - - } // namespace detail - - // This function computes the connected components of an undirected - // graph using a single application of depth first search. - - template - inline typename property_traits::value_type - connected_components(const Graph& g, ComponentMap c, - const bgl_named_params& params) - { - typedef typename graph_traits::vertex_descriptor Vertex; - function_requires< WritablePropertyMapConcept >(); - typedef typename boost::graph_traits::directed_category directed; - BOOST_STATIC_ASSERT((boost::is_same::value)); - - typedef typename property_traits::value_type comp_type; - // c_count initialized to "nil" (with nil represented by max()) - comp_type c_count(std::numeric_limits::max()); - detail::components_recorder vis(c, c_count); - depth_first_search(g, params.visitor(vis)); - return c_count + 1; - } - - template - inline typename property_traits::value_type - connected_components(const Graph& g, ComponentMap c) - { - typedef typename graph_traits::vertex_descriptor Vertex; - function_requires< WritablePropertyMapConcept >(); - typedef typename boost::graph_traits::directed_category directed; - BOOST_STATIC_ASSERT((boost::is_same::value)); - - typedef typename property_traits::value_type comp_type; - // c_count initialized to "nil" (with nil represented by max()) - comp_type c_count(std::numeric_limits::max()); - detail::components_recorder vis(c, c_count); - depth_first_search(g, visitor(vis)); - return c_count + 1; - } - - -} // namespace boost - - -#endif // BOOST_GRAPH_CONNECTED_COMPONENTS_HPP diff --git a/sdk/include/boost/graph/copy.hpp b/sdk/include/boost/graph/copy.hpp deleted file mode 100644 index db5811b7c1d..00000000000 --- a/sdk/include/boost/graph/copy.hpp +++ /dev/null @@ -1,466 +0,0 @@ -// -//======================================================================= -// Copyright 1997-2001 University of Notre Dame. -// Authors: Jeremy G. Siek, Lie-Quan Lee, Andrew Lumsdaine -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -/* - This file implements the following functions: - - - template - void copy_graph(const VertexListGraph& g_in, MutableGraph& g_out) - - template - void copy_graph(const VertexListGraph& g_in, MutableGraph& g_out, - const bgl_named_params& params) - - - template - typename graph_traits::vertex_descriptor - copy_component(IncidenceGraph& g_in, - typename graph_traits::vertex_descriptor src, - MutableGraph& g_out) - - template - typename graph_traits::vertex_descriptor - copy_component(IncidenceGraph& g_in, - typename graph_traits::vertex_descriptor src, - MutableGraph& g_out, - const bgl_named_params& params) - */ - - -#ifndef BOOST_GRAPH_COPY_HPP -#define BOOST_GRAPH_COPY_HPP - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - namespace detail { - - // Default edge and vertex property copiers - - template - struct edge_copier { - edge_copier(const Graph1& g1, Graph2& g2) - : edge_all_map1(get(edge_all, g1)), - edge_all_map2(get(edge_all, g2)) { } - - template - void operator()(const Edge1& e1, Edge2& e2) const { - put(edge_all_map2, e2, get(edge_all_map1, e1)); - } - typename property_map::const_type edge_all_map1; - mutable typename property_map::type edge_all_map2; - }; - template - inline edge_copier - make_edge_copier(const Graph1& g1, Graph2& g2) - { - return edge_copier(g1, g2); - } - - template - struct vertex_copier { - vertex_copier(const Graph1& g1, Graph2& g2) - : vertex_all_map1(get(vertex_all, g1)), - vertex_all_map2(get(vertex_all, g2)) { } - - template - void operator()(const Vertex1& v1, Vertex2& v2) const { - put(vertex_all_map2, v2, get(vertex_all_map1, v1)); - } - typename property_map::const_type vertex_all_map1; - mutable typename property_map::type - vertex_all_map2; - }; - template - inline vertex_copier - make_vertex_copier(const Graph1& g1, Graph2& g2) - { - return vertex_copier(g1, g2); - } - - // Copy all the vertices and edges of graph g_in into graph g_out. - // The copy_vertex and copy_edge function objects control how vertex - // and edge properties are copied. - - template - struct copy_graph_impl { }; - - template <> struct copy_graph_impl<0> - { - template - static void apply(const Graph& g_in, MutableGraph& g_out, - CopyVertex copy_vertex, CopyEdge copy_edge, - Orig2CopyVertexIndexMap orig2copy, IndexMap) - { - typename graph_traits::vertex_iterator vi, vi_end; - for (tie(vi, vi_end) = vertices(g_in); vi != vi_end; ++vi) { - typename graph_traits::vertex_descriptor - new_v = add_vertex(g_out); - put(orig2copy, *vi, new_v); - copy_vertex(*vi, new_v); - } - typename graph_traits::edge_iterator ei, ei_end; - for (tie(ei, ei_end) = edges(g_in); ei != ei_end; ++ei) { - typename graph_traits::edge_descriptor new_e; - bool inserted; - tie(new_e, inserted) = add_edge(get(orig2copy, source(*ei, g_in)), - get(orig2copy, target(*ei, g_in)), - g_out); - copy_edge(*ei, new_e); - } - } - }; - - // for directed graphs - template <> struct copy_graph_impl<1> - { - template - static void apply(const Graph& g_in, MutableGraph& g_out, - CopyVertex copy_vertex, CopyEdge copy_edge, - Orig2CopyVertexIndexMap orig2copy, IndexMap) - { - typename graph_traits::vertex_iterator vi, vi_end; - for (tie(vi, vi_end) = vertices(g_in); vi != vi_end; ++vi) { - typename graph_traits::vertex_descriptor - new_v = add_vertex(g_out); - put(orig2copy, *vi, new_v); - copy_vertex(*vi, new_v); - } - for (tie(vi, vi_end) = vertices(g_in); vi != vi_end; ++vi) { - typename graph_traits::out_edge_iterator ei, ei_end; - for (tie(ei, ei_end) = out_edges(*vi, g_in); ei != ei_end; ++ei) { - typename graph_traits::edge_descriptor new_e; - bool inserted; - tie(new_e, inserted) = add_edge(get(orig2copy, source(*ei, g_in)), - get(orig2copy, target(*ei, g_in)), - g_out); - copy_edge(*ei, new_e); - } - } - } - }; - - // for undirected graphs - template <> struct copy_graph_impl<2> - { - template - static void apply(const Graph& g_in, MutableGraph& g_out, - CopyVertex copy_vertex, CopyEdge copy_edge, - Orig2CopyVertexIndexMap orig2copy, - IndexMap index_map) - { - typedef color_traits Color; - std::vector - color(num_vertices(g_in), Color::white()); - typename graph_traits::vertex_iterator vi, vi_end; - for (tie(vi, vi_end) = vertices(g_in); vi != vi_end; ++vi) { - typename graph_traits::vertex_descriptor - new_v = add_vertex(g_out); - put(orig2copy, *vi, new_v); - copy_vertex(*vi, new_v); - } - for (tie(vi, vi_end) = vertices(g_in); vi != vi_end; ++vi) { - typename graph_traits::out_edge_iterator ei, ei_end; - for (tie(ei, ei_end) = out_edges(*vi, g_in); ei != ei_end; ++ei) { - typename graph_traits::edge_descriptor new_e; - bool inserted; - if (color[get(index_map, target(*ei, g_in))] == Color::white()) { - tie(new_e, inserted) = add_edge(get(orig2copy, source(*ei,g_in)), - get(orig2copy, target(*ei,g_in)), - g_out); - copy_edge(*ei, new_e); - } - } - color[get(index_map, *vi)] = Color::black(); - } - } - }; - - template - struct choose_graph_copy { - typedef typename Graph::traversal_category Trv; - typedef typename Graph::directed_category Dr; - enum { algo = - (is_convertible::value - && is_convertible::value) - ? 0 : is_convertible::value ? 1 : 2 }; - typedef copy_graph_impl type; - }; - - //------------------------------------------------------------------------- - struct choose_copier_parameter { - template - struct bind_ { - typedef const P& result_type; - static result_type apply(const P& p, const G1&, G2&) - { return p; } - }; - }; - struct choose_default_edge_copier { - template - struct bind_ { - typedef edge_copier result_type; - static result_type apply(const P&, const G1& g1, G2& g2) { - return result_type(g1, g2); - } - }; - }; - template - struct choose_edge_copy { - typedef choose_copier_parameter type; - }; - template <> - struct choose_edge_copy { - typedef choose_default_edge_copier type; - }; - template - struct choose_edge_copier_helper { - typedef typename choose_edge_copy::type Selector; - typedef typename Selector:: template bind_ Bind; - typedef Bind type; - typedef typename Bind::result_type result_type; - }; - template - typename detail::choose_edge_copier_helper::result_type - choose_edge_copier(const Param& params, const G1& g_in, G2& g_out) - { - typedef typename - detail::choose_edge_copier_helper::type Choice; - return Choice::apply(params, g_in, g_out); - } - - - struct choose_default_vertex_copier { - template - struct bind_ { - typedef vertex_copier result_type; - static result_type apply(const P&, const G1& g1, G2& g2) { - return result_type(g1, g2); - } - }; - }; - template - struct choose_vertex_copy { - typedef choose_copier_parameter type; - }; - template <> - struct choose_vertex_copy { - typedef choose_default_vertex_copier type; - }; - template - struct choose_vertex_copier_helper { - typedef typename choose_vertex_copy::type Selector; - typedef typename Selector:: template bind_ Bind; - typedef Bind type; - typedef typename Bind::result_type result_type; - }; - template - typename detail::choose_vertex_copier_helper::result_type - choose_vertex_copier(const Param& params, const G1& g_in, G2& g_out) - { - typedef typename - detail::choose_vertex_copier_helper::type Choice; - return Choice::apply(params, g_in, g_out); - } - - } // namespace detail - - - template - void copy_graph(const VertexListGraph& g_in, MutableGraph& g_out) - { - if (num_vertices(g_in) == 0) - return; - typedef typename graph_traits::vertex_descriptor vertex_t; - std::vector orig2copy(num_vertices(g_in)); - typedef typename detail::choose_graph_copy::type - copy_impl; - copy_impl::apply - (g_in, g_out, - detail::make_vertex_copier(g_in, g_out), - detail::make_edge_copier(g_in, g_out), - make_iterator_property_map(orig2copy.begin(), - get(vertex_index, g_in), orig2copy[0]), - get(vertex_index, g_in) - ); - } - - template - void copy_graph(const VertexListGraph& g_in, MutableGraph& g_out, - const bgl_named_params& params) - { - typename std::vector::size_type n; - n = is_default_param(get_param(params, orig_to_copy_t())) - ? num_vertices(g_in) : 1; - if (n == 0) - return; - std::vector::vertex_descriptor> - orig2copy(n); - - typedef typename detail::choose_graph_copy::type - copy_impl; - copy_impl::apply - (g_in, g_out, - detail::choose_vertex_copier(get_param(params, vertex_copy_t()), - g_in, g_out), - detail::choose_edge_copier(get_param(params, edge_copy_t()), - g_in, g_out), - choose_param(get_param(params, orig_to_copy_t()), - make_iterator_property_map - (orig2copy.begin(), - choose_const_pmap(get_param(params, vertex_index), - g_in, vertex_index), orig2copy[0])), - choose_const_pmap(get_param(params, vertex_index), g_in, vertex_index) - ); - } - - namespace detail { - - template - struct graph_copy_visitor : public bfs_visitor<> - { - graph_copy_visitor(NewGraph& graph, Copy2OrigIndexMap c, - CopyVertex cv, CopyEdge ce) - : g_out(graph), orig2copy(c), copy_vertex(cv), copy_edge(ce) { } - - template - void examine_vertex(Vertex u, const Graph& g_in) const { - typename graph_traits::vertex_descriptor - new_u = add_vertex(g_out); - put(orig2copy, u, new_u); - copy_vertex(u, new_u); - } - - template - void examine_edge(Edge e, const Graph& g_in) const { - typename graph_traits::edge_descriptor new_e; - bool inserted; - tie(new_e, inserted) = add_edge(get(orig2copy, source(e, g_in)), - get(orig2copy, target(e, g_in)), - g_out); - copy_edge(e, new_e); - } - private: - NewGraph& g_out; - Copy2OrigIndexMap orig2copy; - CopyVertex copy_vertex; - CopyEdge copy_edge; - }; - - template - typename graph_traits::vertex_descriptor - copy_component_impl - (const Graph& g_in, - typename graph_traits::vertex_descriptor src, - MutableGraph& g_out, - CopyVertex copy_vertex, CopyEdge copy_edge, - Orig2CopyVertexIndexMap orig2copy, - const Params& params) - { - graph_copy_visitor vis(g_out, orig2copy, copy_vertex, copy_edge); - breadth_first_search(g_in, src, params.visitor(vis)); - return get(orig2copy, src); - } - - } // namespace detail - - - // Copy all the vertices and edges of graph g_in that are reachable - // from the source vertex into graph g_out. Return the vertex - // in g_out that matches the source vertex of g_in. - template - typename graph_traits::vertex_descriptor - copy_component(IncidenceGraph& g_in, - typename graph_traits::vertex_descriptor src, - MutableGraph& g_out, - const bgl_named_params& params) - { - typename std::vector::size_type n; - n = is_default_param(get_param(params, orig_to_copy_t())) - ? num_vertices(g_in) : 1; - std::vector::vertex_descriptor> - orig2copy(n); - - return detail::copy_component_impl - (g_in, src, g_out, - detail::choose_vertex_copier(get_param(params, vertex_copy_t()), - g_in, g_out), - detail::choose_edge_copier(get_param(params, edge_copy_t()), - g_in, g_out), - choose_param(get_param(params, orig_to_copy_t()), - make_iterator_property_map - (orig2copy.begin(), - choose_pmap(get_param(params, vertex_index), - g_in, vertex_index), orig2copy[0])), - params - ); - } - - template - typename graph_traits::vertex_descriptor - copy_component(IncidenceGraph& g_in, - typename graph_traits::vertex_descriptor src, - MutableGraph& g_out) - { - std::vector::vertex_descriptor> - orig2copy(num_vertices(g_in)); - - return detail::copy_component_impl - (g_in, src, g_out, - make_vertex_copier(g_in, g_out), - make_edge_copier(g_in, g_out), - make_iterator_property_map(orig2copy.begin(), - get(vertex_index, g_in), orig2copy[0]), - bgl_named_params('x') // dummy param object - ); - } - -} // namespace boost - -#endif // BOOST_GRAPH_COPY_HPP diff --git a/sdk/include/boost/graph/create_condensation_graph.hpp b/sdk/include/boost/graph/create_condensation_graph.hpp deleted file mode 100644 index a6912d1c78c..00000000000 --- a/sdk/include/boost/graph/create_condensation_graph.hpp +++ /dev/null @@ -1,97 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_CREATE_CONDENSATION_GRAPH_HPP -#define BOOST_CREATE_CONDENSATION_GRAPH_HPP - -#include -#include - -namespace boost { - - template - void create_condensation_graph(const Graph& g, - const ComponentLists& components, - ComponentNumberMap component_number, - CondensationGraph& cg, - EdgeMultiplicityMap edge_mult_map) - { - typedef typename graph_traits::vertex_descriptor vertex; - typedef typename graph_traits::vertices_size_type size_type; - typedef typename graph_traits::vertex_descriptor - cg_vertex; - std::vector to_cg_vertex(components.size()); - for (size_type s = 0; s < components.size(); ++s) - to_cg_vertex[s] = add_vertex(cg); - - for (size_type si = 0; si < components.size(); ++si) { - cg_vertex s = to_cg_vertex[si]; - std::vector adj; - for (size_type i = 0; i < components[si].size(); ++i) { - vertex u = components[s][i]; - typename graph_traits::adjacency_iterator v, v_end; - for (tie(v, v_end) = adjacent_vertices(u, g); v != v_end; ++v) { - cg_vertex t = to_cg_vertex[component_number[*v]]; - if (s != t) // Avoid loops in the condensation graph - adj.push_back(t); - } - } - std::sort(adj.begin(), adj.end()); - if (! adj.empty()) { - size_type i = 0; - cg_vertex t = adj[i]; - typename graph_traits::edge_descriptor e; - bool inserted; - tie(e, inserted) = add_edge(s, t, cg); - put(edge_mult_map, e, 1); - ++i; - while (i < adj.size()) { - if (adj[i] == t) - put(edge_mult_map, e, get(edge_mult_map, e) + 1); - else { - t = adj[i]; - tie(e, inserted) = add_edge(s, t, cg); - put(edge_mult_map, e, 1); - } - ++i; - } - } - } - } - - template - void create_condensation_graph(const Graph& g, - const ComponentLists& components, - ComponentNumberMap component_number, - CondensationGraph& cg) - { - create_condensation_graph(g, components, component_number, cg, - dummy_property_map()); - } - -} // namespace boost - -#endif // BOOST_CREATE_CONDENSATION_GRAPH_HPP diff --git a/sdk/include/boost/graph/cuthill_mckee_ordering.hpp b/sdk/include/boost/graph/cuthill_mckee_ordering.hpp deleted file mode 100644 index 285f0604030..00000000000 --- a/sdk/include/boost/graph/cuthill_mckee_ordering.hpp +++ /dev/null @@ -1,242 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_CUTHILL_MCKEE_HPP -#define BOOST_GRAPH_CUTHILL_MCKEE_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - (Reverse) Cuthill-McKee Algorithm for matrix reordering - */ - -namespace boost { - - namespace detail { - - // rcm_queue - // - // This is a custom queue type used in the - // reverse_cuthill_mckee_ordering algorithm. - // In addition to the normal queue operations, the - // rcm_queue provides: - // - // int eccentricity() const; - // value_type spouse() const; - // - template < class Vertex, class DegreeMap, - class Container = std::deque > - class rcm_queue : public std::queue { - typedef std::queue base; - public: - typedef typename base::value_type value_type; - typedef typename base::size_type size_type; - - /* SGI queue has not had a contructor queue(const Container&) */ - inline rcm_queue(DegreeMap deg) - : _size(0), Qsize(1), eccen(-1), degree(deg) { } - - inline void pop() { - if ( !_size ) - Qsize = base::size(); - - base::pop(); - if ( _size == Qsize-1 ) { - _size = 0; - ++eccen; - } else - ++_size; - - } - - inline value_type& front() { - value_type& u = base::front(); - if ( _size == 0 ) - w = u; - else if (get(degree,u) < get(degree,w) ) - w = u; - return u; - } - inline const value_type& front() const { - const value_type& u = base::front(); - if ( _size == 0 ) - w = u; - else if (get(degree,u) < get(degree,w) ) - w = u; - return u; - } - - inline value_type& top() { return front(); } - inline const value_type& top() const { return front(); } - - inline size_type size() const { return base::size(); } - - inline size_type eccentricity() const { return eccen; } - inline value_type spouse() const { return w; } - - protected: - size_type _size; - size_type Qsize; - int eccen; - mutable value_type w; - DegreeMap degree; - }; - - } // namespace detail - - // Compute Pseudo peripheral - // - // To compute an approximated peripheral for a given vertex. - // Used in reverse_cuthill_mckee_ordering algorithm. - // - template - Vertex - pseudo_peripheral_pair(Graph& G, const Vertex& u, int& ecc, - ColorMap color, DegreeMap degree) - { - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - - detail::rcm_queue Q(degree); - - typename boost::graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(G); ui != ui_end; ++ui) - put(color, *ui, Color::white()); - breadth_first_search(G, u, buffer(Q).color_map(color)); - - ecc = Q.eccentricity(); - return Q.spouse(); - } - - // Find a good starting node - // - // This is to find a good starting node for the - // reverse_cuthill_mckee_ordering algorithm. "good" is in the sense - // of the ordering generated by RCM. - // - template - Vertex find_starting_node(Graph& G, Vertex r, Color color, Degree degree) - { - Vertex x, y; - int eccen_r, eccen_x; - - x = pseudo_peripheral_pair(G, r, eccen_r, color, degree); - y = pseudo_peripheral_pair(G, x, eccen_x, color, degree); - - while (eccen_x > eccen_r) { - r = x; - eccen_r = eccen_x; - x = y; - y = pseudo_peripheral_pair(G, x, eccen_x, color, degree); - } - return x; - } - - - // Reverse Cuthill-McKee algorithm with a given starting Vertex. - // - // This algorithm requires user to provide a starting vertex to - // compute RCM ordering. - - template - OutputIterator - cuthill_mckee_ordering(Graph& g, - typename graph_traits::vertex_descriptor s, - OutputIterator inverse_permutation, - ColorMap color, DegreeMap degree) - { - typedef typename property_traits::value_type DS; - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - typedef typename graph_traits::vertex_descriptor Vertex; - - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) - put(color, *ui, Color::white()); - - typedef indirect_cmp > Compare; - Compare comp(degree); - - boost::queue bfs_queue; - std::priority_queue, Compare> - degree_queue(comp); - Vertex u, v; - - // Like BFS, except the adjacent vertices are visited - // in increasing order of degree. - - put(color, s, Color::gray()); - bfs_queue.push(s); - while (! bfs_queue.empty()) { - u = bfs_queue.top(); bfs_queue.pop(); - *inverse_permutation++ = u; - typename graph_traits::out_edge_iterator ei, ei_end; - for (tie(ei, ei_end) = out_edges(u, g); ei != ei_end; ++ei) { - v = target(*ei, g); - if (get(color, v) == Color::white()) { - put(color, v, Color::gray()); - degree_queue.push(v); - } - } - while (!degree_queue.empty()) { - v = degree_queue.top(); degree_queue.pop(); - bfs_queue.push(v); - } - put(color, u, Color::black()); - } // while - return inverse_permutation; - } - - template < class Graph, class OutputIterator, - class Color, class Degree > - inline OutputIterator - cuthill_mckee_ordering(Graph& G, OutputIterator inverse_permutation, - Color color, Degree degree) - { - typedef typename boost::graph_traits::vertex_descriptor Vertex; - typedef typename boost::graph_traits::vertex_iterator VerIter; - VerIter ri = vertices(G).first; - Vertex r = *ri; - - //if G has several forests, how to let is cover all. ?? - - Vertex s = find_starting_node(G, r, color, degree); - return cuthill_mckee_ordering(G, s, inverse_permutation, color, degree); - } - -} // namespace boost - - -#endif // BOOST_GRAPH_CUTHILL_MCKEE_HPP diff --git a/sdk/include/boost/graph/dag_shortest_paths.hpp b/sdk/include/boost/graph/dag_shortest_paths.hpp deleted file mode 100644 index e7d94867167..00000000000 --- a/sdk/include/boost/graph/dag_shortest_paths.hpp +++ /dev/null @@ -1,163 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_DAG_SHORTEST_PATHS_HPP -#define BOOST_GRAPH_DAG_SHORTEST_PATHS_HPP - -#include -#include - -// single-source shortest paths for a Directed Acyclic Graph (DAG) - -namespace boost { - - // Initalize distances and call depth first search - template - inline void - dag_shortest_paths - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - DistanceMap distance, WeightMap weight, ColorMap color, - PredecessorMap pred, - DijkstraVisitor vis, Compare compare, Combine combine, - DistInf inf, DistZero zero) - { - typedef typename graph_traits::vertex_descriptor Vertex; - std::vector rev_topo_order; - rev_topo_order.reserve(num_vertices(g)); - topological_sort(g, std::back_inserter(rev_topo_order)); - - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) { - put(distance, *ui, inf); - put(pred, *ui, *ui); - } - - put(distance, s, zero); - vis.discover_vertex(s, g); - typename std::vector::reverse_iterator i; - for (i = rev_topo_order.rbegin(); i != rev_topo_order.rend(); ++i) { - Vertex u = *i; - vis.examine_vertex(u, g); - typename graph_traits::out_edge_iterator e, e_end; - for (tie(e, e_end) = out_edges(u, g); e != e_end; ++e) { - vis.discover_vertex(target(*e, g), g); - bool decreased = relax(*e, g, weight, pred, distance, - combine, compare); - if (decreased) - vis.edge_relaxed(*e, g); - else - vis.edge_not_relaxed(*e, g); - } - vis.finish_vertex(u, g); - } - } - - namespace detail { - - // Defaults are the same as Dijkstra's algorithm - - // Handle Distance Compare, Combine, Inf and Zero defaults - template - inline void - dag_sp_dispatch2 - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - DistanceMap distance, WeightMap weight, ColorMap color, IndexMap id, - DijkstraVisitor vis, const Params& params) - { - typedef typename property_traits::value_type D; - dummy_property_map p_map; - dag_shortest_paths - (g, s, distance, weight, color, - choose_param(get_param(params, vertex_predecessor), p_map), - vis, - choose_param(get_param(params, distance_compare_t()), std::less()), - choose_param(get_param(params, distance_combine_t()), closed_plus()), - choose_param(get_param(params, distance_inf_t()), - std::numeric_limits::max()), - choose_param(get_param(params, distance_zero_t()), - D())); - } - - // Handle DistanceMap and ColorMap defaults - template - inline void - dag_sp_dispatch1 - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - DistanceMap distance, WeightMap weight, ColorMap color, IndexMap id, - DijkstraVisitor vis, const Params& params) - { - typedef typename property_traits::value_type T; - typename std::vector::size_type n; - n = is_default_param(distance) ? num_vertices(g) : 1; - std::vector distance_map(n); - n = is_default_param(color) ? num_vertices(g) : 1; - std::vector color_map(n); - - dag_sp_dispatch2 - (g, s, - choose_param(distance, - make_iterator_property_map(distance_map.begin(), id, - distance_map[0])), - weight, - choose_param(color, - make_iterator_property_map(color_map.begin(), id, - color_map[0])), - id, vis, params); - } - - } // namespace detail - - template - inline void - dag_shortest_paths - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params) - { - // assert that the graph is directed... - null_visitor null_vis; - detail::dag_sp_dispatch1 - (g, s, - get_param(params, vertex_distance), - choose_const_pmap(get_param(params, edge_weight), g, edge_weight), - get_param(params, vertex_color), - choose_const_pmap(get_param(params, vertex_index), g, vertex_index), - choose_param(get_param(params, graph_visitor), - make_dijkstra_visitor(null_vis)), - params); - } - -} // namespace boost - -#endif // BOOST_GRAPH_DAG_SHORTEST_PATHS_HPP diff --git a/sdk/include/boost/graph/depth_first_search.hpp b/sdk/include/boost/graph/depth_first_search.hpp deleted file mode 100644 index f84be5079bc..00000000000 --- a/sdk/include/boost/graph/depth_first_search.hpp +++ /dev/null @@ -1,247 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_RECURSIVE_DFS_HPP -#define BOOST_GRAPH_RECURSIVE_DFS_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - template - class DFSVisitorConcept { - public: - void constraints() { - function_requires< CopyConstructibleConcept >(); - vis.initialize_vertex(u, g); - vis.start_vertex(u, g); - vis.discover_vertex(u, g); - vis.examine_edge(e, g); - vis.tree_edge(e, g); - vis.back_edge(e, g); - vis.forward_or_cross_edge(e, g); - vis.finish_vertex(u, g); - } - private: - Visitor vis; - Graph g; - typename graph_traits::vertex_descriptor u; - typename graph_traits::edge_descriptor e; - }; - - namespace detail { - - template - void depth_first_visit_impl - (const IncidenceGraph& g, - typename graph_traits::vertex_descriptor u, - DFSVisitor& vis, // pass-by-reference here, important! - ColorMap color) - { - function_requires >(); - function_requires >(); - typedef typename graph_traits::vertex_descriptor Vertex; - function_requires< ReadWritePropertyMapConcept >(); - typedef typename property_traits::value_type ColorValue; - function_requires< ColorValueConcept >(); - typedef color_traits Color; - typename graph_traits::out_edge_iterator ei, ei_end; - - put(color, u, Color::gray()); vis.discover_vertex(u, g); - for (tie(ei, ei_end) = out_edges(u, g); ei != ei_end; ++ei) { - Vertex v = target(*ei, g); vis.examine_edge(*ei, g); - ColorValue v_color = get(color, v); - if (v_color == Color::white()) { vis.tree_edge(*ei, g); - depth_first_visit_impl(g, v, vis, color); - } else if (v_color == Color::gray()) vis.back_edge(*ei, g); - else vis.forward_or_cross_edge(*ei, g); - } - put(color, u, Color::black()); vis.finish_vertex(u, g); - } - } // namespace detail - - template - void - depth_first_search(const VertexListGraph& g, DFSVisitor vis, ColorMap color, - Vertex start_vertex) - { - function_requires >(); - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) { - put(color, *ui, Color::white()); vis.initialize_vertex(*ui, g); - } - - if (start_vertex != *vertices(g).first){ vis.start_vertex(start_vertex, g); - detail::depth_first_visit_impl(g, start_vertex, vis, color); - } - - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) { - ColorValue u_color = get(color, *ui); - if (u_color == Color::white()) { vis.start_vertex(*ui, g); - detail::depth_first_visit_impl(g, *ui, vis, color); - } - } - } - - template - void - depth_first_search(const VertexListGraph& g, DFSVisitor vis, ColorMap color) - { - depth_first_search(g, vis, color, *vertices(g).first); - } - - namespace detail { - template - struct dfs_dispatch { - - template - static void - apply(const VertexListGraph& g, DFSVisitor vis, Vertex start_vertex, - const bgl_named_params&, - ColorMap color) - { - depth_first_search(g, vis, color, start_vertex); - } - }; - - template <> - struct dfs_dispatch { - template - static void - apply(const VertexListGraph& g, DFSVisitor vis, Vertex start_vertex, - const bgl_named_params& params, - detail::error_property_not_found) - { - std::vector color_vec(num_vertices(g)); - default_color_type c = white_color; // avoid warning about un-init - depth_first_search - (g, vis, make_iterator_property_map - (color_vec.begin(), - choose_const_pmap(get_param(params, vertex_index), - g, vertex_index), c), - start_vertex); - } - }; - - } // namespace detail - - - template - class dfs_visitor { - public: - dfs_visitor() { } - dfs_visitor(Visitors vis) : m_vis(vis) { } - - template - void initialize_vertex(Vertex u, const Graph& g) { - invoke_visitors(m_vis, u, g, on_initialize_vertex()); - } - template - void start_vertex(Vertex u, const Graph& g) { - invoke_visitors(m_vis, u, g, on_start_vertex()); - } - template - void discover_vertex(Vertex u, const Graph& g) { - invoke_visitors(m_vis, u, g, on_discover_vertex()); - } - template - void examine_edge(Edge u, const Graph& g) { - invoke_visitors(m_vis, u, g, on_examine_edge()); - } - template - void tree_edge(Edge u, const Graph& g) { - invoke_visitors(m_vis, u, g, on_tree_edge()); - } - template - void back_edge(Edge u, const Graph& g) { - invoke_visitors(m_vis, u, g, on_back_edge()); - } - template - void forward_or_cross_edge(Edge u, const Graph& g) { - invoke_visitors(m_vis, u, g, on_forward_or_cross_edge()); - } - template - void finish_vertex(Vertex u, const Graph& g) { - invoke_visitors(m_vis, u, g, on_finish_vertex()); - } - protected: - Visitors m_vis; - }; - template - dfs_visitor - make_dfs_visitor(Visitors vis) { - return dfs_visitor(vis); - } - typedef dfs_visitor<> default_dfs_visitor; - - - // Named Parameter Variant - template - void - depth_first_search(const VertexListGraph& g, - const bgl_named_params& params) - { - typedef typename property_value< bgl_named_params, - vertex_color_t>::type C; - detail::dfs_dispatch::apply - (g, - choose_param(get_param(params, graph_visitor), - make_dfs_visitor(null_visitor())), - choose_param(get_param(params, root_vertex_t()), - *vertices(g).first), - params, - get_param(params, vertex_color) - ); - } - - - template - void depth_first_visit - (const IncidenceGraph& g, - typename graph_traits::vertex_descriptor u, - DFSVisitor vis, ColorMap color) - { - detail::depth_first_visit_impl(g, u, vis, color); - } - - -} // namespace boost - - -#endif diff --git a/sdk/include/boost/graph/detail/adj_list_edge_iterator.hpp b/sdk/include/boost/graph/detail/adj_list_edge_iterator.hpp deleted file mode 100644 index 0bdb4811758..00000000000 --- a/sdk/include/boost/graph/detail/adj_list_edge_iterator.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_DETAIL_ADJ_LIST_EDGE_ITERATOR_HPP -#define BOOST_GRAPH_DETAIL_ADJ_LIST_EDGE_ITERATOR_HPP - -#include - -namespace boost { - - namespace detail { - - template - class adj_list_edge_iterator { - typedef adj_list_edge_iterator self; - public: - typedef std::forward_iterator_tag iterator_category; - typedef typename OutEdgeIterator::value_type value_type; - typedef typename OutEdgeIterator::reference reference; - typedef typename OutEdgeIterator::pointer pointer; - typedef typename OutEdgeIterator::difference_type difference_type; - typedef difference_type distance_type; - - inline adj_list_edge_iterator() {} - - inline adj_list_edge_iterator(const self& x) - : vBegin(x.vBegin), vCurr(x.vCurr), vEnd(x.vEnd), - eCurr(x.eCurr), eEnd(x.eEnd), m_g(x.m_g) { } - - template - inline adj_list_edge_iterator(VertexIterator b, - VertexIterator c, - VertexIterator e, - const G& g) - : vBegin(b), vCurr(c), vEnd(e), m_g(&g) { - if ( vCurr != vEnd ) { - while ( vCurr != vEnd && out_degree(*vCurr, *m_g) == 0 ) - ++vCurr; - if ( vCurr != vEnd ) - tie(eCurr, eEnd) = out_edges(*vCurr, *m_g); - } - } - - /*Note: - In the directed graph cases, it is fine. - For undirected graphs, one edge go through twice. - */ - inline self& operator++() { - ++eCurr; - if ( eCurr == eEnd ) { - ++vCurr; - while ( vCurr != vEnd && out_degree(*vCurr, *m_g) == 0 ) - ++vCurr; - if ( vCurr != vEnd ) - tie(eCurr, eEnd) = out_edges(*vCurr, *m_g); - } - return *this; - } - inline self operator++(int) { - self tmp = *this; - ++(*this); - return tmp; - } - inline value_type operator*() const { return *eCurr; } - inline bool operator==(const self& x) const { - return vCurr == x.vCurr && (vCurr == vEnd || eCurr == x.eCurr); - } - inline bool operator!=(const self& x) const { - return vCurr != x.vCurr || (vCurr != vEnd && eCurr != x.eCurr); - } - protected: - VertexIterator vBegin; - VertexIterator vCurr; - VertexIterator vEnd; - OutEdgeIterator eCurr; - OutEdgeIterator eEnd; - const Graph* m_g; - }; - - } // namespace detail - -} - -#endif // BOOST_GRAPH_DETAIL_ADJ_LIST_EDGE_ITERATOR_HPP diff --git a/sdk/include/boost/graph/detail/adjacency_list.hpp b/sdk/include/boost/graph/detail/adjacency_list.hpp deleted file mode 100644 index 119e8103b78..00000000000 --- a/sdk/include/boost/graph/detail/adjacency_list.hpp +++ /dev/null @@ -1,2578 +0,0 @@ -// -*- c++ -*- -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_DETAIL_ADJACENCY_LIST_HPP -#define BOOST_GRAPH_DETAIL_ADJACENCY_LIST_HPP - -#include // for vertex_map in copy_impl -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -// Symbol truncation problems with MSVC, trying to shorten names. -#define out_edge_iter_policies oeip_ -#define in_edge_iter_policies ieip_ -#define stored_edge se_ -#define stored_edge_property sep_ -#define stored_edge_iter sei_ - -/* - Outline for this file: - - out_edge_iterator and in_edge_iterator implementation - edge_iterator for undirected graph - stored edge types (these object live in the out-edge/in-edge lists) - directed edges helper class - directed graph helper class - undirected graph helper class - bidirectional graph helper class - bidirectional graph helper class (without edge properties) - bidirectional graph helper class (with edge properties) - adjacency_list helper class - adj_list_impl class - vec_adj_list_impl class - adj_list_gen class - vertex property map - edge property map - - - Note: it would be nice to merge some of the undirected and - bidirectional code... it is aweful similar. - */ - - - -namespace boost { - - namespace detail { - - template - struct directed_category_traits { - typedef directed_tag directed_category; - }; - - template <> - struct directed_category_traits { - typedef directed_tag directed_category; - }; - template <> - struct directed_category_traits { - typedef undirected_tag directed_category; - }; - template <> - struct directed_category_traits { - typedef bidirectional_tag directed_category; - }; - - template - struct target_is { - target_is(const Vertex& v) : m_target(v) { } - template - bool operator()(const StoredEdge& e) const { - return e.get_target() == m_target; - } - Vertex m_target; - }; - - // O(E/V) - template - void erase_from_incidence_list(EdgeList& el, vertex_descriptor v, - allow_parallel_edge_tag) - { - boost::erase_if(el, detail::target_is(v)); - } - // O(log(E/V)) - template - void erase_from_incidence_list(EdgeList& el, vertex_descriptor v, - disallow_parallel_edge_tag) - { - typedef typename EdgeList::value_type StoredEdge; - el.erase(StoredEdge(v)); - } - - //========================================================================= - // Out-Edge and In-Edge Iterator Implementation - - template - struct out_edge_iter_policies : public boost::default_iterator_policies - { - inline out_edge_iter_policies() { } - inline out_edge_iter_policies(const VertexDescriptor& src) - : m_src(src) { } - - template - inline typename OutEdgeIter::value_type - dereference(const OutEdgeIter& i) const { - typedef typename OutEdgeIter::value_type EdgeDescriptor; - return EdgeDescriptor(m_src, (*i.base()).get_target(), - &(*i.base()).get_property()); - } - VertexDescriptor m_src; - }; - template - struct in_edge_iter_policies : public boost::default_iterator_policies - { - inline in_edge_iter_policies() { } - inline in_edge_iter_policies(const VertexDescriptor& src) - : m_src(src) { } - - template - inline typename InEdgeIter::value_type - dereference(const InEdgeIter& i) const { - typedef typename InEdgeIter::value_type EdgeDescriptor; - return EdgeDescriptor((*i.base()).get_target(), m_src, - &i.base()->get_property()); - } - VertexDescriptor m_src; - }; - - //========================================================================= - // Undirected Edge Iterator Implementation - - struct undirected_edge_iter_policies - : public boost::default_iterator_policies - { - template - inline typename EdgeIter::value_type - dereference(const EdgeIter& i) const { - typedef typename EdgeIter::value_type EdgeDescriptor; - return EdgeDescriptor((*i.base()).m_source, (*i.base()).m_target, - &i.base()->get_property()); - } - }; - - //========================================================================= - // Edge Storage Types (stored in the out-edge/in-edge lists) - - template - class stored_edge - : public boost::equality_comparable1< stored_edge, - boost::less_than_comparable1< stored_edge > > - { - public: - typedef no_property property_type; - inline stored_edge() { } - inline stored_edge(Vertex target, const no_property& = no_property()) - : m_target(target) { } - // Need to write this explicitly so stored_edge_property can - // invoke Base::operator= (at least, for SGI MIPSPro compiler) - inline stored_edge& operator=(const stored_edge& x) { - m_target = x.m_target; - return *this; - } - inline Vertex& get_target() const { return m_target; } - inline const no_property& get_property() const { return s_prop; } - inline bool operator==(const stored_edge& x) const - { return m_target == x.get_target(); } - inline bool operator<(const stored_edge& x) const - { return m_target < x.get_target(); } - //protected: need to add hash<> as a friend - static no_property s_prop; - // Sometimes target not used as key in the set, and in that case - // it is ok to change the target. - mutable Vertex m_target; - }; - template - no_property stored_edge::s_prop; - - template - class stored_edge_property : public stored_edge { - typedef stored_edge_property self; - typedef stored_edge Base; - public: - typedef Property property_type; - inline stored_edge_property() { } - inline stored_edge_property(Vertex target, - const Property& p = Property()) - : stored_edge(target), m_property(new Property(p)) { } - stored_edge_property(const self& x) - : Base(x), m_property(const_cast(x).m_property) { } - self& operator=(const self& x) { - Base::operator=(x); - m_property = const_cast(x).m_property; - return *this; - } - inline Property& get_property() { return *m_property; } - inline const Property& get_property() const { return *m_property; } - protected: - // Holding the property by-value causes edge-descriptor - // invalidation for add_edge() with EdgeList=vecS. Instead we - // hold a pointer to the property. std::auto_ptr is not - // a perfect fit for the job, but it is darn close. - std::auto_ptr m_property; - }; - - - template - class stored_edge_iter - : public stored_edge - { - public: - typedef Property property_type; - inline stored_edge_iter() { } - inline stored_edge_iter(Vertex v, Iter i = Iter(), void* = 0) - : stored_edge(v), m_iter(i) { } - inline Property& get_property() { return m_iter->get_property(); } - inline const Property& get_property() const { - return m_iter->get_property(); - } - inline Iter get_iter() const { return m_iter; } - protected: - Iter m_iter; - }; - - // For when the EdgeList is a std::vector. - // Want to make the iterator stable, so use an offset - // instead of an iterator into a std::vector - template - class stored_ra_edge_iter - : public stored_edge - { - typedef typename EdgeVec::iterator Iter; - public: - typedef Property property_type; - inline stored_ra_edge_iter() { } - inline stored_ra_edge_iter(Vertex v, Iter i = Iter(), - EdgeVec* edge_vec = 0) - : stored_edge(v), m_i(i - edge_vec->begin()), m_vec(edge_vec){ } - inline Property& get_property() { return (*m_vec)[m_i].get_property(); } - inline const Property& get_property() const { - return (*m_vec)[m_i].get_property(); - } - inline Iter get_iter() const { return m_vec->begin() + m_i; } - protected: - std::size_t m_i; - EdgeVec* m_vec; - }; - - } // namespace detail - - template - const typename property_value::type& - get(Tag property_tag, - const detail::stored_edge_property& e) - { - return get_property_value(e.get_property(), property_tag); - } - - template - const typename property_value::type& - get(Tag property_tag, - const detail::stored_edge_iter& e) - { - return get_property_value(e.get_property(), property_tag); - } - - template - const typename property_value::type& - get(Tag property_tag, - const detail::stored_ra_edge_iter& e) - { - return get_property_value(e.get_property(), property_tag); - } - - //========================================================================= - // Directed Edges Helper Class - - namespace detail { - - template - inline void - remove_directed_edge_if_dispatch(incidence_iterator first, - incidence_iterator last, - EdgeList& el, Predicate pred, - boost::allow_parallel_edge_tag) - { - // remove_if - while (first != last && !pred(*first)) - ++first; - incidence_iterator i = first; - if (first != last) - for (; i != last; ++i) - if (!pred(*i)) { - *first.base() = *i.base(); - ++first; - } - el.erase(first.base(), el.end()); - } - template - inline void - remove_directed_edge_if_dispatch(incidence_iterator first, - incidence_iterator last, - EdgeList& el, - Predicate pred, - boost::disallow_parallel_edge_tag) - { - for (incidence_iterator next = first; - first != last; first = next) { - ++next; - if (pred(*first)) - el.erase( first.base() ); - } - } - - // O(E/V) - template - inline void - remove_directed_edge_dispatch(edge_descriptor, EdgeList& el, - StoredProperty& p) - { - for (typename EdgeList::iterator i = el.begin(); - i != el.end(); ++i) - if (&(*i).get_property() == &p) { - el.erase(i); - return; - } - } - - // O(E/V) - template - inline void - remove_directed_edge_dispatch(edge_descriptor e, EdgeList& el, - no_property&) - { - for (typename EdgeList::iterator i = el.begin(); - i != el.end(); ++i) - if ((*i).get_target() == e.m_target) { - el.erase(i); - return; - } - } - - } // namespace detail - - template - struct directed_edges_helper { - - // Placement of these overloaded remove_edge() functions - // inside the class avoids a VC++ bug. - - // O(E/V) - inline void - remove_edge(typename Config::edge_descriptor e) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(*this); - typename Config::OutEdgeList& el = g.out_edge_list(source(e, g)); - typedef typename Config::OutEdgeList::value_type::property_type PType; - detail::remove_directed_edge_dispatch(e, el, - *(PType*)e.get_property()); - } - - // O(1) - inline void - remove_edge(typename Config::out_edge_iterator iter) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(*this); - typename Config::edge_descriptor e = *iter; - typename Config::OutEdgeList& el = g.out_edge_list(source(e, g)); - el.erase(iter.base()); - } - - }; - - // O(1) - template - inline std::pair - edges(const directed_edges_helper& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_iterator edge_iterator; - const graph_type& cg = static_cast(g_); - graph_type& g = const_cast(cg); - return std::make_pair( edge_iterator(g.vertex_set().begin(), - g.vertex_set().begin(), - g.vertex_set().end(), g), - edge_iterator(g.vertex_set().begin(), - g.vertex_set().end(), - g.vertex_set().end(), g) ); - } - - //========================================================================= - // Directed Graph Helper Class - - struct adj_list_dir_traversal_tag : - public virtual adjacency_matrix_tag, - public virtual vertex_list_graph_tag, - public virtual incidence_graph_tag, - public virtual adjacency_graph_tag, - public virtual edge_list_graph_tag { }; - - template - struct directed_graph_helper - : public directed_edges_helper { - typedef typename Config::edge_descriptor edge_descriptor; - typedef adj_list_dir_traversal_tag traversal_category; - }; - - // O(E/V) - template - inline void - remove_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - directed_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_parallel_category Cat; - graph_type& g = static_cast(g_); - detail::erase_from_incidence_list(g.out_edge_list(u), v, Cat()); - } - - template - inline void - remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred, - directed_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - typename Config::out_edge_iterator first, last; - tie(first, last) = out_edges(u, g); - typedef typename Config::edge_parallel_category edge_parallel_category; - detail::remove_directed_edge_if_dispatch - (first, last, g.out_edge_list(u), pred, edge_parallel_category()); - } - - template - inline void - remove_edge_if(Predicate pred, directed_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - - typename Config::vertex_iterator vi, vi_end; - for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) - remove_out_edge_if(*vi, pred, g); - } - - template - inline void - remove_edge(EdgeOrIter e_or_iter, directed_graph_helper& g_) - { - g_.remove_edge(e_or_iter); - } - - // O(V + E) for allow_parallel_edges - // O(V * log(E/V)) for disallow_parallel_edges - template - inline void - clear_vertex(typename Config::vertex_descriptor u, - directed_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_parallel_category Cat; - graph_type& g = static_cast(g_); - typename Config::vertex_iterator vi, viend; - for (boost::tie(vi, viend) = vertices(g); vi != viend; ++vi) - detail::erase_from_incidence_list(g.out_edge_list(*vi), u, Cat()); - g.out_edge_list(u).clear(); - // clear() should be a req of Sequence and AssociativeContainer, - // or maybe just Container - } - - template - inline void - clear_out_edges(typename Config::vertex_descriptor u, - directed_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_parallel_category Cat; - graph_type& g = static_cast(g_); - g.out_edge_list(u).clear(); - // clear() should be a req of Sequence and AssociativeContainer, - // or maybe just Container - } - - // O(V), could do better... - template - inline typename Config::edges_size_type - num_edges(const directed_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - const graph_type& g = static_cast(g_); - typename Config::edges_size_type num_e = 0; - typename Config::vertex_iterator vi, vi_end; - for (boost::tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) - num_e += out_degree(*vi, g); - return num_e; - } - // O(1) for allow_parallel_edge_tag - // O(log(E/V)) for disallow_parallel_edge_tag - template - inline std::pair::edge_descriptor, bool> - add_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - const typename Config::edge_property_type& p, - directed_graph_helper& g_) - { - typedef typename Config::edge_descriptor edge_descriptor; - typedef typename Config::graph_type graph_type; - typedef typename Config::StoredEdge StoredEdge; - graph_type& g = static_cast(g_); - typename Config::OutEdgeList::iterator i; - bool inserted; - boost::tie(i, inserted) = boost::push(g.out_edge_list(u), - StoredEdge(v, p)); - return std::make_pair(edge_descriptor(u, v, &(*i).get_property()), - inserted); - } - // Did not use default argument here because that - // causes Visual C++ to get confused. - template - inline std::pair - add_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - directed_graph_helper& g_) - { - typename Config::edge_property_type p; - return add_edge(u, v, p, g_); - } - //========================================================================= - // Undirected Graph Helper Class - - template - struct undirected_graph_helper; - - struct undir_adj_list_traversal_tag : - public virtual vertex_list_graph_tag, - public virtual incidence_graph_tag, - public virtual adjacency_graph_tag, - public virtual edge_list_graph_tag, - public virtual bidirectional_graph_tag { }; - - namespace detail { - - // using class with specialization for dispatch is a VC++ workaround. - template - struct remove_undirected_edge_dispatch { - - // O(E/V) - template - static void - apply(edge_descriptor e, - undirected_graph_helper& g_, - StoredProperty& p) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - - typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g)); - typename Config::OutEdgeList::iterator out_i = out_el.begin(); - for (; out_i != out_el.end(); ++out_i) - if (&(*out_i).get_property() == &p) { - out_el.erase(out_i); - break; - } - typename Config::OutEdgeList& in_el = g.out_edge_list(target(e, g)); - typename Config::OutEdgeList::iterator in_i = in_el.begin(); - for (; in_i != in_el.end(); ++in_i) - if (&(*in_i).get_property() == &p) { - g.m_edges.erase((*in_i).get_iter()); - in_el.erase(in_i); - return; - } - } - }; - - template <> - struct remove_undirected_edge_dispatch { - // O(E/V) - template - static void - apply(edge_descriptor e, - undirected_graph_helper& g_, - no_property&) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - no_property* p = (no_property*)e.get_property(); - typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g)); - typename Config::OutEdgeList::iterator out_i = out_el.begin(); - for (; out_i != out_el.end(); ++out_i) - if (&(*out_i).get_property() == p) { - out_el.erase(out_i); - break; - } - typename Config::OutEdgeList& in_el = g.out_edge_list(target(e, g)); - typename Config::OutEdgeList::iterator in_i = in_el.begin(); - for (; in_i != in_el.end(); ++in_i) - if (&(*in_i).get_property() == p) { - g.m_edges.erase((*in_i).get_iter()); - in_el.erase(in_i); - return; - } - } - }; - - // O(E/V) - template - inline void - remove_edge_and_property(Graph& g, EdgeList& el, Vertex v, - boost::allow_parallel_edge_tag cat) - { - typedef typename EdgeList::value_type StoredEdge; - typename EdgeList::iterator i = el.begin(), end = el.end(); - for (; i != end; ++i) - if ((*i).get_target() == v) - g.m_edges.erase((*i).get_iter()); - detail::erase_from_incidence_list(el, v, cat); - } - // O(log(E/V)) - template - inline void - remove_edge_and_property(Graph& g, EdgeList& el, Vertex v, - boost::disallow_parallel_edge_tag) - { - typedef typename EdgeList::value_type StoredEdge; - typename EdgeList::iterator i = el.find(StoredEdge(v)), end = el.end(); - if (i != end) { - g.m_edges.erase((*i).get_iter()); - el.erase(i); - } - } - - } // namespace detail - - template - struct list_edge // short name due to VC++ truncation and linker problems - : public boost::detail::edge_base - { - typedef EdgeProperty property_type; - typedef boost::detail::edge_base Base; - list_edge(Vertex u, Vertex v, const EdgeProperty& p = EdgeProperty()) - : Base(u, v), m_property(p) { } - EdgeProperty& get_property() { return m_property; } - const EdgeProperty& get_property() const { return m_property; } - // the following methods should never be used, but are needed - // to make SGI MIPSpro C++ happy - list_edge() { } - bool operator==(const list_edge&) const { return false; } - bool operator<(const list_edge&) const { return false; } - EdgeProperty m_property; - }; - - template - struct undirected_graph_helper { - - typedef undir_adj_list_traversal_tag traversal_category; - - // Placement of these overloaded remove_edge() functions - // inside the class avoids a VC++ bug. - - // O(E/V) - inline void - remove_edge(typename Config::edge_descriptor e) - { - typedef typename Config::OutEdgeList::value_type::property_type PType; - detail::remove_undirected_edge_dispatch::apply - (e, *this, *(PType*)e.get_property()); - } - // O(E/V) - inline void - remove_edge(typename Config::out_edge_iterator iter) - { - this->remove_edge(*iter); - } - }; - - // O(E/V) - template - inline void - remove_edge(EdgeOrIter e, undirected_graph_helper& g_) - { - g_.remove_edge(e); - } - - // O(E/V) or O(log(E/V)) - template - void - remove_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - undirected_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - typedef typename Config::edge_parallel_category Cat; - detail::remove_edge_and_property(g, g.out_edge_list(u), v, Cat()); - detail::erase_from_incidence_list(g.out_edge_list(v), u, Cat()); - } - - template - void - remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred, - undirected_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::OutEdgeList::value_type::property_type PropT; - graph_type& g = static_cast(g_); - - // First remove the edges from the targets' lists and - // from the graph's edge set list. - typename Config::out_edge_iterator out_i, out_end; - for (tie(out_i, out_end) = out_edges(u, g); out_i != out_end; ++out_i) - if (pred(*out_i)) { - typename Config::vertex_descriptor v = target(*out_i, g); - detail::remove_directed_edge_dispatch - (*out_i, g.out_edge_list(v), *(PropT*)(*out_i).get_property()); - g.m_edges.erase( (*out_i.base()).get_iter() ); - } - // Now remove the edges from this out-edge list. - typename Config::out_edge_iterator first, last; - tie(first, last) = out_edges(u, g); - typedef typename Config::edge_parallel_category Cat; - detail::remove_directed_edge_if_dispatch - (first, last, g.out_edge_list(u), pred, Cat()); - } - template - void - remove_in_edge_if(typename Config::vertex_descriptor u, Predicate pred, - undirected_graph_helper& g_) - { - remove_out_edge_if(u, pred, g_); - } - - // O(E/V * E) or O(log(E/V) * E) - template - void - remove_edge_if(Predicate pred, undirected_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - typename Config::edge_iterator ei, ei_end, next; - tie(ei, ei_end) = edges(g); - for (next = ei; ei != ei_end; ei = next) { - ++next; - if (pred(*ei)) - remove_edge(*ei, g); - } - } - - // O(1) - template - inline std::pair - edges(const undirected_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_iterator edge_iterator; - const graph_type& cg = static_cast(g_); - graph_type& g = const_cast(cg); - return std::make_pair( edge_iterator(g.m_edges.begin()), - edge_iterator(g.m_edges.end()) ); - } - // O(1) - template - inline typename Config::edges_size_type - num_edges(const undirected_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - const graph_type& g = static_cast(g_); - return g.m_edges.size(); - } - // O(E/V * E/V) - template - inline void - clear_vertex(typename Config::vertex_descriptor u, - undirected_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_parallel_category Cat; - graph_type& g = static_cast(g_); - typename Config::OutEdgeList& el = g.out_edge_list(u); - typename Config::OutEdgeList::iterator - ei = el.begin(), ei_end = el.end(); - for (; ei != ei_end; ++ei) { - detail::erase_from_incidence_list - (g.out_edge_list((*ei).get_target()), u, Cat()); - g.m_edges.erase((*ei).get_iter()); - } - g.out_edge_list(u).clear(); - } - // O(1) for allow_parallel_edge_tag - // O(log(E/V)) for disallow_parallel_edge_tag - template - inline std::pair - add_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - const typename Config::edge_property_type& p, - undirected_graph_helper& g_) - { - typedef typename Config::StoredEdge StoredEdge; - typedef typename Config::edge_descriptor edge_descriptor; - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - - bool inserted; - typename Config::EdgeContainer::value_type e(u, v, p); - g.m_edges.push_back(e); - typename Config::EdgeContainer::iterator p_iter - = boost::prior(g.m_edges.end()); - typename Config::OutEdgeList::iterator i; - boost::tie(i, inserted) = boost::push(g.out_edge_list(u), - StoredEdge(v, p_iter, &g.m_edges)); - if (inserted) { - boost::push(g.out_edge_list(v), StoredEdge(u, p_iter, &g.m_edges)); - return std::make_pair(edge_descriptor(u, v, &p_iter->get_property()), - true); - } else { - g.m_edges.erase(p_iter); - return std::make_pair - (edge_descriptor(u, v, &i->get_iter()->get_property()), false); - } - } - template - inline std::pair - add_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - undirected_graph_helper& g_) - { - typename Config::edge_property_type p; - return add_edge(u, v, p, g_); - } - - // O(1) - template - inline typename Config::degree_size_type - degree(typename Config::vertex_descriptor u, - const undirected_graph_helper& g_) - { - typedef typename Config::graph_type Graph; - const Graph& g = static_cast(g_); - return out_degree(u, g); - } - - template - inline std::pair - in_edges(typename Config::vertex_descriptor u, - const undirected_graph_helper& g_) - { - typedef typename Config::graph_type Graph; - const Graph& cg = static_cast(g_); - Graph& g = const_cast(cg); - typedef typename Config::in_edge_iterator in_edge_iterator; - return - std::make_pair(in_edge_iterator(g.out_edge_list(u).begin(), u), - in_edge_iterator(g.out_edge_list(u).end(), u)); - } - - //========================================================================= - // Bidirectional Graph Helper Class - - struct bidir_adj_list_traversal_tag : - public virtual vertex_list_graph_tag, - public virtual incidence_graph_tag, - public virtual adjacency_graph_tag, - public virtual edge_list_graph_tag, - public virtual bidirectional_graph_tag { }; - - template - struct bidirectional_graph_helper - : public directed_edges_helper { - typedef bidir_adj_list_traversal_tag traversal_category; - }; - - template - inline void - remove_edge_if(Predicate pred, bidirectional_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - typename Config::edge_iterator ei, ei_end, next; - tie(ei, ei_end) = edges(g); - for (next = ei; ei != ei_end; ei = next) { - ++next; - if (pred(*ei)) - remove_edge(*ei, g); - } - } - - template - inline std::pair - in_edges(typename Config::vertex_descriptor u, - const bidirectional_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - const graph_type& cg = static_cast(g_); - graph_type& g = const_cast(cg); - typedef typename Config::in_edge_iterator in_edge_iterator; - return - std::make_pair(in_edge_iterator(in_edge_list(g, u).begin(), u), - in_edge_iterator(in_edge_list(g, u).end(), u)); - } - - // O(1) - template - inline std::pair - edges(const bidirectional_graph_helper& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_iterator edge_iterator; - const graph_type& cg = static_cast(g_); - graph_type& g = const_cast(cg); - return std::make_pair( edge_iterator(g.m_edges.begin()), - edge_iterator(g.m_edges.end()) ); - } - - //========================================================================= - // Bidirectional Graph Helper Class (with edge properties) - - - template - struct bidirectional_graph_helper_with_property - : public bidirectional_graph_helper - { - // Placement of these overloaded remove_edge() functions - // inside the class avoids a VC++ bug. - - // O(E/V) - inline void - remove_edge(typename Config::edge_descriptor e) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(*this); - - typedef typename Config::OutEdgeList::value_type::property_type PType; - - typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g)); - typename Config::OutEdgeList::iterator out_i = out_el.begin(); - for (; out_i != out_el.end(); ++out_i) - if (&(*out_i).get_property() == (PType*)e.get_property()) { - out_el.erase(out_i); - break; - } - typename Config::InEdgeList& in_el = in_edge_list(g, target(e, g)); - typename Config::InEdgeList::iterator in_i = in_el.begin(); - for (; in_i != in_el.end(); ++in_i) - if (&(*in_i).get_property() == (PType*)e.get_property()) { - g.m_edges.erase((*in_i).get_iter()); - in_el.erase(in_i); - break; - } - } - inline void - remove_edge(typename Config::out_edge_iterator iter) - { - this->remove_edge(*iter); - } - }; - - // O(E/V) for allow_parallel_edge_tag - // O(log(E/V)) for disallow_parallel_edge_tag - template - inline void - remove_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - typedef typename Config::edge_parallel_category Cat; - detail::remove_edge_and_property(g, g.out_edge_list(u), v, Cat()); - detail::erase_from_incidence_list(in_edge_list(g, v), u, Cat()); - } - // O(E/V) - template - inline void - remove_edge(EdgeOrIter e, - bidirectional_graph_helper_with_property& g_) - { - g_.remove_edge(e); - } - - template - inline void - remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred, - bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::OutEdgeList::value_type::property_type PropT; - graph_type& g = static_cast(g_); - - typedef typename Config::EdgeIter EdgeIter; - typedef std::vector Garbage; - Garbage garbage; - - // First remove the edges from the targets' in-edge lists and - // from the graph's edge set list. - typename Config::out_edge_iterator out_i, out_end; - for (tie(out_i, out_end) = out_edges(u, g); out_i != out_end; ++out_i) - if (pred(*out_i)) { - detail::remove_directed_edge_dispatch - (*out_i, in_edge_list(g, target(*out_i, g)), - *(PropT*)(*out_i).get_property()); - // Put in garbage to delete later. Will need the properties - // for the remove_if of the out-edges. - garbage.push_back((*out_i.base()).get_iter()); - } - - // Now remove the edges from this out-edge list. - typename Config::out_edge_iterator first, last; - tie(first, last) = out_edges(u, g); - typedef typename Config::edge_parallel_category Cat; - detail::remove_directed_edge_if_dispatch - (first, last, g.out_edge_list(u), pred, Cat()); - - // Now delete the edge properties from the g.m_edges list - for (typename Garbage::iterator i = garbage.begin(); - i != garbage.end(); ++i) - g.m_edges.erase(*i); - } - template - inline void - remove_in_edge_if(typename Config::vertex_descriptor v, Predicate pred, - bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::OutEdgeList::value_type::property_type PropT; - graph_type& g = static_cast(g_); - - typedef typename Config::EdgeIter EdgeIter; - typedef std::vector Garbage; - Garbage garbage; - - // First remove the edges from the sources' out-edge lists and - // from the graph's edge set list. - typename Config::in_edge_iterator in_i, in_end; - for (tie(in_i, in_end) = in_edges(v, g); in_i != in_end; ++in_i) - if (pred(*in_i)) { - typename Config::vertex_descriptor u = source(*in_i, g); - detail::remove_directed_edge_dispatch - (*in_i, g.out_edge_list(u), *(PropT*)(*in_i).get_property()); - // Put in garbage to delete later. Will need the properties - // for the remove_if of the out-edges. - garbage.push_back((*in_i.base()).get_iter()); - } - // Now remove the edges from this in-edge list. - typename Config::in_edge_iterator first, last; - tie(first, last) = in_edges(v, g); - typedef typename Config::edge_parallel_category Cat; - detail::remove_directed_edge_if_dispatch - (first, last, in_edge_list(g, v), pred, Cat()); - - // Now delete the edge properties from the g.m_edges list - for (typename Garbage::iterator i = garbage.begin(); - i != garbage.end(); ++i) - g.m_edges.erase(*i); - } - - // O(1) - template - inline typename Config::edges_size_type - num_edges(const bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - const graph_type& g = static_cast(g_); - return g.m_edges.size(); - } - // O(E/V * E/V) for allow_parallel_edge_tag - // O(E/V * log(E/V)) for disallow_parallel_edge_tag - template - inline void - clear_vertex(typename Config::vertex_descriptor u, - bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_parallel_category Cat; - graph_type& g = static_cast(g_); - typename Config::OutEdgeList& el = g.out_edge_list(u); - typename Config::OutEdgeList::iterator - ei = el.begin(), ei_end = el.end(); - for (; ei != ei_end; ++ei) { - detail::erase_from_incidence_list - (in_edge_list(g, (*ei).get_target()), u, Cat()); - g.m_edges.erase((*ei).get_iter()); - } - typename Config::InEdgeList& in_el = in_edge_list(g, u); - typename Config::InEdgeList::iterator - in_ei = in_el.begin(), in_ei_end = in_el.end(); - for (; in_ei != in_ei_end; ++in_ei) { - detail::erase_from_incidence_list - (g.out_edge_list((*in_ei).get_target()), u, Cat()); - g.m_edges.erase((*in_ei).get_iter()); - } - g.out_edge_list(u).clear(); - in_edge_list(g, u).clear(); - } - - template - inline void - clear_out_edges(typename Config::vertex_descriptor u, - bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_parallel_category Cat; - graph_type& g = static_cast(g_); - typename Config::OutEdgeList& el = g.out_edge_list(u); - typename Config::OutEdgeList::iterator - ei = el.begin(), ei_end = el.end(); - for (; ei != ei_end; ++ei) { - detail::erase_from_incidence_list - (in_edge_list(g, (*ei).get_target()), u, Cat()); - g.m_edges.erase((*ei).get_iter()); - } - g.out_edge_list(u).clear(); - } - - template - inline void - clear_in_edges(typename Config::vertex_descriptor u, - bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - typedef typename Config::edge_parallel_category Cat; - graph_type& g = static_cast(g_); - typename Config::InEdgeList& in_el = in_edge_list(g, u); - typename Config::InEdgeList::iterator - in_ei = in_el.begin(), in_ei_end = in_el.end(); - for (; in_ei != in_ei_end; ++in_ei) { - detail::erase_from_incidence_list - (g.out_edge_list((*in_ei).get_target()), u, Cat()); - g.m_edges.erase((*in_ei).get_iter()); - } - in_edge_list(g, u).clear(); - } - - // O(1) for allow_parallel_edge_tag - // O(log(E/V)) for disallow_parallel_edge_tag - template - inline std::pair - add_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - const typename Config::edge_property_type& p, - bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - graph_type& g = static_cast(g_); - typedef typename Config::edge_descriptor edge_descriptor; - typedef typename Config::StoredEdge StoredEdge; - bool inserted; - typename Config::EdgeContainer::value_type e(u, v, p); - g.m_edges.push_back(e); - typename Config::EdgeContainer::iterator p_iter - = boost::prior(g.m_edges.end()); - typename Config::OutEdgeList::iterator i; - boost::tie(i, inserted) = boost::push(g.out_edge_list(u), - StoredEdge(v, p_iter, &g.m_edges)); - if (inserted) { - boost::push(in_edge_list(g, v), StoredEdge(u, p_iter, &g.m_edges)); - return std::make_pair(edge_descriptor(u, v, &p_iter->m_property), - true); - } else { - g.m_edges.erase(p_iter); - return std::make_pair(edge_descriptor(u, v, - &i->get_iter()->get_property()), - false); - } - } - - template - inline std::pair - add_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - bidirectional_graph_helper_with_property& g_) - { - typename Config::edge_property_type p; - return add_edge(u, v, p, g_); - } - // O(1) - template - inline typename Config::degree_size_type - degree(typename Config::vertex_descriptor u, - const bidirectional_graph_helper_with_property& g_) - { - typedef typename Config::graph_type graph_type; - const graph_type& g = static_cast(g_); - return in_degree(u, g) + out_degree(u, g); - } - - //========================================================================= - // Adjacency List Helper Class - - template - struct adj_list_helper : public Base - { - typedef typename Config::graph_type AdjList; - typedef typename Config::vertex_descriptor vertex_descriptor; - typedef typename Config::edge_descriptor edge_descriptor; - typedef typename Config::out_edge_iterator out_edge_iterator; - typedef typename Config::in_edge_iterator in_edge_iterator; - typedef typename Config::adjacency_iterator adjacency_iterator; - typedef typename Config::inv_adjacency_iterator inv_adjacency_iterator; - typedef typename Config::vertex_iterator vertex_iterator; - typedef typename Config::edge_iterator edge_iterator; - typedef typename Config::directed_category directed_category; - typedef typename Config::edge_parallel_category edge_parallel_category; - typedef typename Config::vertices_size_type vertices_size_type; - typedef typename Config::edges_size_type edges_size_type; - typedef typename Config::degree_size_type degree_size_type; - typedef typename Config::StoredEdge StoredEdge; - typedef typename Config::edge_property_type edge_property_type; - - // protected: - - // The edge_dispatch() functions should be static, but - // Borland gets confused about constness. - - // O(E/V) - inline std::pair - edge_dispatch(const AdjList& g, - vertex_descriptor u, vertex_descriptor v, - boost::allow_parallel_edge_tag) const - { - bool found; - const typename Config::OutEdgeList& el = g.out_edge_list(u); - typename Config::OutEdgeList::const_iterator - i = std::find_if(el.begin(), el.end(), - detail::target_is(v)); - found = (i != g.out_edge_list(u).end()); - if (found) - return std::make_pair(edge_descriptor(u, v, &(*i).get_property()), - true); - else - return std::make_pair(edge_descriptor(u, v, 0), false); - } - // O(log(E/V)) - inline std::pair - edge_dispatch(const AdjList& g, - vertex_descriptor u, vertex_descriptor v, - boost::disallow_parallel_edge_tag) const - { - bool found; - typename Config::OutEdgeList::const_iterator - i = std::find(g.out_edge_list(u).begin(), - g.out_edge_list(u).end(), StoredEdge(v)), - end = g.out_edge_list(u).end(); - found = (i != end); - if (found) - return std::make_pair(edge_descriptor(u, v, &(*i).get_property()), - true); - else - return std::make_pair(edge_descriptor(u, v, 0), false); - } - }; - - template - inline std::pair - adjacent_vertices(typename Config::vertex_descriptor u, - const adj_list_helper& g_) - { - typedef typename Config::graph_type AdjList; - const AdjList& cg = static_cast(g_); - AdjList& g = const_cast(cg); - typedef typename Config::adjacency_iterator adjacency_iterator; - typename Config::out_edge_iterator first, last; - boost::tie(first, last) = out_edges(u, g); - return std::make_pair(adjacency_iterator(first, &g), - adjacency_iterator(last, &g)); - } - template - inline std::pair - inv_adjacent_vertices(typename Config::vertex_descriptor u, - const adj_list_helper& g_) - { - typedef typename Config::graph_type AdjList; - const AdjList& cg = static_cast(g_); - AdjList& g = const_cast(cg); - typedef typename Config::inv_adjacency_iterator inv_adjacency_iterator; - typename Config::in_edge_iterator first, last; - boost::tie(first, last) = in_edges(u, g); - return std::make_pair(inv_adjacency_iterator(first, &g), - inv_adjacency_iterator(last, &g)); - } - template - inline std::pair - out_edges(typename Config::vertex_descriptor u, - const adj_list_helper& g_) - { - typedef typename Config::graph_type AdjList; - typedef typename Config::out_edge_iterator out_edge_iterator; - const AdjList& cg = static_cast(g_); - AdjList& g = const_cast(cg); - return - std::make_pair(out_edge_iterator(g.out_edge_list(u).begin(), u), - out_edge_iterator(g.out_edge_list(u).end(), u)); - } - template - inline std::pair - vertices(const adj_list_helper& g_) - { - typedef typename Config::graph_type AdjList; - const AdjList& cg = static_cast(g_); - AdjList& g = const_cast(cg); - return std::make_pair( g.vertex_set().begin(), g.vertex_set().end() ); - } - template - inline typename Config::vertices_size_type - num_vertices(const adj_list_helper& g_) - { - typedef typename Config::graph_type AdjList; - const AdjList& g = static_cast(g_); - return g.vertex_set().size(); - } - template - inline typename Config::degree_size_type - out_degree(typename Config::vertex_descriptor u, - const adj_list_helper& g_) - { - typedef typename Config::graph_type AdjList; - const AdjList& g = static_cast(g_); - return g.out_edge_list(u).size(); - } - template - inline std::pair - edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - const adj_list_helper& g_) - { - typedef typename Config::graph_type Graph; - typedef typename Config::edge_parallel_category Cat; - const Graph& g = static_cast(g_); - return g_.edge_dispatch(g, u, v, Cat()); - } - template - inline std::pair - edge_range(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - const adj_list_helper& g_) - { - typedef typename Config::graph_type Graph; - typedef typename Config::StoredEdge StoredEdge; - const Graph& cg = static_cast(g_); - Graph& g = const_cast(cg); - typedef typename Config::out_edge_iterator out_edge_iterator; - typename Config::OutEdgeList& el = g.out_edge_list(u); - typename Config::OutEdgeList::iterator first, last; - tie(first, last) = std::equal_range(el.begin(), el.end(), StoredEdge(v)); - return std::make_pair(out_edge_iterator(first, u), - out_edge_iterator(last, u)); - } - - template - inline typename Config::degree_size_type - in_degree(typename Config::vertex_descriptor u, - const adj_list_helper& g_) - { - typedef typename Config::graph_type Graph; - const Graph& cg = static_cast(g_); - Graph& g = const_cast(cg); - return in_edge_list(g, u).size(); - } - - namespace detail { - template - inline - typename boost::property_map::type - get_dispatch(adj_list_helper&, Property, - boost::edge_property_tag) { - typedef typename Config::graph_type Graph; - typedef typename boost::property_map::type PA; - return PA(); - } - template - inline - typename boost::property_map::const_type - get_dispatch(const adj_list_helper&, Property, - boost::edge_property_tag) { - typedef typename Config::graph_type Graph; - typedef typename boost::property_map::const_type PA; - return PA(); - } - - template - inline - typename boost::property_map::type - get_dispatch(adj_list_helper& g, Property, - boost::vertex_property_tag) { - typedef typename Config::graph_type Graph; - typedef typename boost::property_map::type PA; - return PA(&static_cast(g)); - } - template - inline - typename boost::property_map::const_type - get_dispatch(const adj_list_helper& g, Property, - boost::vertex_property_tag) { - typedef typename Config::graph_type Graph; - typedef typename boost::property_map::const_type PA; - const Graph& cg = static_cast(g); - return PA(&cg); - } - - } // namespace detail - - // Implementation of the PropertyGraph interface - template - inline - typename boost::property_map::type - get(Property p, adj_list_helper& g) { - typedef typename property_kind::type Kind; - return detail::get_dispatch(g, p, Kind()); - } - template - inline - typename boost::property_map::const_type - get(Property p, const adj_list_helper& g) { - typedef typename property_kind::type Kind; - return detail::get_dispatch(g, p, Kind()); - } - - template - inline - typename boost::property_traits< - typename boost::property_map::const_type - >::value_type - get(Property p, const adj_list_helper& g, const Key& key) { - return get(get(p, g), key); - } - - template - inline void - put(Property p, adj_list_helper& g, - const Key& key, const Value& value) - { - typedef typename Config::graph_type Graph; - typedef typename boost::property_map::type Map; - Map pmap = get(p, static_cast(g)); - put(pmap, key, value); - } - - - //========================================================================= - // Generalize Adjacency List Implementation - - struct adj_list_tag { }; - - template - class adj_list_impl - : public adj_list_helper - { - typedef typename Config::OutEdgeList OutEdgeList; - typedef typename Config::InEdgeList InEdgeList; - typedef typename Config::StoredVertexList StoredVertexList; - public: - typedef typename Config::stored_vertex stored_vertex; - typedef typename Config::EdgeContainer EdgeContainer; - typedef typename Config::vertex_descriptor vertex_descriptor; - typedef typename Config::edge_descriptor edge_descriptor; - typedef typename Config::vertex_iterator vertex_iterator; - typedef typename Config::edge_iterator edge_iterator; - typedef typename Config::edge_parallel_category edge_parallel_category; - typedef typename Config::vertices_size_type vertices_size_type; - typedef typename Config::edges_size_type edges_size_type; - typedef typename Config::degree_size_type degree_size_type; - typedef typename Config::edge_property_type edge_property_type; - typedef adj_list_tag graph_tag; - - inline adj_list_impl() { } - - inline adj_list_impl(const adj_list_impl& x) { - copy_impl(x); - } - inline adj_list_impl& operator=(const adj_list_impl& x) { - this->clear(); - copy_impl(x); - return *this; - } - inline void clear() { - for (typename StoredVertexList::iterator i = m_vertices.begin(); - i != m_vertices.end(); ++i) - delete (stored_vertex*)*i; - m_vertices.clear(); - m_edges.clear(); - } - inline adj_list_impl(vertices_size_type num_vertices) { - for (vertices_size_type i = 0; i < num_vertices; ++i) - add_vertex(static_cast(*this)); - } - template - inline adj_list_impl(vertices_size_type num_vertices, - EdgeIterator first, EdgeIterator last) - { - vertex_descriptor* v = new vertex_descriptor[num_vertices]; - for (vertices_size_type i = 0; i < num_vertices; ++i) - v[i] = add_vertex(static_cast(*this)); - - while (first != last) { - add_edge(v[(*first).first], v[(*first).second], *this); - ++first; - } - delete [] v; - } - template - inline adj_list_impl(vertices_size_type num_vertices, - EdgeIterator first, EdgeIterator last, - EdgePropertyIterator ep_iter) - { - vertex_descriptor* v = new vertex_descriptor[num_vertices]; - for (vertices_size_type i = 0; i < num_vertices; ++i) - v[i] = add_vertex(static_cast(*this)); - - while (first != last) { - add_edge(v[(*first).first], v[(*first).second], *ep_iter, *this); - ++first; - ++ep_iter; - } - delete [] v; - } - ~adj_list_impl() { - for (typename StoredVertexList::iterator i = m_vertices.begin(); - i != m_vertices.end(); ++i) - delete (stored_vertex*)*i; - } - // protected: - inline OutEdgeList& out_edge_list(vertex_descriptor v) { - stored_vertex* sv = (stored_vertex*)v; - return sv->m_out_edges; - } - inline const OutEdgeList& out_edge_list(vertex_descriptor v) const { - stored_vertex* sv = (stored_vertex*)v; - return sv->m_out_edges; - } - inline StoredVertexList& vertex_set() { return m_vertices; } - inline const StoredVertexList& vertex_set() const { return m_vertices; } - - inline void copy_impl(const adj_list_impl& x_) - { - const Derived& x = static_cast(x_); - - // Would be better to have a constant time way to get from - // vertices in x to the corresponding vertices in *this. - std::map vertex_map; - - // Copy the stored vertex objects by adding each vertex - // and copying its property object. - vertex_iterator vi, vi_end; - for (tie(vi, vi_end) = vertices(x); vi != vi_end; ++vi) { - stored_vertex* v = (stored_vertex*)add_vertex(*this); - v->m_property = ((stored_vertex*)*vi)->m_property; - vertex_map[(stored_vertex*)*vi] = v; - } - // Copy the edges by adding each edge and copying its - // property object. - edge_iterator ei, ei_end; - for (tie(ei, ei_end) = edges(x); ei != ei_end; ++ei) { - edge_descriptor e; - bool inserted; - vertex_descriptor s = source(*ei,x), t = target(*ei,x); - tie(e, inserted) = add_edge(vertex_map[(stored_vertex*)s], - vertex_map[(stored_vertex*)t], *this); - *((edge_property_type*)e.m_eproperty) - = *((edge_property_type*)(*ei).m_eproperty); - } - } - - - typename Config::EdgeContainer m_edges; - StoredVertexList m_vertices; - }; - // Had to make these non-members to avoid accidental instantiation - // on SGI MIPSpro C++ - template - inline typename C::InEdgeList& - in_edge_list(adj_list_impl&, - typename C::vertex_descriptor v) - { - typename C::stored_vertex* sv = (typename C::stored_vertex*)v; - return sv->m_in_edges; - } - template - inline const typename C::InEdgeList& - in_edge_list(const adj_list_impl&, - typename C::vertex_descriptor v) { - typename C::stored_vertex* sv = (typename C::stored_vertex*)v; - return sv->m_in_edges; - } - - - // O(1) - template - inline typename Config::vertex_descriptor - add_vertex(adj_list_impl& g_) - { - Derived& g = static_cast(g_); - typedef typename Config::stored_vertex stored_vertex; - stored_vertex* v = new stored_vertex; - typename Config::StoredVertexList::iterator pos; - bool inserted; - boost::tie(pos,inserted) = boost::push(g.m_vertices, v); - v->m_position = pos; - return v; - } - // O(1) - template - inline typename Config::vertex_descriptor - add_vertex(const typename Config::vertex_property_type& p, - adj_list_impl& g_) - { - Derived& g = static_cast(g_); - typedef typename Config::stored_vertex stored_vertex; - stored_vertex* v = new stored_vertex(p); - typename Config::StoredVertexList::iterator pos; - bool inserted; - boost::tie(pos,inserted) = boost::push(g.m_vertices, v); - v->m_position = pos; - return v; - } - // O(1) - template - inline void remove_vertex(typename Config::vertex_descriptor u, - adj_list_impl& g_) - { - typedef typename Config::stored_vertex stored_vertex; - Derived& g = static_cast(g_); - stored_vertex* su = (stored_vertex*)u; - g.m_vertices.erase(su->m_position); - delete su; - } - // O(V) - template - inline typename Config::vertex_descriptor - vertex(typename Config::vertices_size_type n, - const adj_list_impl& g_) - { - const Derived& g = static_cast(g_); - typename Config::vertex_iterator i = vertices(g).first; - while (n--) ++i; // std::advance(i, n); (not VC++ portable) - return *i; - } - - //========================================================================= - // Vector-Backbone Adjacency List Implementation - - namespace detail { - - template - inline void - remove_vertex_dispatch(Graph& g, vertex_descriptor u, - boost::directed_tag) - { - typedef typename Graph::edge_parallel_category edge_parallel_category; - g.m_vertices.erase(g.m_vertices.begin() + u); - vertex_descriptor V = num_vertices(g); - for (vertex_descriptor v = 0; v < V; ++v) - reindex_edge_list(g.out_edge_list(v), u, edge_parallel_category()); - } - - template - inline void - remove_vertex_dispatch(Graph& g, vertex_descriptor u, - boost::undirected_tag) - { - typedef typename Graph::edge_parallel_category edge_parallel_category; - g.m_vertices.erase(g.m_vertices.begin() + u); - vertex_descriptor V = num_vertices(g); - for (vertex_descriptor v = 0; v < V; ++v) - reindex_edge_list(g.out_edge_list(v), u, - edge_parallel_category()); - typedef typename Graph::EdgeContainer Container; - typedef typename Container::iterator Iter; - Iter ei = g.m_edges.begin(), ei_end = g.m_edges.end(); - for (; ei != ei_end; ++ei) { - if (ei->m_source > u) - --ei->m_source; - if (ei->m_target > u) - --ei->m_target; - } - } - template - inline void - remove_vertex_dispatch(Graph& g, vertex_descriptor u, - boost::bidirectional_tag) - { - typedef typename Graph::edge_parallel_category edge_parallel_category; - g.m_vertices.erase(g.m_vertices.begin() + u); - vertex_descriptor V = num_vertices(g); - vertex_descriptor v; - for (v = 0; v < V; ++v) - reindex_edge_list(g.out_edge_list(v), u, - edge_parallel_category()); - for (v = 0; v < V; ++v) - reindex_edge_list(in_edge_list(g, v), u, - edge_parallel_category()); - - typedef typename Graph::EdgeContainer Container; - typedef typename Container::iterator Iter; - Iter ei = g.m_edges.begin(), ei_end = g.m_edges.end(); - for (; ei != ei_end; ++ei) { - if (ei->m_source > u) - --ei->m_source; - if (ei->m_target > u) - --ei->m_target; - } - } - - template - inline void - reindex_edge_list(EdgeList& el, vertex_descriptor u, - boost::allow_parallel_edge_tag) - { - typename EdgeList::iterator ei = el.begin(), e_end = el.end(); - for (; ei != e_end; ++ei) - if ((*ei).get_target() > u) - --(*ei).get_target(); - } - template - inline void - reindex_edge_list(EdgeList& el, vertex_descriptor u, - boost::disallow_parallel_edge_tag) - { - typename EdgeList::iterator ei = el.begin(), e_end = el.end(); - while (ei != e_end) { - typename EdgeList::value_type ce = *ei; - ++ei; - if (ce.get_target() > u) { - el.erase(ce); - --ce.get_target(); - el.insert(ce); - } - } - } - } // namespace detail - - struct vec_adj_list_tag { }; - - template - class vec_adj_list_impl - : public adj_list_helper - { - typedef typename Config::OutEdgeList OutEdgeList; - typedef typename Config::InEdgeList InEdgeList; - typedef typename Config::StoredVertexList StoredVertexList; - public: - typedef typename Config::vertex_descriptor vertex_descriptor; - typedef typename Config::edge_descriptor edge_descriptor; - typedef typename Config::out_edge_iterator out_edge_iterator; - typedef typename Config::edge_iterator edge_iterator; - typedef typename Config::directed_category directed_category; - typedef typename Config::vertices_size_type vertices_size_type; - typedef typename Config::edges_size_type edges_size_type; - typedef typename Config::degree_size_type degree_size_type; - typedef typename Config::StoredEdge StoredEdge; - typedef typename Config::stored_vertex stored_vertex; - typedef typename Config::EdgeContainer EdgeContainer; - typedef typename Config::edge_property_type edge_property_type; - typedef vec_adj_list_tag graph_tag; - - inline vec_adj_list_impl() { } - - inline vec_adj_list_impl(const vec_adj_list_impl& x) { - copy_impl(x); - } - inline vec_adj_list_impl& operator=(const vec_adj_list_impl& x) { - this->clear(); - copy_impl(x); - return *this; - } - inline void clear() { - m_vertices.clear(); - clear_dispatch(edge_property_type()); - } - template - inline void clear_dispatch(const Property&) { - m_edges.clear(); - } - inline void clear_dispatch(const no_property&) { } - - inline vec_adj_list_impl(vertices_size_type _num_vertices) - : m_vertices(_num_vertices) { } - - template - inline vec_adj_list_impl(vertices_size_type num_vertices, - EdgeIterator first, EdgeIterator last) - : m_vertices(num_vertices) - { - while (first != last) { - add_edge((*first).first, (*first).second, - static_cast(*this)); - ++first; - } - } - template - inline vec_adj_list_impl(vertices_size_type num_vertices, - EdgeIterator first, EdgeIterator last, - EdgePropertyIterator ep_iter) - : m_vertices(num_vertices) - { - while (first != last) { - add_edge((*first).first, (*first).second, *ep_iter, - static_cast(*this)); - ++first; - ++ep_iter; - } - } - - // protected: - inline boost::integer_range vertex_set() const { - return boost::integer_range(0, m_vertices.size()); - } - inline OutEdgeList& out_edge_list(vertex_descriptor v) { - return m_vertices[v].m_out_edges; - } - inline const OutEdgeList& out_edge_list(vertex_descriptor v) const { - return m_vertices[v].m_out_edges; - } - inline void copy_impl(const vec_adj_list_impl& x_) - { - const Graph& x = static_cast(x_); - // Copy the stored vertex objects by adding each vertex - // and copying its property object. - for (vertices_size_type i = 0; i < num_vertices(x); ++i) { - vertex_descriptor v = add_vertex(*this); - m_vertices[v].m_property = x.m_vertices[i].m_property; - } - // Copy the edges by adding each edge and copying its - // property object. - edge_iterator ei, ei_end; - for (tie(ei, ei_end) = edges(x); ei != ei_end; ++ei) { - edge_descriptor e; - bool inserted; - tie(e, inserted) = add_edge(source(*ei,x), target(*ei,x) , *this); - *((edge_property_type*)e.m_eproperty) - = *((edge_property_type*)(*ei).m_eproperty); - } - } - typename Config::EdgeContainer m_edges; - StoredVertexList m_vertices; - }; - // Had to make these non-members to avoid accidental instantiation - // on SGI MIPSpro C++ - template - inline typename C::InEdgeList& - in_edge_list(vec_adj_list_impl& g, - typename C::vertex_descriptor v) { - return g.m_vertices[v].m_in_edges; - } - template - inline const typename C::InEdgeList& - in_edge_list(const vec_adj_list_impl& g, - typename C::vertex_descriptor v) { - return g.m_vertices[v].m_in_edges; - } - - // O(1) - template - inline typename Config::vertex_descriptor - add_vertex(vec_adj_list_impl& g_) { - Graph& g = static_cast(g_); - g.m_vertices.resize(g.m_vertices.size() + 1); - return g.m_vertices.size() - 1; - } - - template - inline typename Config::vertex_descriptor - add_vertex(const typename Config::vertex_property_type& p, - vec_adj_list_impl& g_) { - Graph& g = static_cast(g_); - typedef typename Config::stored_vertex stored_vertex; - g.m_vertices.push_back(stored_vertex(p)); - return g.m_vertices.size() - 1; - } - - // Here we override the directed_graph_helper add_edge() function - // so that the number of vertices is automatically changed if - // either u or v is greater than the number of vertices. - template - inline std::pair - add_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - const typename Config::edge_property_type& p, - vec_adj_list_impl& g_) - { - typename Config::vertex_descriptor x = std::max(u, v); - if (x >= num_vertices(g_)) - g_.m_vertices.resize(x + 1); - adj_list_helper& g = g_; - return add_edge(u, v, p, g); - } - template - inline std::pair - add_edge(typename Config::vertex_descriptor u, - typename Config::vertex_descriptor v, - vec_adj_list_impl& g_) - { - typename Config::edge_property_type p; - return add_edge(u, v, p, g_); - } - - - // O(V + E) - template - inline void remove_vertex(typename Config::vertex_descriptor v, - vec_adj_list_impl& g_) - { - typedef typename Config::directed_category Cat; - Graph& g = static_cast(g_); - detail::remove_vertex_dispatch(g, v, Cat()); - } - // O(1) - template - inline typename Config::vertex_descriptor - vertex(typename Config::vertices_size_type n, - const vec_adj_list_impl&) - { - return n; - } - - - namespace detail { - - //========================================================================= - // Adjacency List Generator - - template - struct adj_list_gen - { - typedef typename detail::is_random_access::type - is_rand_access; - typedef typename has_property::type has_edge_property; - typedef typename DirectedS::is_directed_t DirectedT; - typedef typename DirectedS::is_bidir_t BidirectionalT; - - struct config - { - typedef OutEdgeListS edgelist_selector; - - typedef Graph graph_type; - typedef EdgeProperty edge_property_type; - typedef VertexProperty vertex_property_type; - typedef GraphProperty graph_property_type; - typedef std::size_t vertices_size_type; - - typedef adjacency_list_traits - Traits; - - typedef typename Traits::directed_category directed_category; - typedef typename Traits::edge_parallel_category edge_parallel_category; - typedef typename Traits::vertex_descriptor vertex_descriptor; - typedef typename Traits::edge_descriptor edge_descriptor; - - typedef void* vertex_ptr; - - // need to reorganize this to avoid instantiating stuff - // that doesn't get used -JGS - - // VertexList and vertex_iterator - typedef typename container_gen::type SeqVertexList; - typedef boost::integer_range RandVertexList; - typedef typename boost::ct_if_t::type VertexList; - - typedef typename VertexList::iterator vertex_iterator; - - // EdgeContainer and StoredEdge - - typedef typename container_gen >::type EdgeContainer; - - typedef typename ct_and::type >::type on_edge_storage; - - typedef typename boost::ct_if_t::type edges_size_type; - - typedef typename EdgeContainer::iterator EdgeIter; - - typedef typename detail::is_random_access::type is_edge_ra; - - typedef typename boost::ct_if_t, - typename boost::ct_if_t, - stored_edge_iter - >::type - >::type StoredEdge; - - // Adjacency Types - - typedef typename container_gen::type - OutEdgeList; - typedef typename OutEdgeList::size_type degree_size_type; - typedef typename OutEdgeList::iterator OutEdgeIter; - - typedef boost::detail::iterator_traits OutEdgeIterTraits; - typedef typename OutEdgeIterTraits::iterator_category OutEdgeIterCat; - typedef typename OutEdgeIterTraits::difference_type OutEdgeIterDiff; - - typedef iterator_adaptor, - edge_descriptor, edge_descriptor, edge_descriptor*, - boost::multi_pass_input_iterator_tag, - OutEdgeIterDiff - > out_edge_iterator; - - typedef typename adjacency_iterator_generator::type adjacency_iterator; - - typedef OutEdgeList InEdgeList; - typedef OutEdgeIter InEdgeIter; - typedef OutEdgeIterCat InEdgeIterCat; - typedef OutEdgeIterDiff InEdgeIterDiff; - - typedef boost::iterator_adaptor, - edge_descriptor, edge_descriptor, edge_descriptor*, - boost::multi_pass_input_iterator_tag, - InEdgeIterDiff - > in_edge_iterator; - - typedef typename inv_adjacency_iterator_generator::type inv_adjacency_iterator; - - // Edge Iterator - - typedef boost::detail::iterator_traits EdgeIterTraits; - typedef typename EdgeIterTraits::iterator_category EdgeIterCat; - typedef typename EdgeIterTraits::difference_type EdgeIterDiff; - - typedef boost::iterator_adaptor UndirectedEdgeIter; // also used for bidirectional - - typedef adj_list_edge_iterator DirectedEdgeIter; - - typedef typename boost::ct_if_t::type edge_iterator; - - // stored_vertex and StoredVertexList - typedef typename container_gen::type - SeqStoredVertexList; - struct seq_stored_vertex { - seq_stored_vertex() { } - seq_stored_vertex(const VertexProperty& p) : m_property(p) { } - OutEdgeList m_out_edges; - VertexProperty m_property; - typename SeqStoredVertexList::iterator m_position; - }; - struct bidir_seq_stored_vertex { - bidir_seq_stored_vertex() { } - bidir_seq_stored_vertex(const VertexProperty& p) : m_property(p) { } - OutEdgeList m_out_edges; - InEdgeList m_in_edges; - VertexProperty m_property; - typename SeqStoredVertexList::iterator m_position; - }; - struct rand_stored_vertex { - rand_stored_vertex() { } - rand_stored_vertex(const VertexProperty& p) : m_property(p) { } - OutEdgeList m_out_edges; - VertexProperty m_property; - }; - struct bidir_rand_stored_vertex { - bidir_rand_stored_vertex() { } - bidir_rand_stored_vertex(const VertexProperty& p) : m_property(p) { } - OutEdgeList m_out_edges; - InEdgeList m_in_edges; - VertexProperty m_property; - }; - typedef typename boost::ct_if_t::type, - typename boost::ct_if_t::type - >::type StoredVertex; - struct stored_vertex : public StoredVertex { - stored_vertex() { } - stored_vertex(const VertexProperty& p) : StoredVertex(p) { } - }; - - typedef typename container_gen::type - RandStoredVertexList; - typedef typename boost::ct_if_t< is_rand_access, - RandStoredVertexList, SeqStoredVertexList>::type StoredVertexList; - }; // end of config - - - typedef typename boost::ct_if_t, - typename boost::ct_if_t, - undirected_graph_helper - >::type - >::type DirectedHelper; - - typedef typename boost::ct_if_t, - adj_list_impl - >::type type; - - }; - - } // namespace detail - - //========================================================================= - // Vertex Property Maps - - template - struct adj_list_vertex_property_map - : public boost::put_get_helper< - Reference, - adj_list_vertex_property_map - > - { - typedef typename Graph::stored_vertex StoredVertex; - typedef ValueType value_type; - typedef Reference reference; - typedef typename Graph::vertex_descriptor key_type; - typedef boost::lvalue_property_map_tag category; - inline adj_list_vertex_property_map() { } - inline adj_list_vertex_property_map(const Graph*) { } - inline Reference operator[](key_type v) const { - StoredVertex* sv = (StoredVertex*)v; - return get_property_value(sv->m_property, Tag()); - } - inline Reference operator()(key_type v) const { - return this->operator[](v); - } - }; - - template - struct adj_list_vertex_all_properties_map - : public boost::put_get_helper - > - { - typedef typename Graph::stored_vertex StoredVertex; - typedef Property value_type; - typedef PropRef reference; - typedef typename Graph::vertex_descriptor key_type; - typedef boost::lvalue_property_map_tag category; - inline adj_list_vertex_all_properties_map() { } - inline adj_list_vertex_all_properties_map(const Graph*) { } - inline PropRef operator[](key_type v) const { - StoredVertex* sv = (StoredVertex*)v; - return sv->m_property; - } - inline PropRef operator()(key_type v) const { - return this->operator[](v); - } - }; - - template - struct vec_adj_list_vertex_property_map - : public boost::put_get_helper< - Reference, - vec_adj_list_vertex_property_map - > - { - typedef ValueType value_type; - typedef Reference reference; - typedef typename boost::graph_traits::vertex_descriptor key_type; - typedef boost::lvalue_property_map_tag category; - vec_adj_list_vertex_property_map() { } - vec_adj_list_vertex_property_map(GraphPtr g) : m_g(g) { } - inline Reference operator[](key_type v) const { - return get_property_value(m_g->m_vertices[v].m_property, Tag()); - } - inline Reference operator()(key_type v) const { - return this->operator[](v); - } - GraphPtr m_g; - }; - - template - struct vec_adj_list_vertex_all_properties_map - : public boost::put_get_helper - > - { - typedef Property value_type; - typedef PropertyRef reference; - typedef typename boost::graph_traits::vertex_descriptor key_type; - typedef boost::lvalue_property_map_tag category; - vec_adj_list_vertex_all_properties_map() { } - vec_adj_list_vertex_all_properties_map(GraphPtr g) : m_g(g) { } - inline PropertyRef operator[](key_type v) const { - return m_g->m_vertices[v].m_property; - } - inline PropertyRef operator()(key_type v) const { - return this->operator[](v); - } - GraphPtr m_g; - }; - - struct adj_list_any_vertex_pa { - template - struct bind_ { - typedef typename property_value::type value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - - typedef adj_list_vertex_property_map - type; - typedef adj_list_vertex_property_map - const_type; - }; - }; - struct adj_list_all_vertex_pa { - template - struct bind_ { - typedef typename Graph::vertex_descriptor Vertex; - typedef adj_list_vertex_all_properties_map type; - typedef adj_list_vertex_all_properties_map const_type; - }; - }; - - template - struct vec_adj_list_vertex_id_map - : public boost::put_get_helper< - Vertex, vec_adj_list_vertex_id_map - > - { - typedef Vertex value_type; - typedef Vertex key_type; - typedef Vertex reference; - typedef boost::read_write_property_map_tag category; - inline vec_adj_list_vertex_id_map() { } - template - inline vec_adj_list_vertex_id_map(const Graph&) { } - inline value_type operator[](key_type v) const { return v; } - inline value_type operator()(key_type v) const { return v; } - }; - - struct vec_adj_list_any_vertex_pa { - template - struct bind_ { - typedef typename property_value::type value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - - typedef vec_adj_list_vertex_property_map - type; - typedef vec_adj_list_vertex_property_map - const_type; - }; - }; - struct vec_adj_list_id_vertex_pa { - template - struct bind_ { - typedef typename Graph::vertex_descriptor Vertex; - typedef vec_adj_list_vertex_id_map type; - typedef vec_adj_list_vertex_id_map const_type; - }; - }; - struct vec_adj_list_all_vertex_pa { - template - struct bind_ { - typedef typename Graph::vertex_descriptor Vertex; - typedef vec_adj_list_vertex_all_properties_map - type; - typedef vec_adj_list_vertex_all_properties_map - const_type; - }; - }; - namespace detail { - template - struct adj_list_choose_vertex_pa_helper { - typedef adj_list_any_vertex_pa type; - }; - template <> - struct adj_list_choose_vertex_pa_helper { - typedef adj_list_all_vertex_pa type; - }; - template - struct adj_list_choose_vertex_pa { - typedef typename adj_list_choose_vertex_pa_helper::type Helper; - typedef typename Helper::template bind_ Bind; - typedef typename Bind::type type; - typedef typename Bind::const_type const_type; - }; - - - template - struct vec_adj_list_choose_vertex_pa_helper { - typedef vec_adj_list_any_vertex_pa type; - }; - template <> - struct vec_adj_list_choose_vertex_pa_helper { - typedef vec_adj_list_id_vertex_pa type; - }; - template <> - struct vec_adj_list_choose_vertex_pa_helper { - typedef vec_adj_list_all_vertex_pa type; - }; - template - struct vec_adj_list_choose_vertex_pa { - typedef typename vec_adj_list_choose_vertex_pa_helper::type Helper; - typedef typename Helper::template bind_ Bind; - typedef typename Bind::type type; - typedef typename Bind::const_type const_type; - }; - } // namespace detail - - //========================================================================= - // Edge Property Map - - template - struct adj_list_edge_property_map - : public put_get_helper< - Ref, - adj_list_edge_property_map - > - { - typedef Value value_type; - typedef Ref reference; - typedef detail::edge_desc_impl key_type; - typedef boost::lvalue_property_map_tag category; - inline Ref operator[](key_type e) const { - Property& p = *(Property*)e.get_property(); - return get_property_value(p, Tag()); - } - inline Ref operator()(key_type e) const { - return this->operator[](e); - } - }; - - template - struct adj_list_edge_all_properties_map - : public put_get_helper - > - { - typedef Property value_type; - typedef PropRef reference; - typedef detail::edge_desc_impl key_type; - typedef boost::lvalue_property_map_tag category; - inline PropRef operator[](key_type e) const { - return *(PropPtr)e.get_property(); - } - inline PropRef operator()(key_type e) const { - return this->operator[](e); - } - }; - - // Edge Property Maps - - namespace detail { - struct adj_list_any_edge_pmap { - template - struct bind_ { - typedef typename property_value::type value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - - typedef adj_list_edge_property_map - type; - typedef adj_list_edge_property_map - const_type; - }; - }; - struct adj_list_all_edge_pmap { - template - struct bind_ { - typedef adj_list_edge_all_properties_map - type; - typedef adj_list_edge_all_properties_map - const_type; - }; - }; - - template - struct adj_list_choose_edge_pmap_helper { - typedef adj_list_any_edge_pmap type; - }; - template <> - struct adj_list_choose_edge_pmap_helper { - typedef adj_list_all_edge_pmap type; - }; - template - struct adj_list_choose_edge_pmap { - typedef typename adj_list_choose_edge_pmap_helper::type Helper; - typedef typename Helper::template bind_ Bind; - typedef typename Bind::type type; - typedef typename Bind::const_type const_type; - }; - struct adj_list_edge_property_selector { - template - struct bind_ { - typedef adj_list_choose_edge_pmap Choice; - typedef typename Choice::type type; - typedef typename Choice::const_type const_type; - }; - }; - } // namespace detail - - template <> - struct edge_property_selector { - typedef detail::adj_list_edge_property_selector type; - }; - template <> - struct edge_property_selector { - typedef detail::adj_list_edge_property_selector type; - }; - - // Vertex Property Maps - - struct adj_list_vertex_property_selector { - template - struct bind_ { - typedef detail::adj_list_choose_vertex_pa Choice; - typedef typename Choice::type type; - typedef typename Choice::const_type const_type; - }; - }; - template <> - struct vertex_property_selector { - typedef adj_list_vertex_property_selector type; - }; - - struct vec_adj_list_vertex_property_selector { - template - struct bind_ { - typedef detail::vec_adj_list_choose_vertex_pa Choice; - typedef typename Choice::type type; - typedef typename Choice::const_type const_type; - }; - }; - template <> - struct vertex_property_selector { - typedef vec_adj_list_vertex_property_selector type; - }; - -} // namespace boost - -#if !defined(BOOST_NO_HASH) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -namespace BOOST_STD_EXTENSION_NAMESPACE { - - template <> - struct hash< void* > // Need this when vertex_descriptor=void* - { - std::size_t - operator()(void* v) const { return (std::size_t)v; } - }; - - template - struct hash< boost::detail::stored_edge > - { - std::size_t - operator()(const boost::detail::stored_edge& e) const - { - return hash()(e.m_target); - } - }; - - template - struct hash< boost::detail::stored_edge_property > - { - std::size_t - operator()(const boost::detail::stored_edge_property& e) const - { - return hash()(e.m_target); - } - }; - - template - struct hash< boost::detail::stored_edge_iter > - { - std::size_t - operator()(const boost::detail::stored_edge_iter& e) const - { - return hash()(e.m_target); - } - }; - -} -#endif - - -#undef stored_edge -#undef stored_edge_property -#undef stored_edge_iter -#undef out_edge_iter_policies -#undef in_edge_iter_policies - -#endif // BOOST_GRAPH_DETAIL_DETAIL_ADJACENCY_LIST_CCT - -/* - Implementation Notes: - - Many of the public interface functions in this file would have been - more conveniently implemented as inline friend functions. - However there are a few compiler bugs that make that approach - non-portable. - - 1. g++ inline friend in namespace bug - 2. g++ using clause doesn't work with inline friends - 3. VC++ doesn't have Koenig lookup - - For these reasons, the functions were all written as non-inline free - functions, and static cast was used to convert from the helper - class to the adjacency_list derived class. - - Looking back, it might have been better to write out all functions - in terms of the adjacency_list, and then use a tag to dispatch - to the various helpers instead of using inheritance. - - */ diff --git a/sdk/include/boost/graph/detail/array_binary_tree.hpp b/sdk/include/boost/graph/detail/array_binary_tree.hpp deleted file mode 100644 index 7dd24f9b027..00000000000 --- a/sdk/include/boost/graph/detail/array_binary_tree.hpp +++ /dev/null @@ -1,196 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef ADSTL_ARRAY_BINARY_TREE_HPP -#define ADSTL_ARRAY_BINARY_TREE_HPP - -#include -#include -#include - -namespace adstl { - /* - Note: array_binary_tree is a completey balanced binary tree - */ - -#if !defined BOOST_NO_STD_ITERATOR_TRAITS - template -#else - template -#endif -class array_binary_tree_node { -public: - typedef array_binary_tree_node ArrayBinaryTreeNode; - typedef RandomAccessIterator rep_iterator; -#if !defined BOOST_NO_STD_ITERATOR_TRAITS - typedef typename std::iterator_traits::difference_type - difference_type; - typedef typename std::iterator_traits::value_type - value_type; -#else - typedef int difference_type; - typedef ValueType value_type; -#endif - typedef difference_type size_type; - - struct children_type { - struct iterator - : boost::iterator - { // replace with iterator_adaptor implementation -JGS - - inline iterator() : i(0), n(0) { } - inline iterator(const iterator& x) : r(x.r), i(x.i), n(x.n), id(x.id) { } - inline iterator& operator=(const iterator& x) { - r = x.r; i = x.i; n = x.n; - /*egcs generate a warning*/ - id = x.id; - return *this; - } - inline iterator(rep_iterator rr, - size_type ii, - size_type nn, - const ID& _id) : r(rr), i(ii), n(nn), id(_id) { } - inline array_binary_tree_node operator*() { - return ArrayBinaryTreeNode(r, i, n, id); } - inline iterator& operator++() { ++i; return *this; } - inline iterator operator++(int) - { iterator t = *this; ++(*this); return t; } - inline bool operator==(const iterator& x) const { return i == x.i; } - inline bool operator!=(const iterator& x) const - { return !(*this == x); } - rep_iterator r; - size_type i; - size_type n; - ID id; - }; - inline children_type() : i(0), n(0) { } - inline children_type(const children_type& x) - : r(x.r), i(x.i), n(x.n), id(x.id) { } - inline children_type& operator=(const children_type& x) { - r = x.r; i = x.i; n = x.n; - /*egcs generate a warning*/ - id = x.id; - return *this; - } - inline children_type(rep_iterator rr, - size_type ii, - size_type nn, - const ID& _id) : r(rr), i(ii), n(nn), id(_id) { } - inline iterator begin() { return iterator(r, 2 * i + 1, n, id); } - inline iterator end() { return iterator(r, 2 * i + 1 + size(), n, id); } - inline size_type size() const { - size_type c = 2 * i + 1; - size_type s; - if (c + 1 < n) s = 2; - else if (c < n) s = 1; - else s = 0; - return s; - } - rep_iterator r; - size_type i; - size_type n; - ID id; - }; - inline array_binary_tree_node() : i(0), n(0) { } - inline array_binary_tree_node(const array_binary_tree_node& x) - : r(x.r), i(x.i), n(x.n), id(x.id) { } - inline ArrayBinaryTreeNode& operator=(const ArrayBinaryTreeNode& x) { - r = x.r; - i = x.i; - n = x.n; - /*egcs generate a warning*/ - id = x.id; - return *this; - } - inline array_binary_tree_node(rep_iterator start, - rep_iterator end, - rep_iterator pos, const ID& _id) - : r(start), i(pos - start), n(end - start), id(_id) { } - inline array_binary_tree_node(rep_iterator rr, - size_type ii, - size_type nn, const ID& _id) - : r(rr), i(ii), n(nn), id(_id) { } - inline value_type& value() { return *(r + i); } - inline const value_type& value() const { return *(r + i); } - inline ArrayBinaryTreeNode parent() const { - return ArrayBinaryTreeNode(r, (i - 1) / 2, n, id); - } - inline bool has_parent() const { return i != 0; } - inline children_type children() { return children_type(r, i, n, id); } - /* - inline void swap(array_binary_tree_node x) { - value_type tmp = x.value(); - x.value() = value(); - value() = tmp; - i = x.i; - } - */ - template - inline void swap(ArrayBinaryTreeNode x, ExternalData& edata ) { - value_type tmp = x.value(); - - /*swap external data*/ - edata[ boost::get(id, tmp) ] = i; - edata[ boost::get(id, value()) ] = x.i; - - x.value() = value(); - value() = tmp; - i = x.i; - } - inline const children_type children() const { - return children_type(r, i, n); - } - inline size_type index() const { return i; } - rep_iterator r; - size_type i; - size_type n; - ID id; -}; - -template > -struct compare_array_node { - typedef typename RandomAccessContainer::value_type value_type; - compare_array_node(const Compare& x) : comp(x) {} - compare_array_node(const compare_array_node& x) : comp(x.comp) {} - - template< class node_type > - inline bool operator()(const node_type& x, const node_type& y) { - return comp(x.value(), y.value()); - } - - template< class node_type > - inline bool operator()(const node_type& x, const node_type& y) const { - return comp(x.value(), y.value()); - } - Compare comp; -}; - - -} /* namespace adstl */ - -#endif /* ADSTL_ARRAY_BINARY_TREE_H */ diff --git a/sdk/include/boost/graph/detail/bitset.hpp b/sdk/include/boost/graph/detail/bitset.hpp deleted file mode 100644 index 0f190948267..00000000000 --- a/sdk/include/boost/graph/detail/bitset.hpp +++ /dev/null @@ -1,906 +0,0 @@ -// (C) Copyright Jeremy Siek 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -/* - * Copyright (c) 1998 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#include -#include -#include -#include -#include -#include -#include - -// This provides versions of std::bitset with both static and dynamic size. - -// UNDER CONSTRUCTION - - -// replace this later -#include -#define BOOST_ASSERT_THROW(expr, except) assert(expr) - -namespace boost { - - namespace detail { - // structure to aid in counting bits - template - struct bit_count { - static unsigned char value[256]; - }; - - // Mapping from 8 bit unsigned integers to the index of the first bit - template - struct first_bit_location { - static unsigned char value[256]; - }; - - template // this size is in bits - struct word_traits { - typedef WordType word_type; - static const std::size_t word_size = CHAR_BIT * sizeof(word_type); - }; - - //========================================================================= - template - class bitset_base - : public bitset_adaptor< SizeType, - bitset_base > - { - // private: - public: - typedef SizeType size_type; - typedef typename WordTraits::word_type word_type; - - static size_type s_which_word(size_type pos) { - return pos / WordTraits::word_size; - } - static size_type s_which_byte(size_type pos) { - return (pos % WordTraits::word_size) / CHAR_BIT; - } - static size_type s_which_bit(size_type pos) { - return pos % WordTraits::word_size; - } - static word_type s_mask_bit(size_type pos) { - return (static_cast(1)) << s_which_bit(pos); - } - word_type& m_get_word(size_type pos) { - return data()[s_which_word(pos)]; - } - word_type m_get_word(size_type pos) const { - return data()[s_which_word(pos)]; - } - word_type& m_hi_word() { return data()[num_words() - 1]; } - word_type m_hi_word() const { return data()[num_words() - 1]; } - - void m_sanitize_highest() { - size_type extra_bits = size() % WordTraits::word_size; - if (extra_bits) - m_hi_word() &= ~((~static_cast(0)) << extra_bits); - } - public: - - class reference { - friend class bitset_base; - - word_type *m_word_ptr; - size_type m_bit_pos; - - // left undefined - reference(); - - reference(bitset_base& b, size_type pos ) { - m_word_ptr = &b.m_get_word(pos); - m_bit_pos = s_which_bit(pos); - } - - public: - ~reference() {} - - // for b[i] = x; - reference& operator=(bool x) { - if ( x ) - *m_word_ptr |= s_mask_bit(m_bit_pos); - else - *m_word_ptr &= ~s_mask_bit(m_bit_pos); - - return *this; - } - // for b[i] = b[j]; - reference& operator=(const reference& j) { - if ( (*(j.m_word_ptr) & s_mask_bit(j.m_bit_pos)) ) - *m_word_ptr |= s_mask_bit(m_bit_pos); - else - *m_word_ptr &= ~s_mask_bit(m_bit_pos); - - return *this; - } - // flips the bit - bool operator~() const { - return (*(m_word_ptr) & s_mask_bit(m_bit_pos)) == 0; - } - // for x = b[i]; - operator bool() const { - return (*(m_word_ptr) & s_mask_bit(m_bit_pos)) != 0; - } - // for b[i].flip(); - reference& flip() { - *m_word_ptr ^= s_mask_bit(m_bit_pos); - return *this; - } - }; - - void init_from_ulong(unsigned long val) { - reset(); - const size_type n = std::min(sizeof(unsigned long) * CHAR_BIT, - WordTraits::word_size * num_words()); - for(size_type i = 0; i < n; ++i, val >>= 1) - if ( val & 0x1 ) - m_get_word(i) |= s_mask_bit(i); - } - - // intersection: this = this & x - Derived& operator&=(const Derived& x) { - for (size_type i = 0; i < num_words(); ++i) - data()[i] &= x.data()[i]; - return static_cast(*this); - } - // union: this = this | x - Derived& operator|=(const Derived& x) { - for (size_type i = 0; i < num_words(); ++i) - data()[i] |= x.data()[i]; - return static_cast(*this); - } - // exclusive or: this = this ^ x - Derived& operator^=(const Derived& x) { - for (size_type i = 0; i < num_words(); ++i) - data()[i] ^= x.data()[i]; - return static_cast(*this); - } - // left shift - Derived& operator<<=(size_type pos); - - // right shift - Derived& operator>>=(size_type pos); - - Derived& set() { - for (size_type i = 0; i < num_words(); ++i) - data()[i] = ~static_cast(0); - m_sanitize_highest(); - return static_cast(*this); - } - - Derived& set(size_type pos, int val = true) - { - BOOST_ASSERT_THROW(pos < size(), std::out_of_range("boost::bitset::set(pos,value)")); - if (val) - m_get_word(pos) |= s_mask_bit(pos); - else - m_get_word(pos) &= ~s_mask_bit(pos); - return static_cast(*this); - } - - Derived& reset() { - for (size_type i = 0; i < num_words(); ++i) - data()[i] = 0; - return static_cast(*this); - } - - Derived& reset(size_type pos) { - BOOST_ASSERT_THROW(pos < size(), std::out_of_range("boost::bitset::reset(pos)")); - m_get_word(pos) &= ~s_mask_bit(pos); - return static_cast(*this); - } - - // compliment - Derived operator~() const { - return Derived(static_cast(*this)).flip(); - } - - Derived& flip() { - for (size_type i = 0; i < num_words(); ++i) - data()[i] = ~data()[i]; - m_sanitize_highest(); - return static_cast(*this); - } - Derived& flip(size_type pos) { - BOOST_ASSERT_THROW(pos < size(), std::out_of_range("boost::bitset::flip(pos)")); - m_get_word(pos) ^= s_mask_bit(pos); - return static_cast(*this); - } - - // element access - reference operator[](size_type pos) { return reference(*this, pos); } - bool operator[](size_type pos) const { return test(pos); } - - unsigned long to_ulong() const; - - // to_string - - - size_type count() const { - size_type result = 0; - const unsigned char* byte_ptr = (const unsigned char*)data(); - const unsigned char* end_ptr = - (const unsigned char*)(data() + num_words()); - while ( byte_ptr < end_ptr ) { - result += bit_count<>::value[*byte_ptr]; - byte_ptr++; - } - return result; - } - - // size() must be provided by Derived class - - bool operator==(const Derived& x) const { - return std::equal(data(), data() + num_words(), x.data()); - } - - bool operator!=(const Derived& x) const { - return ! this->operator==(x); - } - - bool test(size_type pos) const { - BOOST_ASSERT_THROW(pos < size(), std::out_of_range("boost::bitset::test(pos)")); - return (m_get_word(pos) & s_mask_bit(pos)) - != static_cast(0); - } - - bool any() const { - for (size_type i = 0; i < num_words(); ++i) { - if ( data()[i] != static_cast(0) ) - return true; - } - return false; - } - bool none() const { - return !any(); - } - - Derived operator<<(size_type pos) const - { return Derived(static_cast(*this)) <<= pos; } - - Derived operator>>(size_type pos) const - { return Derived(static_cast(*this)) >>= pos; } - - template - void m_copy_from_string(const basic_string& s, - size_type pos, size_type n) - { - reset(); - const size_type nbits = std::min(size(), min(n, s.size() - pos)); - for (size_type i = 0; i < nbits; ++i) { - switch(s[pos + nbits - i - 1]) { - case '0': - break; - case '1': - this->set(i); - break; - default: - throw std::invalid_argument - ("boost::bitset_base::m_copy_from_string(s, pos, n)"); - } - } - } - - template - void m_copy_to_string(basic_string& s) const - { - s.assign(size(), '0'); - - for (size_type i = 0; i < size(); ++i) - if (test(i)) - s[size() - 1 - i] = '1'; - } - - //----------------------------------------------------------------------- - // Stuff not in std::bitset - - // difference: this = this - x - Derived& operator-=(const Derived& x) { - for (size_type i = 0; i < num_words(); ++i) - data()[i] &= ~x.data()[i]; - return static_cast(*this); - } - - // this wasn't working, why? - int compare_3way(const Derived& x) const { - return std::lexicographical_compare_3way - (data(), data() + num_words(), x.data(), x.data() + x.num_words()); - } - - // less-than compare - bool operator<(const Derived& x) const { - return std::lexicographical_compare - (data(), data() + num_words(), x.data(), x.data() + x.num_words()); - } - - // find the index of the first "on" bit - size_type find_first() const; - - // find the index of the next "on" bit after prev - size_type find_next(size_type prev) const; - - - size_type _Find_first() const { return find_first(); } - - // find the index of the next "on" bit after prev - size_type _Find_next(size_type prev) const { return find_next(prev); } - - // private: - word_type* data() - { return static_cast(this)->data(); } - - const word_type* data() const - { return static_cast(this)->data(); } - - size_type num_words() const - { return static_cast(this)->num_words(); } - - size_type size() const - { return static_cast(this)->size(); } - }; - - // 23.3.5.3 bitset operations: - template - inline D operator&(const bitset_base& x, - const bitset_base& y) { - D result(static_cast(x)); - result &= static_cast(y); - return result; - } - - template - inline D operator|(const bitset_base& x, - const bitset_base& y) { - D result(static_cast(x)); - result |= static_cast(y); - return result; - } - - template - inline D operator^(const bitset_base& x, - const bitset_base& y) { - D result(static_cast(x)); - result ^= static_cast(y); - return result; - } - - // this one is an extension - template - inline D operator-(const bitset_base& x, - const bitset_base& y) { - D result(static_cast(x)); - result -= static_cast(y); - return result; - } - - template - inline int compare_3way(const bitset_base& x, - const bitset_base& y) { - return std::lexicographical_compare_3way - (x.data(), x.data() + x.num_words(), - y.data(), y.data() + y.num_words()); - } - - - template - std::istream& - operator>>(std::istream& is, bitset_base& x) { - std::string tmp; - tmp.reserve(x.size()); - - // In new templatized iostreams, use istream::sentry - if (is.flags() & ios::skipws) { - char c; - do - is.get(c); - while (is && isspace(c)); - if (is) - is.putback(c); - } - - for (S i = 0; i < x.size(); ++i) { - char c; - is.get(c); - - if (!is) - break; - else if (c != '0' && c != '1') { - is.putback(c); - break; - } - else - // tmp.push_back(c); - tmp += c; - } - - if (tmp.empty()) - is.clear(is.rdstate() | ios::failbit); - else - x.m_copy_from_string(tmp, static_cast(0), x.size()); - - return is; - } - - template - std::ostream& operator<<(std::ostream& os, - const bitset_base& x) { - std::string tmp; - x.m_copy_to_string(tmp); - return os << tmp; - } - - //========================================================================= - template - > - class dyn_size_bitset - : public bitset_base, SizeType, - dyn_size_bitset > - { - typedef dyn_size_bitset self; - public: - typedef SizeType size_type; - private: - typedef word_traits WordTraits; - static const size_type word_size = WordTraits::word_size; - - public: - dyn_size_bitset(unsigned long val, - size_type n, - const Allocator& alloc = Allocator()) - : m_data(alloc.allocate((n + word_size - 1) / word_size)), - m_size(n), - m_num_words((n + word_size - 1) / word_size), - m_alloc(alloc) - { - init_from_ulong(val); - } - - dyn_size_bitset(size_type n, // size of the set's "universe" - const Allocator& alloc = Allocator()) - : m_data(alloc.allocate((n + word_size - 1) / word_size)), - m_size(n), m_num_words((n + word_size - 1) / word_size), - m_alloc(alloc) - { } - - template - explicit dyn_size_bitset - (const basic_string& s, - std::size_t pos = 0, - std::size_t n = std::size_t(basic_string::npos), - const Allocator& alloc = Allocator()) - : m_data(alloc.allocate((n + word_size - 1) / word_size)), - m_size(n), m_num_words((n + word_size - 1) / word_size), - m_alloc(alloc) - { - BOOST_ASSERT_THROW(pos < s.size(), std::out_of_range("dyn_size_bitset::dyn_size_bitset(s,pos,n,alloc)")); - m_copy_from_string(s, pos, n); - } - - template - explicit dyn_size_bitset - (InputIterator first, InputIterator last, - size_type n, // size of the set's "universe" - const Allocator& alloc = Allocator()) - : m_data(alloc.allocate((n + word_size - 1) / word_size)), - m_size(N), m_num_words((n + word_size - 1) / word_size), - m_alloc(alloc) - { - while (first != last) - this->set(*first++); - } - - ~dyn_size_bitset() { - m_alloc.deallocate(m_data, m_num_words); - } - - size_type size() const { return m_size; } - - // protected: - size_type num_words() const { return m_num_words; } - - word_type* data() { return m_data; } - const word_type* data() const { return m_data; } - - protected: - word_type* m_data; - SizeType m_size; - SizeType m_num_words; - Allocator m_alloc; - }; - - //========================================================================= - template - class bitset - : public bitset_base, SizeType, - bitset > - { - typedef bitset self; - static const std::size_t word_size = word_traits::word_size; - public: - // 23.3.5.1 constructors: - bitset() { -#if defined(__GNUC__) - for (size_type i = 0; i < num_words(); ++i) - m_data[i] = static_cast(0); -#endif - } - - bitset(unsigned long val) { - init_from_ulong(val); - } - - template - explicit bitset - (const basic_string& s, - std::size_t pos = 0, - std::size_t n = std::size_t(basic_string::npos)) - { - BOOST_ASSERT_THROW - (pos < s.size(), std::out_of_range("bitset::bitset(s,pos,n)")); - m_copy_from_string(s, pos, n); - } - - size_type size() const { return N; } - - // protected: - size_type num_words() const { return (N + word_size - 1) / word_size; } - - word_type* data() { return m_data; } - const word_type* data() const { return m_data; } - protected: - word_type m_data[(N + word_size - 1) / word_size]; - }; - - //========================================================================= - struct select_static_bitset { - template - struct bind_ { - typedef bitset type; - }; - }; - struct select_dyn_size_bitset { - template - struct bind_ { - typedef dyn_size_bitset type; - }; - }; - - template - > - class bitset_generator { - typedef typename ct_if::type selector; - public: - typedef typename selector - ::template bind_::type type; - }; - - - //========================================================================= - // bitset_base non-inline member function implementations - - template - Derived& - bitset_base:: - operator<<=(size_type shift) - { - typedef typename WordTraits::word_type word_type; - typedef SizeType size_type; - if (shift != 0) { - const size_type wshift = shift / WordTraits::word_size; - const size_type offset = shift % WordTraits::word_size; - const size_type sub_offset = WordTraits::word_size - offset; - size_type n = num_words() - 1; - for ( ; n > wshift; --n) - data()[n] = (data()[n - wshift] << offset) | - (data()[n - wshift - 1] >> sub_offset); - if (n == wshift) - data()[n] = data()[0] << offset; - for (size_type n1 = 0; n1 < n; ++n1) - data()[n1] = static_cast(0); - } - m_sanitize_highest(); - return static_cast(*this); - } // end operator<<= - - - template - Derived& - bitset_base:: - operator>>=(size_type shift) - { - typedef typename WordTraits::word_type word_type; - typedef SizeType size_type; - if (shift != 0) { - const size_type wshift = shift / WordTraits::word_size; - const size_type offset = shift % WordTraits::word_size; - const size_type sub_offset = WordTraits::word_size - offset; - const size_type limit = num_words() - wshift - 1; - size_type n = 0; - for ( ; n < limit; ++n) - data()[n] = (data()[n + wshift] >> offset) | - (data()[n + wshift + 1] << sub_offset); - data()[limit] = data()[num_words()-1] >> offset; - for (size_type n1 = limit + 1; n1 < num_words(); ++n1) - data()[n1] = static_cast(0); - } - m_sanitize_highest(); - return static_cast(*this); - } // end operator>>= - - - template - unsigned long bitset_base:: - to_ulong() const - { - typedef typename WordTraits::word_type word_type; - typedef SizeType size_type; - const std::overflow_error - overflow("boost::bit_set::operator unsigned long()"); - - if (sizeof(word_type) >= sizeof(unsigned long)) { - for (size_type i = 1; i < num_words(); ++i) - BOOST_ASSERT_THROW(! data()[i], overflow); - - const word_type mask - = static_cast(static_cast(-1)); - BOOST_ASSERT_THROW(! (data()[0] & ~mask), overflow); - - return static_cast(data()[0] & mask); - } - else { // sizeof(word_type) < sizeof(unsigned long). - const size_type nwords = - (sizeof(unsigned long) + sizeof(word_type) - 1) / sizeof(word_type); - - size_type min_nwords = nwords; - if (num_words() > nwords) { - for (size_type i = nwords; i < num_words(); ++i) - BOOST_ASSERT_THROW(!data()[i], overflow); - } - else - min_nwords = num_words(); - - // If unsigned long is 8 bytes and word_type is 6 bytes, then - // an unsigned long consists of all of one word plus 2 bytes - // from another word. - const size_type part = sizeof(unsigned long) % sizeof(word_type); - -#if 0 - // bug in here? - // >> to far? - BOOST_ASSERT_THROW((part != 0 - && nwords <= num_words() - && (data()[min_nwords - 1] >> - ((sizeof(word_type) - part) * CHAR_BIT)) != 0), - overflow); -#endif - - unsigned long result = 0; - for (size_type i = 0; i < min_nwords; ++i) { - result |= static_cast( - data()[i]) << (i * sizeof(word_type) * CHAR_BIT); - } - return result; - } - }// end operator unsigned long() - - - template - SizeType bitset_base:: - find_first() const - { - SizeType not_found = size(); - for (size_type i = 0; i < num_words(); i++ ) { - word_type thisword = data()[i]; - if ( thisword != static_cast(0) ) { - // find byte within word - for ( std::size_t j = 0; j < sizeof(word_type); j++ ) { - unsigned char this_byte - = static_cast(thisword & (~(unsigned char)0)); - if ( this_byte ) - return i * WordTraits::word_size + j * CHAR_BIT + - first_bit_location<>::value[this_byte]; - - thisword >>= CHAR_BIT; - } - } - } - // not found, so return an indication of failure. - return not_found; - } - - template - SizeType bitset_base:: - bitset_base:: - find_next(size_type prev) const - { - SizeType not_found = size(); - // make bound inclusive - ++prev; - - // check out of bounds - if ( prev >= num_words() * WordTraits::word_size ) - return not_found; - - // search first word - size_type i = s_which_word(prev); - word_type thisword = data()[i]; - - // mask off bits below bound - thisword &= (~static_cast(0)) << s_which_bit(prev); - - if ( thisword != static_cast(0) ) { - // find byte within word - // get first byte into place - thisword >>= s_which_byte(prev) * CHAR_BIT; - for ( size_type j = s_which_byte(prev); j < sizeof(word_type); j++ ) { - unsigned char this_byte - = static_cast(thisword & (~(unsigned char)0)); - if ( this_byte ) - return i * WordTraits::word_size + j * CHAR_BIT + - first_bit_location<>::value[this_byte]; - - thisword >>= CHAR_BIT; - } - } - - // check subsequent words - i++; - for ( ; i < num_words(); i++ ) { - word_type thisword = data()[i]; - if ( thisword != static_cast(0) ) { - // find byte within word - for ( size_type j = 0; j < sizeof(word_type); j++ ) { - unsigned char this_byte - = static_cast(thisword & (~(unsigned char)0)); - if ( this_byte ) - return i * WordTraits::word_size + j * CHAR_BIT + - first_bit_location<>::value[this_byte]; - - thisword >>= CHAR_BIT; - } - } - } - - // not found, so return an indication of failure. - return not_found; - } // end find_next - - - template - unsigned char bit_count::value[] = { - 0, /* 0 */ 1, /* 1 */ 1, /* 2 */ 2, /* 3 */ 1, /* 4 */ - 2, /* 5 */ 2, /* 6 */ 3, /* 7 */ 1, /* 8 */ 2, /* 9 */ - 2, /* 10 */ 3, /* 11 */ 2, /* 12 */ 3, /* 13 */ 3, /* 14 */ - 4, /* 15 */ 1, /* 16 */ 2, /* 17 */ 2, /* 18 */ 3, /* 19 */ - 2, /* 20 */ 3, /* 21 */ 3, /* 22 */ 4, /* 23 */ 2, /* 24 */ - 3, /* 25 */ 3, /* 26 */ 4, /* 27 */ 3, /* 28 */ 4, /* 29 */ - 4, /* 30 */ 5, /* 31 */ 1, /* 32 */ 2, /* 33 */ 2, /* 34 */ - 3, /* 35 */ 2, /* 36 */ 3, /* 37 */ 3, /* 38 */ 4, /* 39 */ - 2, /* 40 */ 3, /* 41 */ 3, /* 42 */ 4, /* 43 */ 3, /* 44 */ - 4, /* 45 */ 4, /* 46 */ 5, /* 47 */ 2, /* 48 */ 3, /* 49 */ - 3, /* 50 */ 4, /* 51 */ 3, /* 52 */ 4, /* 53 */ 4, /* 54 */ - 5, /* 55 */ 3, /* 56 */ 4, /* 57 */ 4, /* 58 */ 5, /* 59 */ - 4, /* 60 */ 5, /* 61 */ 5, /* 62 */ 6, /* 63 */ 1, /* 64 */ - 2, /* 65 */ 2, /* 66 */ 3, /* 67 */ 2, /* 68 */ 3, /* 69 */ - 3, /* 70 */ 4, /* 71 */ 2, /* 72 */ 3, /* 73 */ 3, /* 74 */ - 4, /* 75 */ 3, /* 76 */ 4, /* 77 */ 4, /* 78 */ 5, /* 79 */ - 2, /* 80 */ 3, /* 81 */ 3, /* 82 */ 4, /* 83 */ 3, /* 84 */ - 4, /* 85 */ 4, /* 86 */ 5, /* 87 */ 3, /* 88 */ 4, /* 89 */ - 4, /* 90 */ 5, /* 91 */ 4, /* 92 */ 5, /* 93 */ 5, /* 94 */ - 6, /* 95 */ 2, /* 96 */ 3, /* 97 */ 3, /* 98 */ 4, /* 99 */ - 3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */ - 4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */ - 5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */ - 5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */ - 4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */ - 6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */ - 2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */ - 4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */ - 3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */ - 3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */ - 4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */ - 5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */ - 2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */ - 4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */ - 4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */ - 6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */ - 4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */ - 5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */ - 6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */ - 4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */ - 3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */ - 5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */ - 4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */ - 6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */ - 5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */ - 4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */ - 5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */ - 6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */ - 4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */ - 6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */ - 6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */ - 8 /* 255 */ - }; // end _Bit_count - - template - unsigned char first_bit_location::value[] = { - 0, /* 0 */ 0, /* 1 */ 1, /* 2 */ 0, /* 3 */ 2, /* 4 */ - 0, /* 5 */ 1, /* 6 */ 0, /* 7 */ 3, /* 8 */ 0, /* 9 */ - 1, /* 10 */ 0, /* 11 */ 2, /* 12 */ 0, /* 13 */ 1, /* 14 */ - 0, /* 15 */ 4, /* 16 */ 0, /* 17 */ 1, /* 18 */ 0, /* 19 */ - 2, /* 20 */ 0, /* 21 */ 1, /* 22 */ 0, /* 23 */ 3, /* 24 */ - 0, /* 25 */ 1, /* 26 */ 0, /* 27 */ 2, /* 28 */ 0, /* 29 */ - 1, /* 30 */ 0, /* 31 */ 5, /* 32 */ 0, /* 33 */ 1, /* 34 */ - 0, /* 35 */ 2, /* 36 */ 0, /* 37 */ 1, /* 38 */ 0, /* 39 */ - 3, /* 40 */ 0, /* 41 */ 1, /* 42 */ 0, /* 43 */ 2, /* 44 */ - 0, /* 45 */ 1, /* 46 */ 0, /* 47 */ 4, /* 48 */ 0, /* 49 */ - 1, /* 50 */ 0, /* 51 */ 2, /* 52 */ 0, /* 53 */ 1, /* 54 */ - 0, /* 55 */ 3, /* 56 */ 0, /* 57 */ 1, /* 58 */ 0, /* 59 */ - 2, /* 60 */ 0, /* 61 */ 1, /* 62 */ 0, /* 63 */ 6, /* 64 */ - 0, /* 65 */ 1, /* 66 */ 0, /* 67 */ 2, /* 68 */ 0, /* 69 */ - 1, /* 70 */ 0, /* 71 */ 3, /* 72 */ 0, /* 73 */ 1, /* 74 */ - 0, /* 75 */ 2, /* 76 */ 0, /* 77 */ 1, /* 78 */ 0, /* 79 */ - 4, /* 80 */ 0, /* 81 */ 1, /* 82 */ 0, /* 83 */ 2, /* 84 */ - 0, /* 85 */ 1, /* 86 */ 0, /* 87 */ 3, /* 88 */ 0, /* 89 */ - 1, /* 90 */ 0, /* 91 */ 2, /* 92 */ 0, /* 93 */ 1, /* 94 */ - 0, /* 95 */ 5, /* 96 */ 0, /* 97 */ 1, /* 98 */ 0, /* 99 */ - 2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */ - 0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */ - 1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */ - 0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */ - 3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */ - 0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */ - 1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */ - 0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */ - 2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */ - 0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */ - 1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */ - 0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */ - 5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */ - 0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */ - 1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */ - 0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */ - 2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */ - 0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */ - 1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */ - 0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */ - 3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */ - 0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */ - 1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */ - 0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */ - 2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */ - 0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */ - 1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */ - 0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */ - 4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */ - 0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */ - 1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */ - 0, /* 255 */ - }; // end _First_one - - } // namespace detail - -} // namespace boost diff --git a/sdk/include/boost/graph/detail/bitset_adaptor.hpp b/sdk/include/boost/graph/detail/bitset_adaptor.hpp deleted file mode 100644 index e2d330112ca..00000000000 --- a/sdk/include/boost/graph/detail/bitset_adaptor.hpp +++ /dev/null @@ -1,104 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_BITSET_ADAPTOR_HPP -#define BOOST_BITSET_ADAPTOR_HPP - - template - struct bitset_adaptor { - Derived& derived() { return static_cast(*this); } - const Derived& derived() const { - return static_cast(*this); - } - }; - - template - bool set_contains(const bitset_adaptor& s, const V& x) { - return s.derived().test(x); - } - - template - bool set_equal(const bitset_adaptor& x, - const bitset_adaptor& y) { - return x.derived() == y.derived(); - } - - template - int set_lex_order(const bitset_adaptor& x, - const bitset_adaptor& y) { - return compare_3way(x.derived(), y.derived()); - } - - template - void set_clear(bitset_adaptor& x) { - x.derived().reset(); - } - - template - bool set_empty(const bitset_adaptor& x) { - return x.derived().none(); - } - - template - void set_insert(bitset_adaptor& x, const V& a) { - x.derived().set(a); - } - - template - void set_remove(bitset_adaptor& x, const V& a) { - x.derived().set(a, false); - } - - template - void set_intersect(const bitset_adaptor& x, - const bitset_adaptor& y, - bitset_adaptor& z) - { - z.derived() = x.derived() & y.derived(); - } - - template - void set_union(const bitset_adaptor& x, - const bitset_adaptor& y, - bitset_adaptor& z) - { - z.derived() = x.derived() | y.derived(); - } - - template - void set_difference(const bitset_adaptor& x, - const bitset_adaptor& y, - bitset_adaptor& z) - { - z.derived() = x.derived() - y.derived(); - } - - template - void set_compliment(const bitset_adaptor& x, - bitset_adaptor& z) - { - z.derived() = x.derived(); - z.derived().flip(); - } - -#endif // BOOST_BITSET_ADAPTOR_HPP diff --git a/sdk/include/boost/graph/detail/connected_components.hpp b/sdk/include/boost/graph/detail/connected_components.hpp deleted file mode 100644 index 95a39addfc0..00000000000 --- a/sdk/include/boost/graph/detail/connected_components.hpp +++ /dev/null @@ -1,224 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_GRAPH_DETAIL_CONNECTED_COMPONENTS_HPP -#define BOOST_GRAPH_DETAIL_CONNECTED_COMPONENTS_HPP - -#if defined(__sgi) && !defined(__GNUC__) -#pragma set woff 1234 -#endif - -#include - -namespace boost { - - namespace detail { - - //========================================================================= - // Implementation details of connected_components - - // This is used both in the connected_components algorithm and in - // the kosaraju strong components algorithm during the second DFS - // traversal. - template - class components_recorder : public DFSVisitor - { - typedef typename property_traits::value_type comp_type; - public: - components_recorder(ComponentsPA c, - comp_type& c_count, - DFSVisitor v) - : DFSVisitor(v), m_component(c), m_count(c_count) {} - - template - void start_vertex(Vertex u, Graph& g) { - ++m_count; - DFSVisitor::start_vertex(u, g); - } - template - void discover_vertex(Vertex u, Graph& g) { - put(m_component, u, m_count); - DFSVisitor::discover_vertex(u, g); - } - protected: - ComponentsPA m_component; - comp_type& m_count; - }; - - template - class time_recorder : public DFSVisitor - { - public: - time_recorder(DiscoverTimeMap d, FinishTimeMap f, TimeT& t, DFSVisitor v) - : DFSVisitor(v), m_discover_time(d), m_finish_time(f), m_t(t) {} - - template - void discover_vertex(Vertex u, Graph& g) { - put(m_discover_time, u, ++m_t); - DFSVisitor::discover_vertex(u, g); - } - template - void finish_vertex(Vertex u, Graph& g) { - put(m_finish_time, u, ++m_t); - DFSVisitor::discover_vertex(u, g); - } - protected: - DiscoverTimeMap m_discover_time; - FinishTimeMap m_finish_time; - TimeT m_t; - }; - template - time_recorder - record_times(DiscoverTimeMap d, FinishTimeMap f, TimeT& t, DFSVisitor vis) - { - return time_recorder - (d, f, t, vis); - } - - //========================================================================= - // Implementation detail of dynamic_components - - - //------------------------------------------------------------------------- - // Helper functions for the component_index class - - // Record the representative vertices in the header array. - // Representative vertices now point to the component number. - - template - inline void - build_components_header(Parent p, - OutputIterator header, - Integer num_nodes) - { - Parent component = p; - Integer component_num = 0; - for (Integer v = 0; v != num_nodes; ++v) - if (p[v] == v) { - *header++ = v; - component[v] = component_num++; - } - } - - - // Pushes x onto the front of the list. The list is represented in - // an array. - template - inline void push_front(Next next, T& head, V x) - { - T tmp = head; - head = x; - next[x] = tmp; - } - - - // Create a linked list of the vertices in each component - // by reusing the representative array. - template - void - link_components(Parent1 component, Parent2 header, - Integer num_nodes, Integer num_components) - { - // Make the non-representative vertices point to their component - Parent1 representative = component; - for (Integer v = 0; v != num_nodes; ++v) - if (component[v] >= num_components || header[component[v]] != v) - component[v] = component[representative[v]]; - - // initialize the "head" of the lists to "NULL" - std::fill_n(header, num_components, num_nodes); - - // Add each vertex to the linked list for its component - Parent1 next = component; - for (Integer k = 0; k != num_nodes; ++k) - push_front(next, header[component[k]], k); - } - - - - template - void - construct_component_index(IndexContainer& index, HeaderContainer& header) - { - build_components_header(index.begin(), - std::back_inserter(header), - index.end() - index.begin()); - - link_components(index.begin(), header.begin(), - index.end() - index.begin(), - header.end() - header.begin()); - } - - - - template - class component_iterator - : boost::forward_iterator_helper< - component_iterator, - Integer, Distance,Integer*, Integer&> - { - public: - typedef component_iterator self; - - IndexIterator next; - Integer node; - - typedef std::forward_iterator_tag iterator_category; - typedef Integer value_type; - typedef Integer& reference; - typedef Integer* pointer; - typedef Distance difference_type; - - component_iterator() {} - component_iterator(IndexIterator x, Integer i) - : next(x), node(i) {} - Integer operator*() const { - return node; - } - self& operator++() { - node = next[node]; - return *this; - } - }; - - template - inline bool - operator==(const component_iterator& x, - const component_iterator& y) - { - return x.node == y.node; - } - - } // namespace detail - -} // namespace detail - -#if defined(__sgi) && !defined(__GNUC__) -#pragma reset woff 1234 -#endif - -#endif diff --git a/sdk/include/boost/graph/detail/edge.hpp b/sdk/include/boost/graph/detail/edge.hpp deleted file mode 100644 index 440723ae4fb..00000000000 --- a/sdk/include/boost/graph/detail/edge.hpp +++ /dev/null @@ -1,110 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_DETAIL_EDGE_HPP -#define BOOST_GRAPH_DETAIL_EDGE_HPP - -#if __GNUC__ < 3 -#include -#else -#include -#endif - -namespace boost { - - namespace detail { - - template - struct edge_base - { - inline edge_base() {} - inline edge_base(Vertex s, Vertex d) - : m_source(s), m_target(d) { } - Vertex m_source; - Vertex m_target; - }; - - template - class edge_desc_impl : public edge_base { - typedef edge_desc_impl self; - typedef edge_base Base; - public: - typedef void property_type; - - inline edge_desc_impl() : m_eproperty(0) {} - - inline edge_desc_impl(Vertex s, Vertex d, const property_type* eplug) - : Base(s,d), m_eproperty(const_cast(eplug)) { } - - property_type* get_property() { return m_eproperty; } - const property_type* get_property() const { return m_eproperty; } - - // protected: - property_type* m_eproperty; - }; - - template - inline bool - operator==(const detail::edge_desc_impl& a, - const detail::edge_desc_impl& b) - { - return a.get_property() == b.get_property(); - } - template - inline bool - operator!=(const detail::edge_desc_impl& a, - const detail::edge_desc_impl& b) - { - return ! (a.get_property() == b.get_property()); - } - - } //namespace detail - -} // namespace boost - -namespace std { - -#if __GNUC__ < 3 - template - std::ostream& - operator<<(std::ostream& os, const boost::detail::edge_desc_impl& e) - { - return os << "(" << e.m_source << "," << e.m_target << ")"; - } -#else - template - std::ostream& - operator<<(std::ostream& os, - const boost::detail::edge_desc_impl& e) - { - return os << "(" << e.m_source << "," << e.m_target << ")"; - } -#endif - -} - - -#endif // BOOST_GRAPH_DETAIL_DETAIL_EDGE_HPP diff --git a/sdk/include/boost/graph/detail/incidence_iterator.hpp b/sdk/include/boost/graph/detail/incidence_iterator.hpp deleted file mode 100644 index 4d565472d70..00000000000 --- a/sdk/include/boost/graph/detail/incidence_iterator.hpp +++ /dev/null @@ -1,95 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_DETAIL_INCIDENCE_ITERATOR_HPP -#define BOOST_GRAPH_DETAIL_INCIDENCE_ITERATOR_HPP - -#include -#include - -// OBSOLETE - -namespace boost { - - namespace detail { - // EdgeDir tags - struct in_edge_tag { }; - struct out_edge_tag { }; - - template - struct bidir_incidence_iterator { - typedef bidir_incidence_iterator self; - typedef Edge edge_type; - typedef typename Edge::property_type EdgeProperty; - public: - typedef int difference_type; - typedef std::forward_iterator_tag iterator_category; - typedef edge_type reference; - typedef edge_type value_type; - typedef value_type* pointer; - inline bidir_incidence_iterator() {} - inline bidir_incidence_iterator(Iterator1D ii, Vertex src) - : i(ii), _src(src) { } - - inline self& operator++() { ++i; return *this; } - inline self operator++(int) { self tmp = *this; ++(*this); return tmp; } - - inline reference operator*() const { - return deref_helper(EdgeDir()); - } - inline self* operator->() { return this; } - - Iterator1D& iter() { return i; } - const Iterator1D& iter() const { return i; } - - Iterator1D i; - Vertex _src; - protected: - inline reference deref_helper(out_edge_tag) const { - return edge_type( _src, (*i).get_target(), &(*i).get_property() ); - } - inline reference deref_helper(in_edge_tag) const { - return edge_type((*i).get_target(), _src, &(*i).get_property() ); - } - }; - - template - inline bool operator==(const bidir_incidence_iterator& x, - const bidir_incidence_iterator& y) - { - return x.i == y.i; - } - template - inline bool operator!=(const bidir_incidence_iterator& x, - const bidir_incidence_iterator& y) - { - return x.i != y.i; - } - - - } -} -#endif diff --git a/sdk/include/boost/graph/detail/incremental_components.hpp b/sdk/include/boost/graph/detail/incremental_components.hpp deleted file mode 100644 index 8b8fa0391e0..00000000000 --- a/sdk/include/boost/graph/detail/incremental_components.hpp +++ /dev/null @@ -1,154 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_DETAIL_INCREMENTAL_COMPONENTS_HPP -#define BOOST_GRAPH_DETAIL_INCREMENTAL_COMPONENTS_HPP - -#include - -namespace boost { - - namespace detail { - - //========================================================================= - // Implementation detail of incremental_components - - - //------------------------------------------------------------------------- - // Helper functions for the component_index class - - // Record the representative vertices in the header array. - // Representative vertices now point to the component number. - - template - inline void - build_components_header(Parent p, - OutputIterator header, - Integer num_nodes) - { - Parent component = p; - Integer component_num = 0; - for (Integer v = 0; v != num_nodes; ++v) - if (p[v] == v) { - *header++ = v; - component[v] = component_num++; - } - } - - - // Pushes x onto the front of the list. The list is represented in - // an array. - template - inline void array_push_front(Next next, T& head, V x) - { - T tmp = head; - head = x; - next[x] = tmp; - } - - - // Create a linked list of the vertices in each component - // by reusing the representative array. - template - void - link_components(Parent1 component, Parent2 header, - Integer num_nodes, Integer num_components) - { - // Make the non-representative vertices point to their component - Parent1 representative = component; - for (Integer v = 0; v != num_nodes; ++v) - if (component[v] >= num_components - || header[component[v]] != v) - component[v] = component[representative[v]]; - - // initialize the "head" of the lists to "NULL" - std::fill_n(header, num_components, num_nodes); - - // Add each vertex to the linked list for its component - Parent1 next = component; - for (Integer k = 0; k != num_nodes; ++k) - array_push_front(next, header[component[k]], k); - } - - - - template - void - construct_component_index(IndexContainer& index, HeaderContainer& header) - { - typedef typename IndexContainer::value_type Integer; - build_components_header(index.begin(), - std::back_inserter(header), - Integer(index.end() - index.begin())); - - link_components(index.begin(), header.begin(), - Integer(index.end() - index.begin()), - Integer(header.end() - header.begin())); - } - - - - template - class component_iterator - : boost::forward_iterator_helper< - component_iterator, - Integer, Distance,Integer*, Integer&> - { - public: - typedef component_iterator self; - - IndexIterator next; - Integer node; - - typedef std::forward_iterator_tag iterator_category; - typedef Integer value_type; - typedef Integer& reference; - typedef Integer* pointer; - typedef Distance difference_type; - - component_iterator() {} - component_iterator(IndexIterator x, Integer i) - : next(x), node(i) {} - Integer operator*() const { - return node; - } - self& operator++() { - node = next[node]; - return *this; - } - }; - - template - inline bool - operator==(const component_iterator& x, - const component_iterator& y) - { - return x.node == y.node; - } - - } // namespace detail - -} // namespace detail - -#endif // BOOST_GRAPH_DETAIL_INCREMENTAL_COMPONENTS_HPP diff --git a/sdk/include/boost/graph/detail/intset.hpp b/sdk/include/boost/graph/detail/intset.hpp deleted file mode 100644 index c7e83dca4cc..00000000000 --- a/sdk/include/boost/graph/detail/intset.hpp +++ /dev/null @@ -1,93 +0,0 @@ -Executing ssh-askpass to query the password... -Warning: Remote host denied X11 forwarding, perhaps xauth program could not be run on the server side. -// (C) Copyright Jeremy Siek 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -#include - -// UNDER CONSTRUCTION - -namespace boost { - - namespace detail { - - template - struct intset_iterator_policies : public default_iterator_policies - { - intset_iterator_policies(const SizeType* value_ptr) - : m_value(value_ptr) { } - - SizeType dereference(type, const SizeType& x) { - return m_value[x]; - } - SizeType* m_value; - }; - - template > - class intset - { - typedef intset self; - typedef intset_iterator_policies policies_t; - public: - typedef SizeType size_type; - - typedef typename iterator_adaptor iterator; - typedef iterator const_iterator; - - intset(size_type n, const Allocator alloc = Allocator) - : m_index(n + 1, alloc), m_value(n + 1, alloc), m_next(0) - { } - - bool test(size_type pos) const { - BOOST_ASSERT_THROW - (pos < size(), std::out_of_range("boost::intset::test(pos)")); - if (m_index[pos] < m_next && m_index[x] >= 0) - if (m_value[index[x]] == x) - return true; - return false; - } - - self& set(size_type pos, int val = true) - { - BOOST_ASSERT_THROW - (pos < size(), std::out_of_range("boost::intset::set(pos,val)")); - if (!test(pos)) { - ++m_next; - m_value[m_next] = pos; - m_index[pos] = m_next; - } - return *this; - } - - self& reset(size_type pos) { - BOOST_ASSERT_THROW - (pos < size(), std::out_of_range("boost::intset::reset(pos)")); - if (test(pos)) { - m_value[m_index[pos]] = m_value[m_next]; - m_index[m_value[m_next]] = m_index[x]; - ++m_next; - } - } - - iterator begin() const { - return iterator(0, policies_t(&m_value[0])); - } - iterator end() const { - return iterator(m_next, policies_t(&m_value[0])); - } - - private: - std::vector m_index; - std::vector m_value; - size_type m_next; - }; - - } // namespace detail - -} // namespace boost diff --git a/sdk/include/boost/graph/detail/is_same.hpp b/sdk/include/boost/graph/detail/is_same.hpp deleted file mode 100644 index 8ab16e60d7e..00000000000 --- a/sdk/include/boost/graph/detail/is_same.hpp +++ /dev/null @@ -1,56 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_GRAPH_DETAIL_IS_SAME_HPP -#define BOOST_GRAPH_DETAIL_IS_SAME_HPP - -#include - -namespace boost { - struct false_tag; - struct true_tag; - - namespace graph_detail { - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct is_same { - typedef boost::false_tag is_same_tag; - }; - template - struct is_same { - typedef boost::true_tag is_same_tag; - }; -#else - template - struct is_same { - enum { Unum = U::num, Vnum = V::num }; - typedef typename boost::ct_if< (Unum == Vnum), - boost::true_tag, boost::false_tag>::type is_same_tag; - }; -#endif - } // namespace graph_detail -} // namespace boost - -#endif diff --git a/sdk/include/boost/graph/detail/list_base.hpp b/sdk/include/boost/graph/detail/list_base.hpp deleted file mode 100644 index 6b51c0a58bf..00000000000 --- a/sdk/include/boost/graph/detail/list_base.hpp +++ /dev/null @@ -1,234 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_LIST_BASE_HPP -#define BOOST_LIST_BASE_HPP - -#include - -// Perhaps this should go through formal review, and move to . - -/* - An alternate interface idea: - Extend the std::list functionality by creating remove/insert - functions that do not require the container object! - */ - -namespace boost { - namespace detail { - - //========================================================================= - // Linked-List Generic Implementation Functions - - template - inline Node - slist_insert_after(Node pos, Node x, - Next next) - { - next(x) = next(pos); - next(pos) = x; - return x; - } - - // return next(pos) or next(next(pos)) ? - template - inline Node - slist_remove_after(Node pos, - Next next) - { - Node n = next(pos); - next(pos) = next(n); - return n; - } - - template - inline Node - slist_remove_range(Node before_first, Node last, - Next next) - { - next(before_first) = last; - return last; - } - - template - inline Node - slist_previous(Node head, Node x, Node nil, - Next next) - { - while (head != nil && next(head) != x) - head = next(head); - return head; - } - - template - inline void - slist_splice_after(Node pos, Node before_first, Node before_last, - Next next) - { - if (pos != before_first && pos != before_last) { - Node first = next(before_first); - Node after = next(pos); - next(before_first) = next(before_last); - next(pos) = first; - next(before_last) = after; - } - } - - template - inline Node - slist_reverse(Node node, Node nil, - Next next) - { - Node result = node; - node = next(node); - next(result) = nil; - while(node) { - Node next = next(node); - next(node) = result; - result = node; - node = next; - } - return result; - } - - template - inline std::size_t - slist_size(Node head, Node nil, - Next next) - { - std::size_t s = 0; - for ( ; head != nil; head = next(head)) - ++s; - return s; - } - - template - class slist_iterator_policies - { - public: - explicit slist_iterator_policies(const Next& n, const Data& d) - : m_next(n), m_data(d) { } - - template - Reference dereference(type, const Node& x) const - { return m_data(x); } - - template - void increment(Node& x) const - { x = m_next(x); } - - template - bool equal(Node& x, Node& y) const - { return x == y; } - - protected: - Next m_next; - Data m_data; - }; - - //=========================================================================== - // Doubly-Linked List Generic Implementation Functions - - template - inline void - dlist_insert_before(Node pos, Node x, - Next next, Prev prev) - { - next(x) = pos; - prev(x) = prev(pos); - next(prev(pos)) = x; - prev(pos) = x; - } - - template - void - dlist_remove(Node pos, - Next next, Prev prev) - { - Node next_node = next(pos); - Node prev_node = prev(pos); - next(prev_node) = next_node; - prev(next_node) = prev_node; - } - - // This deletes every node in the list except the - // sentinel node. - template - inline void - dlist_clear(Node sentinel, Delete del) - { - Node i, tmp; - i = next(sentinel); - while (i != sentinel) { - tmp = i; - i = next(i); - del(tmp); - } - } - - template - inline bool - dlist_empty(Node dummy) - { - return next(dummy) == dummy; - } - - template - void - dlist_transfer(Node pos, Node first, Node last, - Next next, Prev prev) - { - if (pos != last) { - // Remove [first,last) from its old position - next(prev(last)) = pos; - next(prev(first)) = last; - next(prev(pos)) = first; - - // Splice [first,last) into its new position - Node tmp = prev(pos); - prev(pos) = prev(last); - prev(last) = prev(first); - prev(first) = tmp; - } - } - - template - class dlist_iterator_policies - : public slist_iterator_policies - { - typedef slist_iterator_policies Base; - public: - template - void decrement(Node& x) const - { x = m_prev(x); } - - dlist_iterator_policies(Next n, Prev p, Data d) - : Base(n,d), m_prev(p) { } - protected: - Prev m_prev; - }; - - } // namespace detail -} // namespace boost - -#endif // BOOST_LIST_BASE_HPP diff --git a/sdk/include/boost/graph/detail/permutation.hpp b/sdk/include/boost/graph/detail/permutation.hpp deleted file mode 100644 index f28edf6ecae..00000000000 --- a/sdk/include/boost/graph/detail/permutation.hpp +++ /dev/null @@ -1,206 +0,0 @@ -// (C) Copyright Jeremy Siek 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -#ifndef BOOST_PERMUTATION_HPP -#define BOOST_PERMUTATION_HPP - -#include -#include -#include -#include -#include - -namespace boost { - -template -void permute_serial(Iter1 permuter, Iter1 last, Iter2 result) -{ -#ifdef BOOST_NO_STD_ITERATOR_TRAITS - typedef std::ptrdiff_t D: -#else - typedef typename std::iterator_traits::difference_type D; -#endif - - D n = 0; - while (permuter != last) { - std::swap(result[n], result[*permuter]); - ++n; - ++permuter; - } -} - -template -void permute_copy(InIter first, InIter last, RandIterP p, RandIterR result) -{ -#ifdef BOOST_NO_STD_ITERATOR_TRAITS - typedef std::ptrdiff_t i = 0; -#else - typename std::iterator_traits::difference_type i = 0; -#endif - for (; first != last; ++first, ++i) - result[p[i]] = *first; -} - -namespace detail { - -template -void permute_helper(RandIter first, RandIter last, RandIterPerm p, D, T) -{ - D i = 0, pi, n = last - first, cycle_start; - T tmp; - std::vector visited(n, false); - - while (i != n) { // continue until all elements have been processed - cycle_start = i; - tmp = first[i]; - do { // walk around a cycle - pi = p[i]; - visited[pi] = true; - std::swap(tmp, first[pi]); - i = pi; - } while (i != cycle_start); - - // find the next cycle - for (i = 0; i < n; ++i) - if (visited[i] == false) - break; - } -} - -} // namespace detail - -template -void permute(RandIter first, RandIter last, RandIterPerm p) -{ - detail::permute_helper(first, last, p, last - first, *first); -} - - -// Knuth 1.3.3, Vol. 1 p 176 -// modified for zero-based arrays -// time complexity? -// -// WARNING: T must be a signed integer! -template -void invert_permutation(PermIter X, PermIter Xend) -{ -#ifdef BOOST_NO_STD_ITERATOR_TRAITS - typedef std::ptrdiff_t T: -#else - typedef typename std::iterator_traits::value_type T; -#endif - T n = Xend - X; - T m = n; - T j = -1; - - while (m > 0) { - T i = X[m-1] + 1; - if (i > 0) { - do { - X[m-1] = j - 1; - j = -m; - m = i; - i = X[m-1] + 1; - } while (i > 0); - i = j; - } - X[m-1] = -i - 1; - --m; - } -} - -// Takes a "normal" permutation array (and its inverse), and turns it -// into a BLAS-style permutation array (which can be thought of as a -// serialized permutation). -template -inline void serialize_permutation(Iter1 q, Iter1 q_end, Iter2 q_inv, Iter3 p) -{ -#ifdef BOOST_NO_STD_ITERATOR_TRAITS - typedef std::ptrdiff_t P1; - typedef std::ptrdiff_t P2; - typedef std::ptrdiff_t D; -#else - typedef typename std::iterator_traits::value_type P1; - typedef typename std::iterator_traits::value_type P2; - typedef typename std::iterator_traits::difference_type D; -#endif - D n = q_end - q; - for (D i = 0; i < n; ++i) { - P1 qi = q[i]; - P2 qii = q_inv[i]; - *p++ = qii; - std::swap(q[i], q[qii]); - std::swap(q_inv[i], q_inv[qi]); - } -} - -// Not used anymore, leaving it here for future reference. -template -void merge_sort(Iter first, Iter last, Compare cmp) -{ - if (first + 1 < last) { - Iter mid = first + (last - first)/2; - merge_sort(first, mid, cmp); - merge_sort(mid, last, cmp); - std::inplace_merge(first, mid, last, cmp); - } -} - - -// time: N log N + 3N + ? -// space: 2N -template -inline void sortp(Iter first, Iter last, IterP p, Cmp cmp, Alloc alloc) -{ - typedef typename std::iterator_traits::value_type P; - typedef typename std::iterator_traits::difference_type D; - D n = last - first; - std::vector q(n); - for (D i = 0; i < n; ++i) - q[i] = i; - std::sort(make_shadow_iter(first, q.begin()), - make_shadow_iter(last, q.end()), - shadow_cmp(cmp)); - invert_permutation(q.begin(), q.end()); - std::copy(q.begin(), q.end(), p); -} - -template -inline void sortp(Iter first, Iter last, IterP p, Cmp cmp) -{ - typedef typename std::iterator_traits::value_type P; - sortp(first, last, p, cmp, std::allocator

()); -} - -template -inline void sortp(Iter first, Iter last, IterP p) -{ - typedef typename std::iterator_traits::value_type T; - typedef typename std::iterator_traits::value_type P; - sortp(first, last, p, std::less(), std::allocator

()); -} - -template -inline void sortv(Iter first, Iter last, IterP p, Cmp cmp, Alloc alloc) -{ - typedef typename std::iterator_traits::value_type P; - typedef typename std::iterator_traits::difference_type D; - D n = last - first; - std::vector q(n), q_inv(n); - for (D i = 0; i < n; ++i) - q_inv[i] = i; - std::sort(make_shadow_iter(first, q_inv.begin()), - make_shadow_iter(last, q_inv.end()), - shadow_cmp(cmp)); - std::copy(q_inv, q_inv.end(), q.begin()); - invert_permutation(q.begin(), q.end()); - serialize_permutation(q.begin(), q.end(), q_inv.end(), p); -} - - -} // namespace boost - -#endif // BOOST_PERMUTATION_HPP diff --git a/sdk/include/boost/graph/detail/self_avoiding_walk.hpp b/sdk/include/boost/graph/detail/self_avoiding_walk.hpp deleted file mode 100644 index 9ddd905a5f1..00000000000 --- a/sdk/include/boost/graph/detail/self_avoiding_walk.hpp +++ /dev/null @@ -1,434 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_SELF_AVOIDING_WALK_HPP -#define BOOST_SELF_AVOIDING_WALK_HPP - -/* - This file defines necessary components for SAW. - - mesh language: (defined by myself to clearify what is what) - A triangle in mesh is called an triangle. - An edge in mesh is called an line. - A vertex in mesh is called a point. - - A triangular mesh corresponds to a graph in which a vertex is a - triangle and an edge(u, v) stands for triangle u and triangle v - share an line. - - After this point, a vertex always refers to vertex in graph, - therefore it is a traingle in mesh. - - */ - -#include -#include -#include -#include - -#define SAW_SENTINAL -1 - -namespace boost { - - template - struct triple { - T1 first; - T2 second; - T3 third; - triple(const T1& a, const T2& b, const T3& c) : first(a), second(b), third(c) {} - triple() : first(SAW_SENTINAL), second(SAW_SENTINAL), third(SAW_SENTINAL) {} - }; - - typedef triple Triple; - - /* Define a vertex property which has a triangle inside. Triangle is - represented by a triple. */ - struct triangle_tag { enum { num = 100 }; }; - typedef property triangle_property; - - /* Define an edge property with a line. A line is represented by a - pair. This is not required for SAW though. - */ - struct line_tag { enum { num = 101 }; }; - template struct line_property - : public property > { }; - - /*Precondition: Points in a Triangle are in order */ - template - inline void get_sharing(const Triangle& a, const Triangle& b, Line& l) - { - l.first = SAW_SENTINAL; - l.second = SAW_SENTINAL; - - if ( a.first == b.first ) { - l.first = a.first; - if ( a.second == b.second || a.second == b.third ) - l.second = a.second; - else if ( a.third == b.second || a.third == b.third ) - l.second = a.third; - - } else if ( a.first == b.second ) { - l.first = a.first; - if ( a.second == b.third ) - l.second = a.second; - else if ( a.third == b.third ) - l.second = a.third; - - } else if ( a.first == b.third ) { - l.first = a.first; - - - } else if ( a.second == b.first ) { - l.first = a.second; - if ( a.third == b.second || a.third == b.third ) - l.second = a.third; - - } else if ( a.second == b.second ) { - l.first = a.second; - if ( a.third == b.third ) - l.second = a.third; - - } else if ( a.second == b.third ) { - l.first = a.second; - - - } else if ( a.third == b.first - || a.third == b.second - || a.third == b.third ) - l.first = a.third; - - /*Make it in order*/ - if ( l.first > l.second ) { - typename Line::first_type i = l.first; - l.first = l.second; - l.second = i; - } - - } - - template - struct get_vertex_sharing { - typedef std::pair Pair; - get_vertex_sharing(const TriangleDecorator& _td) : td(_td) {} - inline Line operator()(const Vertex& u, const Vertex& v) const { - Line l; - get_sharing(td[u], td[v], l); - return l; - } - inline Line operator()(const Pair& u, const Vertex& v) const { - Line l; - get_sharing(td[u.first], td[v], l); - return l; - } - inline Line operator()(const Pair& u, const Pair& v) const { - Line l; - get_sharing(td[u.first], td[v.first], l); - return l; - } - TriangleDecorator td; - }; - - /* HList has to be a handle of data holder so that pass-by-value is - * in right logic. - * - * The element of HList is a pair of vertex and line. (remember a - * line is a pair of two ints.). That indicates the walk w from - * current vertex is across line. (If the first of line is -1, it is - * a point though. - */ - template < class TriangleDecorator, class HList, class IteratorD> - class SAW_visitor - : public bfs_visitor<>, public dfs_visitor<> - { - typedef typename boost::property_traits::value_type iter; - /*use boost shared_ptr*/ - typedef typename HList::element_type::value_type::second_type Line; - public: - - typedef tree_edge_tag category; - - inline SAW_visitor(TriangleDecorator _td, HList _hlist, IteratorD ia) - : td(_td), hlist(_hlist), iter_d(ia) {} - - template - inline void start_vertex(Vertex v, Graph&) { - Line l1; - l1.first = SAW_SENTINAL; - l1.second = SAW_SENTINAL; - hlist->push_front(std::make_pair(v, l1)); - iter_d[v] = hlist->begin(); - } - - /*Several symbols: - w(i): i-th triangle in walk w - w(i) |- w(i+1): w enter w(i+1) from w(i) over a line - w(i) ~> w(i+1): w enter w(i+1) from w(i) over a point - w(i) -> w(i+1): w enter w(i+1) from w(i) - w(i) ^ w(i+1): the line or point w go over from w(i) to w(i+1) - */ - template - bool tree_edge(Edge e, Graph& G) { - using std::make_pair; - typedef typename boost::graph_traits::vertex_descriptor Vertex; - Vertex tau = target(e, G); - Vertex i = source(e, G); - - get_vertex_sharing get_sharing_line(td); - - Line tau_i = get_sharing_line(tau, i); - - iter w_end = hlist->end(); - - iter w_i = iter_d[i]; - - iter w_i_m_1 = w_i; - iter w_i_p_1 = w_i; - - /*---------------------------------------------------------- - * true false - *========================================================== - *a w(i-1) |- w(i) w(i-1) ~> w(i) or w(i-1) is null - *---------------------------------------------------------- - *b w(i) |- w(i+1) w(i) ~> w(i+1) or no w(i+1) yet - *---------------------------------------------------------- - */ - - bool a = false, b = false; - - --w_i_m_1; - ++w_i_p_1; - b = ( w_i->second.first != SAW_SENTINAL ); - - if ( w_i_m_1 != w_end ) { - a = ( w_i_m_1->second.first != SAW_SENTINAL ); - } - - if ( a ) { - - if ( b ) { - /*Case 1: - - w(i-1) |- w(i) |- w(i+1) - */ - Line l1 = get_sharing_line(*w_i_m_1, tau); - - iter w_i_m_2 = w_i_m_1; - --w_i_m_2; - - bool c = true; - - if ( w_i_m_2 != w_end ) { - c = w_i_m_2->second != l1; - } - - if ( c ) { /* w(i-1) ^ tau != w(i-2) ^ w(i-1) */ - /*extension: w(i-1) -> tau |- w(i) */ - w_i_m_1->second = l1; - /*insert(pos, const T&) is to insert before pos*/ - iter_d[tau] = hlist->insert(w_i, make_pair(tau, tau_i)); - - } else { /* w(i-1) ^ tau == w(i-2) ^ w(i-1) */ - /*must be w(i-2) ~> w(i-1) */ - - bool d = true; - //need to handle the case when w_i_p_1 is null - Line l3 = get_sharing_line(*w_i_p_1, tau); - if ( w_i_p_1 != w_end ) - d = w_i_p_1->second != l3; - if ( d ) { /* w(i+1) ^ tau != w(i+1) ^ w(i+2) */ - /*extension: w(i) |- tau -> w(i+1) */ - w_i->second = tau_i; - iter_d[tau] = hlist->insert(w_i_p_1, make_pair(tau, l3)); - } else { /* w(i+1) ^ tau == w(i+1) ^ w(i+2) */ - /*must be w(1+1) ~> w(i+2) */ - Line l5 = get_sharing_line(*w_i_m_1, *w_i_p_1); - if ( l5 != w_i_p_1->second ) { /* w(i-1) ^ w(i+1) != w(i+1) ^ w(i+2) */ - /*extension: w(i-2) -> tau |- w(i) |- w(i-1) -> w(i+1) */ - w_i_m_2->second = get_sharing_line(*w_i_m_2, tau); - iter_d[tau] = hlist->insert(w_i, make_pair(tau, tau_i)); - w_i->second = w_i_m_1->second; - w_i_m_1->second = l5; - iter_d[w_i_m_1->first] = hlist->insert(w_i_p_1, *w_i_m_1); - hlist->erase(w_i_m_1); - } else { - /*mesh is tetrahedral*/ - // dont know what that means. - ; - } - } - - } - } else { - /*Case 2: - - w(i-1) |- w(i) ~> w(1+1) - */ - - if ( w_i->second.second == tau_i.first - || w_i->second.second == tau_i.second ) { /*w(i) ^ w(i+1) < w(i) ^ tau*/ - /*extension: w(i) |- tau -> w(i+1) */ - w_i->second = tau_i; - Line l1 = get_sharing_line(*w_i_p_1, tau); - iter_d[tau] = hlist->insert(w_i_p_1, make_pair(tau, l1)); - } else { /*w(i) ^ w(i+1) !< w(i) ^ tau*/ - Line l1 = get_sharing_line(*w_i_m_1, tau); - bool c = true; - iter w_i_m_2 = w_i_m_1; - --w_i_m_2; - if ( w_i_m_2 != w_end ) - c = l1 != w_i_m_2->second; - if (c) { /*w(i-1) ^ tau != w(i-2) ^ w(i-1)*/ - /*extension: w(i-1) -> tau |- w(i)*/ - w_i_m_1->second = l1; - iter_d[tau] = hlist->insert(w_i, make_pair(tau, tau_i)); - } else { /*w(i-1) ^ tau == w(i-2) ^ w(i-1)*/ - /*must be w(i-2)~>w(i-1)*/ - /*extension: w(i-2) -> tau |- w(i) |- w(i-1) -> w(i+1)*/ - w_i_m_2->second = get_sharing_line(*w_i_m_2, tau); - iter_d[tau] = hlist->insert(w_i, make_pair(tau, tau_i)); - w_i->second = w_i_m_1->second; - w_i_m_1->second = get_sharing_line(*w_i_m_1, *w_i_p_1); - iter_d[w_i_m_1->first] = hlist->insert(w_i_p_1, *w_i_m_1); - hlist->erase(w_i_m_1); - } - - } - - } - - } else { - - if ( b ) { - /*Case 3: - - w(i-1) ~> w(i) |- w(i+1) - */ - bool c = false; - if ( w_i_m_1 != w_end ) - c = ( w_i_m_1->second.second == tau_i.first) - || ( w_i_m_1->second.second == tau_i.second); - - if ( c ) { /*w(i-1) ^ w(i) < w(i) ^ tau*/ - /* extension: w(i-1) -> tau |- w(i) */ - if ( w_i_m_1 != w_end ) - w_i_m_1->second = get_sharing_line(*w_i_m_1, tau); - iter_d[tau] = hlist->insert(w_i, make_pair(tau, tau_i)); - } else { - bool d = true; - Line l1; - l1.first = SAW_SENTINAL; - l1.second = SAW_SENTINAL; - if ( w_i_p_1 != w_end ) { - l1 = get_sharing_line(*w_i_p_1, tau); - d = l1 != w_i_p_1->second; - } - if (d) { /*w(i+1) ^ tau != w(i+1) ^ w(i+2)*/ - /*extension: w(i) |- tau -> w(i+1) */ - w_i->second = tau_i; - iter_d[tau] = hlist->insert(w_i_p_1, make_pair(tau, l1)); - } else { - /*must be w(i+1) ~> w(i+2)*/ - /*extension: w(i-1) -> w(i+1) |- w(i) |- tau -> w(i+2) */ - iter w_i_p_2 = w_i_p_1; - ++w_i_p_2; - - w_i_p_1->second = w_i->second; - iter_d[i] = hlist->insert(w_i_p_2, make_pair(i, tau_i)); - hlist->erase(w_i); - Line l2 = get_sharing_line(*w_i_p_2, tau); - iter_d[tau] = hlist->insert(w_i_p_2, make_pair(tau, l2)); - } - } - - } else { - /*Case 4: - - w(i-1) ~> w(i) ~> w(i+1) - - */ - bool c = false; - if ( w_i_m_1 != w_end ) { - c = (w_i_m_1->second.second == tau_i.first) - || (w_i_m_1->second.second == tau_i.second); - } - if ( c ) { /*w(i-1) ^ w(i) < w(i) ^ tau */ - /*extension: w(i-1) -> tau |- w(i) */ - if ( w_i_m_1 != w_end ) - w_i_m_1->second = get_sharing_line(*w_i_m_1, tau); - iter_d[tau] = hlist->insert(w_i, make_pair(tau, tau_i)); - } else { - /*extension: w(i) |- tau -> w(i+1) */ - w_i->second = tau_i; - Line l1; - l1.first = SAW_SENTINAL; - l1.second = SAW_SENTINAL; - if ( w_i_p_1 != w_end ) - l1 = get_sharing_line(*w_i_p_1, tau); - iter_d[tau] = hlist->insert(w_i_p_1, make_pair(tau, l1)); - } - } - - } - - return true; - } - - protected: - TriangleDecorator td; /*a decorator for vertex*/ - HList hlist; - /*This must be a handle of list to record the SAW - The element type of the list is pair - */ - - IteratorD iter_d; - /*Problem statement: Need a fast access to w for triangle i. - *Possible solution: mantain an array to record. - iter_d[i] will return an iterator - which points to w(i), where i is a vertex - representing triangle i. - */ - }; - - template - inline - SAW_visitor - visit_SAW(Triangle t, HList hl, Iterator i) { - return SAW_visitor(t, hl, i); - } - - template - inline - SAW_visitor< random_access_iterator_property_map, - HList, random_access_iterator_property_map > - visit_SAW_ptr(Tri* t, HList hl, Iter* i) { - typedef random_access_iterator_property_map TriD; - typedef random_access_iterator_property_map IterD; - return SAW_visitor(t, hl, i); - } - - // should also have combo's of pointers, and also const :( - -} - -#endif /*BOOST_SAW_H*/ diff --git a/sdk/include/boost/graph/detail/set_adaptor.hpp b/sdk/include/boost/graph/detail/set_adaptor.hpp deleted file mode 100644 index ea0798440a7..00000000000 --- a/sdk/include/boost/graph/detail/set_adaptor.hpp +++ /dev/null @@ -1,118 +0,0 @@ -// (C) Copyright Jeremy Siek 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -#ifndef BOOST_SET_ADAPTOR_HPP -#define BOOST_SET_ADAPTOR_HPP - -#include - -namespace boost { - - template - bool set_contains(const std::set& s, const T& x) { - return s.find(x) != s.end(); - } - - template - bool set_equal(const std::set& x, - const std::set& y) - { - return x == y; - } - - // Not the same as lexicographical_compare_3way applied to std::set. - // this is equivalent semantically to bitset::operator<() - template - int set_lex_order(const std::set& x, - const std::set& y) - { - typename std::set::iterator - xi = x.begin(), yi = y.begin(), xend = x.end(), yend = y.end(); - for (; xi != xend && yi != yend; ++xi, ++yi) { - if (*xi < *yi) - return 1; - else if (*yi < *xi) - return -1; - } - if (xi == xend) - return (yi == yend) ? 0 : -1; - else - return 1; - } - - template - void set_clear(std::set& x) { - x.clear(); - } - - template - bool set_empty(const std::set& x) { - return x.empty(); - } - - template - void set_insert(std::set& x, const T& a) { - x.insert(a); - } - - template - void set_remove(std::set& x, const T& a) { - x.erase(a); - } - - template - void set_intersect(const std::set& x, - const std::set& y, - std::set& z) - { - z.clear(); - std::set_intersection(x.begin(), x.end(), - y.begin(), y.end(), - std::inserter(z)); - } - - template - void set_union(const std::set& x, - const std::set& y, - std::set& z) - { - z.clear(); - std::set_union(x.begin(), x.end(), - y.begin(), y.end(), - std::inserter(z)); - } - - template - void set_difference(const std::set& x, - const std::set& y, - std::set& z) - { - z.clear(); - std::set_difference(x.begin(), x.end(), - y.begin(), y.end(), - std::inserter(z, z.begin())); - } - - template - bool set_subset(const std::set& x, - const std::set& y) - { - return std::includes(x.begin(), x.end(), y.begin(), y.end()); - } - - // Shit, can't implement this without knowing the size of the - // universe. - template - void set_compliment(const std::set& x, - std::set& z) - { - z.clear(); - - } - -} // namespace boost - -#endif // BOOST_SET_ADAPTOR_HPP diff --git a/sdk/include/boost/graph/detail/shadow_iterator.hpp b/sdk/include/boost/graph/detail/shadow_iterator.hpp deleted file mode 100644 index b56474a76ef..00000000000 --- a/sdk/include/boost/graph/detail/shadow_iterator.hpp +++ /dev/null @@ -1,140 +0,0 @@ -// (C) Copyright Jeremy Siek 2001. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -#ifndef BOOST_SHADOW_ITERATOR_HPP -#define BOOST_SHADOW_ITERATOR_HPP - -#include -#include - -namespace boost { - - namespace detail { - - template - class shadow_proxy - : boost::operators< shadow_proxy > - { - typedef shadow_proxy self; - public: - inline shadow_proxy(A aa, B bb) : a(aa), b(bb) { } - inline shadow_proxy(const self& x) : a(x.a), b(x.b) { } - template - inline shadow_proxy(Self x) : a(x.a), b(x.b) { } - inline self& operator=(const self& x) { a = x.a; b = x.b; return *this; } - inline self& operator++() { ++a; return *this; } - inline self& operator--() { --a; return *this; } - inline self& operator+=(const self& x) { a += x.a; return *this; } - inline self& operator-=(const self& x) { a -= x.a; return *this; } - inline self& operator*=(const self& x) { a *= x.a; return *this; } - inline self& operator/=(const self& x) { a /= x.a; return *this; } - inline self& operator%=(const self& x) { return *this; } // JGS - inline self& operator&=(const self& x) { return *this; } // JGS - inline self& operator|=(const self& x) { return *this; } // JGS - inline self& operator^=(const self& x) { return *this; } // JGS - inline friend D operator-(const self& x, const self& y) { - return x.a - y.a; - } - inline bool operator==(const self& x) const { return a == x.a; } - inline bool operator<(const self& x) const { return a < x.a; } - // protected: - A a; - B b; - }; - - struct shadow_iterator_policies - { - template - void initialize(const iter_pair&) { } - - template - typename Iter::reference dereference(const Iter& i) const { - typedef typename Iter::reference R; - return R(*i.base().first, *i.base().second); - } - template - bool equal(const Iter& p1, const Iter& p2) const { - return p1.base().first == p2.base().first; - } - template - void increment(Iter& i) { ++i.base().first; ++i.base().second; } - - template - void decrement(Iter& i) { --i.base().first; --i.base().second; } - - template - bool less(const Iter& x, const Iter& y) const { - return x.base().first < y.base().first; - } - template - typename Iter::difference_type - distance(const Iter& x, const Iter& y) const { - return y.base().first - x.base().first; - } - template - void advance(Iter& p, D n) { p.base().first += n; p.base().second += n; } - }; - - } // namespace detail - - template - struct shadow_iterator_generator { - - // To use the iterator_adaptor we can't derive from - // random_access_iterator because we don't have a real reference. - // However, we want the STL algorithms to treat the shadow - // iterator like a random access iterator. - struct shadow_iterator_tag : public std::input_iterator_tag { - operator std::random_access_iterator_tag() { - return std::random_access_iterator_tag(); - }; - }; - typedef typename std::iterator_traits::value_type Aval; - typedef typename std::iterator_traits::value_type Bval; - typedef typename std::iterator_traits::reference Aref; - typedef typename std::iterator_traits::reference Bref; - typedef typename std::iterator_traits::difference_type D; - typedef detail::shadow_proxy V; - typedef detail::shadow_proxy R; - typedef iterator_adaptor< std::pair, - detail::shadow_iterator_policies, - V, R, V*, shadow_iterator_tag, - D> type; - }; - - // short cut for creating a shadow iterator - template - inline typename shadow_iterator_generator::type - make_shadow_iter(IterA a, IterB b) { - typedef typename shadow_iterator_generator::type Iter; - return Iter(std::make_pair(a,b)); - } - - template - struct shadow_cmp { - inline shadow_cmp(const Cmp& c) : cmp(c) { } - template - inline bool operator()(const ShadowProxy1& x, const ShadowProxy2& y) const - { - return cmp(x.a, y.a); - } - Cmp cmp; - }; - -} // namespace boost - -namespace std { - template - void swap(boost::detail::shadow_proxy x, - boost::detail::shadow_proxy y) - { - std::swap(x.a, y.a); - std::swap(x.b, y.b); - } -} - -#endif // BOOST_SHADOW_ITERATOR_HPP diff --git a/sdk/include/boost/graph/dijkstra_shortest_paths.hpp b/sdk/include/boost/graph/dijkstra_shortest_paths.hpp deleted file mode 100644 index 85af4b0edca..00000000000 --- a/sdk/include/boost/graph/dijkstra_shortest_paths.hpp +++ /dev/null @@ -1,293 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -// -// Revision History: -// 04 April 2001: Added named parameter variant. (Jeremy Siek) -// 01 April 2001: Modified to use new header. (JMaddock) -// -#ifndef BOOST_GRAPH_DIJKSTRA_HPP -#define BOOST_GRAPH_DIJKSTRA_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - template - struct DijkstraVisitorConcept { - void constraints() { - function_requires< CopyConstructibleConcept >(); - vis.discover_vertex(u, g); - vis.examine_vertex(u, g); - vis.examine_edge(e, g); - vis.edge_relaxed(e, g); - vis.edge_not_relaxed(e, g); - vis.finish_vertex(u, g); - } - Visitor vis; - Graph g; - typename graph_traits::vertex_descriptor u; - typename graph_traits::edge_descriptor e; - }; - - template - class dijkstra_visitor : public bfs_visitor { - public: - dijkstra_visitor() { } - dijkstra_visitor(Visitors vis) - : bfs_visitor(vis) { } - - template - void edge_relaxed(Edge e, Graph& g) { - invoke_visitors(this->m_vis, e, g, on_edge_relaxed()); - } - template - void edge_not_relaxed(Edge e, Graph& g) { - invoke_visitors(this->m_vis, e, g, on_edge_not_relaxed()); - } - private: - template - void tree_edge(Edge u, Graph& g) { } - }; - template - dijkstra_visitor - make_dijkstra_visitor(Visitors vis) { - return dijkstra_visitor(vis); - } - typedef dijkstra_visitor<> default_dijkstra_visitor; - - namespace detail { - - template - struct dijkstra_bfs_visitor - { - typedef typename property_traits::value_type D; - - dijkstra_bfs_visitor(UniformCostVisitor vis, UpdatableQueue& Q, - WeightMap w, PredecessorMap p, DistanceMap d, - BinaryFunction combine, BinaryPredicate compare, - D zero) - : m_vis(vis), m_Q(Q), m_weight(w), m_predecessor(p), m_distance(d), - m_combine(combine), m_compare(compare), m_zero(zero) { } - - template - void tree_edge(Edge e, Graph& g) { - m_decreased = relax(e, g, m_weight, m_predecessor, m_distance, - m_combine, m_compare); - if (m_decreased) - m_vis.edge_relaxed(e, g); - else - m_vis.edge_not_relaxed(e, g); - } - template - void gray_target(Edge e, Graph& g) { - m_decreased = relax(e, g, m_weight, m_predecessor, m_distance, - m_combine, m_compare); - if (m_decreased) { - m_Q.update(target(e, g)); - m_vis.edge_relaxed(e, g); - } else - m_vis.edge_not_relaxed(e, g); - } - - template - void initialize_vertex(Vertex u, Graph& g) - { m_vis.initialize_vertex(u, g); } - template - void non_tree_edge(Edge, Graph&) { } - template - void discover_vertex(Vertex u, Graph& g) { m_vis.discover_vertex(u, g); } - template - void examine_vertex(Vertex u, Graph& g) { m_vis.examine_vertex(u, g); } - template - void examine_edge(Edge e, Graph& g) { - if (m_compare(get(m_weight, e), m_zero)) - throw negative_edge(); - m_vis.examine_edge(e, g); - } - template - void black_target(Edge, Graph&) { } - template - void finish_vertex(Vertex u, Graph& g) { m_vis.finish_vertex(u, g); } - - UniformCostVisitor m_vis; - UpdatableQueue& m_Q; - WeightMap m_weight; - PredecessorMap m_predecessor; - DistanceMap m_distance; - BinaryFunction m_combine; - BinaryPredicate m_compare; - bool m_decreased; - D m_zero; - }; - - } // namespace detail - - // Initalize distances and call breadth first search - template - inline void - dijkstra_shortest_paths_no_init - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - PredecessorMap predecessor, DistanceMap distance, WeightMap weight, - IndexMap index_map, - Compare compare, Combine combine, DistInf inf, DistZero zero, - DijkstraVisitor vis) - { - typedef indirect_cmp IndirectCmp; - IndirectCmp icmp(distance, compare); - - typedef typename graph_traits::vertex_descriptor Vertex; - typedef mutable_queue, IndirectCmp, IndexMap> - MutableQueue; - - MutableQueue Q(num_vertices(g), icmp, index_map); - - detail::dijkstra_bfs_visitor - bfs_vis(vis, Q, weight, predecessor, distance, combine, compare, zero); - - std::vector color(num_vertices(g)); - default_color_type c = white_color; - breadth_first_visit(g, s, Q, bfs_vis, - make_iterator_property_map(&color[0], index_map, c)); - } - - - // Initalize distances and call breadth first search - template - inline void - dijkstra_shortest_paths - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - PredecessorMap predecessor, DistanceMap distance, WeightMap weight, - IndexMap index_map, - Compare compare, Combine combine, DistInf inf, DistZero zero, - DijkstraVisitor vis) - { - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) { - put(distance, *ui, inf); - put(predecessor, *ui, *ui); - } - put(distance, s, zero); - - dijkstra_shortest_paths_no_init(g, s, predecessor, distance, weight, - index_map, compare, combine, inf, zero, vis); - } - - namespace detail { - - // Handle defaults for PredecessorMap and - // Distance Compare, Combine, Inf and Zero - template - inline void - dijkstra_dispatch2 - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - DistanceMap distance, WeightMap weight, IndexMap index_map, - const Params& params) - { - // Default for predecessor map - dummy_property_map p_map; - - typedef typename property_traits::value_type D; - dijkstra_shortest_paths - (g, s, - choose_param(get_param(params, vertex_predecessor), p_map), - distance, weight, index_map, - choose_param(get_param(params, distance_compare_t()), - std::less()), - choose_param(get_param(params, distance_combine_t()), - closed_plus()), - choose_param(get_param(params, distance_inf_t()), - std::numeric_limits::max()), - choose_param(get_param(params, distance_zero_t()), - D()), - choose_param(get_param(params, graph_visitor), - make_dijkstra_visitor(null_visitor()))); - } - - template - inline void - dijkstra_dispatch1 - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - DistanceMap distance, WeightMap weight, IndexMap index_map, - const Params& params) - { - // Default for distance map - typedef typename property_traits::value_type D; - typename std::vector::size_type - n = is_default_param(distance) ? num_vertices(g) : 1; - std::vector distance_map(n); - - detail::dijkstra_dispatch2 - (g, s, choose_param(distance, make_iterator_property_map - (distance_map.begin(), index_map, - distance_map[0])), - weight, index_map, params); - } - } // namespace detail - - // Named Parameter Variant - template - inline void - dijkstra_shortest_paths - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params) - { - // Default for edge weight and vertex index map is to ask for them - // from the graph. Default for the visitor is null_visitor. - detail::dijkstra_dispatch1 - (g, s, - get_param(params, vertex_distance), - choose_const_pmap(get_param(params, edge_weight), g, edge_weight), - choose_const_pmap(get_param(params, vertex_index), g, vertex_index), - params); - } - -} // namespace boost - -#endif // BOOST_GRAPH_DIJKSTRA_HPP diff --git a/sdk/include/boost/graph/edge_connectivity.hpp b/sdk/include/boost/graph/edge_connectivity.hpp deleted file mode 100644 index 18aa50cd0e6..00000000000 --- a/sdk/include/boost/graph/edge_connectivity.hpp +++ /dev/null @@ -1,197 +0,0 @@ -//======================================================================= -// Copyright 2000 University of Notre Dame. -// Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_EDGE_CONNECTIVITY -#define BOOST_EDGE_CONNECTIVITY - -// WARNING: not-yet fully tested! - -#include -#include -#include -#include -#include - -namespace boost { - - namespace detail { - - template - inline - std::pair::vertex_descriptor, - typename graph_traits::degree_size_type> - min_degree_vertex(Graph& g) - { - typedef graph_traits Traits; - typename Traits::vertex_descriptor p; - typedef typename Traits::degree_size_type size_type; - size_type delta = std::numeric_limits::max(); - - typename Traits::vertex_iterator i, iend; - for (tie(i, iend) = vertices(g); i != iend; ++i) - if (degree(*i, g) < delta) { - delta = degree(*i, g); - p = *i; - } - return std::make_pair(p, delta); - } - - template - void neighbors(const Graph& g, - typename graph_traits::vertex_descriptor u, - OutputIterator result) - { - typename graph_traits::adjacency_iterator ai, aend; - for (tie(ai, aend) = adjacent_vertices(u, g); ai != aend; ++ai) - *result++ = *ai; - } - - template - void neighbors(const Graph& g, - VertexIterator first, VertexIterator last, - OutputIterator result) - { - for (; first != last; ++first) - neighbors(g, *first, result); - } - - } // namespace detail - - // O(m n) - template - typename graph_traits::degree_size_type - edge_connectivity(VertexListGraph& g, OutputIterator disconnecting_set) - { - //------------------------------------------------------------------------- - // Type Definitions - typedef graph_traits Traits; - typedef typename Traits::vertex_iterator vertex_iterator; - typedef typename Traits::edge_iterator edge_iterator; - typedef typename Traits::out_edge_iterator out_edge_iterator; - typedef typename Traits::vertex_descriptor vertex_descriptor; - typedef typename Traits::degree_size_type degree_size_type; - typedef color_traits Color; - - typedef adjacency_list_traits Tr; - typedef typename Tr::edge_descriptor Tr_edge_desc; - typedef adjacency_list > > > - FlowGraph; - typedef typename graph_traits::edge_descriptor edge_descriptor; - - //------------------------------------------------------------------------- - // Variable Declarations - vertex_descriptor u, v, p, k; - edge_descriptor e1, e2; - bool inserted; - vertex_iterator vi, vi_end; - edge_iterator ei, ei_end; - degree_size_type delta, alpha_star, alpha_S_k; - std::set S, neighbor_S; - std::vector S_star, non_neighbor_S; - std::vector color(num_vertices(g)); - std::vector pred(num_vertices(g)); - - //------------------------------------------------------------------------- - // Create a network flow graph out of the undirected graph - FlowGraph flow_g(num_vertices(g)); - - typename property_map::type - cap = get(edge_capacity, flow_g); - typename property_map::type - res_cap = get(edge_residual_capacity, flow_g); - typename property_map::type - rev_edge = get(edge_reverse, flow_g); - - for (tie(ei, ei_end) = edges(g); ei != ei_end; ++ei) { - u = source(*ei, g), v = target(*ei, g); - tie(e1, inserted) = add_edge(u, v, flow_g); - cap[e1] = 1; - tie(e2, inserted) = add_edge(v, u, flow_g); - cap[e2] = 1; // not sure about this - rev_edge[e1] = e2; - rev_edge[e2] = e1; - } - - //------------------------------------------------------------------------- - // The Algorithm - - tie(p, delta) = detail::min_degree_vertex(g); - S_star.push_back(p); - alpha_star = delta; - S.insert(p); - neighbor_S.insert(p); - detail::neighbors(g, S.begin(), S.end(), - std::inserter(neighbor_S, neighbor_S.begin())); - - std::set_difference(vertices(g).first, vertices(g).second, - neighbor_S.begin(), neighbor_S.end(), - std::back_inserter(non_neighbor_S)); - - while (!non_neighbor_S.empty()) { // at most n - 1 times - k = non_neighbor_S.front(); - - alpha_S_k = edmunds_karp_max_flow - (flow_g, p, k, cap, res_cap, rev_edge, &color[0], &pred[0]); - - if (alpha_S_k < alpha_star) { - alpha_star = alpha_S_k; - S_star.clear(); - for (tie(vi, vi_end) = vertices(flow_g); vi != vi_end; ++vi) - if (color[*vi] != Color::white()) - S_star.push_back(*vi); - } - S.insert(k); - neighbor_S.insert(k); - detail::neighbors(g, k, std::inserter(neighbor_S, neighbor_S.begin())); - non_neighbor_S.clear(); - std::set_difference(vertices(g).first, vertices(g).second, - neighbor_S.begin(), neighbor_S.end(), - std::back_inserter(non_neighbor_S)); - } - //------------------------------------------------------------------------- - // Compute edges of the cut [S*, ~S*] - std::vector in_S_star(num_vertices(g), false); - typename std::vector::iterator si; - for (si = S_star.begin(); si != S_star.end(); ++si) - in_S_star[*si] = true; - - degree_size_type c = 0; - for (si = S_star.begin(); si != S_star.end(); ++si) { - out_edge_iterator ei, ei_end; - for (tie(ei, ei_end) = out_edges(*si, g); ei != ei_end; ++ei) - if (!in_S_star[target(*ei, g)]) { - *disconnecting_set++ = *ei; - ++c; - } - } - return c; - } - -} // namespace boost - -#endif // BOOST_EDGE_CONNECTIVITY diff --git a/sdk/include/boost/graph/edge_list.hpp b/sdk/include/boost/graph/edge_list.hpp deleted file mode 100644 index bb582174fe2..00000000000 --- a/sdk/include/boost/graph/edge_list.hpp +++ /dev/null @@ -1,319 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -#ifndef BOOST_GRAPH_EDGE_LIST_HPP -#define BOOST_GRAPH_EDGE_LIST_HPP - -#include -#include -#include -#include -#include -#include - -namespace boost { - - // - // The edge_list class is an EdgeListGraph module that is constructed - // from a pair of iterators whose value type is a pair of vertex - // descriptors. - // - // For example: - // - // typedef std::pair E; - // list elist; - // ... - // typedef edge_list::iterator> Graph; - // Graph g(elist.begin(), elist.end()); - // - // If the iterators are random access, then Graph::edge_descriptor - // is of Integral type, otherwise it is a struct, though it is - // convertible to an Integral type. - // - - struct edge_list_tag { }; - - // The implementation class for edge_list. - template - class edge_list_impl - { - public: - typedef D edge_id; - typedef T Vpair; - typedef typename Vpair::first_type V; - typedef V vertex_descriptor; - typedef edge_list_tag graph_tag; - typedef void edge_property_type; - - struct edge_descriptor - { - edge_descriptor() { } - edge_descriptor(EdgeIter p, edge_id id) : _ptr(p), _id(id) { } - operator edge_id() { return _id; } - EdgeIter _ptr; - edge_id _id; - }; - typedef edge_descriptor E; - - struct edge_iterator - { - typedef edge_iterator self; - typedef E value_type; - typedef E& reference; - typedef E* pointer; - typedef std::ptrdiff_t difference_type; - typedef std::input_iterator_tag iterator_category; - edge_iterator() { } - edge_iterator(EdgeIter iter) : _iter(iter), _i(0) { } - E operator*() { return E(_iter, _i); } - self& operator++() { ++_iter; ++_i; return *this; } - self operator++(int) { self t = *this; ++(*this); return t; } - bool operator==(const self& x) { return _iter == x._iter; } - bool operator!=(const self& x) { return _iter != x._iter; } - EdgeIter _iter; - edge_id _i; - }; - typedef void out_edge_iterator; - typedef void in_edge_iterator; - typedef void adjacency_iterator; - typedef void vertex_iterator; - }; - - template - std::pair::edge_iterator, - typename edge_list_impl::edge_iterator> - edges(const edge_list_impl& g_) { - const G& g = static_cast(g_); - typedef typename edge_list_impl::edge_iterator edge_iterator; - return std::make_pair(edge_iterator(g._first), edge_iterator(g._last)); - } - template - typename edge_list_impl::vertex_descriptor - source(typename edge_list_impl::edge_descriptor e, - const edge_list_impl&) { - return (*e._ptr).first; - } - template - typename edge_list_impl::vertex_descriptor - target(typename edge_list_impl::edge_descriptor e, - const edge_list_impl&) { - return (*e._ptr).second; - } - - template - class el_edge_property_map - : public put_get_helper >{ - public: - typedef E key_type; - typedef D value_type; - typedef D reference; - typedef readable_property_map_tag category; - - value_type operator[](key_type e) const { - return e._i; - } - }; - struct edge_list_edge_property_selector { - template - struct bind_ { - typedef el_edge_property_map type; - typedef type const_type; - }; - }; - template <> - struct edge_property_selector { - typedef edge_list_edge_property_selector type; - }; - - template - typename property_map< edge_list_impl, edge_index_t>::type - get(edge_index_t, const edge_list_impl&) { - typedef typename property_map< edge_list_impl, - edge_index_t>::type EdgeIndexMap; - return EdgeIndexMap(); - } - - template - inline D - get(edge_index_t, const edge_list_impl&, - typename edge_list_impl::edge_descriptor e) { - return e._i; - } - - // A specialized implementation for when the iterators are random access. - - struct edge_list_ra_tag { }; - - template - class edge_list_impl_ra - { - public: - typedef D edge_id; - typedef T Vpair; - typedef typename Vpair::first_type V; - typedef edge_list_ra_tag graph_tag; - typedef void edge_property_type; - - typedef edge_id edge_descriptor; - typedef V vertex_descriptor; - typedef typename boost::integer_range::iterator edge_iterator; - typedef void out_edge_iterator; - typedef void in_edge_iterator; - typedef void adjacency_iterator; - typedef void vertex_iterator; - }; - - template - std::pair::edge_iterator, - typename edge_list_impl_ra::edge_iterator> - edges(const edge_list_impl_ra& g_) - { - const G& g = static_cast(g_); - typedef typename edge_list_impl_ra::edge_iterator edge_iterator; - return std::make_pair(edge_iterator(0), edge_iterator(g._last - g._first)); - } - template - typename edge_list_impl_ra::vertex_descriptor - source(typename edge_list_impl_ra::edge_descriptor e, - const edge_list_impl_ra& g_) - { - const G& g = static_cast(g_); - return g._first[e].first; - } - template - typename edge_list_impl_ra::vertex_descriptor - target(typename edge_list_impl_ra::edge_descriptor e, - const edge_list_impl_ra& g_) - { - const G& g = static_cast(g_); - return g._first[e].second; - } - template - class el_ra_edge_property_map - : public put_get_helper >{ - public: - typedef E key_type; - typedef E value_type; - typedef E reference; - typedef readable_property_map_tag category; - - value_type operator[](key_type e) const { - return e; - } - }; - struct edge_list_ra_edge_property_selector { - template - struct bind_ { - typedef el_ra_edge_property_map type; - typedef type const_type; - }; - }; - template <> - struct edge_property_selector { - typedef edge_list_ra_edge_property_selector type; - }; - template - inline - typename property_map< edge_list_impl_ra, edge_index_t>::type - get(edge_index_t, const edge_list_impl_ra&) { - typedef typename property_map< edge_list_impl_ra, - edge_index_t>::type EdgeIndexMap; - return EdgeIndexMap(); - } - - template - inline D - get(edge_index_t, const edge_list_impl_ra&, - typename edge_list_impl_ra::edge_descriptor e) { - return e; - } - - - // Some helper classes for determining if the iterators are random access - template - struct is_random { - enum { RET = false }; - typedef false_type type; - }; - template <> - struct is_random { - enum { RET = true }; typedef true_type type; - }; - - // The edge_list class conditionally inherits from one of the - // above two classes. - - template ::value_type, - class D = typename std::iterator_traits::difference_type, - class Cat = typename std::iterator_traits::iterator_category> -#else - class T, - class D, - class Cat> -#endif - class edge_list - : public ct_if_t< typename is_random::type, - edge_list_impl_ra< edge_list, EdgeIter,T,D>, - edge_list_impl< edge_list, EdgeIter,T,D> - >::type - { - public: - typedef directed_tag directed_category; - typedef allow_parallel_edge_tag edge_parallel_category; - typedef edge_list_graph_tag traversal_category; - typedef std::size_t edges_size_type; - typedef std::size_t vertices_size_type; - typedef std::size_t degree_size_type; - edge_list(EdgeIter first, EdgeIter last) : _first(first), _last(last) { - m_num_edges = std::distance(first, last); - } - edge_list(EdgeIter first, EdgeIter last, edges_size_type E) - : _first(first), _last(last), m_num_edges(E) { } - - EdgeIter _first, _last; - edges_size_type m_num_edges; - }; - - template - std::size_t num_edges(const edge_list& el) { - return el.m_num_edges; - } - -#ifndef BOOST_NO_STD_ITERATOR_TRAITS - template - inline edge_list - make_edge_list(EdgeIter first, EdgeIter last) - { - return edge_list(first, last); - } -#endif - -} /* namespace boost */ - -#endif /* BOOST_GRAPH_EDGE_LIST_HPP */ diff --git a/sdk/include/boost/graph/edmunds_karp_max_flow.hpp b/sdk/include/boost/graph/edmunds_karp_max_flow.hpp deleted file mode 100644 index a0774b05037..00000000000 --- a/sdk/include/boost/graph/edmunds_karp_max_flow.hpp +++ /dev/null @@ -1,269 +0,0 @@ -//======================================================================= -// Copyright 2000 University of Notre Dame. -// Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef EDMUNDS_KARP_MAX_FLOW_HPP -#define EDMUNDS_KARP_MAX_FLOW_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - // The "labeling" algorithm from "Network Flows" by Ahuja, Magnanti, - // Orlin. I think this is the same as or very similar to the original - // Edmunds-Karp algorithm. This solves the maximum flow problem. - - namespace detail { - - template - filtered_graph > - residual_graph(Graph& g, ResCapMap residual_capacity) { - return filtered_graph > - (g, is_residual_edge(residual_capacity)); - } - - template - inline void - augment(Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - PredEdgeMap p, - ResCapMap residual_capacity, - RevEdgeMap reverse_edge) - { - typename graph_traits::edge_descriptor e; - typename graph_traits::vertex_descriptor u; - typedef typename property_traits::value_type FlowValue; - - // find minimum residual capacity along the augmenting path - FlowValue delta = std::numeric_limits::max(); - e = p[sink]; - do { - delta = std::min(delta, residual_capacity[e]); - u = source(e, g); - e = p[u]; - } while (u != src); - - // push delta units of flow along the augmenting path - e = p[sink]; - do { - residual_capacity[e] -= delta; - residual_capacity[reverse_edge[e]] += delta; - u = source(e, g); - e = p[u]; - } while (u != src); - } - - } // namespace detail - - template - typename property_traits::value_type - edmunds_karp_max_flow - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - CapacityEdgeMap cap, - ResidualCapacityEdgeMap res, - ReverseEdgeMap rev, - ColorMap color, - PredEdgeMap pred) - { - typedef typename graph_traits::vertex_descriptor vertex_t; - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - - typename graph_traits::vertex_iterator u_iter, u_end; - typename graph_traits::out_edge_iterator ei, e_end; - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) - for (tie(ei, e_end) = out_edges(*u_iter, g); ei != e_end; ++ei) - res[*ei] = cap[*ei]; - - color[sink] = Color::gray(); - while (color[sink] != Color::white()) { - boost::queue Q; - breadth_first_search - (detail::residual_graph(g, res), src, Q, - make_bfs_visitor(record_edge_predecessors(pred, on_tree_edge())), - color); - if (color[sink] != Color::white()) - detail::augment(g, src, sink, pred, res, rev); - } // while - - typename property_traits::value_type flow = 0; - for (tie(ei, e_end) = out_edges(src, g); ei != e_end; ++ei) - flow += (cap[*ei] - res[*ei]); - return flow; - } // edmunds_karp_max_flow() - - namespace detail { - //------------------------------------------------------------------------- - // Handle default for color property map - - // use of class here is a VC++ workaround - template - struct edmunds_karp_dispatch2 { - template - static typename edge_capacity_value::type - apply - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - PredMap pred, - const bgl_named_params& params, - ColorMap color) - { - return edmunds_karp_max_flow - (g, src, sink, - choose_const_pmap(get_param(params, edge_capacity), g, edge_capacity), - choose_pmap(get_param(params, edge_residual_capacity), - g, edge_residual_capacity), - choose_const_pmap(get_param(params, edge_reverse), g, edge_reverse), - color, pred); - } - }; - template<> - struct edmunds_karp_dispatch2 { - template - static typename edge_capacity_value::type - apply - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - PredMap pred, - const bgl_named_params& params, - detail::error_property_not_found) - { - typedef typename graph_traits::edge_descriptor edge_descriptor; - typedef typename graph_traits::vertices_size_type size_type; - size_type n = is_default_param(get_param(params, vertex_color)) ? - num_vertices(g) : 1; - std::vector color_vec(n); - return edmunds_karp_max_flow - (g, src, sink, - choose_const_pmap(get_param(params, edge_capacity), g, edge_capacity), - choose_pmap(get_param(params, edge_residual_capacity), - g, edge_residual_capacity), - choose_const_pmap(get_param(params, edge_reverse), g, edge_reverse), - make_iterator_property_map(color_vec.begin(), choose_const_pmap - (get_param(params, vertex_index), - g, vertex_index), color_vec[0]), - pred); - } - }; - - //------------------------------------------------------------------------- - // Handle default for predecessor property map - - // use of class here is a VC++ workaround - template - struct edmunds_karp_dispatch1 { - template - static typename edge_capacity_value::type - apply(Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - const bgl_named_params& params, - PredMap pred) - { - typedef typename graph_traits::edge_descriptor edge_descriptor; - typedef typename graph_traits::vertices_size_type size_type; - size_type n = is_default_param(get_param(params, vertex_predecessor)) ? - num_vertices(g) : 1; - std::vector pred_vec(n); - - typedef typename property_value< bgl_named_params, vertex_color_t>::type C; - return edmunds_karp_dispatch2::apply - (g, src, sink, pred, params, get_param(params, vertex_color)); - } - }; - template<> - struct edmunds_karp_dispatch1 { - - template - static typename edge_capacity_value::type - apply - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - const bgl_named_params& params, - detail::error_property_not_found) - { - typedef typename graph_traits::edge_descriptor edge_descriptor; - typedef typename graph_traits::vertices_size_type size_type; - size_type n = is_default_param(get_param(params, vertex_predecessor)) ? - num_vertices(g) : 1; - std::vector pred_vec(n); - - typedef typename property_value< bgl_named_params, vertex_color_t>::type C; - return edmunds_karp_dispatch2::apply - (g, src, sink, - make_iterator_property_map(pred_vec.begin(), choose_const_pmap - (get_param(params, vertex_index), - g, vertex_index), pred_vec[0]), - params, - get_param(params, vertex_color)); - } - }; - - } // namespace detail - - template - typename detail::edge_capacity_value::type - edmunds_karp_max_flow - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - const bgl_named_params& params) - { - typedef typename property_value< bgl_named_params, vertex_predecessor_t>::type Pred; - return detail::edmunds_karp_dispatch1::apply - (g, src, sink, params, get_param(params, vertex_predecessor)); - } - - template - typename property_traits< - typename property_map::const_type - >::value_type - edmunds_karp_max_flow - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink) - { - bgl_named_params params(0); - return edmunds_karp_max_flow(g, src, sink, params); - } - -} // namespace boost - -#endif // EDMUNDS_KARP_MAX_FLOW_HPP diff --git a/sdk/include/boost/graph/exception.hpp b/sdk/include/boost/graph/exception.hpp deleted file mode 100644 index f487e67d91d..00000000000 --- a/sdk/include/boost/graph/exception.hpp +++ /dev/null @@ -1,57 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_EXCEPTION_HPP -#define BOOST_GRAPH_EXCEPTION_HPP - -#include - -namespace boost { - - struct bad_graph : public std::invalid_argument { - bad_graph(const std::string& what_arg) - : std::invalid_argument(what_arg) { } - }; - - struct not_a_dag : public bad_graph { - not_a_dag() - : bad_graph("The graph must be a DAG.") { } - }; - - struct negative_edge : public bad_graph { - negative_edge() - : bad_graph("The graph may not contain an edge with negative weight."){ } - }; - - struct negative_cycle : public bad_graph { - negative_cycle() - : bad_graph("The graph may not contain negative cycles.") { } - }; - struct not_connected : public bad_graph { - not_connected() - : bad_graph("The graph must be connected.") { } - }; - -} // namespace boost - -#endif // BOOST_GRAPH_EXCEPTION_HPP diff --git a/sdk/include/boost/graph/filtered_graph.hpp b/sdk/include/boost/graph/filtered_graph.hpp deleted file mode 100644 index f3563b85376..00000000000 --- a/sdk/include/boost/graph/filtered_graph.hpp +++ /dev/null @@ -1,490 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_FILTERED_GRAPH_HPP -#define BOOST_FILTERED_GRAPH_HPP - -#include -#include -#include -#include - -namespace boost { - - //========================================================================= - // Some predicate classes. - - struct keep_all { - template - bool operator()(const T&) const { return true; } - }; - - // Keep residual edges (used in maximum-flow algorithms). - template - struct is_residual_edge { - is_residual_edge() { } - is_residual_edge(ResidualCapacityEdgeMap rcap) : m_rcap(rcap) { } - template - bool operator()(const Edge& e) const { - return 0 < get(m_rcap, e); - } - ResidualCapacityEdgeMap m_rcap; - }; - - template - struct is_in_subset { - is_in_subset() : m_s(0) { } - is_in_subset(const Set& s) : m_s(&s) { } - - template - bool operator()(const Elt& x) const { - return set_contains(*m_s, x); - } - const Set* m_s; - }; - - template - struct is_not_in_subset { - is_not_in_subset() : m_s(0) { } - is_not_in_subset(const Set& s) : m_s(&s) { } - - template - bool operator()(const Elt& x) const { - return !set_contains(*m_s, x); - } - const Set* m_s; - }; - - namespace detail { - - template - struct out_edge_predicate { - out_edge_predicate() { } - out_edge_predicate(EdgePredicate ep, VertexPredicate vp, - const Graph& g) - : m_edge_pred(ep), m_vertex_pred(vp), m_g(&g) { } - - template - bool operator()(const Edge& e) const { - return m_edge_pred(e) && m_vertex_pred(target(e, *m_g)); - } - EdgePredicate m_edge_pred; - VertexPredicate m_vertex_pred; - const Graph* m_g; - }; - - template - struct in_edge_predicate { - in_edge_predicate() { } - in_edge_predicate(EdgePredicate ep, VertexPredicate vp, - const Graph& g) - : m_edge_pred(ep), m_vertex_pred(vp), m_g(&g) { } - - template - bool operator()(const Edge& e) const { - return m_edge_pred(e) && m_vertex_pred(source(e, *m_g)); - } - EdgePredicate m_edge_pred; - VertexPredicate m_vertex_pred; - const Graph* m_g; - }; - - template - struct edge_predicate { - edge_predicate() { } - edge_predicate(EdgePredicate ep, VertexPredicate vp, - const Graph& g) - : m_edge_pred(ep), m_vertex_pred(vp), m_g(&g) { } - - template - bool operator()(const Edge& e) const { - return m_edge_pred(e) - && m_vertex_pred(source(e, *m_g)) && m_vertex_pred(target(e, *m_g)); - } - EdgePredicate m_edge_pred; - VertexPredicate m_vertex_pred; - const Graph* m_g; - }; - - } // namespace detail - - - //=========================================================================== - // Filtered Graph - - struct filtered_graph_tag { }; - - template - class filtered_graph { - typedef graph_traits Traits; - typedef filtered_graph self; - public: - typedef Graph graph_type; - typedef detail::out_edge_predicate OutEdgePred; - typedef detail::in_edge_predicate InEdgePred; - typedef detail::edge_predicate EdgePred; - - // Constructors - filtered_graph(const Graph& g, EdgePredicate ep) - : m_g(g), m_edge_pred(ep) { } - - filtered_graph(const Graph& g, EdgePredicate ep, VertexPredicate vp) - : m_g(g), m_edge_pred(ep), m_vertex_pred(vp) { } - - // Graph requirements - typedef typename Traits::vertex_descriptor vertex_descriptor; - typedef typename Traits::edge_descriptor edge_descriptor; - typedef typename Traits::directed_category directed_category; - typedef typename Traits::edge_parallel_category edge_parallel_category; - typedef typename Traits::traversal_category traversal_category; - - // IncidenceGraph requirements - typedef filter_iterator_generator OutEdgeIterGen; - typedef typename OutEdgeIterGen::type out_edge_iterator; - typedef typename Traits::degree_size_type degree_size_type; - - // AdjacencyGraph requirements - typedef typename adjacency_iterator_generator::type adjacency_iterator; - - // BidirectionalGraph requirements - typedef filter_iterator_generator InEdgeIterGen; - typedef typename InEdgeIterGen::type in_edge_iterator; - - // VertexListGraph requirements - typedef filter_iterator_generator VertexIterGen; - typedef typename VertexIterGen::type vertex_iterator; - typedef typename Traits::vertices_size_type vertices_size_type; - - // EdgeListGraph requirements - typedef filter_iterator_generator EdgeIterGen; - typedef typename EdgeIterGen::type edge_iterator; - typedef typename Traits::edges_size_type edges_size_type; - - typedef typename Graph::edge_property_type edge_property_type; - typedef typename Graph::vertex_property_type vertex_property_type; - typedef filtered_graph_tag graph_tag; - - //private: - const Graph& m_g; - EdgePredicate m_edge_pred; - VertexPredicate m_vertex_pred; - - typedef typename out_edge_iterator::policies_type out_edge_iter_policy; - typedef typename in_edge_iterator::policies_type in_edge_iter_policy; - typedef typename edge_iterator::policies_type edge_iter_policy; - typedef typename vertex_iterator::policies_type vertex_iter_policy; - }; - - //=========================================================================== - // Non-member functions for the Filtered Edge Graph - - // Helper functions - template - inline filtered_graph - make_filtered_graph(Graph& g, EdgePredicate ep) { - return filtered_graph(g, ep); - } - template - inline filtered_graph - make_filtered_graph(Graph& g, EdgePredicate ep, VertexPredicate vp) { - return filtered_graph(g, ep, vp); - } - - template - std::pair::vertex_iterator, - typename filtered_graph::vertex_iterator> - vertices(const filtered_graph& g) - { - typedef filtered_graph Graph; - typename graph_traits::vertex_iterator f, l; - tie(f, l) = vertices(g.m_g); - typedef typename Graph::vertex_iter_policy Pol; - Pol pol(g.m_vertex_pred, l); - typedef typename Graph::vertex_iterator iter; - return std::make_pair(iter(f, pol), - iter(l, pol)); - } - - template - std::pair::edge_iterator, - typename filtered_graph::edge_iterator> - edges(const filtered_graph& g) - { - typedef filtered_graph Graph; - typedef typename Graph::edge_iter_policy Pol; - typename Graph::EdgePred pred(g.m_edge_pred, g.m_vertex_pred, g); - typename graph_traits::edge_iterator f, l; - tie(f, l) = edges(g.m_g); - typedef typename Graph::edge_iterator iter; - Pol pol(pred, l); - return std::make_pair(iter(f, pol), iter(l, pol)); - } - - // An alternative for num_vertices() and num_edges() would be to - // count the number in the filtered graph. This is problematic - // because of the interaction with the vertex indices... they would - // no longer go from 0 to num_vertices(), which would cause trouble - // for algorithms allocating property storage in an array. We could - // try to create a mapping to new recalibrated indices, but I don't - // see an efficient way to do this. - // - // However, the current solution is still unsatisfactory because - // the following semantic constraints no longer hold: - // tie(vi, viend) = vertices(g); - // assert(std::distance(vi, viend) == num_vertices(g)); - - template - typename filtered_graph::vertices_size_type - num_vertices(const filtered_graph& g) { - return num_vertices(g.m_g); - } - - template - typename filtered_graph::edges_size_type - num_edges(const filtered_graph& g) { - return num_edges(g.m_g); - } - - template - typename filtered_graph::vertex_descriptor - source(typename filtered_graph::edge_descriptor e, - const filtered_graph& g) - { - return source(e, g.m_g); - } - - template - typename filtered_graph::vertex_descriptor - target(typename filtered_graph::edge_descriptor e, - const filtered_graph& g) - { - return target(e, g.m_g); - } - - template - std::pair::out_edge_iterator, - typename filtered_graph::out_edge_iterator> - out_edges(typename filtered_graph::vertex_descriptor u, - const filtered_graph& g) - { - typedef filtered_graph Graph; - typename Graph::OutEdgePred pred(g.m_edge_pred, g.m_vertex_pred, g); - typedef typename Graph::out_edge_iter_policy Pol; - typedef typename Graph::out_edge_iterator iter; - typename graph_traits::out_edge_iterator f, l; - tie(f, l) = out_edges(u, g.m_g); - return std::make_pair(iter(f, Pol(pred, l)), iter(l, Pol(pred, l))); - } - - template - typename filtered_graph::degree_size_type - out_degree(typename filtered_graph::vertex_descriptor u, - const filtered_graph& g) - { - typename filtered_graph::degree_size_type n = 0; - typename filtered_graph::out_edge_iterator f, l; - for (tie(f, l) = out_edges(u, g); f != l; ++f) - ++n; - return n; - } - - template - std::pair::adjacency_iterator, - typename filtered_graph::adjacency_iterator> - adjacent_vertices(typename filtered_graph::vertex_descriptor u, - const filtered_graph& g) - { - typedef filtered_graph Graph; - typedef typename Graph::adjacency_iterator adjacency_iterator; - typename Graph::out_edge_iterator f, l; - tie(f, l) = out_edges(u, g); - return std::make_pair(adjacency_iterator(f, const_cast(&g)), - adjacency_iterator(l, const_cast(&g))); - } - - template - std::pair::in_edge_iterator, - typename filtered_graph::in_edge_iterator> - in_edges(typename filtered_graph::vertex_descriptor u, - const filtered_graph& g) - { - typedef filtered_graph Graph; - typename Graph::InEdgePred pred(g.m_edge_pred, g.m_vertex_pred, g); - typedef typename Graph::in_edge_iter_policy Pol; - typedef typename Graph::in_edge_iterator iter; - typename graph_traits::in_edge_iterator f, l; - tie(f, l) = in_edges(u, g.m_g); - return std::make_pair(iter(f, Pol(pred, l)), iter(l, Pol(pred, l))); - } - - template - typename filtered_graph::degree_size_type - in_degree(typename filtered_graph::vertex_descriptor u, - const filtered_graph& g) - { - typename filtered_graph::degree_size_type n = 0; - typename filtered_graph::in_edge_iterator f, l; - for (tie(f, l) = in_edges(u, g); f != l; ++f) - ++n; - return n; - } - - template - std::pair::edge_descriptor, bool> - edge(typename filtered_graph::vertex_descriptor u, - typename filtered_graph::vertex_descriptor v, - const filtered_graph& g) - { - typename graph_traits::edge_descriptor e; - bool exists; - tie(e, exists) = edge(u, v, g.m_g); - return std::make_pair(e, exists && g.m_edge_pred(e)); - } - - template - std::pair::out_edge_iterator, - typename filtered_graph::out_edge_iterator> - edge_range(typename filtered_graph::vertex_descriptor u, - typename filtered_graph::vertex_descriptor v, - const filtered_graph& g) - { - typedef filtered_graph Graph; - typename Graph::OutEdgePred pred(g.m_edge_pred, g.m_vertex_pred, g); - typedef typename Graph::out_edge_iter_policy Pol; - typedef typename Graph::out_edge_iterator iter; - typename graph_traits::out_edge_iterator f, l; - tie(f, l) = edge_range(u, v, g.m_g); - return std::make_pair(iter(f, Pol(pred, l)), iter(l, Pol(pred, l))); - } - - - //=========================================================================== - // Property map - - namespace detail { - struct filtered_graph_property_selector { - template - struct bind_ { - typedef typename FilteredGraph::graph_type Graph; - typedef property_map Map; - typedef typename Map::type type; - typedef typename Map::const_type const_type; - }; - }; - } // namespace detail - - template <> - struct vertex_property_selector { - typedef detail::filtered_graph_property_selector type; - }; - template <> - struct edge_property_selector { - typedef detail::filtered_graph_property_selector type; - }; - - template - typename property_map::type - get(Property p, filtered_graph& g) - { - return get(p, const_cast(g.m_g)); - } - - template - typename property_map::const_type - get(Property p, const filtered_graph& g) - { - return get(p, (const G&)g.m_g); - } - - template - typename property_map_value::type - get(Property p, const filtered_graph& g, const Key& k) - { - return get(p, (const G&)g.m_g, k); - } - - template - void - put(Property p, const filtered_graph& g, const Key& k, - const Value& val) - { - put(p, const_cast(g.m_g), k, val); - } - - //=========================================================================== - // Some filtered subgraph specializations - - template - struct vertex_subset_filter { - typedef filtered_graph > type; - }; - template - inline typename vertex_subset_filter::type - make_vertex_subset_filter(Graph& g, const Set& s) { - typedef typename vertex_subset_filter::type Filter; - is_in_subset p(s); - return Filter(g, keep_all(), p); - } - - template - struct vertex_subset_compliment_filter { - typedef filtered_graph > type; - }; - template - inline typename vertex_subset_compliment_filter::type - make_vertex_subset_compliment_filter(Graph& g, const Set& s) { - typedef typename vertex_subset_compliment_filter::type Filter; - is_not_in_subset p(s); - return Filter(g, keep_all(), p); - } - - -} // namespace boost - - -#endif // BOOST_FILTERED_GRAPH_HPP diff --git a/sdk/include/boost/graph/graph_archetypes.hpp b/sdk/include/boost/graph/graph_archetypes.hpp deleted file mode 100644 index 7455a32f795..00000000000 --- a/sdk/include/boost/graph/graph_archetypes.hpp +++ /dev/null @@ -1,304 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_ARCHETYPES_HPP -#define BOOST_GRAPH_ARCHETYPES_HPP - -#include -#include - -namespace boost { // should use a different namespace for this - - namespace detail { - struct null_graph_archetype : public null_archetype<> { - struct traversal_category { }; - }; - } - - //=========================================================================== - template - struct incidence_graph_archetype : public Base - { - typedef typename Base::traversal_category base_trav_cat; - struct traversal_category - : public incidence_graph_tag, public base_trav_cat { }; -#if 0 - typedef immutable_graph_tag mutability_category; -#endif - typedef Vertex vertex_descriptor; - typedef unsigned int degree_size_type; - typedef unsigned int vertices_size_type; - typedef unsigned int edges_size_type; - struct edge_descriptor { - edge_descriptor() { } - edge_descriptor(const detail::dummy_constructor&) { } - bool operator==(const edge_descriptor&) const { return false; } - bool operator!=(const edge_descriptor&) const { return false; } - }; - typedef input_iterator_archetype out_edge_iterator; - - typedef Directed directed_category; - typedef ParallelCategory edge_parallel_category; - - typedef void adjacency_iterator; - typedef void in_edge_iterator; - typedef void vertex_iterator; - typedef void edge_iterator; - }; - template - V source(const typename incidence_graph_archetype::edge_descriptor&, - const incidence_graph_archetype& ) - { - return V(static_object::get()); - } - template - V target(const typename incidence_graph_archetype::edge_descriptor&, - const incidence_graph_archetype& ) - { - return V(static_object::get()); - } - - template - std::pair::out_edge_iterator, - typename incidence_graph_archetype::out_edge_iterator> - out_edges(const V&, const incidence_graph_archetype& ) - { - typedef typename incidence_graph_archetype::out_edge_iterator Iter; - return std::make_pair(Iter(), Iter()); - } - - template - typename incidence_graph_archetype::degree_size_type - out_degree(const V&, const incidence_graph_archetype& ) - { - return 0; - } - - //=========================================================================== - template - struct adjacency_graph_archetype : public Base - { - typedef typename Base::traversal_category base_trav_cat; - struct traversal_category - : public adjacency_graph_tag, public base_trav_cat { }; - typedef Vertex vertex_descriptor; - typedef unsigned int degree_size_type; - typedef unsigned int vertices_size_type; - typedef unsigned int edges_size_type; - typedef void edge_descriptor; - typedef input_iterator_archetype adjacency_iterator; - - typedef Directed directed_category; - typedef ParallelCategory edge_parallel_category; - - typedef void in_edge_iterator; - typedef void out_edge_iterator; - typedef void vertex_iterator; - typedef void edge_iterator; - }; - - template - std::pair::adjacency_iterator, - typename adjacency_graph_archetype::adjacency_iterator> - adjacent_vertices(const V&, const adjacency_graph_archetype& ) - { - typedef typename adjacency_graph_archetype::adjacency_iterator Iter; - return std::make_pair(Iter(), Iter()); - } - - template - typename adjacency_graph_archetype::degree_size_type - out_degree(const V&, const adjacency_graph_archetype& ) - { - return 0; - } - - //=========================================================================== - template - struct vertex_list_graph_archetype : public Base - { - typedef incidence_graph_archetype - Incidence; - typedef adjacency_graph_archetype - Adjacency; - - typedef typename Base::traversal_category base_trav_cat; - struct traversal_category - : public vertex_list_graph_tag, public base_trav_cat { }; -#if 0 - typedef immutable_graph_tag mutability_category; -#endif - typedef Vertex vertex_descriptor; - typedef unsigned int degree_size_type; - typedef typename Incidence::edge_descriptor edge_descriptor; - typedef typename Incidence::out_edge_iterator out_edge_iterator; - typedef typename Adjacency::adjacency_iterator adjacency_iterator; - - typedef input_iterator_archetype vertex_iterator; - typedef unsigned int vertices_size_type; - typedef unsigned int edges_size_type; - - typedef Directed directed_category; - typedef ParallelCategory edge_parallel_category; - - typedef void in_edge_iterator; - typedef void edge_iterator; - }; - - template - std::pair::vertex_iterator, - typename vertex_list_graph_archetype::vertex_iterator> - vertices(const vertex_list_graph_archetype& ) - { - typedef typename vertex_list_graph_archetype::vertex_iterator Iter; - return std::make_pair(Iter(), Iter()); - } - - template - typename vertex_list_graph_archetype::vertices_size_type - num_vertices(const vertex_list_graph_archetype& ) - { - return 0; - } - - // ambiguously inherited from incidence graph and adjacency graph - template - typename vertex_list_graph_archetype::degree_size_type - out_degree(const V&, const vertex_list_graph_archetype& ) - { - return 0; - } - - //=========================================================================== - - struct property_graph_archetype_tag { }; - - template - struct property_graph_archetype : public GraphArchetype - { - typedef property_graph_archetype_tag graph_tag; - typedef ValueArch vertex_property_type; - typedef ValueArch edge_property_type; - }; - - struct choose_edge_property_map_archetype { - template - struct bind_ { - typedef mutable_lvalue_property_map_archetype - type; - typedef lvalue_property_map_archetype - const_type; - }; - }; - template <> - struct edge_property_selector { - typedef choose_edge_property_map_archetype type; - }; - - struct choose_vertex_property_map_archetype { - template - struct bind_ { - typedef mutable_lvalue_property_map_archetype - type; - typedef lvalue_property_map_archetype - const_type; - }; - }; - - template <> - struct vertex_property_selector { - typedef choose_vertex_property_map_archetype type; - }; - - template - typename property_map, P>::type - get(P, property_graph_archetype&) { - typename property_map, P>::type pmap; - return pmap; - } - - template - typename property_map, P>::const_type - get(P, const property_graph_archetype&) { - typename property_map, P>::const_type pmap; - return pmap; - } - - template - typename property_traits, P>::const_type>::value_type - get(P p, const property_graph_archetype& g, K k) { - return get( get(p, g), k); - } - - template - void - put(P p, property_graph_archetype& g, - const Key& key, const V& value) - { - typedef typename boost::property_map, P>::type Map; - Map pmap = get(p, g); - put(pmap, key, value); - } - - struct color_value_archetype { - color_value_archetype() { } - color_value_archetype(detail::dummy_constructor) { } - bool operator==(const color_value_archetype& ) const { return true; } - bool operator!=(const color_value_archetype& ) const { return true; } - }; - template <> - struct color_traits { - static color_value_archetype white() - { - return color_value_archetype - (static_object::get()); - } - static color_value_archetype gray() - { - return color_value_archetype - (static_object::get()); - } - static color_value_archetype black() - { - return color_value_archetype - (static_object::get()); - } - }; - - template - class buffer_archetype { - public: - void push(const T&) {} - void pop() {} - T& top() { return static_object::get(); } - const T& top() const { return static_object::get(); } - bool empty() const { return true; } - }; - -} // namespace boost - - -#endif // BOOST_GRAPH_ARCHETYPES_HPP diff --git a/sdk/include/boost/graph/graph_as_tree.hpp b/sdk/include/boost/graph/graph_as_tree.hpp deleted file mode 100644 index a574a20a615..00000000000 --- a/sdk/include/boost/graph/graph_as_tree.hpp +++ /dev/null @@ -1,170 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_GRAPH_AS_TREE_HPP -#define BOOST_GRAPH_GRAPH_AS_TREE_HPP - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - template - class graph_as_tree_base - { - typedef Derived Tree; - public: - typedef Node node_descriptor; - typedef ChIt children_iterator; - - graph_as_tree_base(Graph& g, Node root) : _g(g), _root(root) { } - - friend Node root(const Tree& t) { return t._root; } - - template - friend std::pair - children(N n, const Tree& t) { return adjacent_vertices(n, t._g); } - - template - friend Node parent(N n, const Tree& t) { - return boost::get(t.parent_pa(), n); - } - - Graph& _g; - Node _root; - }; - - struct graph_as_tree_tag { }; - - template ::vertex_descriptor -#endif - , class ChIt -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - = typename graph_traits::adjacency_iterator -#endif - > - class graph_as_tree - : public graph_as_tree_base > - { - typedef graph_as_tree self; - typedef graph_as_tree_base super; - public: - graph_as_tree(Graph& g, Node root) : super(g, root) { } - - graph_as_tree(Graph& g, Node root, ParentMap p) : super(g, root), _p(p) { - breadth_first_search(g, root, - visitor(make_bfs_visitor - (record_predecessors(p, boost::on_tree_edge())))); - } - ParentMap parent_pa() const { return _p; } - typedef graph_as_tree_tag graph_tag; // for property_map - protected: - ParentMap _p; - }; - - - namespace detail { - - struct graph_as_tree_vertex_property_selector { - template - struct bind_ { - typedef typename GraphAsTree::base_type Graph; - typedef property_map PMap; - typedef typename PMap::type type; - typedef typename PMap::const_type const_type; - }; - }; - - struct graph_as_tree_edge_property_selector { - template - struct bind_ { - typedef typename GraphAsTree::base_type Graph; - typedef property_map PMap; - typedef typename PMap::type type; - typedef typename PMap::const_type const_type; - }; - }; - - } // namespace detail - - template <> - struct vertex_property_selector { - typedef detail::graph_as_tree_vertex_property_selector type; - }; - - template <> - struct edge_property_selector { - typedef detail::graph_as_tree_edge_property_selector type; - }; - - template - typename property_map::type - get(Property p, graph_as_tree& g) - { - return get(p, g._g); - } - - template - typename property_map::const_type - get(Property p, const graph_as_tree& g) - { - const Graph& gref = g._g; // in case GRef is non-const - return get(p, gref); - } - - template - typename property_traits< - typename property_map::const_type - >::value_type - get(Property p, const graph_as_tree& g, const Key& k) - { - return get(p, g._g, k); - } - - template - void - put(Property p, const graph_as_tree& g, const Key& k, - const Value& val) - { - put(p, g._g, k, val); - } - -} // namespace boost - -#endif // BOOST_GRAPH_GRAPH_AS_TREE_HPP diff --git a/sdk/include/boost/graph/graph_concepts.hpp b/sdk/include/boost/graph/graph_concepts.hpp deleted file mode 100644 index c73d34f9cdc..00000000000 --- a/sdk/include/boost/graph/graph_concepts.hpp +++ /dev/null @@ -1,471 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_CONCEPTS_HPP -#define BOOST_GRAPH_CONCEPTS_HPP - -#include -#include -#include -#include -#include - - -namespace boost { - - template - struct MultiPassInputIteratorConcept { - void constraints() { - function_requires< InputIteratorConcept >(); - } - }; - - template - struct GraphConcept - { - typedef typename graph_traits::vertex_descriptor vertex_descriptor; - typedef typename graph_traits::directed_category directed_category; - typedef typename graph_traits::edge_parallel_category - edge_parallel_category; - typedef typename graph_traits::traversal_category - traversal_category; - void constraints() { - function_requires< DefaultConstructibleConcept >(); - function_requires< EqualityComparableConcept >(); - function_requires< AssignableConcept >(); - } - G g; - }; - - template - struct IncidenceGraphConcept - { - typedef typename graph_traits::edge_descriptor edge_descriptor; - typedef typename graph_traits::out_edge_iterator - out_edge_iterator; - typedef typename graph_traits::traversal_category - traversal_category; - void constraints() { - function_requires< GraphConcept >(); - function_requires< MultiPassInputIteratorConcept >(); - function_requires< DefaultConstructibleConcept >(); - function_requires< EqualityComparableConcept >(); - function_requires< AssignableConcept >(); - function_requires< ConvertibleConcept >(); - - p = out_edges(v, g); - n = out_degree(v, g); - e = *p.first; - u = source(e, g); - v = target(e, g); - } - void const_constraints(const G& g) { - p = out_edges(v, g); - n = out_degree(v, g); - e = *p.first; - u = source(e, g); - v = target(e, g); - } - std::pair p; - typename graph_traits::vertex_descriptor u, v; - typename graph_traits::edge_descriptor e; - typename graph_traits::degree_size_type n; - G g; - }; - - template - struct BidirectionalGraphConcept - { - typedef typename graph_traits::in_edge_iterator - in_edge_iterator; - typedef typename graph_traits::traversal_category - traversal_category; - void constraints() { - function_requires< IncidenceGraphConcept >(); - function_requires< MultiPassInputIteratorConcept >(); - function_requires< ConvertibleConcept >(); - - p = in_edges(v, g); - n = in_degree(v, g); - e = *p.first; - const_constraints(g); - } - void const_constraints(const G& g) { - p = in_edges(v, g); - n = in_degree(v, g); - e = *p.first; - } - std::pair p; - typename graph_traits::vertex_descriptor v; - typename graph_traits::edge_descriptor e; - typename graph_traits::degree_size_type n; - G g; - }; - - template - struct AdjacencyGraphConcept - { - typedef typename graph_traits::adjacency_iterator - adjacency_iterator; - typedef typename graph_traits::traversal_category - traversal_category; - void constraints() { - function_requires< GraphConcept >(); - function_requires< MultiPassInputIteratorConcept >(); - function_requires< ConvertibleConcept >(); - - p = adjacent_vertices(v, g); - v = *p.first; - const_constraints(g); - } - void const_constraints(const G& g) { - p = adjacent_vertices(v, g); - } - std::pair p; - typename graph_traits::vertex_descriptor v; - G g; - }; - - template - struct VertexListGraphConcept - { - typedef typename graph_traits::vertex_iterator vertex_iterator; - typedef typename graph_traits::vertices_size_type vertices_size_type; - typedef typename graph_traits::traversal_category - traversal_category; - void constraints() { - function_requires< GraphConcept >(); - function_requires< MultiPassInputIteratorConcept >(); - function_requires< ConvertibleConcept >(); - - p = vertices(g); - v = *p.first; - const_constraints(g); - } - void const_constraints(const G& g) { - p = vertices(g); - v = *p.first; - V = num_vertices(g); - } - std::pair p; - typename graph_traits::vertex_descriptor v; - G g; - vertices_size_type V; - }; - - template - struct EdgeListGraphConcept - { - typedef typename graph_traits::edge_descriptor edge_descriptor; - typedef typename graph_traits::edge_iterator edge_iterator; - typedef typename graph_traits::edges_size_type edges_size_type; - typedef typename graph_traits::traversal_category - traversal_category; - void constraints() { - function_requires< GraphConcept >(); - function_requires< MultiPassInputIteratorConcept >(); - function_requires< DefaultConstructibleConcept >(); - function_requires< EqualityComparableConcept >(); - function_requires< AssignableConcept >(); - function_requires< ConvertibleConcept >(); - - p = edges(g); - e = *p.first; - u = source(e, g); - v = target(e, g); - const_constraints(g); - } - void const_constraints(const G& g) { - p = edges(g); - E = num_edges(g); - e = *p.first; - u = source(e, g); - v = target(e, g); - } - std::pair p; - typename graph_traits::vertex_descriptor u, v; - typename graph_traits::edge_descriptor e; - edges_size_type E; - G g; - }; - - template - struct VertexAndEdgeListGraphConcept - { - void constraints() { - function_requires< VertexListGraphConcept >(); - function_requires< EdgeListGraphConcept >(); - } - }; - - // Where to put the requirement for this constructor? - // G g(n_vertices); - // Not in mutable graph, then LEDA graph's can't be models of - // MutableGraph. - - template - struct EdgeMutableGraphConcept - { - typedef typename graph_traits::edge_descriptor edge_descriptor; - void constraints() { - p = add_edge(u, v, g); - remove_edge(u, v, g); - remove_edge(e, g); - clear_vertex(v, g); - } - G g; - edge_descriptor e; - std::pair p; - typename graph_traits::vertex_descriptor u, v; - }; - - template - struct VertexMutableGraphConcept - { - void constraints() { - v = add_vertex(g); - remove_vertex(v, g); - } - G g; - typename graph_traits::vertex_descriptor u, v; - }; - - template - struct MutableGraphConcept - { - void constraints() { - function_requires< EdgeMutableGraphConcept >(); - function_requires< VertexMutableGraphConcept >(); - } - }; - - template - struct dummy_edge_predicate { - bool operator()(const edge_descriptor&) const { - return false; - } - }; - - template - struct MutableIncidenceGraphConcept - { - void constraints() { - function_requires< MutableGraphConcept >(); - remove_edge(iter, g); - remove_out_edge_if(u, p, g); - } - G g; - typedef typename graph_traits::edge_descriptor edge_descriptor; - dummy_edge_predicate p; - typename boost::graph_traits::vertex_descriptor u; - typename boost::graph_traits::out_edge_iterator iter; - }; - - template - struct MutableBidirectionalGraphConcept - { - void constraints() { - function_requires< MutableIncidenceGraphConcept >(); - remove_in_edge_if(u, p, g); - } - G g; - typedef typename graph_traits::edge_descriptor edge_descriptor; - dummy_edge_predicate p; - typename boost::graph_traits::vertex_descriptor u; - }; - - template - struct MutableEdgeListGraphConcept - { - void constraints() { - function_requires< EdgeMutableGraphConcept >(); - remove_edge_if(p, g); - } - G g; - typedef typename graph_traits::edge_descriptor edge_descriptor; - dummy_edge_predicate p; - }; - - template - struct VertexMutablePropertyGraphConcept - { - void constraints() { - function_requires< VertexMutableGraphConcept >(); - v = add_vertex(vp, g); - } - G g; - typename graph_traits::vertex_descriptor v; - typename vertex_property::type vp; - }; - - template - struct EdgeMutablePropertyGraphConcept - { - typedef typename graph_traits::edge_descriptor edge_descriptor; - void constraints() { - function_requires< EdgeMutableGraphConcept >(); - p = add_edge(u, v, ep, g); - } - G g; - std::pair p; - typename graph_traits::vertex_descriptor u, v; - typename edge_property::type ep; - }; - - template - struct AdjacencyMatrixConcept - { - typedef typename graph_traits::edge_descriptor edge_descriptor; - void constraints() { - function_requires< GraphConcept >(); - - p = edge(u, v, g); - const_constraints(g); - } - void const_constraints(const G& g) { - p = edge(u, v, g); - } - typename graph_traits::vertex_descriptor u, v; - std::pair p; - G g; - }; - - template - struct ReadablePropertyGraphConcept - { - typedef typename property_map::const_type const_Map; - void constraints() { - function_requires< GraphConcept >(); - function_requires< ReadablePropertyMapConcept >(); - - const_constraints(g); - } - void const_constraints(const G& g) { - const_Map pmap = get(Property(), g); - pval = get(Property(), g, x); - ignore_unused_variable_warning(pmap); - } - G g; - X x; - typename property_traits::value_type pval; - }; - - template - struct PropertyGraphConcept - { - typedef typename property_map::type Map; - void constraints() { - function_requires< ReadablePropertyGraphConcept >(); - function_requires< ReadWritePropertyMapConcept >(); - - Map pmap = get(Property(), g); - pval = get(Property(), g, x); - put(Property(), g, x, pval); - ignore_unused_variable_warning(pmap); - } - G g; - X x; - typename property_traits::value_type pval; - }; - - template - struct LvaluePropertyGraphConcept - { - typedef typename property_map::type Map; - typedef typename property_map::const_type const_Map; - void constraints() { - function_requires< ReadablePropertyGraphConcept >(); - function_requires< LvaluePropertyMapConcept >(); - - pval = get(Property(), g, x); - put(Property(), g, x, pval); - } - G g; - X x; - typename property_traits::value_type pval; - }; - - // This needs to move out of the graph library - template - struct BufferConcept - { - void constraints() { - b.push(t); - b.pop(); - typename B::value_type& v = b.top(); - const_constraints(b); - ignore_unused_variable_warning(v); - } - void const_constraints(const B& b) { - const typename B::value_type& v = b.top(); - n = b.size(); - bool e = b.empty(); - ignore_unused_variable_warning(v); - ignore_unused_variable_warning(e); - } - typename B::size_type n; - typename B::value_type t; - B b; - }; - - template - struct ColorValueConcept - { - void constraints() { - function_requires< EqualityComparableConcept >(); - function_requires< DefaultConstructibleConcept >(); - - c = color_traits::white(); - c = color_traits::gray(); - c = color_traits::black(); - } - C c; - }; - - template - struct BasicMatrixConcept - { - void constraints() { - V& elt = A[i][j]; - const_constraints(A); - ignore_unused_variable_warning(elt); - } - void const_constraints(const M& A) { - const V& elt = A[i][j]; - ignore_unused_variable_warning(elt); - } - M A; - I i, j; - }; - -} // namespace boost - -#endif /* BOOST_GRAPH_CONCEPTS_H */ diff --git a/sdk/include/boost/graph/graph_selectors.hpp b/sdk/include/boost/graph/graph_selectors.hpp deleted file mode 100644 index 8c0856e3e25..00000000000 --- a/sdk/include/boost/graph/graph_selectors.hpp +++ /dev/null @@ -1,50 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_SELECTORS_HPP -#define BOOST_GRAPH_SELECTORS_HPP - -namespace boost { - - //=========================================================================== - // Selectors for the Directed template parameter of adjacency_list - // and adjacency_matrix. - - struct directedS { enum { is_directed = true, is_bidir = false }; - typedef true_type is_directed_t; - typedef false_type is_bidir_t; - }; - struct undirectedS { - enum { is_directed = false, is_bidir = false }; - typedef false_type is_directed_t; - typedef false_type is_bidir_t; - }; - struct bidirectionalS { - enum { is_directed = true, is_bidir = true }; - typedef true_type is_directed_t; - typedef true_type is_bidir_t; - }; - -} // namespace boost - -#endif // BOOST_GRAPH_SELECTORS_HPP diff --git a/sdk/include/boost/graph/graph_test.hpp b/sdk/include/boost/graph/graph_test.hpp deleted file mode 100644 index 0c51018aed0..00000000000 --- a/sdk/include/boost/graph/graph_test.hpp +++ /dev/null @@ -1,397 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_TEST_HPP -#define BOOST_GRAPH_TEST_HPP - -#include -#include -#include -#include -#include -#include -#include // for connects - - -// UNDER CONSTRUCTION - -namespace boost { - - template - struct graph_test - { - - typedef typename graph_traits::vertex_descriptor vertex_t; - typedef typename graph_traits::edge_descriptor edge_t; - typedef typename graph_traits::vertices_size_type v_size_t; - typedef typename graph_traits::degree_size_type deg_size_t; - typedef typename graph_traits::edges_size_type e_size_t; - typedef typename graph_traits::out_edge_iterator out_edge_iter; - typedef typename property_map::type index_map_t; - typedef iterator_property_map::iterator, - index_map_t,vertex_t,vertex_t&> IsoMap; - - struct ignore_vertex { - ignore_vertex() { } - ignore_vertex(vertex_t v) : v(v) { } - bool operator()(vertex_t x) const { return x != v; } - vertex_t v; - }; - struct ignore_edge { - ignore_edge() { } - ignore_edge(edge_t e) : e(e) { } - bool operator()(edge_t x) const { return x != e; } - edge_t e; - }; - struct ignore_edges { - ignore_edges() { } - ignore_edges(vertex_t s, vertex_t t, const Graph& g) - : s(s), t(t), g(g) { } - bool operator()(edge_t x) const { - return !(source(x, g) == s && target(x, g) == t); - } - vertex_t s; vertex_t t; const Graph& g; - }; - - //========================================================================= - // Traversal Operations - - void test_incidence_graph - (const std::vector& vertex_set, - const std::vector< std::pair >& edge_set, - const Graph& g) - { - typedef typename std::vector::const_iterator vertex_iter; - typedef typename std::vector< std::pair > - ::const_iterator edge_iter; - typedef typename graph_traits::out_edge_iterator out_edge_iter; - - for (vertex_iter ui = vertex_set.begin(); ui != vertex_set.end(); ++ui) { - vertex_t u = *ui; - std::vector adj; - for (edge_iter e = edge_set.begin(); e != edge_set.end(); ++e) - if (e->first == u) - adj.push_back(e->second); - - std::pair p = out_edges(u, g); - BOOST_TEST(out_degree(u, g) == adj.size()); - BOOST_TEST(deg_size_t(std::distance(p.first, p.second)) - == out_degree(u, g)); - for (; p.first != p.second; ++p.first) { - edge_t e = *p.first; - BOOST_TEST(source(e, g) == u); - BOOST_TEST(contains(adj, target(e, g)) == true); - } - } - } - - void test_bidirectional_graph - (const std::vector& vertex_set, - const std::vector< std::pair >& edge_set, - const Graph& g) - { - typedef typename std::vector::const_iterator vertex_iter; - typedef typename std::vector< std::pair > - ::const_iterator edge_iter; - typedef typename graph_traits::in_edge_iterator in_edge_iter; - - for (vertex_iter vi = vertex_set.begin(); vi != vertex_set.end(); ++vi) { - vertex_t v = *vi; - std::vector inv_adj; - for (edge_iter e = edge_set.begin(); e != edge_set.end(); ++e) - if (e->second == v) - inv_adj.push_back(e->first); - - std::pair p = in_edges(v, g); - BOOST_TEST(in_degree(v, g) == inv_adj.size()); - BOOST_TEST(deg_size_t(std::distance(p.first, p.second)) - == in_degree(v, g)); - for (; p.first != p.second; ++p.first) { - edge_t e = *p.first; - BOOST_TEST(target(e, g) == v); - BOOST_TEST(contains(inv_adj, source(e, g)) == true); - } - } - } - - void test_adjacency_graph - (const std::vector& vertex_set, - const std::vector< std::pair >& edge_set, - const Graph& g) - { - typedef typename std::vector::const_iterator vertex_iter; - typedef typename std::vector > - ::const_iterator edge_iter; - typedef typename graph_traits::adjacency_iterator adj_iter; - - for (vertex_iter ui = vertex_set.begin(); ui != vertex_set.end(); ++ui) { - vertex_t u = *ui; - std::vector adj; - for (edge_iter e = edge_set.begin(); e != edge_set.end(); ++e) - if (e->first == u) - adj.push_back(e->second); - - std::pair p = adjacent_vertices(u, g); - BOOST_TEST(deg_size_t(std::distance(p.first, p.second)) == adj.size()); - for (; p.first != p.second; ++p.first) { - vertex_t v = *p.first; - BOOST_TEST(contains(adj, v) == true); - } - } - } - - void test_vertex_list_graph - (const std::vector& vertex_set, const Graph& g) - { - typedef typename graph_traits::vertex_iterator v_iter; - std::pair p = vertices(g); - BOOST_TEST(num_vertices(g) == vertex_set.size()); - v_size_t n = std::distance(p.first, p.second); - BOOST_TEST(n == num_vertices(g)); - for (; p.first != p.second; ++p.first) { - vertex_t v = *p.first; - BOOST_TEST(contains(vertex_set, v) == true); - } - } - - void test_edge_list_graph - (const std::vector& vertex_set, - const std::vector< std::pair >& edge_set, - const Graph& g) - { - typedef typename graph_traits::edge_iterator e_iter; - std::pair p = edges(g); - BOOST_TEST(num_edges(g) == edge_set.size()); - e_size_t m = std::distance(p.first, p.second); - BOOST_TEST(m == num_edges(g)); - for (; p.first != p.second; ++p.first) { - edge_t e = *p.first; - BOOST_TEST(any_if(edge_set, connects(source(e, g), target(e, g), g))); - BOOST_TEST(contains(vertex_set, source(e, g)) == true); - BOOST_TEST(contains(vertex_set, target(e, g)) == true); - } - } - - void test_adjacency_matrix - (const std::vector& vertex_set, - const std::vector< std::pair >& edge_set, - const Graph& g) - { - std::pair p; - for (typename std::vector > - ::const_iterator i = edge_set.begin(); - i != edge_set.end(); ++i) { - p = edge(i->first, i->second, g); - BOOST_TEST(p.second == true); - BOOST_TEST(source(p.first, g) == i->first); - BOOST_TEST(target(p.first, g) == i->second); - } - typename std::vector::const_iterator j, k; - for (j = vertex_set.begin(); j != vertex_set.end(); ++j) - for (k = vertex_set.begin(); k != vertex_set.end(); ++k) { - p = edge(*j, *k, g); - if (p.second == true) - BOOST_TEST(any_if(edge_set, - connects(source(p.first, g), target(p.first, g), g)) == true); - } - } - - //========================================================================= - // Mutating Operations - - void test_add_vertex(Graph& g) - { - Graph cpy; - std::vector iso_vec(num_vertices(g)); - IsoMap iso_map(iso_vec.begin(), get(vertex_index, g)); - copy_graph(g, cpy, orig_to_copy(iso_map)); - - assert((verify_isomorphism(g, cpy, iso_map))); - - vertex_t v = add_vertex(g); - - BOOST_TEST(num_vertices(g) == num_vertices(cpy) + 1); - - BOOST_TEST(out_degree(v, g) == 0); - - // Make sure the rest of the graph stayed the same - BOOST_TEST((verify_isomorphism - (make_filtered_graph(g, keep_all(), ignore_vertex(v)), cpy, - iso_map))); - } - - void test_add_edge(vertex_t u, vertex_t v, Graph& g) - { - Graph cpy; - std::vector iso_vec(num_vertices(g)); - IsoMap iso_map(iso_vec.begin(), get(vertex_index, g)); - copy_graph(g, cpy, orig_to_copy(iso_map)); - - bool parallel_edge_exists = contains(adjacent_vertices(u, g), v); - - std::pair p = add_edge(u, v, g); - edge_t e = p.first; - bool added = p.second; - - if (is_undirected(g) && u == v) // self edge - BOOST_TEST(added == false); - else if (parallel_edge_exists) - BOOST_TEST(allows_parallel_edges(g) && added == true - || !allows_parallel_edges(g) && added == false); - else - BOOST_TEST(added == true); - - if (p.second == true) { // edge added - BOOST_TEST(num_edges(g) == num_edges(cpy) + 1); - - BOOST_TEST(contains(out_edges(u, g), e) == true); - - BOOST_TEST((verify_isomorphism - (make_filtered_graph(g, ignore_edge(e)), cpy, iso_map))); - } - else { // edge not added - if (! (is_undirected(g) && u == v)) { - // e should be a parallel edge - BOOST_TEST(source(e, g) == u); - BOOST_TEST(target(e, g) == v); - } - // The graph should not be changed. - BOOST_TEST((verify_isomorphism(g, cpy, iso_map))); - } - } // test_add_edge() - - - void test_remove_edge(vertex_t u, vertex_t v, Graph& g) - { - Graph cpy; - std::vector iso_vec(num_vertices(g)); - IsoMap iso_map(iso_vec.begin(), get(vertex_index, g)); - copy_graph(g, cpy, orig_to_copy(iso_map)); - - deg_size_t occurances = count(adjacent_vertices(u, g), v); - - remove_edge(u, v, g); - - BOOST_TEST(num_edges(g) + occurances == num_edges(cpy)); - BOOST_TEST((verify_isomorphism - (g, make_filtered_graph(cpy, ignore_edges(u,v,cpy)), - iso_map))); - } - - void test_remove_edge(edge_t e, Graph& g) - { - Graph cpy; - std::vector iso_vec(num_vertices(g)); - IsoMap iso_map(iso_vec.begin(), get(vertex_index, g)); - copy_graph(g, cpy, orig_to_copy(iso_map)); - - vertex_t u = source(e, g), v = target(e, g); - deg_size_t occurances = count(adjacent_vertices(u, g), v); - - remove_edge(e, g); - - BOOST_TEST(num_edges(g) + 1 == num_edges(cpy)); - BOOST_TEST(count(adjacent_vertices(u, g), v) + 1 == occurances); - BOOST_TEST((verify_isomorphism - (g, make_filtered_graph(cpy, ignore_edge(e)), - iso_map))); - } - - void test_clear_vertex(vertex_t v, Graph& g) - { - Graph cpy; - std::vector iso_vec(num_vertices(g)); - IsoMap iso_map(iso_vec.begin(), get(vertex_index, g)); - copy_graph(g, cpy, orig_to_copy(iso_map)); - - clear_vertex(v, g); - - BOOST_TEST(out_degree(v, g) == 0); - BOOST_TEST(num_vertices(g) == num_vertices(cpy)); - BOOST_TEST((verify_isomorphism - (g, make_filtered_graph(cpy, keep_all(), ignore_vertex(v)), - iso_map))); - } - - //========================================================================= - // Property Map - - template - void test_readable_vertex_property_graph - (const std::vector& vertex_prop, PropertyTag, Graph& g) - { - typedef typename property_map::const_type const_Map; - const_Map pmap = get(PropertyTag(), g); - typename std::vector::const_iterator i = vertex_prop.begin(); - - for (typename boost::graph_traits::vertex_iterator - bgl_first_9 = vertices(g).first, bgl_last_9 = vertices(g).second; - bgl_first_9 != bgl_last_9; bgl_first_9 = bgl_last_9) - for (typename boost::graph_traits::vertex_descriptor v; - bgl_first_9 != bgl_last ? (v = *bgl_first_9, true) : false; - ++bgl_first_9) { - //BGL_FORALL_VERTICES_T(v, g, Graph) { - typename property_traits::value_type - pval1 = get(pmap, x), pval2 = get(Property(), g, x); - BOOST_TEST(pval1 == pval2); - BOOST_TEST(pval1 == *i++); - } - } - - template - void test_vertex_property_graph - (const std::vector& vertex_prop, PropertyTag tag, Graph& g) - { - typedef typename property_map::type PMap; - PMap pmap = get(PropertyTag(), g); - typename std::vector::const_iterator i = vertex_prop.begin(); - for (typename boost::graph_traits::vertex_iterator - bgl_first_9 = vertices(g).first, bgl_last_9 = vertices(g).second; - bgl_first_9 != bgl_last_9; bgl_first_9 = bgl_last_9) - for (typename boost::graph_traits::vertex_descriptor v; - bgl_first_9 != bgl_last ? (v = *bgl_first_9, true) : false; - ++bgl_first_9) - // BGL_FORALL_VERTICES_T(v, g, Graph) - put(pmap, x, *i++); - - test_readable_vertex_property_graph(vertex_prop, tag, g); - - BGL_FORALL_VERTICES_T(v, g, Graph) - put(pmap, x, vertex_prop[0]); - - typename std::vector::const_iterator j = vertex_prop.begin(); - BGL_FORALL_VERTICES_T(v, g, Graph) - put(Property(), g, x, *j++); - - test_readable_vertex_property_graph(vertex_prop, tag, g); - } - - - }; - - -} // namespace boost - -#include - -#endif // BOOST_GRAPH_TEST_HPP diff --git a/sdk/include/boost/graph/graph_traits.hpp b/sdk/include/boost/graph/graph_traits.hpp deleted file mode 100644 index 3d0158156ae..00000000000 --- a/sdk/include/boost/graph/graph_traits.hpp +++ /dev/null @@ -1,130 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_TRAITS_HPP -#define BOOST_GRAPH_TRAITS_HPP - -#include -#include -#include -#include - -namespace boost { - - template - struct graph_traits { - typedef typename G::vertex_descriptor vertex_descriptor; - typedef typename G::edge_descriptor edge_descriptor; - typedef typename G::adjacency_iterator adjacency_iterator; - typedef typename G::out_edge_iterator out_edge_iterator; - typedef typename G::in_edge_iterator in_edge_iterator; - typedef typename G::vertex_iterator vertex_iterator; - typedef typename G::edge_iterator edge_iterator; - - typedef typename G::directed_category directed_category; - typedef typename G::edge_parallel_category edge_parallel_category; - typedef typename G::traversal_category traversal_category; - - typedef typename G::vertices_size_type vertices_size_type; - typedef typename G::edges_size_type edges_size_type; - typedef typename G::degree_size_type degree_size_type; - }; - - // directed_category tags - struct directed_tag { }; - struct undirected_tag { }; - struct bidirectional_tag : public directed_tag { }; - - namespace detail { - inline bool is_directed(directed_tag) { return true; } - inline bool is_directed(undirected_tag) { return false; } - } - - template - bool is_directed(const Graph&) { - typedef typename graph_traits::directed_category Cat; - return detail::is_directed(Cat()); - } - template - bool is_undirected(const Graph& g) { - return ! is_directed(g); - } - - // edge_parallel_category tags - struct allow_parallel_edge_tag {}; - struct disallow_parallel_edge_tag {}; - - namespace detail { - inline bool allows_parallel(allow_parallel_edge_tag) { return true; } - inline bool allows_parallel(disallow_parallel_edge_tag) { return false; } - } - - template - bool allows_parallel_edges(const Graph&) { - typedef typename graph_traits::edge_parallel_category Cat; - return detail::allows_parallel(Cat()); - } - - // traversal_category tags - struct incidence_graph_tag { }; - struct adjacency_graph_tag { }; - struct bidirectional_graph_tag : - public virtual incidence_graph_tag { }; - struct vertex_list_graph_tag { }; - struct edge_list_graph_tag { }; - struct adjacency_matrix_tag { }; - - //?? not the right place ?? Lee - struct multi_pass_input_iterator_tag : std::input_iterator_tag { }; - -} // namespace boost - -// Since pair is in namespace std, Koenig lookup will find source and -// target if they are also defined in namespace std. This is illegal, -// but the alternative is to put source and target in the global -// namespace which causes name conflicts with other libraries (like -// SUIF). -namespace std { - - /* Some helper functions for dealing with pairs as edges */ - template - T source(pair p, const G&) { return p.first; } - - template - T target(pair p, const G&) { return p.second; } - -} - -#if defined(__GNUC__) && defined(__SGI_STL_PORT) -// For some reason g++ with STLport does not see the above definition -// of source() and target() unless we bring them into the boost -// namespace. -namespace boost { - using std::source; - using std::target; -} -#endif - -#endif // BOOST_GRAPH_TRAITS_HPP diff --git a/sdk/include/boost/graph/graph_utility.hpp b/sdk/include/boost/graph/graph_utility.hpp deleted file mode 100644 index ded393ea93d..00000000000 --- a/sdk/include/boost/graph/graph_utility.hpp +++ /dev/null @@ -1,435 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_UTILITY_HPP -#define BOOST_GRAPH_UTILITY_HPP - -#include -#include -#include -#include -#include -#include -#ifndef BOOST_NO_SLIST -# include // shouldn't have to include this... -JGS -#endif -#include -#include -#include -#include -// iota moved to detail/algorithm.hpp -#include - -namespace boost { - - // Provide an undirected graph interface alternative to the - // the source() and target() edge functions. - template - inline - std::pair::vertex_descriptor, - typename graph_traits::vertex_descriptor> - incident(typename graph_traits::edge_descriptor e, - UndirectedGraph& g) - { - return std::make_pair(source(e,g), target(e,g)); - } - - // Provide an undirected graph interface alternative - // to the out_edges() function. - template - inline - std::pair::out_edge_iterator, - typename graph_traits::out_edge_iterator> - incident_edges(typename graph_traits::vertex_descriptor u, - Graph& g) - { - return out_edges(u, g); - } - - template - inline typename graph_traits::vertex_descriptor - opposite(typename graph_traits::edge_descriptor e, - typename graph_traits::vertex_descriptor v, - const Graph& g) - { - typedef typename graph_traits::vertex_descriptor vertex_descriptor; - if (v == source(e, g)) - return target(e, g); - else if (v == target(e, g)) - return source(e, g); - else - return vertex_descriptor(); - } - - //=========================================================================== - // Some handy predicates - - template - struct incident_from_predicate { - incident_from_predicate(Vertex u, const Graph& g) - : m_u(u), m_g(g) { } - template - bool operator()(const Edge& e) const { - return source(e, m_g) == m_u; - } - Vertex m_u; - const Graph& m_g; - }; - template - inline incident_from_predicate - incident_from(Vertex u, const Graph& g) { - return incident_from_predicate(u, g); - } - - template - struct incident_to_predicate { - incident_to_predicate(Vertex u, const Graph& g) - : m_u(u), m_g(g) { } - template - bool operator()(const Edge& e) const { - return target(e, m_g) == m_u; - } - Vertex m_u; - const Graph& m_g; - }; - template - inline incident_to_predicate - incident_to(Vertex u, const Graph& g) { - return incident_to_predicate(u, g); - } - - template - struct incident_on_predicate { - incident_on_predicate(Vertex u, const Graph& g) - : m_u(u), m_g(g) { } - template - bool operator()(const Edge& e) const { - return source(e, m_g) == m_u || target(e, m_g) == m_u; - } - Vertex m_u; - const Graph& m_g; - }; - template - inline incident_on_predicate - incident_on(Vertex u, const Graph& g) { - return incident_on_predicate(u, g); - } - - template - struct connects_predicate { - connects_predicate(Vertex u, Vertex v, const Graph& g) - : m_u(u), m_v(v), m_g(g) { } - template - bool operator()(const Edge& e) const { - if (is_directed(m_g)) - return source(e, m_g) == m_u && target(e, m_g) == m_v; - else - return (source(e, m_g) == m_u && target(e, m_g) == m_v) - || (source(e, m_g) == m_v && target(e, m_g) == m_u); - } - Vertex m_u, m_v; - const Graph& m_g; - }; - template - inline connects_predicate - connects(Vertex u, Vertex v, const Graph& g) { - return connects_predicate(u, v, g); - } - - - // Need to convert all of these printing functions to take an ostream object - // -JGS - - template - void print_in_edges(const IncidenceGraph& G, Name name) - { - typename graph_traits::vertex_iterator ui,ui_end; - for (tie(ui,ui_end) = vertices(G); ui != ui_end; ++ui) { - std::cout << get(name,*ui) << " <-- "; - typename graph_traits - ::in_edge_iterator ei, ei_end; - for(tie(ei,ei_end) = in_edges(*ui,G); ei != ei_end; ++ei) - std::cout << get(name,source(*ei,G)) << " "; - std::cout << std::endl; - } - } - - template - void print_graph_dispatch(const IncidenceGraph& G, Name name, directed_tag) - { - typename graph_traits::vertex_iterator ui,ui_end; - for (tie(ui,ui_end) = vertices(G); ui != ui_end; ++ui) { - std::cout << get(name,*ui) << " --> "; - typename graph_traits - ::out_edge_iterator ei, ei_end; - for(tie(ei,ei_end) = out_edges(*ui,G); ei != ei_end; ++ei) - std::cout << get(name,target(*ei,G)) << " "; - std::cout << std::endl; - } - } - template - void print_graph_dispatch(const IncidenceGraph& G, Name name, undirected_tag) - { - typename graph_traits::vertex_iterator ui,ui_end; - for (tie(ui,ui_end) = vertices(G); ui != ui_end; ++ui) { - std::cout << get(name,*ui) << " <--> "; - typename graph_traits - ::out_edge_iterator ei, ei_end; - for(tie(ei,ei_end) = out_edges(*ui,G); ei != ei_end; ++ei) - std::cout << get(name,target(*ei,G)) << " "; - std::cout << std::endl; - } - } - template - void print_graph(const IncidenceGraph& G, Name name) - { - typedef typename graph_traits - ::directed_category Cat; - print_graph_dispatch(G, name, Cat()); - } - template - void print_graph(const IncidenceGraph& G) { - print_graph(G, get(vertex_index, G)); - } - - template - void print_edges(const EdgeListGraph& G, Name name) - { - typename graph_traits::edge_iterator ei, ei_end; - for (tie(ei, ei_end) = edges(G); ei != ei_end; ++ei) - std::cout << "(" << get(name, source(*ei, G)) - << "," << get(name, target(*ei, G)) << ") "; - std::cout << std::endl; - } - - template - void print_edges2(const EdgeListGraph& G, VertexName vname, EdgeName ename) - { - typename graph_traits::edge_iterator ei, ei_end; - for (tie(ei, ei_end) = edges(G); ei != ei_end; ++ei) - std::cout << get(ename, *ei) << "(" << get(vname, source(*ei, G)) - << "," << get(vname, target(*ei, G)) << ") "; - std::cout << std::endl; - } - - template - void print_vertices(const VertexListGraph& G, Name name) - { - typename graph_traits::vertex_iterator vi,vi_end; - for (tie(vi,vi_end) = vertices(G); vi != vi_end; ++vi) - std::cout << get(name,*vi) << " "; - std::cout << std::endl; - } - - template - bool is_adj_dispatch(Graph& g, Vertex a, Vertex b, bidirectional_tag) - { - typedef typename graph_traits::edge_descriptor - edge_descriptor; - typename graph_traits::adjacency_iterator vi, viend, - adj_found; - tie(vi, viend) = adjacent_vertices(a, g); - adj_found = std::find(vi, viend, b); - if (adj_found == viend) - return false; - - typename graph_traits::out_edge_iterator oi, oiend, - out_found; - tie(oi, oiend) = out_edges(a, g); - out_found = std::find_if(oi, oiend, incident_to(b, g)); - if (out_found == oiend) - return false; - - typename graph_traits::in_edge_iterator ii, iiend, - in_found; - tie(ii, iiend) = in_edges(b, g); - in_found = std::find_if(ii, iiend, incident_from(a, g)); - if (in_found == iiend) - return false; - - return true; - } - template - bool is_adj_dispatch(Graph& g, Vertex a, Vertex b, directed_tag) - { - typedef typename graph_traits::edge_descriptor - edge_descriptor; - typename graph_traits::adjacency_iterator vi, viend, found; - tie(vi, viend) = adjacent_vertices(a, g); -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 && defined(__SGI_STL_PORT) - // Getting internal compiler error with std::find() - found = viend; - for (; vi != viend; ++vi) - if (*vi == b) { - found = vi; - break; - } -#else - found = std::find(vi, viend, b); -#endif - if ( found == viend ) - return false; - - typename graph_traits::out_edge_iterator oi, oiend, - out_found; - tie(oi, oiend) = out_edges(a, g); - -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 && defined(__SGI_STL_PORT) - // Getting internal compiler error with std::find() - out_found = oiend; - for (; oi != oiend; ++oi) - if (target(*oi, g) == b) { - out_found = oi; - break; - } -#else - out_found = std::find_if(oi, oiend, incident_to(b, g)); -#endif - if (out_found == oiend) - return false; - return true; - } - template - bool is_adj_dispatch(Graph& g, Vertex a, Vertex b, undirected_tag) - { - return is_adj_dispatch(g, a, b, directed_tag()); - } - - template - bool is_adjacent(Graph& g, Vertex a, Vertex b) { - typedef typename graph_traits::directed_category Cat; - return is_adj_dispatch(g, a, b, Cat()); - } - - template - bool in_edge_set(Graph& g, Edge e) - { - typename Graph::edge_iterator ei, ei_end, found; - tie(ei, ei_end) = edges(g); - found = std::find(ei, ei_end, e); - return found != ei_end; - } - - template - bool in_vertex_set(Graph& g, Vertex v) - { - typename Graph::vertex_iterator vi, vi_end, found; - tie(vi, vi_end) = vertices(g); - found = std::find(vi, vi_end, v); - return found != vi_end; - } - - template - bool in_edge_set(Graph& g, Vertex u, Vertex v) - { - typename Graph::edge_iterator ei, ei_end; - for (tie(ei,ei_end) = edges(g); ei != ei_end; ++ei) - if (source(*ei,g) == u && target(*ei,g) == v) - return true; - return false; - } - - // is x a descendant of y? - template - inline bool is_descendant - (typename property_traits::value_type x, - typename property_traits::value_type y, - ParentMap parent) - { - if (get(parent, x) == x) // x is the root of the tree - return false; - else if (get(parent, x) == y) - return true; - else - return is_descendant(get(parent, x), y, parent); - } - - // is y reachable from x? - template - inline bool is_reachable - (typename graph_traits::vertex_descriptor x, - typename graph_traits::vertex_descriptor y, - const IncidenceGraph& g, - VertexColorMap color) // should start out white for every vertex - { - typedef typename property_traits::value_type ColorValue; - dfs_visitor<> vis; - depth_first_visit(g, x, vis, color); - return get(color, y) != color_traits::white(); - } - - // Is the undirected graph connected? - // Is the directed graph strongly connected? - template - inline bool is_connected(const VertexListGraph& g, VertexColorMap color) - { - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - typename graph_traits::vertex_iterator - ui, ui_end, vi, vi_end, ci, ci_end; - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) - for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) - if (*ui != *vi) { - for (tie(ci, ci_end) = vertices(g); ci != ci_end; ++ci) - put(color, *ci, Color::white()); - if (! is_reachable(*ui, *vi, color)) - return false; - } - return true; - } - - template - bool is_self_loop - (typename graph_traits::edge_descriptor e, - const Graph& g) - { - return source(e, g) == target(e, g); - } - - - template - std::pair - make_list(const T1& t1, const T2& t2) - { return std::make_pair(t1, t2); } - - template - std::pair > - make_list(const T1& t1, const T2& t2, const T3& t3) - { return std::make_pair(t1, std::make_pair(t2, t3)); } - - template - std::pair > > - make_list(const T1& t1, const T2& t2, const T3& t3, const T4& t4) - { return std::make_pair(t1, std::make_pair(t2, std::make_pair(t3, t4))); } - - template - std::pair > > > - make_list(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5) - { return std::make_pair(t1, std::make_pair(t2, std::make_pair(t3, std::make_pair(t4, t5)))); } - -} /* namespace boost */ - -#endif /* BOOST_GRAPH_UTILITY_HPP*/ diff --git a/sdk/include/boost/graph/graphviz.hpp b/sdk/include/boost/graph/graphviz.hpp deleted file mode 100644 index 02faecadd16..00000000000 --- a/sdk/include/boost/graph/graphviz.hpp +++ /dev/null @@ -1,452 +0,0 @@ -//======================================================================= -// Copyright 2001 University of Notre Dame. -// Author: Lie-Quan Lee -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_GRAPHVIZ_HPP -#define BOOST_GRAPHVIZ_HPP - -#include -#include -#include -#include -#include -#include // for FILE -#include -#include -#include -#include -#include -#include - -namespace boost { - - template - struct graphviz_io_traits { - static std::string name() { - return "digraph"; - } - static std::string delimiter() { - return "->"; - } }; - - template <> - struct graphviz_io_traits { - static std::string name() { - return "graph"; - } - static std::string delimiter() { - return "--"; - } - }; - - struct default_writer { - void operator()(std::ostream&) const { - } - template - void operator()(std::ostream&, const VorE&) const { - } - }; - - template - class label_writer { - public: - label_writer(Name _name) : name(_name) {} - template - void operator()(std::ostream& out, const VertexOrEdge& v) const { - out << "[label=\"" << name[v] << "\"]"; - } - private: - Name name; - }; - template - inline label_writer - make_label_writer(Name n) { - return label_writer(n); - } - - enum edge_attribute_t { edge_attribute = 1111 }; - enum vertex_attribute_t { vertex_attribute = 2222 }; - enum graph_graph_attribute_t { graph_graph_attribute = 3333 }; - enum graph_vertex_attribute_t { graph_vertex_attribute = 4444 }; - enum graph_edge_attribute_t { graph_edge_attribute = 5555 }; - - BOOST_INSTALL_PROPERTY(edge, attribute); - BOOST_INSTALL_PROPERTY(vertex, attribute); - BOOST_INSTALL_PROPERTY(graph, graph_attribute); - BOOST_INSTALL_PROPERTY(graph, vertex_attribute); - BOOST_INSTALL_PROPERTY(graph, edge_attribute); - - - template - inline void write_attributes(const Attribute& attr, std::ostream& out) { - typename Attribute::const_iterator i, iend; - i = attr.begin(); - iend = attr.end(); - - while ( i != iend ) { - out << i->first << "=\"" << i->second << "\""; - ++i; - if ( i != iend ) - out << ", "; - } - } - - template - inline void write_all_attributes(Attributes attributes, - const std::string& name, - std::ostream& out) - { - typename Attributes::const_iterator i = attributes.begin(), - end = attributes.end(); - if (i != end) { - out << name << " [\n"; - write_attributes(attributes, out); - out << "];\n"; - } - } - - inline void write_all_attributes(detail::error_property_not_found, - const std::string&, - std::ostream&) - { - // Do nothing - no attributes exist - } - - - - - template - struct graph_attributes_writer - { - graph_attributes_writer(GraphGraphAttributes gg, - GraphNodeAttributes gn, - GraphEdgeAttributes ge) - : g_attributes(gg), n_attributes(gn), e_attributes(ge) { } - - void operator()(std::ostream& out) const { - write_all_attributes(g_attributes, "graph", out); - write_all_attributes(n_attributes, "node", out); - write_all_attributes(e_attributes, "edge", out); - } - GraphGraphAttributes g_attributes; - GraphNodeAttributes n_attributes; - GraphEdgeAttributes e_attributes; - }; - - template - graph_attributes_writer - make_graph_attributes_writer(const GAttrMap& g_attr, const NAttrMap& n_attr, - const EAttrMap& e_attr) { - return graph_attributes_writer - (g_attr, n_attr, e_attr); - } - - - template - graph_attributes_writer - ::type, - typename graph_property::type, - typename graph_property::type> - make_graph_attributes_writer(const Graph& g) - { - typedef typename graph_property::type - GAttrMap; - typedef typename graph_property::type - NAttrMap; - typedef typename graph_property::type - EAttrMap; - GAttrMap gam = get_property(g, graph_graph_attribute); - NAttrMap nam = get_property(g, graph_vertex_attribute); - EAttrMap eam = get_property(g, graph_edge_attribute); - graph_attributes_writer writer(gam, nam, eam); - return writer; - } - - template - struct attributes_writer { - attributes_writer(AttributeMap attr) - : attributes(attr) { } - - template - void operator()(std::ostream& out, const VorE& e) const { - this->write_attribute(out, attributes[e]); - } - - private: - template - void write_attribute(std::ostream& out, - const AttributeSequence& seq) const - { - if (!seq.empty()) { - out << "["; - write_attributes(seq, out); - out << "]"; - } - } - - void write_attribute(std::ostream&, - detail::error_property_not_found) const - { - } - AttributeMap attributes; - }; - - template - attributes_writer - ::const_type> - make_edge_attributes_writer(const Graph& g) - { - typedef typename property_map::const_type - EdgeAttributeMap; - return attributes_writer(get(edge_attribute, g)); - } - - template - attributes_writer - ::const_type> - make_vertex_attributes_writer(const Graph& g) - { - typedef typename property_map::const_type - VertexAttributeMap; - return attributes_writer(get(vertex_attribute, g)); - } - - template - - inline void write_graphviz(std::ostream& out, const Graph& g, - VertexPropertiesWriter vpw, - EdgePropertiesWriter epw, - GraphPropertiesWriter gpw) { - - typedef typename boost::graph_traits::directed_category cat_type; - typedef graphviz_io_traits Traits; - std::string name = "G"; - out << Traits::name() << " " << name << " {" << std::endl; - - gpw(out); //print graph properties - - typename boost::graph_traits::vertex_iterator i, end; - - for(boost::tie(i,end) = boost::vertices(g); i != end; ++i) { - out << *i; - vpw(out, *i); //print vertex attributes - out << ";" << std::endl; - } - typename boost::graph_traits::edge_iterator ei, edge_end; - for(boost::tie(ei, edge_end) = boost::edges(g); ei != edge_end; ++ei) { - out << source(*ei, g) << Traits::delimiter() << target(*ei, g) << " "; - epw(out, *ei); //print edge attributes - out << ";" << std::endl; - } - out << "}" << std::endl; - } - -#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300 - // ambiguous overload problem with VC++ - template - inline void - write_graphviz(std::ostream& out, const Graph& g) { - default_writer dw; - default_writer gw; - write_graphviz(out, g, dw, dw, gw); - } -#endif - - template - inline void - write_graphviz(std::ostream& out, const Graph& g, VertexWriter vw) { - default_writer dw; - default_writer gw; - write_graphviz(out, g, vw, dw, gw); - } - - template - inline void - write_graphviz(std::ostream& out, const Graph& g, - VertexWriter vw, EdgeWriter ew) { - default_writer gw; - write_graphviz(out, g, vw, ew, gw); - } - - namespace detail { - - template - void write_graphviz_subgraph (std::ostream& out, - const subgraph& g, - RandomAccessIterator vertex_marker, - RandomAccessIterator edge_marker) - { - typedef subgraph Graph; - typedef typename boost::graph_traits::vertex_descriptor Vertex; - typedef typename boost::graph_traits::directed_category cat_type; - typedef graphviz_io_traits Traits; - - typedef typename graph_property::type NameType; - const NameType& g_name = get_property(g, graph_name); - - if ( g.is_root() ) - out << Traits::name() ; - else - out << "subgraph"; - - out << " " << g_name << " {" << std::endl; - - typename Graph::const_children_iterator i_child, j_child; - - //print graph/node/edge attributes -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - typedef typename graph_property::type - GAttrMap; - typedef typename graph_property::type - NAttrMap; - typedef typename graph_property::type - EAttrMap; - GAttrMap gam = get_property(g, graph_graph_attribute); - NAttrMap nam = get_property(g, graph_vertex_attribute); - EAttrMap eam = get_property(g, graph_edge_attribute); - graph_attributes_writer writer(gam, nam, eam); - writer(out); -#else - make_graph_attributes_writer(g)(out); -#endif - - //print subgraph - for ( boost::tie(i_child,j_child) = g.children(); - i_child != j_child; ++i_child ) - write_graphviz_subgraph(out, *i_child, vertex_marker, edge_marker); - - // Print out vertices and edges not in the subgraphs. - - typename boost::graph_traits::vertex_iterator i, end; - typename boost::graph_traits::edge_iterator ei, edge_end; - - typename property_map::const_type - indexmap = get(vertex_index, g.root()); - - for(boost::tie(i,end) = boost::vertices(g); i != end; ++i) { - Vertex v = g.local_to_global(*i); - int pos = get(indexmap, v); - if ( vertex_marker[pos] ) { - vertex_marker[pos] = false; - out << v; -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - typedef typename property_map::const_type - VertexAttributeMap; - attributes_writer vawriter(get(vertex_attribute, - g.root())); - vawriter(out, v); -#else - make_vertex_attributes_writer(g.root())(out, v); -#endif - out << ";" << std::endl; - } - } - - for (boost::tie(ei, edge_end) = edges(g); ei != edge_end; ++ei) { - Vertex u = g.local_to_global(source(*ei,g)), - v = g.local_to_global(target(*ei, g)); - int pos = get(get(edge_index, g.root()), g.local_to_global(*ei)); - if ( edge_marker[pos] ) { - edge_marker[pos] = false; - out << u << " " << Traits::delimiter() << " " << v; -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - typedef typename property_map::const_type - EdgeAttributeMap; - attributes_writer eawriter(get(edge_attribute, g)); - eawriter(out, *ei); -#else - make_edge_attributes_writer(g)(out, *ei); //print edge properties -#endif - out << ";" << std::endl; - } - } - out << "}" << std::endl; - } - } // namespace detail - - // requires graph_name graph property - template - void write_graphviz(std::ostream& out, const subgraph& g) { - std::vector edge_marker(num_edges(g), true); - std::vector vertex_marker(num_vertices(g), true); - - detail::write_graphviz_subgraph(out, g, - vertex_marker.begin(), - edge_marker.begin()); - } - - template - void write_graphviz(const std::string& filename, const subgraph& g) { - std::ofstream out(filename.c_str()); - std::vector edge_marker(num_edges(g), true); - std::vector vertex_marker(num_vertices(g), true); - - detail::write_graphviz_subgraph(out, g, - vertex_marker.begin(), - edge_marker.begin()); - } - - typedef std::map GraphvizAttrList; - - typedef property - GraphvizVertexProperty; - - typedef property > - GraphvizEdgeProperty; - - typedef property > > > - GraphvizGraphProperty; - - typedef subgraph > - GraphvizDigraph; - - typedef subgraph > - GraphvizGraph; - - - // These four require linking the BGL-Graphviz library: libbgl-viz.a - // from the /src directory. - extern void read_graphviz(const std::string& file, GraphvizDigraph& g); - extern void read_graphviz(FILE* file, GraphvizDigraph& g); - - extern void read_graphviz(const std::string& file, GraphvizGraph& g); - extern void read_graphviz(FILE* file, GraphvizGraph& g); - -} // namespace boost - -#endif // BOOST_GRAPHVIZ_HPP diff --git a/sdk/include/boost/graph/incremental_components.hpp b/sdk/include/boost/graph/incremental_components.hpp deleted file mode 100644 index 8d6c3ecfa08..00000000000 --- a/sdk/include/boost/graph/incremental_components.hpp +++ /dev/null @@ -1,186 +0,0 @@ -// -//======================================================================= -// Copyright 1997-2001 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -#ifndef BOOST_INCREMENTAL_COMPONENTS_HPP -#define BOOST_INCREMENTAL_COMPONENTS_HPP - -#include -#include - -namespace boost { - - // A connected component algorithm for the case when dynamically - // adding (but not removing) edges is common. The - // incremental_components() function is a preparing operation. Call - // same_component to check whether two vertices are in the same - // component, or use disjoint_set::find_set to determine the - // representative for a vertex. - - // This version of connected components does not require a full - // Graph. Instead, it just needs an edge list, where the vertices of - // each edge need to be of integer type. The edges are assumed to - // be undirected. The other difference is that the result is stored in - // a container, instead of just a decorator. The container should be - // empty before the algorithm is called. It will grow during the - // course of the algorithm. The container must be a model of - // BackInsertionSequence and RandomAccessContainer - // (std::vector is a good choice). After running the algorithm the - // index container will map each vertex to the representative - // vertex of the component to which it belongs. - // - // Adapted from an implementation by Alex Stepanov. The disjoint - // sets data structure is from Tarjan's "Data Structures and Network - // Algorithms", and the application to connected components is - // similar to the algorithm described in Ch. 22 of "Intro to - // Algorithms" by Cormen, et. all. - // - // RankContainer is a random accessable container (operator[] is - // defined) with a value type that can represent an integer part of - // a binary log of the value type of the corresponding - // ParentContainer (char is always enough) its size_type is no less - // than the size_type of the corresponding ParentContainer - - // An implementation of disjoint sets can be found in - // boost/pending/disjoint_sets.hpp - - template - void incremental_components(EdgeListGraph& g, DisjointSets& ds) - { - typename graph_traits::edge_iterator e, end; - for (tie(e,end) = edges(g); e != end; ++e) - ds.link(source(*e,g),target(*e,g)); - } - - template - void compress_components(ParentIterator first, ParentIterator last) - { - for (ParentIterator current = first; current != last; ++current) - detail::find_representative_with_full_compression(first, current-first); - } - - template - typename boost::detail::iterator_traits::difference_type - component_count(ParentIterator first, ParentIterator last) - { - std::ptrdiff_t count = 0; - for (ParentIterator current = first; current != last; ++current) - if (*current == current - first) ++count; - return count; - } - - // This algorithm can be applied to the result container of the - // connected_components algorithm to normalize - // the components. - template - void normalize_components(ParentIterator first, ParentIterator last) - { - for (ParentIterator current = first; current != last; ++current) - detail::normalize_node(first, current - first); - } - - template - void initialize_incremental_components(VertexListGraph& G, DisjointSets& ds) - { - typename graph_traits - ::vertex_iterator v, vend; - for (tie(v, vend) = vertices(G); v != vend; ++v) - ds.make_set(*v); - } - - template - inline bool same_component(Vertex u, Vertex v, DisjointSet& ds) - { - return ds.find_set(u) == ds.find_set(v); - } - - // considering changing the so that it initializes with a pair of - // vertex iterators and a parent PA. - - template - class component_index - { - public://protected: (avoid friends for now) - typedef std::vector MyIndexContainer; - MyIndexContainer header; - MyIndexContainer index; - typedef typename MyIndexContainer::size_type SizeT; - typedef typename MyIndexContainer::const_iterator IndexIter; - public: - typedef detail::component_iterator - component_iterator; - class component { - friend class component_index; - protected: - IndexT number; - const component_index* comp_ind_ptr; - component(IndexT i, const component_index* p) - : number(i), comp_ind_ptr(p) {} - public: - typedef component_iterator iterator; - typedef component_iterator const_iterator; - typedef IndexT value_type; - iterator begin() const { - return iterator( comp_ind_ptr->index.begin(), - (comp_ind_ptr->header)[number] ); - } - iterator end() const { - return iterator( comp_ind_ptr->index.begin(), - comp_ind_ptr->index.size() ); - } - }; - typedef SizeT size_type; - typedef component value_type; - -#if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) - template - component_index(Iterator first, Iterator last) - : index(std::distance(first, last)) - { - std::copy(first, last, index.begin()); - detail::construct_component_index(index, header); - } -#else - template - component_index(Iterator first, Iterator last) - : index(first, last) - { - detail::construct_component_index(index, header); - } -#endif - - component operator[](IndexT i) const { - return component(i, this); - } - SizeT size() const { - return header.size(); - } - - }; - -} // namespace boost - -#endif // BOOST_INCREMENTAL_COMPONENTS_HPP diff --git a/sdk/include/boost/graph/isomorphism.hpp b/sdk/include/boost/graph/isomorphism.hpp deleted file mode 100644 index 41199123a7e..00000000000 --- a/sdk/include/boost/graph/isomorphism.hpp +++ /dev/null @@ -1,431 +0,0 @@ -// Copyright (C) 2001 Jeremy Siek, Doug Gregor, Brian Osman -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. -#ifndef BOOST_GRAPH_ISOMORPHISM_HPP -#define BOOST_GRAPH_ISOMORPHISM_HPP - -#include -#include -#include -#include -#include -#include -#include -#include // for make_indirect_pmap - -#ifndef BOOST_GRAPH_ITERATION_MACROS_HPP -#define BOOST_ISO_INCLUDED_ITER_MACROS // local macro, see bottom of file -#include -#endif - -namespace boost { - - namespace detail { - - template - class isomorphism_algo - { - typedef typename graph_traits::vertex_descriptor vertex1_t; - typedef typename graph_traits::vertex_descriptor vertex2_t; - typedef typename graph_traits::edge_descriptor edge1_t; - typedef typename graph_traits::vertices_size_type size_type; - typedef typename Invariant1::result_type invar1_value; - typedef typename Invariant2::result_type invar2_value; - - const Graph1& G1; - const Graph2& G2; - IsoMapping f; - Invariant1 invariant1; - Invariant2 invariant2; - std::size_t max_invariant; - IndexMap1 index_map1; - IndexMap2 index_map2; - - std::vector dfs_vertices; - typedef typename std::vector::iterator vertex_iter; - std::vector dfs_num_vec; - typedef safe_iterator_property_map::iterator, IndexMap1> DFSNumMap; - DFSNumMap dfs_num; - std::vector ordered_edges; - typedef typename std::vector::iterator edge_iter; - - std::vector in_S_vec; - typedef safe_iterator_property_map::iterator, - IndexMap2> InSMap; - InSMap in_S; - - int num_edges_on_k; - - friend struct compare_multiplicity; - struct compare_multiplicity - { - compare_multiplicity(Invariant1 invariant1, size_type* multiplicity) - : invariant1(invariant1), multiplicity(multiplicity) { } - bool operator()(const vertex1_t& x, const vertex1_t& y) const { - return multiplicity[invariant1(x)] < multiplicity[invariant1(y)]; - } - Invariant1 invariant1; - size_type* multiplicity; - }; - - struct record_dfs_order : default_dfs_visitor - { - record_dfs_order(std::vector& v, std::vector& e) - : vertices(v), edges(e) { } - - void discover_vertex(vertex1_t v, const Graph1&) const { - vertices.push_back(v); - } - void examine_edge(edge1_t e, const Graph1& G1) const { - edges.push_back(e); - } - std::vector& vertices; - std::vector& edges; - }; - - struct edge_cmp { - edge_cmp(const Graph1& G1, DFSNumMap dfs_num) - : G1(G1), dfs_num(dfs_num) { } - bool operator()(const edge1_t& e1, const edge1_t& e2) const { - using namespace std; - vertex1_t u1 = dfs_num[source(e1,G1)], v1 = dfs_num[target(e1,G1)]; - vertex1_t u2 = dfs_num[source(e2,G1)], v2 = dfs_num[target(e2,G1)]; - int m1 = max(u1, v1); - int m2 = max(u2, v2); - // lexicographical comparison - return make_pair(m1, make_pair(u1, v1)) - < make_pair(m2, make_pair(u2, v2)); - } - const Graph1& G1; - DFSNumMap dfs_num; - }; - - public: - isomorphism_algo(const Graph1& G1, const Graph2& G2, IsoMapping f, - Invariant1 invariant1, Invariant2 invariant2, std::size_t max_invariant, - IndexMap1 index_map1, IndexMap2 index_map2) - : G1(G1), G2(G2), f(f), invariant1(invariant1), invariant2(invariant2), - max_invariant(max_invariant), - index_map1(index_map1), index_map2(index_map2) - { - in_S_vec.resize(num_vertices(G1)); - in_S = make_safe_iterator_property_map - (in_S_vec.begin(), in_S_vec.size(), index_map2); - } - - bool test_isomorphism() - { - { - std::vector invar1_array; - BGL_FORALL_VERTICES_T(v, G1, Graph1) - invar1_array.push_back(invariant1(v)); - sort(invar1_array); - - std::vector invar2_array; - BGL_FORALL_VERTICES_T(v, G2, Graph2) - invar2_array.push_back(invariant2(v)); - sort(invar2_array); - if (! equal(invar1_array, invar2_array)) - return false; - } - - std::vector V_mult; - BGL_FORALL_VERTICES_T(v, G1, Graph1) - V_mult.push_back(v); - { - std::vector multiplicity(max_invariant, 0); - BGL_FORALL_VERTICES_T(v, G1, Graph1) - ++multiplicity[invariant1(v)]; - sort(V_mult, compare_multiplicity(invariant1, &multiplicity[0])); - } - - std::vector color_vec(num_vertices(G1)); - safe_iterator_property_map::iterator, IndexMap1> - color_map(color_vec.begin(), color_vec.size(), index_map1); - record_dfs_order dfs_visitor(dfs_vertices, ordered_edges); - typedef color_traits Color; - for (vertex_iter u = V_mult.begin(); u != V_mult.end(); ++u) { - if (color_map[*u] == Color::white()) { - dfs_visitor.start_vertex(*u, G1); - depth_first_visit(G1, *u, dfs_visitor, color_map); - } - } - // Create the dfs_num array and dfs_num_map - dfs_num_vec.resize(num_vertices(G1)); - dfs_num = make_safe_iterator_property_map(dfs_num_vec.begin(), - dfs_num_vec.size(), index_map1); - size_type n = 0; - for (vertex_iter v = dfs_vertices.begin(); v != dfs_vertices.end(); ++v) - dfs_num[*v] = n++; - - sort(ordered_edges, edge_cmp(G1, dfs_num)); - - - int dfs_num_k = -1; - return this->match(ordered_edges.begin(), dfs_num_k); - } - - private: - bool match(edge_iter iter, int dfs_num_k) - { - if (iter != ordered_edges.end()) { - vertex1_t i = source(*iter, G1), j = target(*iter, G2); - if (dfs_num[i] > dfs_num_k) { - vertex1_t kp1 = dfs_vertices[dfs_num_k + 1]; - BGL_FORALL_VERTICES_T(u, G2, Graph2) { - if (invariant1(kp1) == invariant2(u) && in_S[u] == false) { - f[kp1] = u; - in_S[u] = true; - num_edges_on_k = 0; - if (match(iter, dfs_num_k + 1)); - return true; - in_S[u] = false; - } - } - - } - else if (dfs_num[j] > dfs_num_k) { - vertex1_t k = dfs_vertices[dfs_num_k]; - num_edges_on_k -= - count_if(adjacent_vertices(f[k], G2), make_indirect_pmap(in_S)); - - for (int jj = 0; jj < dfs_num_k; ++jj) { - vertex1_t j = dfs_vertices[jj]; - num_edges_on_k -= count(adjacent_vertices(f[j], G2), f[k]); - } - - if (num_edges_on_k != 0) - return false; - BGL_FORALL_ADJ_T(f[i], v, G2, Graph2) - if (invariant2(v) == invariant1(j) && in_S[v] == false) { - f[j] = v; - in_S[v] = true; - num_edges_on_k = 1; - int next_k = std::max(dfs_num_k, std::max(dfs_num[i], dfs_num[j])); - if (match(next(iter), next_k)) - return true; - in_S[v] = false; - } - - - } - else { - if (contains(adjacent_vertices(f[i], G2), f[j])) { - ++num_edges_on_k; - if (match(next(iter), dfs_num_k)) - return true; - } - - } - } else - return true; - return false; - } - - }; - - - template - void compute_in_degree(const Graph& g, InDegreeMap in_degree_map) - { - BGL_FORALL_VERTICES_T(v, g, Graph) - put(in_degree_map, v, 0); - - BGL_FORALL_VERTICES_T(u, g, Graph) - BGL_FORALL_ADJ_T(u, v, g, Graph) - put(in_degree_map, v, get(in_degree_map, v) + 1); - } - - } // namespace detail - - - template - class degree_vertex_invariant - { - typedef typename graph_traits::vertex_descriptor vertex_t; - typedef typename graph_traits::degree_size_type size_type; - public: - typedef vertex_t argument_type; - typedef size_type result_type; - - degree_vertex_invariant(const InDegreeMap& in_degree_map, const Graph& g) - : m_in_degree_map(in_degree_map), m_g(g) { } - - size_type operator()(vertex_t v) const { - return (num_vertices(m_g) + 1) * out_degree(v, m_g) - + get(m_in_degree_map, v); - } - // The largest possible vertex invariant number - size_type max() const { - return num_vertices(m_g) * num_vertices(m_g) + num_vertices(m_g); - } - private: - InDegreeMap m_in_degree_map; - const Graph& m_g; - }; - - - template - bool isomorphism(const Graph1& G1, const Graph2& G2, IsoMapping f, - Invariant1 invariant1, Invariant2 invariant2, - std::size_t max_invariant, - IndexMap1 index_map1, IndexMap2 index_map2) - - { - // Graph requirements - function_requires< VertexListGraphConcept >(); - function_requires< EdgeListGraphConcept >(); - function_requires< VertexListGraphConcept >(); - function_requires< BidirectionalGraphConcept >(); - - typedef typename graph_traits::vertex_descriptor vertex1_t; - typedef typename graph_traits::vertex_descriptor vertex2_t; - typedef typename graph_traits::vertices_size_type size_type; - - // Vertex invariant requirement - function_requires< AdaptableUnaryFunctionConcept >(); - function_requires< AdaptableUnaryFunctionConcept >(); - - // Property map requirements - function_requires< ReadWritePropertyMapConcept >(); - typedef typename property_traits::value_type IsoMappingValue; - BOOST_STATIC_ASSERT((is_same::value)); - - function_requires< ReadablePropertyMapConcept >(); - typedef typename property_traits::value_type IndexMap1Value; - BOOST_STATIC_ASSERT((is_convertible::value)); - - function_requires< ReadablePropertyMapConcept >(); - typedef typename property_traits::value_type IndexMap2Value; - BOOST_STATIC_ASSERT((is_convertible::value)); - - if (num_vertices(G1) != num_vertices(G2)) - return false; - if (num_vertices(G1) == 0 && num_vertices(G2) == 0) - return true; - - detail::isomorphism_algo - algo(G1, G2, f, invariant1, invariant2, max_invariant, - index_map1, index_map2); - return algo.test_isomorphism(); - } - - - namespace detail { - - template - bool isomorphism_impl(const Graph1& G1, const Graph2& G2, - IsoMapping f, IndexMap1 index_map1, IndexMap2 index_map2, - const bgl_named_params& params) - { - std::vector in_degree1_vec(num_vertices(G1)); - typedef safe_iterator_property_map::iterator, IndexMap1> InDeg1; - InDeg1 in_degree1(in_degree1_vec.begin(), in_degree1_vec.size(), index_map1); - compute_in_degree(G1, in_degree1); - - std::vector in_degree2_vec(num_vertices(G2)); - typedef safe_iterator_property_map::iterator, IndexMap2> InDeg2; - InDeg2 in_degree2(in_degree2_vec.begin(), in_degree2_vec.size(), index_map2); - compute_in_degree(G2, in_degree2); - - degree_vertex_invariant invariant1(in_degree1, G1); - degree_vertex_invariant invariant2(in_degree2, G2); - - return isomorphism(G1, G2, f, - choose_param(get_param(params, vertex_invariant1_t()), invariant1), - choose_param(get_param(params, vertex_invariant2_t()), invariant2), - choose_param(get_param(params, vertex_max_invariant_t()), invariant2.max()), - index_map1, index_map2 - ); - } - - } // namespace detail - - - // Named parameter interface - template - bool isomorphism(const Graph1& g1, - const Graph2& g2, - const bgl_named_params& params) - { - typedef typename graph_traits::vertex_descriptor vertex2_t; - typename std::vector::size_type n = num_vertices(g1); - std::vector f(n); - return detail::isomorphism_impl - (g1, g2, - choose_param(get_param(params, vertex_isomorphism_t()), - make_safe_iterator_property_map(f.begin(), f.size(), - choose_const_pmap(get_param(params, vertex_index1), - g1, vertex_index), vertex2_t())), - choose_const_pmap(get_param(params, vertex_index1), g1, vertex_index), - choose_const_pmap(get_param(params, vertex_index2), g2, vertex_index), - params - ); - } - - // All defaults interface - template - bool isomorphism(const Graph1& g1, const Graph2& g2) - { - return isomorphism(g1, g2, - bgl_named_params(0));// bogus named param - } - - - // Verify that the given mapping iso_map from the vertices of g1 to the - // vertices of g2 describes an isomorphism. - // Note: this could be made much faster by specializing based on the graph - // concepts modeled, but since we're verifying an O(n^(lg n)) algorithm, - // O(n^4) won't hurt us. - template - inline bool verify_isomorphism(const Graph1& g1, const Graph2& g2, IsoMap iso_map) - { -#if 0 - // problematic for filtered_graph! - if (num_vertices(g1) != num_vertices(g2) || num_edges(g1) != num_edges(g2)) - return false; -#endif - - for (typename graph_traits::edge_iterator e1 = edges(g1).first; - e1 != edges(g1).second; ++e1) { - bool found_edge = false; - for (typename graph_traits::edge_iterator e2 = edges(g2).first; - e2 != edges(g2).second && !found_edge; ++e2) { - if (source(*e2, g2) == get(iso_map, source(*e1, g1)) && - target(*e2, g2) == get(iso_map, target(*e1, g1))) { - found_edge = true; - } - } - - if (!found_edge) - return false; - } - - return true; - } - -} // namespace boost - -#ifdef BOOST_ISO_INCLUDED_ITER_MACROS -#undef BOOST_ISO_INCLUDED_ITER_MACROS -#include -#endif - -#endif // BOOST_GRAPH_ISOMORPHISM_HPP diff --git a/sdk/include/boost/graph/iteration_macros.hpp b/sdk/include/boost/graph/iteration_macros.hpp deleted file mode 100644 index 0199464ab99..00000000000 --- a/sdk/include/boost/graph/iteration_macros.hpp +++ /dev/null @@ -1,143 +0,0 @@ -//======================================================================= -// Copyright 2001 Indiana University -// Author: Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_ITERATION_MACROS_HPP -#define BOOST_GRAPH_ITERATION_MACROS_HPP - -#define BGL_CAT(x,y) x ## y -#define BGL_FIRST(linenum) BGL_CAT(bgl_first_,linenum) -#define BGL_LAST(linenum) BGL_CAT(bgl_last_,linenum) - -/* - BGL_FORALL_VERTICES_T(v, g, graph_t) // This is on line 9 - expands to the following, but all on the same line - - for (typename boost::graph_traits::vertex_iterator - bgl_first_9 = vertices(g).first, bgl_last_9 = vertices(g).second; - bgl_first_9 != bgl_last_9; bgl_first_9 = bgl_last_9) - for (typename boost::graph_traits::vertex_descriptor v; - bgl_first_9 != bgl_last ? (v = *bgl_first_9, true) : false; - ++bgl_first_9) - - The purpose of having two for-loops is just to provide a place to - declare both the iterator and value variables. There is really only - one loop. The stopping condition gets executed two more times than it - usually would be, oh well. The reason for the bgl_first_9 = bgl_last_9 - in the outer for-loop is in case the user puts a break statement - in the inner for-loop. - - The other macros work in a similar fashion. - - Use the _T versions when the graph type is a template parameter or - dependent on a template parameter. Otherwise use the non _T versions. - - */ - - -#define BGL_FORALL_VERTICES_T(VNAME, GNAME, GraphType) \ -for (typename boost::graph_traits::vertex_iterator \ - BGL_FIRST(__LINE__) = vertices(GNAME).first, BGL_LAST(__LINE__) = vertices(GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ - for (typename boost::graph_traits::vertex_descriptor VNAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (VNAME = *BGL_FIRST(__LINE__), true):false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_VERTICES(VNAME, GNAME, GraphType) \ -for (boost::graph_traits::vertex_iterator \ - BGL_FIRST(__LINE__) = vertices(GNAME).first, BGL_LAST(__LINE__) = vertices(GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ - for (boost::graph_traits::vertex_descriptor VNAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (VNAME = *BGL_FIRST(__LINE__), true):false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_EDGES_T(ENAME, GNAME, GraphType) \ -for (typename boost::graph_traits::edge_iterator \ - BGL_FIRST(__LINE__) = edges(GNAME).first, BGL_LAST(__LINE__) = edges(GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ - for (typename boost::graph_traits::edge_descriptor ENAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (ENAME = *BGL_FIRST(__LINE__), true):false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_EDGES(ENAME, GNAME, GraphType) \ -for (boost::graph_traits::edge_iterator \ - BGL_FIRST(__LINE__) = edges(GNAME).first, BGL_LAST(__LINE__) = edges(GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ - for (boost::graph_traits::edge_descriptor ENAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (ENAME = *BGL_FIRST(__LINE__), true):false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_ADJ_T(UNAME, VNAME, GNAME, GraphType) \ -for (typename boost::graph_traits::adjacency_iterator \ - BGL_FIRST(__LINE__) = adjacent_vertices(UNAME, GNAME).first,\ - BGL_LAST(__LINE__) = adjacent_vertices(UNAME, GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ -for (typename boost::graph_traits::vertex_descriptor VNAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (VNAME = *BGL_FIRST(__LINE__), true) : false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_ADJ(UNAME, VNAME, GNAME, GraphType) \ -for (boost::graph_traits::adjacency_iterator \ - BGL_FIRST(__LINE__) = adjacent_vertices(UNAME, GNAME).first,\ - BGL_LAST(__LINE__) = adjacent_vertices(UNAME, GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ -for (boost::graph_traits::vertex_descriptor VNAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (VNAME = *BGL_FIRST(__LINE__), true) : false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_OUTEDGES_T(UNAME, ENAME, GNAME, GraphType) \ -for (typename boost::graph_traits::out_edge_iterator \ - BGL_FIRST(__LINE__) = out_edges(UNAME, GNAME).first,\ - BGL_LAST(__LINE__) = out_edges(UNAME, GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ -for (typename boost::graph_traits::edge_descriptor ENAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (ENAME = *BGL_FIRST(__LINE__), true) : false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_OUTEDGES(UNAME, ENAME, GNAME, GraphType) \ -for (boost::graph_traits::out_edge_iterator \ - BGL_FIRST(__LINE__) = out_edges(UNAME, GNAME).first,\ - BGL_LAST(__LINE__) = out_edges(UNAME, GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ -for (boost::graph_traits::edge_descriptor ENAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (ENAME = *BGL_FIRST(__LINE__), true) : false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_INEDGES_T(UNAME, ENAME, GNAME, GraphType) \ -for (typename boost::graph_traits::in_edge_iterator \ - BGL_FIRST(__LINE__) = in_edges(UNAME, GNAME).first,\ - BGL_LAST(__LINE__) = in_edges(UNAME, GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ -for (typename boost::graph_traits::edge_descriptor ENAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (ENAME = *BGL_FIRST(__LINE__), true) : false; \ - ++BGL_FIRST(__LINE__)) - -#define BGL_FORALL_INEDGES(UNAME, ENAME, GNAME, GraphType) \ -for (boost::graph_traits::in_edge_iterator \ - BGL_FIRST(__LINE__) = in_edges(UNAME, GNAME).first,\ - BGL_LAST(__LINE__) = in_edges(UNAME, GNAME).second; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \ -for (boost::graph_traits::edge_descriptor ENAME; \ - BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (ENAME = *BGL_FIRST(__LINE__), true) : false; \ - ++BGL_FIRST(__LINE__)) - -#endif // BOOST_GRAPH_ITERATION_MACROS_HPP diff --git a/sdk/include/boost/graph/iteration_macros_undef.hpp b/sdk/include/boost/graph/iteration_macros_undef.hpp deleted file mode 100644 index 4385511e6a3..00000000000 --- a/sdk/include/boost/graph/iteration_macros_undef.hpp +++ /dev/null @@ -1,36 +0,0 @@ -//======================================================================= -// Copyright 2002 Indiana University. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifdef BOOST_GRAPH_ITERATION_MACROS_HPP - -#undef BOOST_GRAPH_ITERATION_MACROS_HPP -#undef BGL_CAT -#undef BGL_FIRST -#undef BGL_LAST -#undef BGL_FORALL_VERTICES -#undef BGL_FORALL_EDGES -#undef BGL_FORALL_ADJACENT -#undef BGL_FORALL_OUTEDGES -#undef BGL_FORALL_INEDGES - -#endif diff --git a/sdk/include/boost/graph/johnson_all_pairs_shortest.hpp b/sdk/include/boost/graph/johnson_all_pairs_shortest.hpp deleted file mode 100644 index d7905f35c71..00000000000 --- a/sdk/include/boost/graph/johnson_all_pairs_shortest.hpp +++ /dev/null @@ -1,200 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -/* - This file implements the function - - template - bool - johnson_all_pairs_shortest_paths - (VertexAndEdgeListGraph& g, - DistanceMatrix& D, - const bgl_named_params& params) - */ - -#ifndef BOOST_GRAPH_JOHNSON_HPP -#define BOOST_GRAPH_JOHNSON_HPP - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - template - bool - johnson_all_pairs_shortest_paths(VertexAndEdgeListGraph& g1, - DistanceMatrix& D, - VertexID id1, Weight w1, DistanceZero zero) - { - typedef graph_traits Traits1; - typedef typename property_traits::value_type DT; - function_requires< BasicMatrixConcept >(); - - typedef typename Traits1::directed_category DirCat; - bool is_undirected = is_same::value; - - typedef adjacency_list, - property< edge_weight_t, DT, - property< edge_weight2_t, DT > > > Graph2; - typedef graph_traits Traits2; - - Graph2 g2(num_vertices(g1) + 1); - typename property_map::type - w = get(edge_weight, g2); - typename property_map::type - w_hat = get(edge_weight2, g2); - typename property_map::type - d = get(vertex_distance, g2); - typename property_map::type - id2 = get(vertex_index, g2); - - // Construct g2 where V[g2] = V[g1] U {s} - // and E[g2] = E[g1] U {(s,v)| v in V[g1]} - std::vector - verts1(num_vertices(g1) + 1); - typename Traits2::vertex_descriptor s = *vertices(g2).first; - { - typename Traits1::vertex_iterator v, v_end; - int i = 1; - for (tie(v, v_end) = vertices(g1); v != v_end; ++v, ++i) { - typename Traits2::edge_descriptor e; bool z; - tie(e, z) = add_edge(s, id1[*v] + 1, g2); - w[e] = zero; - verts1[i] = *v; - } - typename Traits1::edge_iterator e, e_end; - for (tie(e, e_end) = edges(g1); e != e_end; ++e) { - typename Traits2::edge_descriptor e2; bool z; - tie(e2, z) = add_edge(id1[source(*e, g1)] + 1, - id1[target(*e, g1)] + 1, g2); - w[e2] = w1[*e]; - if (is_undirected) { - tie(e2, z) = add_edge(id1[target(*e, g1)] + 1, - id1[source(*e, g1)] + 1, g2); - w[e2] = w1[*e]; - } - } - } - typename Traits2::vertex_iterator v, v_end, u, u_end; - typename Traits2::edge_iterator e, e_end; - std::vector

h_vec(num_vertices(g2)); - typedef typename std::vector
::iterator iter_t; - iterator_property_map h(h_vec.begin(), id2); - - DT inf = std::numeric_limits
::max(); - for (tie(v, v_end) = vertices(g2); v != v_end; ++v) - d[*v] = inf; - - put(d, s, zero); - // Using the non-named parameter versions of bellman_ford and - // dijkstra for portability reasons. - dummy_property_map pred; closed_plus
combine; - std::less
compare; bellman_visitor<> bvis; - if (bellman_ford_shortest_paths - (g2, num_vertices(g2), w, pred, d, combine, compare, bvis)) { - for (tie(v, v_end) = vertices(g2); v != v_end; ++v) - put(h, *v, get(d, *v)); - // Reweight the edges to remove negatives - for (tie(e, e_end) = edges(g2); e != e_end; ++e) { - typename Traits2::vertex_descriptor a = source(*e, g2), - b = target(*e, g2); - put(w_hat, *e, get(w, *e) + get(h, a) - get(h, b)); - } - for (tie(u, u_end) = vertices(g2); u != u_end; ++u) { - dijkstra_visitor<> dvis; - dijkstra_shortest_paths - (g2, *u, pred, d, w_hat, id2, compare, combine, inf, zero,dvis); - for (tie(v, v_end) = vertices(g2); v != v_end; ++v) { - if (*u != s && *v != s) { - typename Traits1::vertex_descriptor u1, v1; - u1 = verts1[id2[*u]]; v1 = verts1[id2[*v]]; - D[u1][v1] = get(d, *v) + get(h, *v) - get(h, *u); - } - } - } - return true; - } else - return false; - } - - namespace detail { - - template - bool - johnson_dispatch(VertexAndEdgeListGraph& g, - DistanceMatrix& D, - const bgl_named_params& params, - Weight w, VertexID id) - { - typedef typename property_traits::value_type WT; - - return johnson_all_pairs_shortest_paths - (g, D, id, w, - choose_param(get_param(params, distance_zero_t()), WT()) ); - } - - } // namespace detail - - template - bool - johnson_all_pairs_shortest_paths - (VertexAndEdgeListGraph& g, - DistanceMatrix& D, - const bgl_named_params& params) - { - return detail::johnson_dispatch - (g, D, params, - choose_const_pmap(get_param(params, edge_weight), g, edge_weight), - choose_const_pmap(get_param(params, vertex_index), g, vertex_index) - ); - } - - template - bool - johnson_all_pairs_shortest_paths - (VertexAndEdgeListGraph& g, DistanceMatrix& D) - { - bgl_named_params params(1); - return detail::johnson_dispatch - (g, D, params, get(edge_weight, g), get(vertex_index, g)); - } - -} // namespace boost - -#endif // BOOST_GRAPH_JOHNSON_HPP - - diff --git a/sdk/include/boost/graph/kruskal_min_spanning_tree.hpp b/sdk/include/boost/graph/kruskal_min_spanning_tree.hpp deleted file mode 100644 index 641c84e8c6e..00000000000 --- a/sdk/include/boost/graph/kruskal_min_spanning_tree.hpp +++ /dev/null @@ -1,168 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_MST_KRUSKAL_HPP -#define BOOST_GRAPH_MST_KRUSKAL_HPP - -/* - *Minimum Spanning Tree - * Kruskal Algorithm - * - *Requirement: - * undirected graph - */ - -#include -#include -#include - -#include -#include -#include -#include -#include - - -namespace boost { - - // Kruskal's algorithm for Minimum Spanning Tree - // - // This is a greedy algorithm to calculate the Minimum Spanning Tree - // for an undirected graph with weighted edges. The output will be a - // set of edges. - // - - namespace detail { - - template - void - kruskal_mst_impl(const Graph& G, - OutputIterator spanning_tree_edges, - Rank rank, Parent parent, Weight weight) - { - typedef typename graph_traits::vertex_descriptor Vertex; - typedef typename graph_traits::edge_descriptor Edge; - function_requires >(); - function_requires >(); - function_requires >(); - function_requires >(); - function_requires >(); - function_requires >(); - typedef typename property_traits::value_type W_value; - typedef typename property_traits::value_type R_value; - typedef typename property_traits::value_type P_value; - function_requires >(); - function_requires >(); - function_requires >(); - - disjoint_sets dset(rank, parent); - - typename graph_traits::vertex_iterator ui, uiend; - for (boost::tie(ui, uiend) = vertices(G); ui != uiend; ++ui) - dset.make_set(*ui); - - typedef indirect_cmp > weight_greater; - weight_greater wl(weight); - std::priority_queue, weight_greater> Q(wl); - /*push all edge into Q*/ - typename graph_traits::edge_iterator ei, eiend; - for (boost::tie(ei, eiend) = edges(G); ei != eiend; ++ei) - Q.push(*ei); - - while (! Q.empty()) { - Edge e = Q.top(); - Q.pop(); - Vertex u = dset.find_set(source(e, G)); - Vertex v = dset.find_set(target(e, G)); - if ( u != v ) { - *spanning_tree_edges++ = e; - dset.link(u, v); - } - } - } - - } // namespace detail - - // Named Parameters Variants - - template - inline void - kruskal_minimum_spanning_tree(const Graph& g, - OutputIterator spanning_tree_edges) - { - typedef typename graph_traits::vertices_size_type size_type; - typedef typename graph_traits::vertex_descriptor vertex_t; - typedef typename property_map::type index_map_t; - typename graph_traits::vertices_size_type - n = num_vertices(g); - std::vector rank_map(n); - std::vector pred_map(n); - - detail::kruskal_mst_impl - (g, spanning_tree_edges, - make_iterator_property_map(rank_map.begin(), get(vertex_index, g), rank_map[0]), - make_iterator_property_map(pred_map.begin(), get(vertex_index, g), pred_map[0]), - get(edge_weight, g)); - } - - template - inline void - kruskal_minimum_spanning_tree(const Graph& g, - OutputIterator spanning_tree_edges, - const bgl_named_params& params) - { - typedef typename graph_traits::vertices_size_type size_type; - typedef typename graph_traits::vertex_descriptor vertex_t; - typename graph_traits::vertices_size_type n; - n = is_default_param(get_param(params, vertex_rank)) - ? num_vertices(g) : 1; - std::vector rank_map(n); - n = is_default_param(get_param(params, vertex_predecessor)) - ? num_vertices(g) : 1; - std::vector pred_map(n); - - detail::kruskal_mst_impl - (g, spanning_tree_edges, - choose_param - (get_param(params, vertex_rank), - make_iterator_property_map - (rank_map.begin(), - choose_pmap(get_param(params, vertex_index), g, vertex_index), rank_map[0])), - choose_param - (get_param(params, vertex_predecessor), - make_iterator_property_map - (pred_map.begin(), - choose_const_pmap(get_param(params, vertex_index), g, vertex_index), - pred_map[0])), - choose_const_pmap(get_param(params, edge_weight), g, edge_weight)); - } - -} // namespace boost - - -#endif // BOOST_GRAPH_MST_KRUSKAL_HPP - diff --git a/sdk/include/boost/graph/leda_graph.hpp b/sdk/include/boost/graph/leda_graph.hpp deleted file mode 100644 index 4bb35626c76..00000000000 --- a/sdk/include/boost/graph/leda_graph.hpp +++ /dev/null @@ -1,587 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_GRAPH_LEDA_HPP -#define BOOST_GRAPH_LEDA_HPP - -#include -#include -#include -#include - -#include -#include -#include - -// The functions and classes in this file allows the user to -// treat a LEDA GRAPH object as a boost graph "as is". No -// wrapper is needed for the GRAPH object. - -// Remember to define LEDA_PREFIX so that LEDA types such as -// leda_edge show up as "leda_edge" and not just "edge". - -// Warning: this implementation relies on partial specialization -// for the graph_traits class (so it won't compile with Visual C++) - -// Warning: this implementation is in alpha and has not been tested - -namespace boost { - - struct leda_out_edge_iterator_policies - { - static void initialize(leda_edge& ) { } - - template - static void increment(Iter& i) - { i.base() = Succ_Adj_Edge(i.base(), 0); } - - template - static void decrement(Iter& i) - { i.base() = Pred_Adj_Edge(i.base(), 0); } - - template - static leda_edge dereference(const Iter& i) - { return i.base(); } - - template - static bool equal(const Iter& x, const Iter& y) - { return x.base() == y.base(); } - }; - - struct leda_in_edge_iterator_policies - { - static void initialize(leda_edge& ) { } - - template - static void increment(Iter& i) - { i.base() = Succ_Adj_Edge(i.base(), 1); } - - template - static void decrement(Iter& i) - { i.bae() = Pred_Adj_Edge(i.base(), 1); } - - template - static leda_edge dereference(const Iter& i) - { return i.base(); } - - template - static bool equal(const Iter& x, const Iter& y) - { return x.base() == y.base(); } - }; - - struct leda_adjacency_iterator_policies - { - static void initialize(leda_edge& ) { } - - template - static void increment(Iter& i) - { i.base() = Succ_Adj_Edge(i.base(), 0); } - - template - static void decrement(Iter& i) - { i.base() = Pred_Adj_Edge(i.base(), 0); } - - template - static leda_node dereference(const Iter& i) - { return ::target(i.base()); } - - template - static bool equal(const Iter& x, const Iter& y) - { return x.base() == y.base(); } - }; - - template - struct leda_vertex_iterator_policies - { - leda_vertex_iterator_policies() { } - leda_vertex_iterator_policies(const LedaGraph* g) : m_g(g) { } - - void initialize(leda_node& v) const { } - - template - void increment(Iter& i) const - { i.base() = m_g->succ_node(i.base()); } - - template - void decrement(Iter& i) const - { i.base() = m_g->pred_node(i.base()); } - - template - leda_node dereference(const Iter& i) const - { return i.base(); } - - template - static bool equal(const Iter& x, const Iter& y) - { return x.base() == y.base(); } - - const LedaGraph* m_g; - }; - -} // namespace boost - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -namespace boost { - - struct leda_graph_traversal_category : - public virtual bidirectional_graph_tag, - public virtual adjacency_graph_tag, - public virtual vertex_list_graph_tag { }; - - template - struct graph_traits< GRAPH > { - typedef leda_node vertex_descriptor; - typedef leda_edge edge_descriptor; - - typedef boost::iterator_adaptor adjacency_iterator; - - typedef boost::iterator_adaptor out_edge_iterator; - - typedef boost::iterator_adaptor in_edge_iterator; - - typedef boost::iterator_adaptor >, - leda_node, leda_node, const leda_node*, - boost::multi_pass_input_iterator_tag, - std::ptrdiff_t - > vertex_iterator; - - typedef directed_tag directed_category; - typedef allow_parallel_edge_tag edge_parallel_category; // not sure here - typedef leda_graph_traversal_category traversal_category; - typedef int vertices_size_type; - typedef int edges_size_type; - typedef int degree_size_type; - }; - - template - struct vertex_property< GRAPH > { - typedef vtype type; - }; - - template - struct edge_property< GRAPH > { - typedef etype type; - }; - -} // namespace boost -#endif - -namespace boost { - - template - typename graph_traits< GRAPH >::vertex_descriptor - source(typename graph_traits< GRAPH >::edge_descriptor e, - const GRAPH& g) - { - return source(e); - } - - template - typename graph_traits< GRAPH >::vertex_descriptor - target(typename graph_traits< GRAPH >::edge_descriptor e, - const GRAPH& g) - { - return target(e); - } - - template - inline std::pair< - typename graph_traits< GRAPH >::vertex_iterator, - typename graph_traits< GRAPH >::vertex_iterator > - vertices(const GRAPH& g) - { - typedef typename graph_traits< GRAPH >::vertex_iterator - Iter; - return std::make_pair( Iter(g.first_node(),&g), Iter(0,&g) ); - } - - // no edges(g) function - - template - inline std::pair< - typename graph_traits< GRAPH >::out_edge_iterator, - typename graph_traits< GRAPH >::out_edge_iterator > - out_edges( - typename graph_traits< GRAPH >::vertex_descriptor u, - const GRAPH& g) - { - typedef typename graph_traits< GRAPH > - ::out_edge_iterator Iter; - return std::make_pair( Iter(First_Adj_Edge(u,0)), Iter(0) ); - } - - template - inline std::pair< - typename graph_traits< GRAPH >::in_edge_iterator, - typename graph_traits< GRAPH >::in_edge_iterator > - in_edges( - typename graph_traits< GRAPH >::vertex_descriptor u, - const GRAPH& g) - { - typedef typename graph_traits< GRAPH > - ::in_edge_iterator Iter; - return std::make_pair( Iter(First_Adj_Edge(u,1)), Iter(0) ); - } - - template - inline std::pair< - typename graph_traits< GRAPH >::adjacency_iterator, - typename graph_traits< GRAPH >::adjacency_iterator > - adjacent_vertices( - typename graph_traits< GRAPH >::vertex_descriptor u, - const GRAPH& g) - { - typedef typename graph_traits< GRAPH > - ::adjacency_iterator Iter; - return std::make_pair( Iter(First_Adj_Edge(u,0)), Iter(0) ); - } - - template - typename graph_traits< GRAPH >::vertices_size_type - num_vertices(const GRAPH& g) - { - return g.number_of_nodes(); - } - - template - typename graph_traits< GRAPH >::edges_size_type - num_edges(const GRAPH& g) - { - return g.number_of_edges(); - } - - template - typename graph_traits< GRAPH >::degree_size_type - out_degree( - typename graph_traits< GRAPH >::vertex_descriptor u, - const GRAPH&) - { - return outdeg(u); - } - - template - typename graph_traits< GRAPH >::degree_size_type - in_degree( - typename graph_traits< GRAPH >::vertex_descriptor u, - const GRAPH&) - { - return indeg(u); - } - - template - typename graph_traits< GRAPH >::degree_size_type - degree( - typename graph_traits< GRAPH >::vertex_descriptor u, - const GRAPH&) - { - return outdeg(u) + indeg(u); - } - - template - typename graph_traits< GRAPH >::vertex_descriptor - add_vertex(GRAPH& g) - { - return g.new_node(); - } - - template - typename graph_traits< GRAPH >::vertex_descriptor - add_vertex(const vtype& vp, GRAPH& g) - { - return g.new_node(vp); - } - - // Hmm, LEDA doesn't have the equivalent of clear_vertex() -JGS - // need to write an implementation - template - void clear_vertex( - typename graph_traits< GRAPH >::vertex_descriptor u, - GRAPH& g) - { - g.del_node(u); - } - - template - void remove_vertex( - typename graph_traits< GRAPH >::vertex_descriptor u, - GRAPH& g) - { - g.del_node(u); - } - - template - std::pair< - typename graph_traits< GRAPH >::edge_descriptor, - bool> - add_edge( - typename graph_traits< GRAPH >::vertex_descriptor u, - typename graph_traits< GRAPH >::vertex_descriptor v, - GRAPH& g) - { - return std::make_pair(g.new_edge(u, v), true); - } - - template - std::pair< - typename graph_traits< GRAPH >::edge_descriptor, - bool> - add_edge( - typename graph_traits< GRAPH >::vertex_descriptor u, - typename graph_traits< GRAPH >::vertex_descriptor v, - const etype& et, - GRAPH& g) - { - return std::make_pair(g.new_edge(u, v, et), true); - } - - template - void - remove_edge( - typename graph_traits< GRAPH >::vertex_descriptor u, - typename graph_traits< GRAPH >::vertex_descriptor v, - GRAPH& g) - { - typename graph_traits< GRAPH >::out_edge_iterator - i,iend; - for (boost::tie(i,iend) = out_edges(u,g); i != iend; ++i) - if (target(*i,g) == v) - g.del_edge(*i); - } - - template - void - remove_edge( - typename graph_traits< GRAPH >::edge_descriptor e, - GRAPH& g) - { - g.del_edge(e); - } - - //=========================================================================== - // property maps - - class leda_graph_id_map - : public put_get_helper - { - public: - typedef readable_property_map_tag category; - typedef int value_type; - typedef int reference; - typedef leda_node key_type; - leda_graph_id_map() { } - template - long operator[](T x) const { return x->id(); } - }; - template - inline leda_graph_id_map - get(vertex_index_t, const GRAPH& g) { - return leda_graph_id_map(); - } - template - inline leda_graph_id_map - get(edge_index_t, const GRAPH& g) { - return leda_graph_id_map(); - } - - template - struct leda_property_map { }; - - template <> - struct leda_property_map { - template - struct bind_ { - typedef leda_graph_id_map type; - typedef leda_graph_id_map const_type; - }; - }; - template <> - struct leda_property_map { - template - struct bind_ { - typedef leda_graph_id_map type; - typedef leda_graph_id_map const_type; - }; - }; - - - template - class leda_graph_data_map - : public put_get_helper > - { - public: - typedef Data value_type; - typedef DataRef reference; - typedef void key_type; - typedef lvalue_property_map_tag category; - leda_graph_data_map(GraphPtr g) : m_g(g) { } - template - DataRef operator[](NodeOrEdge x) const { return (*m_g)[x]; } - protected: - GraphPtr m_g; - }; - - template <> - struct leda_property_map { - template - struct bind_ { - typedef leda_graph_data_map*> type; - typedef leda_graph_data_map*> const_type; - }; - }; - template - inline typename property_map< GRAPH, vertex_all_t>::type - get(vertex_all_t, GRAPH& g) { - typedef typename property_map< GRAPH, vertex_all_t>::type - pmap_type; - return pmap_type(&g); - } - template - inline typename property_map< GRAPH, vertex_all_t>::const_type - get(vertex_all_t, const GRAPH& g) { - typedef typename property_map< GRAPH, - vertex_all_t>::const_type pmap_type; - return pmap_type(&g); - } - - template <> - struct leda_property_map { - template - struct bind_ { - typedef leda_graph_data_map*> type; - typedef leda_graph_data_map*> const_type; - }; - }; - template - inline typename property_map< GRAPH, edge_all_t>::type - get(edge_all_t, GRAPH& g) { - typedef typename property_map< GRAPH, edge_all_t>::type - pmap_type; - return pmap_type(&g); - } - template - inline typename property_map< GRAPH, edge_all_t>::const_type - get(edge_all_t, const GRAPH& g) { - typedef typename property_map< GRAPH, - edge_all_t>::const_type pmap_type; - return pmap_type(&g); - } - - // property map interface to the LEDA node_array class - - template - class leda_node_property_map - : public put_get_helper > - { - public: - typedef E value_type; - typedef ERef reference; - typedef leda_node key_type; - typedef lvalue_property_map_tag category; - leda_node_property_map(NodeMapPtr a) : m_array(a) { } - ERef operator[](leda_node n) const { return (*m_array)[n]; } - protected: - NodeMapPtr m_array; - }; - template - leda_node_property_map*> - make_leda_node_property_map(const leda_node_array& a) - { - typedef leda_node_property_map*> - pmap_type; - return pmap_type(&a); - } - template - leda_node_property_map*> - make_leda_node_property_map(leda_node_array& a) - { - typedef leda_node_property_map*> pmap_type; - return pmap_type(&a); - } - - template - leda_node_property_map*> - make_leda_node_property_map(const leda_node_map& a) - { - typedef leda_node_property_map*> - pmap_type; - return pmap_type(&a); - } - template - leda_node_property_map*> - make_leda_node_property_map(leda_node_map& a) - { - typedef leda_node_property_map*> pmap_type; - return pmap_type(&a); - } - - // g++ 'enumeral_type' in template unification not implemented workaround - template - struct property_map, Tag> { - typedef typename - leda_property_map::template bind_ map_gen; - typedef typename map_gen::type type; - typedef typename map_gen::const_type const_type; - }; - - template - inline - typename boost::property_traits< - typename boost::property_map,PropertyTag>::const_type - >::value_type - get(PropertyTag p, const GRAPH& g, const Key& key) { - return get(get(p, g), key); - } - - template - inline void - put(PropertyTag p, GRAPH& g, - const Key& key, const Value& value) - { - typedef typename property_map, PropertyTag>::type Map; - Map pmap = get(p, g); - put(pmap, key, value); - } - -} // namespace boost - - -#endif // BOOST_GRAPH_LEDA_HPP diff --git a/sdk/include/boost/graph/matrix_as_graph.hpp b/sdk/include/boost/graph/matrix_as_graph.hpp deleted file mode 100644 index b7dbc724fe2..00000000000 --- a/sdk/include/boost/graph/matrix_as_graph.hpp +++ /dev/null @@ -1,143 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_MATRIX2GRAPH_HPP -#define BOOST_GRAPH_MATRIX2GRAPH_HPP - -#include -#include -#include -#include -#include - -namespace boost { - - template - class matrix_adj_iterator; - - template - class matrix_incidence_iterator; - -} - -#define BOOST_GRAPH_ADAPT_MATRIX_TO_GRAPH(Matrix) \ -namespace boost { \ - template <> \ - struct graph_traits< Matrix > { \ - typedef Matrix::OneD::const_iterator Iter; \ - typedef Matrix::size_type V; \ - typedef V vertex_descriptor; \ - typedef Iter E; \ - typedef E edge_descriptor; \ - typedef boost::matrix_incidence_iterator out_edge_iterator; \ - typedef boost::matrix_adj_iterator adjacency_iterator; \ - typedef Matrix::size_type size_type; \ - typedef boost::int_iterator vertex_iterator; \ - \ - friend std::pair \ - vertices(const Matrix& g) { \ - typedef vertex_iterator VIter; \ - return std::make_pair(VIter(0), VIter(g.nrows())); \ - } \ - \ - friend std::pair \ - out_edges(V v, const Matrix& g) { \ - typedef out_edge_iterator IncIter; \ - return std::make_pair(IncIter(g[v].begin()), \ - IncIter(g[v].end())); \ - } \ - friend std::pair \ - adjacent_vertices(V v, const Matrix& g) { \ - typedef adjacency_iterator AdjIter; \ - return std::make_pair(AdjIter(g[v].begin()), \ - AdjIter(g[v].end())); \ - } \ - friend vertex_descriptor \ - source(E e, const Matrix& g) { \ - return e.row(); \ - } \ - friend vertex_descriptor \ - target(E e, const Matrix& g) { \ - return e.column(); \ - } \ - friend size_type \ - num_vertices(const Matrix& g) { \ - return g.nrows(); \ - } \ - friend size_type \ - num_edges(const Matrix& g) { \ - return g.nnz(); \ - } \ - friend size_type \ - out_degree(V i, const Matrix& g) { \ - return g[i].nnz(); \ - } \ - }; \ -} - -namespace boost { - - template - class matrix_adj_iterator - : public std::iterator - { - typedef matrix_adj_iterator self; - public: - matrix_adj_iterator() { } - matrix_adj_iterator(Iter i) : _iter(i) { } - matrix_adj_iterator(const self& x) : _iter(x._iter) { } - self& operator=(const self& x) { _iter = x._iter; return *this; } - Vertex operator*() { return _iter.column(); } - self& operator++() { ++_iter; return *this; } - self operator++(int) { self t = *this; ++_iter; return t; } - bool operator==(const self& x) const { return _iter == x._iter; } - bool operator!=(const self& x) const { return _iter != x._iter; } - protected: - Iter _iter; - }; - - template - class matrix_incidence_iterator - : public std::iterator - { - typedef matrix_incidence_iterator self; - public: - matrix_incidence_iterator() { } - matrix_incidence_iterator(Iter i) : _iter(i) { } - matrix_incidence_iterator(const self& x) : _iter(x._iter) { } - self& operator=(const self& x) { _iter = x._iter; return *this; } - Iter operator*() { return _iter; } - self& operator++() { ++_iter; return *this; } - self operator++(int) { self t = *this; ++_iter; return t; } - bool operator==(const self& x) const { return _iter == x._iter; } - bool operator!=(const self& x) const { return _iter != x._iter; } - protected: - Iter _iter; - }; - -} /* namespace boost */ - -#endif /* BOOST_GRAPH_MATRIX2GRAPH_HPP*/ diff --git a/sdk/include/boost/graph/minimum_degree_ordering.hpp b/sdk/include/boost/graph/minimum_degree_ordering.hpp deleted file mode 100644 index 7daae64cfee..00000000000 --- a/sdk/include/boost/graph/minimum_degree_ordering.hpp +++ /dev/null @@ -1,669 +0,0 @@ -//-*-c++-*- -//======================================================================= -// Copyright 1997-2001 University of Notre Dame. -// Authors: Lie-Quan Lee, Jeremy Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Generic Graph Component Library along with the software; see the -// file LICENSE. If not, contact Office of Research, University of Notre -// Dame, Notre Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef MINIMUM_DEGREE_ORDERING_HPP -#define MINIMUM_DEGREE_ORDERING_HPP - -#include -#include -#include -#include -#include // for integer_traits - -namespace boost { - - namespace detail { - - // - // Given a set of n integers (where the integer values range from - // zero to n-1), we want to keep track of a collection of stacks - // of integers. It so happens that an integer will appear in at - // most one stack at a time, so the stacks form disjoint sets. - // Because of these restrictions, we can use one big array to - // store all the stacks, intertwined with one another. - // No allocation/deallocation happens in the push()/pop() methods - // so this is faster than using std::stack's. - // - template - class Stacks { - typedef SignedInteger value_type; - typedef typename std::vector::size_type size_type; - public: - Stacks(size_type n) : data(n) {} - - //: stack - class stack { - typedef typename std::vector::iterator Iterator; - public: - stack(Iterator _data, const value_type& head) - : data(_data), current(head) {} - - // did not use default argument here to avoid internal compiler error - // in g++. - stack(Iterator _data) - : data(_data), current(-std::numeric_limits::max()) {} - - void pop() { - assert(! empty()); - current = data[current]; - } - void push(value_type v) { - data[v] = current; - current = v; - } - bool empty() { - return current == -std::numeric_limits::max(); - } - value_type& top() { return current; } - private: - Iterator data; - value_type current; - }; - - // To return a stack object - stack make_stack() - { return stack(data.begin()); } - protected: - std::vector data; - }; - - - // marker class, a generalization of coloring. - // - // This class is to provide a generalization of coloring which has - // complexity of amortized constant time to set all vertices' color - // back to be untagged. It implemented by increasing a tag. - // - // The colors are: - // not tagged - // tagged - // multiple_tagged - // done - // - template - class Marker { - typedef SignedInteger value_type; - typedef typename std::vector::size_type size_type; - - static value_type done() - { return std::numeric_limits::max()/2; } - public: - Marker(size_type _num, VertexIndexMap index_map) - : tag(1 - std::numeric_limits::max()), - data(_num, - std::numeric_limits::max()), - id(index_map) {} - - void mark_done(Vertex node) { data[id[node]] = done(); } - - bool is_done(Vertex node) { return data[id[node]] == done(); } - - void mark_tagged(Vertex node) { data[id[node]] = tag; } - - void mark_multiple_tagged(Vertex node) { data[id[node]] = multiple_tag; } - - bool is_tagged(Vertex node) const { return data[id[node]] >= tag; } - - bool is_not_tagged(Vertex node) const { return data[id[node]] < tag; } - - bool is_multiple_tagged(Vertex node) const - { return data[id[node]] >= multiple_tag; } - - void increment_tag() { - const size_type num = data.size(); - ++tag; - if ( tag >= done() ) { - tag = 1 - std::numeric_limits::max(); - for (size_type i = 0; i < num; ++i) - if ( data[i] < done() ) - data[i] = - std::numeric_limits::max(); - } - } - - void set_multiple_tag(value_type mdeg0) - { - const size_type num = data.size(); - multiple_tag = tag + mdeg0; - - if ( multiple_tag >= done() ) { - tag = 1-std::numeric_limits::max(); - - for (size_type i=0; i::max(); - - multiple_tag = tag + mdeg0; - } - } - - void set_tag_as_multiple_tag() { tag = multiple_tag; } - - protected: - value_type tag; - value_type multiple_tag; - std::vector data; - VertexIndexMap id; - }; - - template< class Iterator, class SignedInteger, - class Vertex, class VertexIndexMap, int offset = 1 > - class Numbering { - typedef SignedInteger number_type; - number_type num; //start from 1 instead of zero - Iterator data; - number_type max_num; - VertexIndexMap id; - public: - Numbering(Iterator _data, number_type _max_num, VertexIndexMap id) - : num(1), data(_data), max_num(_max_num), id(id) {} - void operator()(Vertex node) { data[id[node]] = -num; } - bool all_done(number_type i = 0) const { return num + i > max_num; } - void increment(number_type i = 1) { num += i; } - bool is_numbered(Vertex node) const { - return data[id[node]] < 0; - } - void indistinguishable(Vertex i, Vertex j) { - data[id[i]] = - (id[j] + offset); - } - }; - - template - class degreelists_marker { - public: - typedef SignedInteger value_type; - typedef typename std::vector::size_type size_type; - degreelists_marker(size_type n, VertexIndexMap id) - : marks(n, 0), id(id) {} - void mark_need_update(Vertex i) { marks[id[i]] = 1; } - bool need_update(Vertex i) { return marks[id[i]] == 1; } - bool outmatched_or_done (Vertex i) { return marks[id[i]] == -1; } - void mark(Vertex i) { marks[id[i]] = -1; } - void unmark(Vertex i) { marks[id[i]] = 0; } - private: - std::vector marks; - VertexIndexMap id; - }; - - // Helper function object for edge removal - template - class predicateRemoveEdge1 { - typedef typename graph_traits::vertex_descriptor vertex_t; - typedef typename graph_traits::edge_descriptor edge_t; - public: - predicateRemoveEdge1(Graph& _g, MarkerP& _marker, - NumberD _numbering, Stack& n_e, VertexIndexMap id) - : g(&_g), marker(&_marker), numbering(_numbering), - neighbor_elements(&n_e), id(id) {} - - bool operator()(edge_t e) { - vertex_t dist = target(e, *g); - if ( marker->is_tagged(dist) ) - return true; - marker->mark_tagged(dist); - if (numbering.is_numbered(dist)) { - neighbor_elements->push(id[dist]); - return true; - } - return false; - } - private: - Graph* g; - MarkerP* marker; - NumberD numbering; - Stack* neighbor_elements; - VertexIndexMap id; - }; - - // Helper function object for edge removal - template - class predicate_remove_tagged_edges - { - typedef typename graph_traits::vertex_descriptor vertex_t; - typedef typename graph_traits::edge_descriptor edge_t; - public: - predicate_remove_tagged_edges(Graph& _g, MarkerP& _marker) - : g(&_g), marker(&_marker) {} - - bool operator()(edge_t e) { - vertex_t dist = target(e, *g); - if ( marker->is_tagged(dist) ) - return true; - return false; - } - private: - Graph* g; - MarkerP* marker; - }; - - template - class mmd_impl - { - // Typedefs - typedef graph_traits Traits; - typedef typename Traits::vertices_size_type size_type; - typedef typename detail::integer_traits::difference_type - diff_t; - typedef typename Traits::vertex_descriptor vertex_t; - typedef typename Traits::adjacency_iterator adj_iter; - typedef iterator_property_map IndexVertexMap; - typedef detail::Stacks Workspace; - typedef bucket_sorter - DegreeLists; - typedef Numbering - NumberingD; - typedef degreelists_marker - DegreeListsMarker; - typedef Marker MarkerP; - - // Data Members - - // input parameters - Graph& G; - int delta; - DegreeMap degree; - InversePermutationMap inverse_perm; - PermutationMap perm; - SuperNodeMap supernode_size; - VertexIndexMap vertex_index_map; - - // internal data-structures - std::vector index_vertex_vec; - size_type n; - IndexVertexMap index_vertex_map; - DegreeLists degreelists; - NumberingD numbering; - DegreeListsMarker degree_lists_marker; - MarkerP marker; - Workspace work_space; - public: - mmd_impl(Graph& g, size_type n_, int delta, DegreeMap degree, - InversePermutationMap inverse_perm, - PermutationMap perm, - SuperNodeMap supernode_size, - VertexIndexMap id) - : G(g), delta(delta), degree(degree), - inverse_perm(inverse_perm), - perm(perm), - supernode_size(supernode_size), - vertex_index_map(id), - index_vertex_vec(n_), - n(n_), - degreelists(n_ + 1, n_, degree, id), - numbering(inverse_perm, n_, vertex_index_map), - degree_lists_marker(n_, vertex_index_map), - marker(n_, vertex_index_map), - work_space(n_) - { - typename graph_traits::vertex_iterator v, vend; - size_type vid = 0; - for (tie(v, vend) = vertices(G); v != vend; ++v, ++vid) - index_vertex_vec[vid] = *v; - index_vertex_map = IndexVertexMap(&index_vertex_vec[0]); - - // Initialize degreelists. Degreelists organizes the nodes - // according to their degree. - for (tie(v, vend) = vertices(G); v != vend; ++v) { - put(degree, *v, out_degree(*v, G)); - degreelists.push(*v); - } - } - - void do_mmd() - { - // Eliminate the isolated nodes -- these are simply the nodes - // with no neighbors, which are accessible as a list (really, a - // stack) at location 0. Since these don't affect any other - // nodes, we can eliminate them without doing degree updates. - typename DegreeLists::stack list_isolated = degreelists[0]; - while (!list_isolated.empty()) { - vertex_t node = list_isolated.top(); - marker.mark_done(node); - numbering(node); - numbering.increment(); - list_isolated.pop(); - } - size_type min_degree = 1; - typename DegreeLists::stack list_min_degree = degreelists[min_degree]; - - while (list_min_degree.empty()) { - ++min_degree; - list_min_degree = degreelists[min_degree]; - } - - // check if the whole eliminating process is done - while (!numbering.all_done()) { - - size_type min_degree_limit = min_degree + delta; // WARNING - typename Workspace::stack llist = work_space.make_stack(); - - // multiple elimination - while (delta >= 0) { - - // Find the next non-empty degree - for (list_min_degree = degreelists[min_degree]; - list_min_degree.empty() && min_degree <= min_degree_limit; - ++min_degree, list_min_degree = degreelists[min_degree]) - ; - if (min_degree > min_degree_limit) - break; - - const vertex_t node = list_min_degree.top(); - const size_type node_id = vertex_index_map[node]; - list_min_degree.pop(); - numbering(node); - - // check if node is the last one - if (numbering.all_done(supernode_size[node])) { - numbering.increment(supernode_size[node]); - break; - } - marker.increment_tag(); - marker.mark_tagged(node); - - this->eliminate(node); - - numbering.increment(supernode_size[node]); - llist.push(node_id); - } // multiple elimination - - if (numbering.all_done()) - break; - - this->update( llist, min_degree); - } - - } // do_mmd() - - void eliminate(vertex_t node) - { - typename Workspace::stack element_neighbor = work_space.make_stack(); - - // Create two function objects for edge removal - typedef typename Workspace::stack WorkStack; - predicateRemoveEdge1 - p(G, marker, numbering, element_neighbor, vertex_index_map); - - predicate_remove_tagged_edges p2(G, marker); - - // Reconstruct the adjacent node list, push element neighbor in a List. - remove_out_edge_if(node, p, G); - //during removal element neighbors are collected. - - while (!element_neighbor.empty()) { - // element absorb - size_type e_id = element_neighbor.top(); - vertex_t element = index_vertex_map[e_id]; - adj_iter i, i_end; - for (tie(i, i_end) = adjacent_vertices(element, G); i != i_end; ++i){ - vertex_t i_node = *i; - if (!marker.is_tagged(i_node) && !numbering.is_numbered(i_node)) { - marker.mark_tagged(i_node); - add_edge(node, i_node, G); - } - } - element_neighbor.pop(); - } - adj_iter v, ve; - for (tie(v, ve) = adjacent_vertices(node, G); v != ve; ++v) { - vertex_t v_node = *v; - if (!degree_lists_marker.need_update(v_node) - && !degree_lists_marker.outmatched_or_done(v_node)) { - degreelists.remove(v_node); - } - //update out edges of v_node - remove_out_edge_if(v_node, p2, G); - - if ( out_degree(v_node, G) == 0 ) { // indistinguishable nodes - supernode_size[node] += supernode_size[v_node]; - supernode_size[v_node] = 0; - numbering.indistinguishable(v_node, node); - marker.mark_done(v_node); - degree_lists_marker.mark(v_node); - } else { // not indistinguishable nodes - add_edge(v_node, node, G); - degree_lists_marker.mark_need_update(v_node); - } - } - } // eliminate() - - - template - void update(Stack llist, size_type& min_degree) - { - size_type min_degree0 = min_degree + delta + 1; - - while (! llist.empty()) { - size_type deg, deg0 = 0; - - marker.set_multiple_tag(min_degree0); - typename Workspace::stack q2list = work_space.make_stack(); - typename Workspace::stack qxlist = work_space.make_stack(); - - vertex_t current = index_vertex_map[llist.top()]; - adj_iter i, ie; - for (tie(i,ie) = adjacent_vertices(current, G); i != ie; ++i) { - vertex_t i_node = *i; - const size_type i_id = vertex_index_map[i_node]; - if (supernode_size[i_node] != 0) { - deg0 += supernode_size[i_node]; - marker.mark_multiple_tagged(i_node); - if (degree_lists_marker.need_update(i_node)) { - if (out_degree(i_node, G) == 2) - q2list.push(i_id); - else - qxlist.push(i_id); - } - } - } - - while (!q2list.empty()) { - const size_type u_id = q2list.top(); - vertex_t u_node = index_vertex_map[u_id]; - // if u_id is outmatched by others, no need to update degree - if (degree_lists_marker.outmatched_or_done(u_node)) { - q2list.pop(); - continue; - } - marker.increment_tag(); - deg = deg0; - - adj_iter nu = adjacent_vertices(u_node, G).first; - vertex_t neighbor = *nu; - if (neighbor == u_node) { - ++nu; - neighbor = *nu; - } - if (numbering.is_numbered(neighbor)) { - adj_iter i, ie; - for (tie(i,ie) = adjacent_vertices(neighbor, G); - i != ie; ++i) { - const vertex_t i_node = *i; - if (i_node == u_node || supernode_size[i_node] == 0) - continue; - if (marker.is_tagged(i_node)) { - if (degree_lists_marker.need_update(i_node)) { - if ( out_degree(i_node, G) == 2 ) { // is indistinguishable - supernode_size[u_node] += supernode_size[i_node]; - supernode_size[i_node] = 0; - numbering.indistinguishable(i_node, u_node); - marker.mark_done(i_node); - degree_lists_marker.mark(i_node); - } else // is outmatched - degree_lists_marker.mark(i_node); - } - } else { - marker.mark_tagged(i_node); - deg += supernode_size[i_node]; - } - } - } else - deg += supernode_size[neighbor]; - - deg -= supernode_size[u_node]; - degree[u_node] = deg; //update degree - degreelists[deg].push(u_node); - //u_id has been pushed back into degreelists - degree_lists_marker.unmark(u_node); - if (min_degree > deg) - min_degree = deg; - q2list.pop(); - } // while (!q2list.empty()) - - while (!qxlist.empty()) { - const size_type u_id = qxlist.top(); - const vertex_t u_node = index_vertex_map[u_id]; - - // if u_id is outmatched by others, no need to update degree - if (degree_lists_marker.outmatched_or_done(u_node)) { - qxlist.pop(); - continue; - } - marker.increment_tag(); - deg = deg0; - adj_iter i, ie; - for (tie(i, ie) = adjacent_vertices(u_node, G); i != ie; ++i) { - vertex_t i_node = *i; - if (marker.is_tagged(i_node)) - continue; - marker.mark_tagged(i_node); - - if (numbering.is_numbered(i_node)) { - adj_iter j, je; - for (tie(j, je) = adjacent_vertices(i_node, G); j != je; ++j) { - const vertex_t j_node = *j; - if (marker.is_not_tagged(j_node)) { - marker.mark_tagged(j_node); - deg += supernode_size[j_node]; - } - } - } else - deg += supernode_size[i_node]; - } // for adjacent vertices of u_node - deg -= supernode_size[u_node]; - degree[u_node] = deg; - degreelists[deg].push(u_node); - // u_id has been pushed back into degreelists - degree_lists_marker.unmark(u_node); - if (min_degree > deg) - min_degree = deg; - qxlist.pop(); - } // while (!qxlist.empty()) { - - marker.set_tag_as_multiple_tag(); - llist.pop(); - } // while (! llist.empty()) - - } // update() - - - void build_permutation(InversePermutationMap next, - PermutationMap prev) - { - // collect the permutation info - size_type i; - for (i = 0; i < n; ++i) { - diff_t size = supernode_size[index_vertex_map[i]]; - if ( size <= 0 ) { - prev[i] = next[i]; - supernode_size[index_vertex_map[i]] - = next[i] + 1; // record the supernode info - } else - prev[i] = - next[i]; - } - for (i = 1; i < n + 1; ++i) { - if ( prev[i-1] > 0 ) - continue; - diff_t parent = i; - while ( prev[parent - 1] < 0 ) { - parent = - prev[parent - 1]; - } - - diff_t root = parent; - diff_t num = prev[root - 1] + 1; - next[i-1] = - num; - prev[root-1] = num; - - parent = i; - diff_t next_node = - prev[parent - 1]; - while (next_node > 0) { - prev[parent-1] = - root; - parent = next_node; - next_node = - prev[parent - 1]; - } - } - for (i = 0; i < n; i++) { - diff_t num = - next[i] - 1; - next[i] = num; - prev[num] = i; - } - } // build_permutation() - }; - - } //namespace detail - - - // MMD algorithm - // - //The implementation presently includes the enhancements for mass - //elimination, incomplete degree update, multiple elimination, and - //external degree. - // - //Important Note: This implementation requires the BGL graph to be - //directed. Therefore, nonzero entry (i, j) in a symmetrical matrix - //A coresponds to two directed edges (i->j and j->i). - // - //see Alan George and Joseph W. H. Liu, The Evolution of the Minimum - //Degree Ordering Algorithm, SIAM Review, 31, 1989, Page 1-19 - template - void minimum_degree_ordering - (Graph& G, - DegreeMap degree, - InversePermutationMap inverse_perm, - PermutationMap perm, - SuperNodeMap supernode_size, - int delta, - VertexIndexMap vertex_index_map) - { - detail::mmd_impl - impl(G, num_vertices(G), delta, degree, inverse_perm, - perm, supernode_size, vertex_index_map); - impl.do_mmd(); - impl.build_permutation(inverse_perm, perm); - } - -} // namespace boost - -#endif // MINIMUM_DEGREE_ORDERING_HPP diff --git a/sdk/include/boost/graph/named_function_params.hpp b/sdk/include/boost/graph/named_function_params.hpp deleted file mode 100644 index 2c3eff46d31..00000000000 --- a/sdk/include/boost/graph/named_function_params.hpp +++ /dev/null @@ -1,605 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_GRAPH_NAMED_FUNCTION_PARAMS_HPP -#define BOOST_GRAPH_NAMED_FUNCTION_PARAMS_HPP - -#include - -namespace boost { - - struct distance_compare_t { }; - struct distance_combine_t { }; - struct distance_inf_t { }; - struct distance_zero_t { }; - struct buffer_param_t { }; - struct edge_copy_t { }; - struct vertex_copy_t { }; - struct vertex_isomorphism_t { }; - struct vertex_invariant_t { }; - struct vertex_invariant1_t { }; - struct vertex_invariant2_t { }; - struct edge_compare_t { }; - struct vertex_max_invariant_t { }; - struct orig_to_copy_t { }; - struct root_vertex_t { }; - - namespace detail { - template - struct wrap_ref { - wrap_ref(T& r) : ref(r) {} - T& ref; - }; - } - - template - struct bgl_named_params : public Base - { - typedef bgl_named_params self; - typedef Base next_type; - typedef Tag tag_type; - typedef T value_type; - bgl_named_params(T v) : m_value(v) { } - bgl_named_params(T v, const Base& b) : Base(b), m_value(v) { } - T m_value; - - template - bgl_named_params - weight_map(const WeightMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - weight_map2(const WeightMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - distance_map(const DistanceMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - predecessor_map(const PredecessorMap& pmap) const { - typedef bgl_named_params - Params; - return Params(pmap, *this); - } - - template - bgl_named_params - rank_map(const RankMap& pmap) const { - typedef bgl_named_params - Params; - return Params(pmap, *this); - } - - template - bgl_named_params - root_map(const RootMap& pmap) const { - typedef bgl_named_params - Params; - return Params(pmap, *this); - } - - template - bgl_named_params - root_vertex(const Vertex& r) const { - typedef bgl_named_params Params; - return Params(r, *this); - } - - template - bgl_named_params - color_map(const ColorMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - vertex_color_map(const ColorMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - edge_color_map(const ColorMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - capacity_map(CapacityMap pmap) { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - residual_capacity_map(Residual_CapacityMap pmap) { - typedef bgl_named_params - Params; - return Params(pmap, *this); - } - - template - bgl_named_params - reverse_edge_map(ReverseMap pmap) { - typedef bgl_named_params - Params; - return Params(pmap, *this); - } - - template - bgl_named_params - discover_time_map(const DiscoverTimeMap& pmap) const { - typedef bgl_named_params - Params; - return Params(pmap, *this); - } - - template - bgl_named_params - vertex_index_map(const IndexMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - vertex_index1_map(const IndexMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - vertex_index2_map(const IndexMap& pmap) const { - typedef bgl_named_params Params; - return Params(pmap, *this); - } - - template - bgl_named_params - visitor(const Visitor& vis) const { - typedef bgl_named_params Params; - return Params(vis, *this); - } - - template - bgl_named_params - distance_compare(Compare cmp) const { - typedef bgl_named_params Params; - return Params(cmp, *this); - } - - template - bgl_named_params - distance_combine(Combine cmb) const { - typedef bgl_named_params Params; - return Params(cmb, *this); - } - - template - bgl_named_params - distance_inf(Init init) const { - typedef bgl_named_params Params; - return Params(init, *this); - } - - template - bgl_named_params - distance_zero(Init init) const { - typedef bgl_named_params Params; - return Params(init, *this); - } - - template - bgl_named_params, buffer_param_t, self> - buffer(Buffer& b) const { - typedef bgl_named_params, buffer_param_t, self> - Params; - return Params(detail::wrap_ref(b), *this); - } - - template - bgl_named_params - edge_copy(const Copier& c) const { - typedef bgl_named_params Params; - return Params(c, *this); - } - - template - bgl_named_params - vertex_copy(const Copier& c) const { - typedef bgl_named_params Params; - return Params(c, *this); - } - - template - bgl_named_params - orig_to_copy(const Orig2CopyMap& c) const { - typedef bgl_named_params Params; - return Params(c, *this); - } - - template - bgl_named_params - isomorphism_map(const IsoMap& c) const { - typedef bgl_named_params Params; - return Params(c, *this); - } - - template - bgl_named_params - vertex_invariant(const VertexInvar& c) const { - typedef bgl_named_params Params; - return Params(c, *this); - } - - }; - - template - bgl_named_params - weight_map(WeightMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - weight_map2(WeightMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - distance_map(DistanceMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - predecessor_map(PredecessorMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - rank_map(RankMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - root_map(RootMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - root_vertex(const Vertex& r) { - typedef bgl_named_params Params; - return Params(r); - } - - template - bgl_named_params - color_map(ColorMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - capacity_map(CapacityMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - residual_capacity_map(Residual_CapacityMap pmap) { - typedef bgl_named_params - Params; - return Params(pmap); - } - - template - bgl_named_params - reverse_edge_map(ReverseMap pmap) { - typedef bgl_named_params - Params; - return Params(pmap); - } - - template - bgl_named_params - discover_time_map(DiscoverTimeMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - vertex_index_map(IndexMap pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - vertex_index1_map(const IndexMap& pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - vertex_index2_map(const IndexMap& pmap) { - typedef bgl_named_params Params; - return Params(pmap); - } - - template - bgl_named_params - visitor(const Visitor& vis) { - typedef bgl_named_params Params; - return Params(vis); - } - - template - bgl_named_params - distance_compare(Compare cmp) { - typedef bgl_named_params Params; - return Params(cmp); - } - - template - bgl_named_params - distance_combine(Combine cmb) { - typedef bgl_named_params Params; - return Params(cmb); - } - - template - bgl_named_params - distance_inf(Init init) { - typedef bgl_named_params Params; - return Params(init); - } - - template - bgl_named_params - distance_zero(Init init) { - typedef bgl_named_params Params; - return Params(init); - } - - template - bgl_named_params, buffer_param_t> - buffer(Buffer& b) { - typedef bgl_named_params, buffer_param_t> Params; - return Params(detail::wrap_ref(b)); - } - - template - bgl_named_params - edge_copy(const Copier& c) { - typedef bgl_named_params Params; - return Params(c); - } - - template - bgl_named_params - vertex_copy(const Copier& c) { - typedef bgl_named_params Params; - return Params(c); - } - - template - bgl_named_params - orig_to_copy(const Orig2CopyMap& c) { - typedef bgl_named_params Params; - return Params(c); - } - - template - bgl_named_params - isomorphism_map(const IsoMap& c) { - typedef bgl_named_params Params; - return Params(c); - } - - template - bgl_named_params - vertex_invariant(const VertexInvar& c) { - typedef bgl_named_params Params; - return Params(c); - } - - //=========================================================================== - // Functions for extracting parameters from bgl_named_params - - template - inline - typename property_value< bgl_named_params, Tag2>::type - get_param(const bgl_named_params& p, Tag2 tag2) - { - enum { match = detail::same_property::value }; - typedef typename - property_value< bgl_named_params, Tag2>::type T2; - T2* t2 = 0; - typedef detail::property_value_dispatch Dispatcher; - return Dispatcher::const_get_value(p, t2, tag2); - } - - - namespace detail { - // MSVC++ workaround - template - struct choose_param_helper { - template struct result { typedef Param type; }; - template - static const Param& apply(const Param& p, const Default&) { return p; } - }; - template <> - struct choose_param_helper { - template struct result { typedef Default type; }; - template - static const Default& apply(const error_property_not_found&, const Default& d) - { return d; } - }; - } // namespace detail - - template - const typename detail::choose_param_helper

::template result::type& - choose_param(const P& param, const Default& d) { - return detail::choose_param_helper

::apply(param, d); - } - - template - inline bool is_default_param(const T&) { return false; } - - inline bool is_default_param(const detail::error_property_not_found&) - { return true; } - - namespace detail { - - struct choose_parameter { - template - struct bind_ { - typedef const P& const_result_type; - typedef const P& result_type; - typedef P type; - }; - - template - static typename bind_::const_result_type - const_apply(const P& p, const Graph&, Tag&) - { return p; } - - template - static typename bind_::result_type - apply(const P& p, Graph&, Tag&) - { return p; } - }; - - struct choose_default_param { - template - struct bind_ { - typedef typename property_map::type - result_type; - typedef typename property_map::const_type - const_result_type; - typedef typename property_map::const_type - type; - }; - - template - static typename bind_::const_result_type - const_apply(const P&, const Graph& g, Tag tag) { - return get(tag, g); - } - template - static typename bind_::result_type - apply(const P&, Graph& g, Tag tag) { - return get(tag, g); - } - }; - - template - struct choose_property_map { - typedef choose_parameter type; - }; - template <> - struct choose_property_map { - typedef choose_default_param type; - }; - - template - struct choose_pmap_helper { - typedef typename choose_property_map::type Selector; - typedef typename Selector:: template bind_ Bind; - typedef Bind type; - typedef typename Bind::result_type result_type; - typedef typename Bind::const_result_type const_result_type; - typedef typename Bind::type result; - }; - - // used in the max-flow algorithms - template - struct edge_capacity_value - { - typedef bgl_named_params Params; - typedef typename property_value< Params, edge_capacity_t>::type Param; - typedef typename detail::choose_pmap_helper::result CapacityEdgeMap; - typedef typename property_traits::value_type type; - }; - - } // namespace detail - - - // Use this function instead of choose_param() when you want - // to avoid requiring get(tag, g) when it is not used. - template - typename - detail::choose_pmap_helper::const_result_type - choose_const_pmap(const Param& p, const Graph& g, PropertyTag tag) - { - typedef typename - detail::choose_pmap_helper::Selector Choice; - return Choice::const_apply(p, g, tag); - } - - template - typename detail::choose_pmap_helper::result_type - choose_pmap(const Param& p, Graph& g, PropertyTag tag) - { - typedef typename - detail::choose_pmap_helper::Selector Choice; - return Choice::apply(p, g, tag); - } - -} // namespace boost - -#endif // BOOST_GRAPH_NAMED_FUNCTION_PARAMS_HPP diff --git a/sdk/include/boost/graph/neighbor_bfs.hpp b/sdk/include/boost/graph/neighbor_bfs.hpp deleted file mode 100644 index 73cb79db6a5..00000000000 --- a/sdk/include/boost/graph/neighbor_bfs.hpp +++ /dev/null @@ -1,339 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_NEIGHBOR_BREADTH_FIRST_SEARCH_HPP -#define BOOST_GRAPH_NEIGHBOR_BREADTH_FIRST_SEARCH_HPP - -/* - Neighbor Breadth First Search - Like BFS, but traverses in-edges as well as out-edges. - (for directed graphs only. use normal BFS for undirected graphs) -*/ -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - template - struct NeighborBFSVisitorConcept { - void constraints() { - function_requires< CopyConstructibleConcept >(); - vis.initialize_vertex(u, g); - vis.discover_vertex(u, g); - vis.examine_vertex(u, g); - vis.examine_out_edge(e, g); - vis.examine_in_edge(e, g); - vis.tree_out_edge(e, g); - vis.tree_in_edge(e, g); - vis.non_tree_out_edge(e, g); - vis.non_tree_in_edge(e, g); - vis.gray_target(e, g); - vis.black_target(e, g); - vis.gray_source(e, g); - vis.black_source(e, g); - vis.finish_vertex(u, g); - } - Visitor vis; - Graph g; - typename graph_traits::vertex_descriptor u; - typename graph_traits::edge_descriptor e; - }; - - template - class neighbor_bfs_visitor { - public: - neighbor_bfs_visitor(Visitors vis = Visitors()) : m_vis(vis) { } - - template - void initialize_vertex(Vertex u, Graph& g) { - invoke_visitors(m_vis, u, g, on_initialize_vertex()); - } - template - void discover_vertex(Vertex u, Graph& g) { - invoke_visitors(m_vis, u, g, on_discover_vertex()); - } - template - void examine_vertex(Vertex u, Graph& g) { - invoke_visitors(m_vis, u, g, on_examine_vertex()); - } - template - void examine_out_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_examine_edge()); - } - template - void tree_out_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_tree_edge()); - } - template - void non_tree_out_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_non_tree_edge()); - } - template - void gray_target(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_gray_target()); - } - template - void black_target(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_black_target()); - } - template - void examine_in_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_examine_edge()); - } - template - void tree_in_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_tree_edge()); - } - template - void non_tree_in_edge(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_non_tree_edge()); - } - template - void gray_source(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_gray_target()); - } - template - void black_source(Edge e, Graph& g) { - invoke_visitors(m_vis, e, g, on_black_target()); - } - template - void finish_vertex(Vertex u, Graph& g) { - invoke_visitors(m_vis, u, g, on_finish_vertex()); - } - protected: - Visitors m_vis; - }; - - template - neighbor_bfs_visitor - make_neighbor_bfs_visitor(Visitors vis) { - return neighbor_bfs_visitor(vis); - } - - namespace detail { - - template - void neighbor_bfs_impl - (const BidirectionalGraph& g, - typename graph_traits::vertex_descriptor s, - Buffer& Q, BFSVisitor vis, ColorMap color) - - { - function_requires< BidirectionalGraphConcept >(); - typedef graph_traits GTraits; - typedef typename GTraits::vertex_descriptor Vertex; - typedef typename GTraits::edge_descriptor Edge; - function_requires< - NeighborBFSVisitorConcept >(); - function_requires< ReadWritePropertyMapConcept >(); - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - - put(color, s, Color::gray()); - vis.discover_vertex(s, g); - Q.push(s); - while (! Q.empty()) { - Vertex u = Q.top(); - Q.pop(); // pop before push to avoid problem if Q is priority_queue. - vis.examine_vertex(u, g); - - typename GTraits::out_edge_iterator ei, ei_end; - for (tie(ei, ei_end) = out_edges(u, g); ei != ei_end; ++ei) { - Edge e = *ei; - vis.examine_out_edge(e, g); - Vertex v = target(e, g); - ColorValue v_color = get(color, v); - if (v_color == Color::white()) { - vis.tree_out_edge(e, g); - put(color, v, Color::gray()); - vis.discover_vertex(v, g); - Q.push(v); - } else { - vis.non_tree_out_edge(e, g); - if (v_color == Color::gray()) - vis.gray_target(e, g); - else - vis.black_target(e, g); - } - } // for out-edges - - typename GTraits::in_edge_iterator in_ei, in_ei_end; - for (tie(in_ei, in_ei_end) = in_edges(u, g); - in_ei != in_ei_end; ++in_ei) { - Edge e = *in_ei; - vis.examine_in_edge(e, g); - Vertex v = source(e, g); - ColorValue v_color = get(color, v); - if (v_color == Color::white()) { - vis.tree_in_edge(e, g); - put(color, v, Color::gray()); - vis.discover_vertex(v, g); - Q.push(v); - } else { - vis.non_tree_in_edge(e, g); - if (v_color == Color::gray()) - vis.gray_source(e, g); - else - vis.black_source(e, g); - } - } // for in-edges - - put(color, u, Color::black()); - vis.finish_vertex(u, g); - } // while - } - - - template - void neighbor_bfs_helper - (VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - ColorMap color, - BFSVisitor vis, - const bgl_named_params& params) - { - typedef graph_traits Traits; - // Buffer default - typedef typename Traits::vertex_descriptor Vertex; - typedef boost::queue queue_t; - queue_t Q; - detail::wrap_ref Qref(Q); - // Initialization - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - typename boost::graph_traits::vertex_iterator i, i_end; - for (tie(i, i_end) = vertices(g); i != i_end; ++i) { - put(color, *i, Color::white()); - vis.initialize_vertex(*i, g); - } - neighbor_bfs_impl - (g, s, - choose_param(get_param(params, buffer_param_t()), Qref).ref, - vis, color); - } - - //------------------------------------------------------------------------- - // Choose between default color and color parameters. Using - // function dispatching so that we don't require vertex index if - // the color default is not being used. - - template - struct neighbor_bfs_dispatch { - template - static void apply - (VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params, - ColorMap color) - { - neighbor_bfs_helper - (g, s, color, - choose_param(get_param(params, graph_visitor), - make_neighbor_bfs_visitor(null_visitor())), - params); - } - }; - - template <> - struct neighbor_bfs_dispatch { - template - static void apply - (VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params, - detail::error_property_not_found) - { - std::vector color_vec(num_vertices(g)); - null_visitor null_vis; - - neighbor_bfs_helper - (g, s, - make_iterator_property_map - (color_vec.begin(), - choose_const_pmap(get_param(params, vertex_index), - g, vertex_index), color_vec[0]), - choose_param(get_param(params, graph_visitor), - make_neighbor_bfs_visitor(null_vis)), - params); - } - }; - - } // namespace detail - - - // Named Parameter Variant - template - void neighbor_breadth_first_search - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params) - { - // The graph is passed by *const* reference so that graph adaptors - // (temporaries) can be passed into this function. However, the - // graph is not really const since we may write to property maps - // of the graph. - VertexListGraph& ng = const_cast(g); - typedef typename property_value< bgl_named_params, - vertex_color_t>::type C; - detail::neighbor_bfs_dispatch::apply(ng, s, params, - get_param(params, vertex_color)); - } - - - // This version does not initialize colors, user has to. - - template - void neighbor_breadth_first_visit - (IncidenceGraph& g, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params) - { - typedef graph_traits Traits; - // Buffer default - typedef boost::queue queue_t; - queue_t Q; - detail::wrap_ref Qref(Q); - - detail::neighbor_bfs_impl - (g, s, - choose_param(get_param(params, buffer_param_t()), Qref).ref, - choose_param(get_param(params, graph_visitor), - make_neighbor_bfs_visitor(null_visitor())), - choose_pmap(get_param(params, vertex_color), g, vertex_color) - ); - } - -} // namespace boost - -#endif // BOOST_GRAPH_NEIGHBOR_BREADTH_FIRST_SEARCH_HPP - diff --git a/sdk/include/boost/graph/prim_minimum_spanning_tree.hpp b/sdk/include/boost/graph/prim_minimum_spanning_tree.hpp deleted file mode 100644 index b3b1facc8b2..00000000000 --- a/sdk/include/boost/graph/prim_minimum_spanning_tree.hpp +++ /dev/null @@ -1,107 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_MST_PRIM_HPP -#define BOOST_GRAPH_MST_PRIM_HPP - -#include -#include -#include - -namespace boost { - - namespace detail { - // this should be somewhere else in boost... - template struct _project2nd { - V operator()(U, V v) const { return v; } - }; - } - - namespace detail { - - // This is Prim's algorithm to calculate the Minimum Spanning Tree - // for an undirected graph with weighted edges. - - template - inline void - prim_mst_impl(const Graph& G, - typename graph_traits::vertex_descriptor s, - const bgl_named_params& params, - Weight) - { - typedef typename property_traits::value_type W; - std::less compare; - detail::_project2nd combine; - dijkstra_shortest_paths(G, s, params.distance_compare(compare). - distance_combine(combine)); - } - } // namespace detail - - template - inline void - prim_minimum_spanning_tree - (const VertexListGraph& g, - typename graph_traits::vertex_descriptor s, - PredecessorMap predecessor, DistanceMap distance, WeightMap weight, - IndexMap index_map, - DijkstraVisitor vis) - { - typedef typename property_traits::value_type W; - std::less compare; - detail::_project2nd combine; - dijkstra_shortest_paths(g, s, predecessor, distance, weight, index_map, - compare, combine, std::numeric_limits::max(), 0, - vis); - } - - template - inline void prim_minimum_spanning_tree - (const VertexListGraph& g, - PredecessorMap p_map, - const bgl_named_params& params) - { - detail::prim_mst_impl - (g, - choose_param(get_param(params, root_vertex_t()), *vertices(g).first), - params.predecessor_map(p_map), - choose_const_pmap(get_param(params, edge_weight), g, edge_weight)); - } - - template - inline void prim_minimum_spanning_tree - (const VertexListGraph& g, PredecessorMap p_map) - { - detail::prim_mst_impl - (g, *vertices(g).first, predecessor_map(p_map). - weight_map(get(edge_weight, g)), - get(edge_weight, g)); - } - -} // namespace boost - -#endif // BOOST_GRAPH_MST_PRIM_HPP diff --git a/sdk/include/boost/graph/profile.hpp b/sdk/include/boost/graph/profile.hpp deleted file mode 100644 index 2ae7b8e7fe5..00000000000 --- a/sdk/include/boost/graph/profile.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// -//======================================================================= -// Copyright 2002 Marc Wintermantel (wintermantel@imes.mavt.ethz.ch) -// ETH Zurich, Center of Structure Technologies (www.imes.ethz.ch/st) -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -#ifndef BOOST_GRAPH_PROFILE_HPP -#define BOOST_GRAPH_PROFILE_HPP - -#include -#include -#include - -namespace boost { - - template - typename graph_traits::vertices_size_type - profile(const Graph& g, VertexIndexMap index) - { - typename graph_traits::vertices_size_type b = 0; - typename graph_traits::vertex_iterator i, end; - for (tie(i, end) = vertices(g); i != end; ++i){ - b += ith_bandwidth(*i, g, index) + 1; - } - - return b; - } - - template - typename graph_traits::vertices_size_type - profile(const Graph& g) - { - return profile(g, get(vertex_index, g)); - } - - -} // namespace boost - -#endif // BOOST_GRAPH_PROFILE_HPP diff --git a/sdk/include/boost/graph/properties.hpp b/sdk/include/boost/graph/properties.hpp deleted file mode 100644 index 2f83e698bf8..00000000000 --- a/sdk/include/boost/graph/properties.hpp +++ /dev/null @@ -1,332 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_GRAPH_PROPERTIES_HPP -#define BOOST_GRAPH_PROPERTIES_HPP - -#include -#include -#include -#include -#include - -namespace boost { - - enum default_color_type { white_color, gray_color, green_color, red_color, black_color }; - - template - struct color_traits { - static default_color_type white() { return white_color; } - static default_color_type gray() { return gray_color; } - static default_color_type green() { return green_color; } - static default_color_type red() { return red_color; } - static default_color_type black() { return black_color; } - }; - - // These functions are now obsolete, replaced by color_traits. - inline default_color_type white(default_color_type) { return white_color; } - inline default_color_type gray(default_color_type) { return gray_color; } - inline default_color_type green(default_color_type) { return green_color; } - inline default_color_type red(default_color_type) { return red_color; } - inline default_color_type black(default_color_type) { return black_color; } - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template <> - struct property_traits { - typedef default_color_type value_type; - typedef std::ptrdiff_t key_type; - typedef default_color_type& reference; - typedef lvalue_property_map_tag category; - }; - // get/put already defined for T* -#endif - - struct graph_property_tag { }; - struct vertex_property_tag { }; - struct edge_property_tag { }; - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // See examples/edge_property.cpp for how to use this. -#define BOOST_INSTALL_PROPERTY(KIND, NAME) \ - template <> struct property_kind { \ - typedef KIND##_property_tag type; \ - } -#else -#define BOOST_INSTALL_PROPERTY(KIND, NAME) \ - template <> struct property_kind { \ - typedef KIND##_property_tag type; \ - } -#endif - -#define BOOST_DEF_PROPERTY(KIND, NAME) \ - enum KIND##_##NAME##_t { KIND##_##NAME }; \ - BOOST_INSTALL_PROPERTY(KIND, NAME) - - BOOST_DEF_PROPERTY(vertex, all); - BOOST_DEF_PROPERTY(edge, all); - BOOST_DEF_PROPERTY(graph, all); - BOOST_DEF_PROPERTY(vertex, index); - BOOST_DEF_PROPERTY(vertex, index1); - BOOST_DEF_PROPERTY(vertex, index2); - BOOST_DEF_PROPERTY(vertex, root); - BOOST_DEF_PROPERTY(edge, index); - BOOST_DEF_PROPERTY(edge, name); - BOOST_DEF_PROPERTY(edge, weight); - BOOST_DEF_PROPERTY(edge, weight2); - BOOST_DEF_PROPERTY(edge, color); - BOOST_DEF_PROPERTY(vertex, name); - BOOST_DEF_PROPERTY(graph, name); - BOOST_DEF_PROPERTY(vertex, distance); - BOOST_DEF_PROPERTY(vertex, color); - BOOST_DEF_PROPERTY(vertex, degree); - BOOST_DEF_PROPERTY(vertex, in_degree); - BOOST_DEF_PROPERTY(vertex, out_degree); - BOOST_DEF_PROPERTY(vertex, current_degree); - BOOST_DEF_PROPERTY(vertex, priority); - BOOST_DEF_PROPERTY(vertex, discover_time); - BOOST_DEF_PROPERTY(vertex, finish_time); - BOOST_DEF_PROPERTY(vertex, predecessor); - BOOST_DEF_PROPERTY(vertex, rank); - BOOST_DEF_PROPERTY(edge, reverse); - BOOST_DEF_PROPERTY(edge, capacity); - BOOST_DEF_PROPERTY(edge, residual_capacity); - BOOST_DEF_PROPERTY(graph, visitor); - -#undef BOOST_DEF_PROPERTY - - namespace detail { - - struct dummy_edge_property_selector { - template - struct bind_ { - typedef identity_property_map type; - typedef identity_property_map const_type; - }; - }; - struct dummy_vertex_property_selector { - template - struct bind_ { - typedef identity_property_map type; - typedef identity_property_map const_type; - }; - }; - - } // namespace detail - - // Graph classes can either partially specialize property_map - // or they can specialize these two selector classes. - template - struct edge_property_selector { - typedef detail::dummy_edge_property_selector type; - }; - - template - struct vertex_property_selector { - typedef detail::dummy_vertex_property_selector type; - }; - - namespace detail { - - template - struct edge_property_map { - typedef typename Graph::edge_property_type Property; - typedef typename Graph::graph_tag graph_tag; - typedef typename edge_property_selector::type Selector; - typedef typename Selector::template bind_ - Bind; - typedef typename Bind::type type; - typedef typename Bind::const_type const_type; - }; - template - class vertex_property_map { - typedef typename Graph::vertex_property_type Property; - typedef typename Graph::graph_tag graph_tag; - typedef typename vertex_property_selector::type Selector; - typedef typename Selector::template bind_ - Bind; - public: - typedef typename Bind::type type; - typedef typename Bind::const_type const_type; - }; - - // This selects the kind of property map, whether is maps from - // edges or from vertices. - // - // It is overly complicated because it's a workaround for - // partial specialization. - struct choose_vertex_property_map { - template - struct bind_ { - typedef vertex_property_map type; - }; - }; - struct choose_edge_property_map { - template - struct bind_ { - typedef edge_property_map type; - }; - }; - template - struct property_map_kind_selector { - // VC++ gets confused if this isn't defined, even though - // this never gets used. - typedef choose_vertex_property_map type; - }; - template <> struct property_map_kind_selector { - typedef choose_vertex_property_map type; - }; - template <> struct property_map_kind_selector { - typedef choose_edge_property_map type; - }; - } // namespace detail - - template - struct property_map { - private: - typedef typename property_kind::type Kind; - typedef typename detail::property_map_kind_selector::type Selector; - typedef typename Selector::template bind_ Bind; - typedef typename Bind::type Map; - public: - typedef typename Map::type type; - typedef typename Map::const_type const_type; - }; - - // shortcut for accessing the value type of the property map - template - class property_map_value { - typedef typename property_map::const_type PMap; - public: - typedef typename property_traits::value_type type; - }; - - template - class graph_property { - public: - typedef typename property_value::type type; - }; - - template - class vertex_property { - public: - typedef typename Graph::vertex_property_type type; - }; - template - class edge_property { - public: - typedef typename Graph::edge_property_type type; - }; - - template - class degree_property_map - : public put_get_helper::degree_size_type, - degree_property_map > - { - public: - typedef typename graph_traits::vertex_descriptor key_type; - typedef typename graph_traits::degree_size_type value_type; - typedef value_type reference; - typedef readable_property_map_tag category; - degree_property_map(const Graph& g) : m_g(g) { } - value_type operator[](const key_type& v) const { - return degree(v, m_g); - } - private: - const Graph& m_g; - }; - template - inline degree_property_map - make_degree_map(const Graph& g) { - return degree_property_map(g); - } - - //======================================================================== - // Iterator Property Map Generating Functions contributed by - // Kevin Vanhorn. (see also the property map generating functions - // in boost/property_map.hpp) - -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) - // A helper function for creating a vertex property map out of a - // random access iterator and the internal vertex index map from a - // graph. - template - inline - iterator_property_map< - RandomAccessIterator, - typename property_map::type, - typename std::iterator_traits::value_type, - typename std::iterator_traits::reference - > - make_iterator_vertex_map(RandomAccessIterator iter, const PropertyGraph& g) - { - return make_iterator_property_map(iter, get(vertex_index, g)); - } - - // Use this next function when vertex_descriptor is known to be an - // integer type, with values ranging from 0 to num_vertices(g). - // - template - inline - iterator_property_map< - RandomAccessIterator, - identity_property_map, - typename std::iterator_traits::value_type, - typename std::iterator_traits::reference - > - make_iterator_vertex_map(RandomAccessIterator iter) - { - return make_iterator_property_map(iter, identity_property_map()); - } -#endif - - template - inline - iterator_property_map< - typename RandomAccessContainer::iterator, - typename property_map::type, - typename RandomAccessContainer::value_type, - typename RandomAccessContainer::reference - > - make_container_vertex_map(RandomAccessContainer& c, const PropertyGraph& g) - { - assert(c.size() >= num_vertices(g)); - return make_iterator_vertex_map(c.begin(), g); - } - - template inline - iterator_property_map< - typename RandomAccessContainer::iterator, - identity_property_map, - typename RandomAccessContainer::value_type, - typename RandomAccessContainer::reference - > - make_container_vertex_map(RandomAccessContainer& c) - { - return make_iterator_vertex_map(c.begin()); - } - -} // namespace boost - -#endif /* BOOST_GRAPH_PROPERTIES_HPPA */ diff --git a/sdk/include/boost/graph/property_iter_range.hpp b/sdk/include/boost/graph/property_iter_range.hpp deleted file mode 100644 index dfab03e30e9..00000000000 --- a/sdk/include/boost/graph/property_iter_range.hpp +++ /dev/null @@ -1,118 +0,0 @@ - -// (C) Copyright François Faure, iMAGIS-GRAVIR / UJF, 2001. Permission -// to copy, use, modify, sell and distribute this software is granted -// provided this copyright notice appears in all copies. This software -// is provided "as is" without express or implied warranty, and with -// no claim as to its suitability for any purpose. - -// Revision History: -// 03 May 2001 Jeremy Siek -// Generalized the property map iterator and moved that -// part to boost/property_map.hpp. Also modified to -// differentiate between const/mutable graphs and -// added a workaround to avoid partial specialization. - -// 02 May 2001 François Faure -// Initial version. - -#ifndef BOOST_GRAPH_PROPERTY_ITER_RANGE_HPP -#define BOOST_GRAPH_PROPERTY_ITER_RANGE_HPP - -#include -#include -#include -#include - -namespace boost { - -//====================================================================== -// graph property iterator range - - template - class graph_property_iter_range { - typedef typename property_map::type map_type; - typedef typename property_map::const_type - const_map_type; - typedef typename property_kind::type Kind; - typedef typename ct_if::value, - typename graph_traits::vertex_iterator, - typename graph_traits::edge_iterator>::type iter; - public: - typedef typename property_map_iterator_generator::type - iterator; - typedef typename property_map_iterator_generator - ::type const_iterator; - typedef std::pair type; - typedef std::pair const_type; - }; - - namespace detail { - - template - typename graph_property_iter_range::type - get_property_iter_range_kind(Graph& graph, const Tag& tag, - const vertex_property_tag& ) - { - typedef typename graph_property_iter_range::iterator iter; - return std::make_pair(iter(vertices(graph).first, get(tag, graph)), - iter(vertices(graph).second, get(tag, graph))); - } - - template - typename graph_property_iter_range::const_type - get_property_iter_range_kind(const Graph& graph, const Tag& tag, - const vertex_property_tag& ) - { - typedef typename graph_property_iter_range - ::const_iterator iter; - return std::make_pair(iter(vertices(graph).first, get(tag, graph)), - iter(vertices(graph).second, get(tag, graph))); - } - - - template - typename graph_property_iter_range::type - get_property_iter_range_kind(Graph& graph, const Tag& tag, - const edge_property_tag& ) - { - typedef typename graph_property_iter_range::iterator iter; - return std::make_pair(iter(edges(graph).first, get(tag, graph)), - iter(edges(graph).second, get(tag, graph))); - } - - template - typename graph_property_iter_range::const_type - get_property_iter_range_kind(const Graph& graph, const Tag& tag, - const edge_property_tag& ) - { - typedef typename graph_property_iter_range - ::const_iterator iter; - return std::make_pair(iter(edges(graph).first, get(tag, graph)), - iter(edges(graph).second, get(tag, graph))); - } - - } // namespace detail - - //====================================================================== - // get an iterator range of properties - - template - typename graph_property_iter_range::type - get_property_iter_range(Graph& graph, const Tag& tag) - { - typedef typename property_kind::type Kind; - return detail::get_property_iter_range_kind(graph, tag, Kind()); - } - - template - typename graph_property_iter_range::const_type - get_property_iter_range(const Graph& graph, const Tag& tag) - { - typedef typename property_kind::type Kind; - return detail::get_property_iter_range_kind(graph, tag, Kind()); - } - -} // namespace boost - - -#endif // BOOST_GRAPH_PROPERTY_ITER_RANGE_HPP diff --git a/sdk/include/boost/graph/push_relabel_max_flow.hpp b/sdk/include/boost/graph/push_relabel_max_flow.hpp deleted file mode 100644 index 87e4c26c029..00000000000 --- a/sdk/include/boost/graph/push_relabel_max_flow.hpp +++ /dev/null @@ -1,735 +0,0 @@ -//======================================================================= -// Copyright 2000 University of Notre Dame. -// Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_PUSH_RELABEL_MAX_FLOW_HPP -#define BOOST_PUSH_RELABEL_MAX_FLOW_HPP - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -namespace boost { - - namespace detail { - - // This implementation is based on Goldberg's - // "On Implementing Push-Relabel Method for the Maximum Flow Problem" - // by B.V. Cherkassky and A.V. Goldberg, IPCO '95, pp. 157--171 - // and on the h_prf.c and hi_pr.c code written by the above authors. - - // This implements the highest-label version of the push-relabel method - // with the global relabeling and gap relabeling heuristics. - - // The terms "rank", "distance", "height" are synonyms in - // Goldberg's implementation, paper and in the CLR. A "layer" is a - // group of vertices with the same distance. The vertices in each - // layer are categorized as active or inactive. An active vertex - // has positive excess flow and its distance is less than n (it is - // not blocked). - - template - struct preflow_layer { - std::list active_vertices; - std::list inactive_vertices; - }; - - template integer - class FlowValue> - class push_relabel - { - public: - typedef graph_traits Traits; - typedef typename Traits::vertex_descriptor vertex_descriptor; - typedef typename Traits::edge_descriptor edge_descriptor; - typedef typename Traits::vertex_iterator vertex_iterator; - typedef typename Traits::out_edge_iterator out_edge_iterator; - typedef typename Traits::vertices_size_type vertices_size_type; - typedef typename Traits::edges_size_type edges_size_type; - - typedef preflow_layer Layer; - typedef std::vector< Layer > LayerArray; - typedef typename LayerArray::iterator layer_iterator; - typedef typename LayerArray::size_type distance_size_type; - - typedef color_traits ColorTraits; - - //======================================================================= - // Some helper predicates - - inline bool is_admissible(vertex_descriptor u, vertex_descriptor v) { - return distance[u] == distance[v] + 1; - } - inline bool is_residual_edge(edge_descriptor a) { - return 0 < residual_capacity[a]; - } - inline bool is_saturated(edge_descriptor a) { - return residual_capacity[a] == 0; - } - - //======================================================================= - // Layer List Management Functions - - typedef typename std::list::iterator list_iterator; - - void add_to_active_list(vertex_descriptor u, Layer& layer) { - layer.active_vertices.push_front(u); - max_active = std::max(distance[u], max_active); - min_active = std::min(distance[u], min_active); - layer_list_ptr[u] = layer.active_vertices.begin(); - } - void remove_from_active_list(vertex_descriptor u) { - layers[distance[u]].active_vertices.erase(layer_list_ptr[u]); - } - - void add_to_inactive_list(vertex_descriptor u, Layer& layer) { - layer.inactive_vertices.push_front(u); - layer_list_ptr[u] = layer.inactive_vertices.begin(); - } - void remove_from_inactive_list(vertex_descriptor u) { - layers[distance[u]].inactive_vertices.erase(layer_list_ptr[u]); - } - - //======================================================================= - // initialization - push_relabel(Graph& g_, - EdgeCapacityMap cap, - ResidualCapacityEdgeMap res, - ReverseEdgeMap rev, - vertex_descriptor src_, - vertex_descriptor sink_, - VertexIndexMap idx) - : g(g_), n(num_vertices(g_)), capacity(cap), src(src_), sink(sink_), - index(idx), - excess_flow(num_vertices(g_)), - layer_list_ptr(num_vertices(g_)), - current(num_vertices(g_)), - distance(num_vertices(g_)), - color(num_vertices(g_)), - reverse_edge(rev), - residual_capacity(res), - layers(num_vertices(g_)), - push_count(0), update_count(0), relabel_count(0), - gap_count(0), gap_node_count(0), - work_since_last_update(0) - { - vertex_iterator u_iter, u_end; - // Don't count the reverse edges - edges_size_type m = num_edges(g) / 2; - nm = alpha() * n + m; - - // Initialize flow to zero which means initializing - // the residual capacity to equal the capacity. - out_edge_iterator ei, e_end; - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) - for (tie(ei, e_end) = out_edges(*u_iter, g); ei != e_end; ++ei) { - residual_capacity[*ei] = capacity[*ei]; - } - - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) { - vertex_descriptor u = *u_iter; - excess_flow[u] = 0; - current[u] = out_edges(u, g).first; - } - - bool overflow_detected = false; - FlowValue test_excess = 0; - - out_edge_iterator a_iter, a_end; - for (tie(a_iter, a_end) = out_edges(src, g); a_iter != a_end; ++a_iter) - if (target(*a_iter, g) != src) - test_excess += residual_capacity[*a_iter]; - if (test_excess > std::numeric_limits::max()) - overflow_detected = true; - - if (overflow_detected) - excess_flow[src] = std::numeric_limits::max(); - else { - excess_flow[src] = 0; - for (tie(a_iter, a_end) = out_edges(src, g); - a_iter != a_end; ++a_iter) { - edge_descriptor a = *a_iter; - if (target(a, g) != src) { - ++push_count; - FlowValue delta = residual_capacity[a]; - residual_capacity[a] -= delta; - residual_capacity[reverse_edge[a]] += delta; - excess_flow[target(a, g)] += delta; - } - } - } - max_distance = num_vertices(g) - 1; - max_active = 0; - min_active = n; - - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) { - vertex_descriptor u = *u_iter; - if (u == sink) { - distance[u] = 0; - continue; - } else if (u == src && !overflow_detected) - distance[u] = n; - else - distance[u] = 1; - - if (excess_flow[u] > 0) - add_to_active_list(u, layers[1]); - else if (distance[u] < n) - add_to_inactive_list(u, layers[1]); - } - - } // push_relabel constructor - - //======================================================================= - // This is a breadth-first search over the residual graph - // (well, actually the reverse of the residual graph). - // Would be cool to have a graph view adaptor for hiding certain - // edges, like the saturated (non-residual) edges in this case. - // Goldberg's implementation abused "distance" for the coloring. - void global_distance_update() - { - ++update_count; - vertex_iterator u_iter, u_end; - for (tie(u_iter,u_end) = vertices(g); u_iter != u_end; ++u_iter) { - color[*u_iter] = ColorTraits::white(); - distance[*u_iter] = n; - } - color[sink] = ColorTraits::gray(); - distance[sink] = 0; - - for (distance_size_type l = 0; l <= max_distance; ++l) { - layers[l].active_vertices.clear(); - layers[l].inactive_vertices.clear(); - } - - max_distance = max_active = 0; - min_active = n; - - Q.push(sink); - while (! Q.empty()) { - vertex_descriptor u = Q.top(); - Q.pop(); - distance_size_type d_v = distance[u] + 1; - - out_edge_iterator ai, a_end; - for (tie(ai, a_end) = out_edges(u, g); ai != a_end; ++ai) { - edge_descriptor a = *ai; - vertex_descriptor v = target(a, g); - if (color[v] == ColorTraits::white() - && is_residual_edge(reverse_edge[a])) { - distance[v] = d_v; - color[v] = ColorTraits::gray(); - current[v] = out_edges(v, g).first; - max_distance = std::max(d_v, max_distance); - - if (excess_flow[v] > 0) - add_to_active_list(v, layers[d_v]); - else - add_to_inactive_list(v, layers[d_v]); - - Q.push(v); - } - } - } - } // global_distance_update() - - //======================================================================= - // This function is called "push" in Goldberg's h_prf implementation, - // but it is called "discharge" in the paper and in hi_pr.c. - void discharge(vertex_descriptor u) - { - assert(excess_flow[u] > 0); - while (1) { - out_edge_iterator ai, ai_end; - for (ai = current[u], ai_end = out_edges(u, g).second; - ai != ai_end; ++ai) { - edge_descriptor a = *ai; - if (is_residual_edge(a)) { - vertex_descriptor v = target(a, g); - if (is_admissible(u, v)) { - ++push_count; - if (v != sink && excess_flow[v] == 0) { - remove_from_inactive_list(v); - add_to_active_list(v, layers[distance[v]]); - } - push_flow(a); - if (excess_flow[u] == 0) - break; - } - } - } // for out_edges of i starting from current - - Layer& layer = layers[distance[u]]; - distance_size_type du = distance[u]; - - if (ai == ai_end) { // i must be relabeled - relabel_distance(u); - if (layer.active_vertices.empty() - && layer.inactive_vertices.empty()) - gap(du); - if (distance[u] == n) - break; - } else { // i is no longer active - current[u] = ai; - add_to_inactive_list(u, layer); - break; - } - } // while (1) - } // discharge() - - //======================================================================= - // This corresponds to the "push" update operation of the paper, - // not the "push" function in Goldberg's h_prf.c implementation. - // The idea is to push the excess flow from from vertex u to v. - void push_flow(edge_descriptor u_v) - { - vertex_descriptor - u = source(u_v, g), - v = target(u_v, g); - - FlowValue flow_delta - = std::min(excess_flow[u], residual_capacity[u_v]); - - residual_capacity[u_v] -= flow_delta; - residual_capacity[reverse_edge[u_v]] += flow_delta; - - excess_flow[u] -= flow_delta; - excess_flow[v] += flow_delta; - } // push_flow() - - //======================================================================= - // The main purpose of this routine is to set distance[v] - // to the smallest value allowed by the valid labeling constraints, - // which are: - // distance[t] = 0 - // distance[u] <= distance[v] + 1 for every residual edge (u,v) - // - distance_size_type relabel_distance(vertex_descriptor u) - { - ++relabel_count; - work_since_last_update += beta(); - - distance_size_type min_distance = num_vertices(g); - distance[u] = min_distance; - - // Examine the residual out-edges of vertex i, choosing the - // edge whose target vertex has the minimal distance. - out_edge_iterator ai, a_end, min_edge_iter; - for (tie(ai, a_end) = out_edges(u, g); ai != a_end; ++ai) { - ++work_since_last_update; - edge_descriptor a = *ai; - vertex_descriptor v = target(a, g); - if (is_residual_edge(a) && distance[v] < min_distance) { - min_distance = distance[v]; - min_edge_iter = ai; - } - } - ++min_distance; - if (min_distance < n) { - distance[u] = min_distance; // this is the main action - current[u] = min_edge_iter; - max_distance = std::max(min_distance, max_distance); - } - return min_distance; - } // relabel_distance() - - //======================================================================= - // cleanup beyond the gap - void gap(distance_size_type empty_distance) - { - ++gap_count; - - distance_size_type r; // distance of layer before the current layer - r = empty_distance - 1; - - // Set the distance for the vertices beyond the gap to "infinity". - for (layer_iterator l = layers.begin() + empty_distance + 1; - l < layers.begin() + max_distance; ++l) { - list_iterator i; - for (i = l->inactive_vertices.begin(); - i != l->inactive_vertices.end(); ++i) { - distance[*i] = n; - ++gap_node_count; - } - l->inactive_vertices.clear(); - } - max_distance = r; - max_active = r; - } - - //======================================================================= - // This is the core part of the algorithm, "phase one". - FlowValue maximum_preflow() - { - work_since_last_update = 0; - - while (max_active >= min_active) { // "main" loop - - Layer& layer = layers[max_active]; - list_iterator u_iter = layer.active_vertices.begin(); - - if (u_iter == layer.active_vertices.end()) - --max_active; - else { - vertex_descriptor u = *u_iter; - remove_from_active_list(u); - - discharge(u); - - if (work_since_last_update * global_update_frequency() > nm) { - global_distance_update(); - work_since_last_update = 0; - } - } - } // while (max_active >= min_active) - - return excess_flow[sink]; - } // maximum_preflow() - - //======================================================================= - // remove excess flow, the "second phase" - // This does a DFS on the reverse flow graph of nodes with excess flow. - // If a cycle is found, cancel it. - // Return the nodes with excess flow in topological order. - // - // Unlike the prefl_to_flow() implementation, we use - // "color" instead of "distance" for the DFS labels - // "parent" instead of nl_prev for the DFS tree - // "topo_next" instead of nl_next for the topological ordering - void convert_preflow_to_flow() - { - vertex_iterator u_iter, u_end; - out_edge_iterator ai, a_end; - - vertex_descriptor r, restart, u; - - std::vector parent(n); - std::vector topo_next(n); - - vertex_descriptor tos(parent[0]), - bos(parent[0]); // bogus initialization, just to avoid warning - bool bos_null = true; - - // handle self-loops - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) - for (tie(ai, a_end) = out_edges(*u_iter, g); ai != a_end; ++ai) - if (target(*ai, g) == *u_iter) - residual_capacity[*ai] = capacity[*ai]; - - // initialize - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) { - u = *u_iter; - color[u] = ColorTraits::white(); - parent[u] = u; - current[u] = out_edges(u, g).first; - } - // eliminate flow cycles and topologically order the vertices - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) { - u = *u_iter; - if (color[u] == ColorTraits::white() - && excess_flow[u] > 0 - && u != src && u != sink ) { - r = u; - color[r] = ColorTraits::gray(); - while (1) { - for (; current[u] != out_edges(u, g).second; ++current[u]) { - edge_descriptor a = *current[u]; - if (capacity[a] == 0 && is_residual_edge(a)) { - vertex_descriptor v = target(a, g); - if (color[v] == ColorTraits::white()) { - color[v] = ColorTraits::gray(); - parent[v] = u; - u = v; - break; - } else if (color[v] == ColorTraits::gray()) { - // find minimum flow on the cycle - FlowValue delta = residual_capacity[a]; - while (1) { - delta = std::min(delta, residual_capacity[*current[v]]); - if (v == u) - break; - else - v = target(*current[v], g); - } - // remove delta flow units - v = u; - while (1) { - a = *current[v]; - residual_capacity[a] -= delta; - residual_capacity[reverse_edge[a]] += delta; - v = target(a, g); - if (v == u) - break; - } - - // back-out of DFS to the first saturated edge - restart = u; - for (v = target(*current[u], g); v != u; v = target(a, g)){ - a = *current[v]; - if (color[v] == ColorTraits::white() - || is_saturated(a)) { - color[target(*current[v], g)] = ColorTraits::white(); - if (color[v] != ColorTraits::white()) - restart = v; - } - } - if (restart != u) { - u = restart; - ++current[u]; - break; - } - } // else if (color[v] == ColorTraits::gray()) - } // if (capacity[a] == 0 ... - } // for out_edges(u, g) (though "u" changes during loop) - - if (current[u] == out_edges(u, g).second) { - // scan of i is complete - color[u] = ColorTraits::black(); - if (u != src) { - if (bos_null) { - bos = u; - bos_null = false; - tos = u; - } else { - topo_next[u] = tos; - tos = u; - } - } - if (u != r) { - u = parent[u]; - ++current[u]; - } else - break; - } - } // while (1) - } // if (color[u] == white && excess_flow[u] > 0 & ...) - } // for all vertices in g - - // return excess flows - // note that the sink is not on the stack - if (! bos_null) { - for (u = tos; u != bos; u = topo_next[u]) { - ai = out_edges(u, g).first; - while (excess_flow[u] > 0 && ai != out_edges(u, g).second) { - if (capacity[*ai] == 0 && is_residual_edge(*ai)) - push_flow(*ai); - ++ai; - } - } - // do the bottom - u = bos; - ai = out_edges(u, g).first; - while (excess_flow[u] > 0) { - if (capacity[*ai] == 0 && is_residual_edge(*ai)) - push_flow(*ai); - ++ai; - } - } - - } // convert_preflow_to_flow() - - //======================================================================= - inline bool is_flow() - { - vertex_iterator u_iter, u_end; - out_edge_iterator ai, a_end; - - // check edge flow values - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) { - for (tie(ai, a_end) = out_edges(*u_iter, g); ai != a_end; ++ai) { - edge_descriptor a = *ai; - if (capacity[a] > 0) - if ((residual_capacity[a] + residual_capacity[reverse_edge[a]] - != capacity[a]) - || (residual_capacity[a] < 0) - || (residual_capacity[reverse_edge[a]] < 0)) - return false; - } - } - - // check conservation - FlowValue sum; - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) { - vertex_descriptor u = *u_iter; - if (u != src && u != sink) { - if (excess_flow[u] != 0) - return false; - sum = 0; - for (tie(ai, a_end) = out_edges(u, g); ai != a_end; ++ai) - if (capacity[*ai] > 0) - sum -= capacity[*ai] - residual_capacity[*ai]; - else - sum += residual_capacity[*ai]; - - if (excess_flow[u] != sum) - return false; - } - } - - return true; - } // is_flow() - - bool is_optimal() { - // check if mincut is saturated... - global_distance_update(); - return distance[src] >= n; - } - - void print_statistics(std::ostream& os) const { - os << "pushes: " << push_count << std::endl - << "relabels: " << relabel_count << std::endl - << "updates: " << update_count << std::endl - << "gaps: " << gap_count << std::endl - << "gap nodes: " << gap_node_count << std::endl - << std::endl; - } - - void print_flow_values(std::ostream& os) const { - os << "flow values" << std::endl; - vertex_iterator u_iter, u_end; - out_edge_iterator ei, e_end; - for (tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) - for (tie(ei, e_end) = out_edges(*u_iter, g); ei != e_end; ++ei) - if (capacity[*ei] > 0) - os << *u_iter << " " << target(*ei, g) << " " - << (capacity[*ei] - residual_capacity[*ei]) << std::endl; - os << std::endl; - } - - //======================================================================= - - Graph& g; - vertices_size_type n; - vertices_size_type nm; - EdgeCapacityMap capacity; - vertex_descriptor src; - vertex_descriptor sink; - VertexIndexMap index; - - // will need to use random_access_property_map with these - std::vector< FlowValue > excess_flow; - std::vector< list_iterator > layer_list_ptr; - std::vector< out_edge_iterator > current; - std::vector< distance_size_type > distance; - std::vector< default_color_type > color; - - // Edge Property Maps that must be interior to the graph - ReverseEdgeMap reverse_edge; - ResidualCapacityEdgeMap residual_capacity; - - LayerArray layers; - distance_size_type max_distance; // maximal distance - distance_size_type max_active; // maximal distance with active node - distance_size_type min_active; // minimal distance with active node - boost::queue Q; - - // Statistics counters - long push_count; - long update_count; - long relabel_count; - long gap_count; - long gap_node_count; - - inline double global_update_frequency() { return 0.5; } - inline vertices_size_type alpha() { return 6; } - inline long beta() { return 12; } - - long work_since_last_update; - }; - - } // namespace detail - - template - typename property_traits::value_type - push_relabel_max_flow - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - CapacityEdgeMap cap, ResidualCapacityEdgeMap res, - ReverseEdgeMap rev, VertexIndexMap index_map) - { - typedef typename property_traits::value_type FlowValue; - - detail::push_relabel - algo(g, cap, res, rev, src, sink, index_map); - - FlowValue flow = algo.maximum_preflow(); - - algo.convert_preflow_to_flow(); - - assert(algo.is_flow()); - assert(algo.is_optimal()); - - return flow; - } // push_relabel_max_flow() - - template - typename detail::edge_capacity_value::type - push_relabel_max_flow - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink, - const bgl_named_params& params) - { - return push_relabel_max_flow - (g, src, sink, - choose_const_pmap(get_param(params, edge_capacity), g, edge_capacity), - choose_pmap(get_param(params, edge_residual_capacity), - g, edge_residual_capacity), - choose_const_pmap(get_param(params, edge_reverse), g, edge_reverse), - choose_const_pmap(get_param(params, vertex_index), g, vertex_index) - ); - } - - template - typename property_traits< - typename property_map::const_type - >::value_type - push_relabel_max_flow - (Graph& g, - typename graph_traits::vertex_descriptor src, - typename graph_traits::vertex_descriptor sink) - { - bgl_named_params params(0); // bogus empty param - return push_relabel_max_flow(g, src, sink, params); - } - -} // namespace boost - -#endif // BOOST_PUSH_RELABEL_MAX_FLOW_HPP - diff --git a/sdk/include/boost/graph/random.hpp b/sdk/include/boost/graph/random.hpp deleted file mode 100644 index 55bb2944b4d..00000000000 --- a/sdk/include/boost/graph/random.hpp +++ /dev/null @@ -1,205 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -// Copyright (C) Vladimir Prus 2003. Permission to copy, use, -// modify, sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -#ifndef BOOST_GRAPH_RANDOM_HPP -#define BOOST_GRAPH_RANDOM_HPP - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -namespace boost { - - // grab a random vertex from the graph's vertex set - template - typename graph_traits::vertex_descriptor - random_vertex(Graph& g, RandomNumGen& gen) - { - if (num_vertices(g) > 1) { - uniform_int rand_gen(gen, 0, num_vertices(g)-1); - std::size_t n = rand_gen(); - typename graph_traits::vertex_iterator - i = vertices(g).first; - while (n-- > 0) ++i; // std::advance not VC++ portable - return *i; - } else - return *vertices(g).first; - } - - template - typename graph_traits::edge_descriptor - random_edge(Graph& g, RandomNumGen& gen) { - if (num_edges(g) > 1) { - uniform_int rand_gen(gen, 0, num_edges(g)-1); - typename graph_traits::edges_size_type - n = rand_gen(); - typename graph_traits::edge_iterator - i = edges(g).first; - while (n-- > 0) ++i; // std::advance not VC++ portable - return *i; - } else - return *edges(g).first; - } - - namespace detail { - class dummy_property_copier { - public: - template - void operator()(const V1&, const V2&) const {} - }; - } - - template - void generate_random_graph - (MutableGraph& g, - typename graph_traits::vertices_size_type V, - typename graph_traits::vertices_size_type E, - RandNumGen& gen, - bool allow_parallel = true, - bool self_edges = false) - { - typedef graph_traits Traits; - typedef typename Traits::vertices_size_type v_size_t; - typedef typename Traits::edges_size_type e_size_t; - typedef typename Traits::vertex_descriptor vertex_descriptor; - - // When parallel edges are not allowed, we create a new graph which - // does not allow parallel edges, construct it and copy back. - // This is not efficient if 'g' already disallow parallel edges, - // but that's task for later. - if (!allow_parallel) { - - typedef typename boost::graph_traits::directed_category dir; - typedef typename mpl::if_, - directedS, undirectedS>::type select; - adjacency_list g2; - generate_random_graph(g2, V, E, gen, true, self_edges); - - copy_graph(g2, g, vertex_copy(detail::dummy_property_copier()). - edge_copy(detail::dummy_property_copier())); - - } else { - - for (v_size_t i = 0; i < V; ++i) - add_vertex(g); - - for (e_size_t j = 0; j < E; ++j) { - vertex_descriptor a = random_vertex(g, gen), b; - do { - b = random_vertex(g, gen); - } while (self_edges == false && a == b); - add_edge(a, b, g); - } - } - } - - template - void generate_random_graph - (MutableGraph& g, - typename graph_traits::vertices_size_type V, - typename graph_traits::vertices_size_type E, - RandNumGen& gen, - VertexOutputIterator vertex_out, - EdgeOutputIterator edge_out, - bool self_edges = false) - { - typedef graph_traits Traits; - typedef typename Traits::vertices_size_type v_size_t; - typedef typename Traits::edges_size_type e_size_t; - typedef typename Traits::vertex_descriptor vertex_t; - typedef typename Traits::edge_descriptor edge_t; - - for (v_size_t i = 0; i < V; ++i) - *vertex_out++ = add_vertex(g); - - for (e_size_t j = 0; j < E; ++j) { - vertex_t a = random_vertex(g, gen), b; - do { - b = random_vertex(g, gen); - } while (self_edges == false && a == b); - edge_t e; bool inserted; - tie(e, inserted) = add_edge(a, b, g); - if (inserted) - *edge_out++ = std::make_pair(source(e, g), target(e, g)); - } - } - - template - void randomize_property(G& g, RandomGenerator& rg) - { - detail::randomize_property - (g, rg, Property(), typename property_kind::type()); - } - - namespace detail { - - template - void randomize_property(G& g, RandomGenerator& rg, - Property, vertex_property_tag) - { - typename property_map::type pm = get(Property(), g); - typename graph_traits::vertex_iterator vi, ve; - for (tie(vi, ve) = vertices(g); vi != ve; ++vi) { - pm[*vi] = rg(); - } - } - - template - void randomize_property(G& g, RandomGenerator& rg, - Property, edge_property_tag) - { - typename property_map::type pm = get(Property(), g); - typename graph_traits::edge_iterator ei, ee; - for (tie(ei, ee) = edges(g); ei != ee; ++ei) { - pm[*ei] = rg(); - } - } - } - - - - -} - - -#endif diff --git a/sdk/include/boost/graph/read_dimacs.hpp b/sdk/include/boost/graph/read_dimacs.hpp deleted file mode 100644 index 03f8455ba49..00000000000 --- a/sdk/include/boost/graph/read_dimacs.hpp +++ /dev/null @@ -1,294 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -/* - Reads maximal flow problem in extended DIMACS format. - - Reads from stdin. - - This works, but could use some polishing. -*/ - -/* ----------------------------------------------------------------- */ - -#include -#include - -namespace boost { - -template -int read_dimacs_max_flow(Graph& g, - CapacityMap capacity, - ReverseEdgeMap reverse_edge, - typename graph_traits::vertex_descriptor& src, - typename graph_traits::vertex_descriptor& sink) -{ - // const int MAXLINE = 100; /* max line length in the input file */ - const int ARC_FIELDS = 3; /* no of fields in arc line */ - const int NODE_FIELDS = 2; /* no of fields in node line */ - const int P_FIELDS = 3; /* no of fields in problem line */ - const char* PROBLEM_TYPE = "max"; /* name of problem type*/ - - typedef typename graph_traits::vertices_size_type vertices_size_type; - typedef typename graph_traits::vertex_descriptor vertex_descriptor; - typedef typename graph_traits::edge_descriptor edge_descriptor; - - std::vector verts; - - long m, n, /* number of edges and nodes */ - i, head, tail, cap; - - long no_lines=0, /* no of current input line */ - no_plines=0, /* no of problem-lines */ - no_nslines=0, /* no of node-source-lines */ - no_nklines=0, /* no of node-source-lines */ - no_alines=0; /* no of arc-lines */ - - std::string in_line; /* for reading input line */ - char pr_type[3]; /* for reading type of the problem */ - char nd; /* source (s) or sink (t) */ - - int k, /* temporary */ - err_no; /* no of detected error */ - - /* -------------- error numbers & error messages ---------------- */ - const int EN1 = 0; - const int EN2 = 1; - const int EN3 = 2; - const int EN4 = 3; - // const int EN6 = 4; - // const int EN10 = 5; - // const int EN7 = 6; - const int EN8 = 7; - const int EN9 = 8; - const int EN11 = 9; - const int EN12 = 10; - // const int EN13 = 11; - const int EN14 = 12; - const int EN16 = 13; - const int EN15 = 14; - const int EN17 = 15; - const int EN18 = 16; - const int EN21 = 17; - const int EN19 = 18; - const int EN20 = 19; - const int EN22 = 20; - - static char *err_message[] = - { - /* 0*/ "more than one problem line.", - /* 1*/ "wrong number of parameters in the problem line.", - /* 2*/ "it is not a Max Flow problem line.", - /* 3*/ "bad value of a parameter in the problem line.", - /* 4*/ "can't obtain enough memory to solve this problem.", - /* 5*/ "more than one line with the problem name.", - /* 6*/ "can't read problem name.", - /* 7*/ "problem description must be before node description.", - /* 8*/ "this parser doesn't support multiply sources and sinks.", - /* 9*/ "wrong number of parameters in the node line.", - /*10*/ "wrong value of parameters in the node line.", - /*11*/ " ", - /*12*/ "source and sink descriptions must be before arc descriptions.", - /*13*/ "too many arcs in the input.", - /*14*/ "wrong number of parameters in the arc line.", - /*15*/ "wrong value of parameters in the arc line.", - /*16*/ "unknown line type in the input.", - /*17*/ "reading error.", - /*18*/ "not enough arcs in the input.", - /*19*/ "source or sink doesn't have incident arcs.", - /*20*/ "can't read anything from the input file." - }; - /* --------------------------------------------------------------- */ - - /* The main loop: - - reads the line of the input, - - analyses its type, - - checks correctness of parameters, - - puts data to the arrays, - - does service functions - */ - - while (std::getline(std::cin, in_line)) { - ++no_lines; - - switch (in_line[0]) { - case 'c': /* skip lines with comments */ - case '\n': /* skip empty lines */ - case '\0': /* skip empty lines at the end of file */ - break; - - case 'p': /* problem description */ - if ( no_plines > 0 ) - /* more than one problem line */ - { err_no = EN1 ; goto error; } - - no_plines = 1; - - if ( - /* reading problem line: type of problem, no of nodes, no of arcs */ - sscanf ( in_line.c_str(), "%*c %3s %ld %ld", pr_type, &n, &m ) - != P_FIELDS - ) - /*wrong number of parameters in the problem line*/ - { err_no = EN2; goto error; } - - if ( strcmp ( pr_type, PROBLEM_TYPE ) ) - /*wrong problem type*/ - { err_no = EN3; goto error; } - - if ( n <= 0 || m <= 0 ) - /*wrong value of no of arcs or nodes*/ - { err_no = EN4; goto error; } - - { - for (long vi = 0; vi < n; ++vi) - verts.push_back(add_vertex(g)); - } - break; - - case 'n': /* source(s) description */ - if ( no_plines == 0 ) - /* there was not problem line above */ - { err_no = EN8; goto error; } - - /* reading source or sink */ - k = sscanf ( in_line.c_str(),"%*c %ld %c", &i, &nd ); - --i; // index from 0 - if ( k < NODE_FIELDS ) - /* node line is incorrect */ - { err_no = EN11; goto error; } - - if ( i < 0 || i > n ) - /* wrong value of node */ - { err_no = EN12; goto error; } - - switch (nd) { - case 's': /* source line */ - - if ( no_nslines != 0) - /* more than one source line */ - { err_no = EN9; goto error; } - - no_nslines = 1; - src = verts[i]; - break; - - case 't': /* sink line */ - - if ( no_nklines != 0) - /* more than one sink line */ - { err_no = EN9; goto error; } - - no_nklines = 1; - sink = verts[i]; - break; - - default: - /* wrong type of node-line */ - err_no = EN12; goto error; - } - break; - - case 'a': /* arc description */ - if ( no_nslines == 0 || no_nklines == 0 ) - /* there was not source and sink description above */ - { err_no = EN14; goto error; } - - if ( no_alines >= m ) - /*too many arcs on input*/ - { err_no = EN16; goto error; } - - if ( - /* reading an arc description */ - sscanf ( in_line.c_str(),"%*c %ld %ld %ld", - &tail, &head, &cap ) - != ARC_FIELDS - ) - /* arc description is not correct */ - { err_no = EN15; goto error; } - - --tail; // index from 0, not 1 - --head; - if ( tail < 0 || tail > n || - head < 0 || head > n - ) - /* wrong value of nodes */ - { err_no = EN17; goto error; } - - { - edge_descriptor e1, e2; - bool in1, in2; - tie(e1, in1) = add_edge(verts[tail], verts[head], g); - tie(e2, in2) = add_edge(verts[head], verts[tail], g); - if (!in1 || !in2) { - std::cerr << "unable to add edge (" << head << "," << tail << ")" - << std::endl; - return -1; - } - capacity[e1] = cap; - capacity[e2] = 0; - reverse_edge[e1] = e2; - reverse_edge[e2] = e1; - } - ++no_alines; - break; - - default: - /* unknown type of line */ - err_no = EN18; goto error; - - } /* end of switch */ - } /* end of input loop */ - - /* ----- all is red or error while reading ----- */ - - if ( feof (stdin) == 0 ) /* reading error */ - { err_no=EN21; goto error; } - - if ( no_lines == 0 ) /* empty input */ - { err_no = EN22; goto error; } - - if ( no_alines < m ) /* not enough arcs */ - { err_no = EN19; goto error; } - - if ( out_degree(src, g) == 0 || out_degree(sink, g) == 0 ) - /* no arc goes out of the source */ - { err_no = EN20; goto error; } - - /* Thanks God! all is done */ - return (0); - - /* ---------------------------------- */ - error: /* error found reading input */ - - printf ( "\nline %ld of input - %s\n", - no_lines, err_message[err_no] ); - - exit (1); - return (0); /* to avoid warning */ -} -/* -------------------- end of parser -------------------*/ - -} // namespace boost diff --git a/sdk/include/boost/graph/relax.hpp b/sdk/include/boost/graph/relax.hpp deleted file mode 100644 index 976229b570e..00000000000 --- a/sdk/include/boost/graph/relax.hpp +++ /dev/null @@ -1,99 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -#ifndef BOOST_GRAPH_RELAX_HPP -#define BOOST_GRAPH_RELAX_HPP - -#include -#include // for numeric limits -#include -#include - -namespace boost { - - // The following version of the plus functor prevents - // problems due to overflow at positive infinity. - - template - struct closed_plus - { - // std::abs just isn't portable :( - template - inline X my_abs(const X& x) const { return x < 0 ? -x : x; } - - T operator()(const T& a, const T& b) const { - using namespace std; - T inf = numeric_limits::max(); - if (b > 0 && my_abs(inf - a) < b) - return inf; - return a + b; - } - }; - - template - bool relax(typename graph_traits::edge_descriptor e, - const Graph& g, const WeightMap& w, - PredecessorMap& p, DistanceMap& d, - const BinaryFunction& combine, const BinaryPredicate& compare) - { - typedef typename graph_traits::directed_category DirCat; - bool is_undirected = is_same::value; - typedef typename graph_traits::vertex_descriptor Vertex; - Vertex u = source(e, g), v = target(e, g); - typedef typename property_traits::value_type D; - typedef typename property_traits::value_type W; - D d_u = get(d, u), d_v = get(d, v); - W w_e = get(w, e); - - if ( compare(combine(d_u, w_e), d_v) ) { - put(d, v, combine(d_u, w_e)); - put(p, v, u); - return true; - } else if (is_undirected && compare(combine(d_v, w_e), d_u)) { - put(d, u, combine(d_v, w_e)); - put(p, u, v); - return true; - } else - return false; - } - - template - bool relax(typename graph_traits::edge_descriptor e, - const Graph& g, WeightMap w, PredecessorMap p, DistanceMap d) - { - typedef typename property_traits::value_type D; - typedef closed_plus Combine; - typedef std::less Compare; - return relax(e, g, w, p, d, Combine(), Compare()); - } - -} // namespace boost - -#endif /* BOOST_GRAPH_RELAX_HPP */ diff --git a/sdk/include/boost/graph/reverse_graph.hpp b/sdk/include/boost/graph/reverse_graph.hpp deleted file mode 100644 index 8cfcff42a78..00000000000 --- a/sdk/include/boost/graph/reverse_graph.hpp +++ /dev/null @@ -1,272 +0,0 @@ -// (C) Copyright David Abrahams 2000. Permission to copy, use, -// modify, sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -#ifndef REVERSE_GRAPH_DWA092300_H_ -# define REVERSE_GRAPH_DWA092300_H_ - -#include -#include -#include - -namespace boost { - -struct reverse_graph_tag { }; - - namespace detail { - - template struct choose_rev_edge_iter { }; - template <> struct choose_rev_edge_iter { - template struct bind_ { - typedef typename graph_traits::edge_iterator type; - }; - }; - template <> struct choose_rev_edge_iter { - template struct bind_ { - typedef void type; - }; - }; - - } // namespace detail - -template -class reverse_graph { - typedef reverse_graph Self; - typedef graph_traits Traits; - public: - typedef BidirectionalGraph base_type; - - // Constructor - reverse_graph(GraphRef g) : m_g(g) {} - - // Graph requirements - typedef typename Traits::vertex_descriptor vertex_descriptor; - typedef typename Traits::edge_descriptor edge_descriptor; - typedef typename Traits::directed_category directed_category; - typedef typename Traits::edge_parallel_category edge_parallel_category; - typedef typename Traits::traversal_category traversal_category; - - // IncidenceGraph requirements - typedef typename Traits::in_edge_iterator out_edge_iterator; - typedef typename Traits::degree_size_type degree_size_type; - - // BidirectionalGraph requirements - typedef typename Traits::out_edge_iterator in_edge_iterator; - - // AdjacencyGraph requirements - typedef typename adjacency_iterator_generator::type adjacency_iterator; - - // VertexListGraph requirements - typedef typename Traits::vertex_iterator vertex_iterator; - - // EdgeListGraph requirements - enum { is_edge_list = is_convertible::value }; - typedef detail::choose_rev_edge_iter ChooseEdgeIter; - typedef typename ChooseEdgeIter:: - template bind_::type edge_iterator; - typedef typename Traits::vertices_size_type vertices_size_type; - typedef typename Traits::edges_size_type edges_size_type; - - // More typedefs used by detail::edge_property_map, vertex_property_map - typedef typename BidirectionalGraph::edge_property_type - edge_property_type; - typedef typename BidirectionalGraph::vertex_property_type - vertex_property_type; - typedef reverse_graph_tag graph_tag; - - - // would be private, but template friends aren't portable enough. - // private: - GraphRef m_g; -}; - -template -inline reverse_graph -make_reverse_graph(const BidirectionalGraph& g) -{ - return reverse_graph(g); -} - -template -inline reverse_graph -make_reverse_graph(BidirectionalGraph& g) -{ - return reverse_graph(g); -} - -template -std::pair::vertex_iterator, - typename reverse_graph::vertex_iterator> -vertices(const reverse_graph& g) -{ - return vertices(g.m_g); -} - -template -std::pair::edge_iterator, - typename reverse_graph::edge_iterator> -edges(const reverse_graph& g) -{ - return edges(g.m_g); -} - -template -inline std::pair -out_edges(const typename BidirectionalGraph::vertex_descriptor u, - const reverse_graph& g) -{ - return in_edges(u, g.m_g); -} - -template -inline typename BidirectionalGraph::vertices_size_type -num_vertices(const reverse_graph& g) -{ - return num_vertices(g.m_g); -} - -template -inline typename reverse_graph::edges_size_type -num_edges(const reverse_graph& g) -{ - return num_edges(g.m_g); -} - -template -inline typename BidirectionalGraph::degree_size_type -out_degree(const typename BidirectionalGraph::vertex_descriptor u, - const reverse_graph& g) -{ - return in_degree(u, g.m_g); -} - -template -inline std::pair -edge(const typename BidirectionalGraph::vertex_descriptor u, - const typename BidirectionalGraph::vertex_descriptor v, - const reverse_graph& g) -{ - return edge(v, u, g); -} - -template -inline std::pair -in_edges(const typename BidirectionalGraph::vertex_descriptor u, - const reverse_graph& g) -{ - return out_edges(u, g.m_g); -} - -template -inline std::pair::adjacency_iterator, - typename reverse_graph::adjacency_iterator> -adjacent_vertices(const typename BidirectionalGraph::vertex_descriptor u, - const reverse_graph& g) -{ - typedef reverse_graph Graph; - typename Graph::out_edge_iterator first, last; - tie(first, last) = out_edges(u, g); - typedef typename Graph::adjacency_iterator adjacency_iterator; - return std::make_pair(adjacency_iterator(first, const_cast(&g)), - adjacency_iterator(last, const_cast(&g))); -} - -template -inline typename BidirectionalGraph::degree_size_type -in_degree(const typename BidirectionalGraph::vertex_descriptor u, - const reverse_graph& g) -{ - return out_degree(u, g.m_g); -} - -template -inline typename graph_traits::vertex_descriptor -source(const Edge& e, const reverse_graph& g) -{ - return target(e, g.m_g); -} - -template -inline typename graph_traits::vertex_descriptor -target(const Edge& e, const reverse_graph& g) -{ - return source(e, g.m_g); -} - - -namespace detail { - - struct reverse_graph_vertex_property_selector { - template - struct bind_ { - typedef typename ReverseGraph::base_type Graph; - typedef property_map PMap; - typedef typename PMap::type type; - typedef typename PMap::const_type const_type; - }; - }; - - struct reverse_graph_edge_property_selector { - template - struct bind_ { - typedef typename ReverseGraph::base_type Graph; - typedef property_map PMap; - typedef typename PMap::type type; - typedef typename PMap::const_type const_type; - }; - }; - -} // namespace detail - -template <> -struct vertex_property_selector { - typedef detail::reverse_graph_vertex_property_selector type; -}; - -template <> -struct edge_property_selector { - typedef detail::reverse_graph_edge_property_selector type; -}; - -template -typename property_map::type -get(Property p, reverse_graph& g) -{ - return get(p, g.m_g); -} - -template -typename property_map::const_type -get(Property p, const reverse_graph& g) -{ - const BidirGraph& gref = g.m_g; // in case GRef is non-const - return get(p, gref); -} - -template -typename property_traits< - typename property_map::const_type ->::value_type -get(Property p, const reverse_graph& g, const Key& k) -{ - return get(p, g.m_g, k); -} - -template -void -put(Property p, const reverse_graph& g, const Key& k, - const Value& val) -{ - put(p, g.m_g, k, val); -} - - -} // namespace boost - -#endif diff --git a/sdk/include/boost/graph/sequential_vertex_coloring.hpp b/sdk/include/boost/graph/sequential_vertex_coloring.hpp deleted file mode 100644 index d192622ed9e..00000000000 --- a/sdk/include/boost/graph/sequential_vertex_coloring.hpp +++ /dev/null @@ -1,109 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_GRAPH_SEQUENTIAL_VERTEX_COLORING_HPP -#define BOOST_GRAPH_SEQUENTIAL_VERTEX_COLORING_HPP - -#include -#include - -/* This algorithm is to find coloring of a graph - - Algorithm: - Let G = (V,E) be a graph with vertices (somehow) ordered v_1, v_2, ..., - v_n. For k = 1, 2, ..., n the sequential algorithm assigns v_k to the - smallest possible color. - - Reference: - - Thomas F. Coleman and Jorge J. More, Estimation of sparse Jacobian - matrices and graph coloring problems. J. Numer. Anal. V20, P187-209, 1983 - - v_k is stored as o[k] here. - - The color of the vertex v will be stored in color[v]. - i.e., vertex v belongs to coloring color[v] */ - -namespace boost { - template - typename graph_traits::size_type - sequential_vertex_coloring(const VertexListGraph& G, OrderPA order, - ColorMap color) - { - using graph_traits; - using boost::tie; - typedef graph_traits GraphTraits; - typedef typename GraphTraits::vertex_descriptor Vertex; - typedef typename GraphTraits::size_type size_type; - - size_type max_color = 0; - const size_type V = num_vertices(G); - - // We need to keep track of which colors are used by - // adjacent vertices. We do this by marking the colors - // that are used. The mark array contains the mark - // for each color. The length of mark is the - // number of vertices since the maximum possible number of colors - // is the number of vertices. - std::vector mark(V, numeric_limits_max(max_color)); - - //Initialize colors - typename GraphTraits::vertex_iterator v, vend; - for (tie(v, vend) = vertices(G); v != vend; ++v) - put(color, *v, V-1); - - //Determine the color for every vertex one by one - for ( size_type i = 0; i < V; i++) { - Vertex current = get(order,i); - typename GraphTraits::adjacency_iterator v, vend; - - //Mark the colors of vertices adjacent to current. - //i can be the value for marking since i increases successively - for (tie(v,vend) = adjacent_vertices(current, G); v != vend; ++v) - mark[get(color,*v)] = i; - - //Next step is to assign the smallest un-marked color - //to the current vertex. - size_type j = 0; - - //Scan through all useable colors, find the smallest possible - //color which is not used by neighbors. Note that if mark[j] - //is equal to i, color j is used by one of the current vertex's - //neighbors. - while ( j < max_color && mark[j] == i ) - ++j; - - if ( j == max_color ) //All colors are used up. Add one more color - ++max_color; - - //At this point, j is the smallest possible color - put(color, current, j); //Save the color of vertex current - - } - - return max_color; - } -} - -#endif diff --git a/sdk/include/boost/graph/sloan_ordering.hpp b/sdk/include/boost/graph/sloan_ordering.hpp deleted file mode 100644 index 905e390a6c4..00000000000 --- a/sdk/include/boost/graph/sloan_ordering.hpp +++ /dev/null @@ -1,464 +0,0 @@ -// -//======================================================================= -// Copyright 2002 Marc Wintermantel (wintermantel@imes.mavt.ethz.ch) -// ETH Zurich, Center of Structure Technologies (www.imes.ethz.ch/st) -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -#ifndef BOOST_GRAPH_SLOAN_HPP -#define BOOST_GRAPH_SLOAN_HPP - -#define WEIGHT1 1 //default weight for the distance in the Sloan algorithm -#define WEIGHT2 2 //default weight for the degree in the Sloan algorithm -#define MAXINT 2147483647 //Maximum value for a 32bit integer - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -//////////////////////////////////////////////////////////// -// -//Sloan-Algorithm for graph reordering -//(optimzes profile and wavefront, not primiraly bandwidth -// -//////////////////////////////////////////////////////////// - -namespace boost { - - ///////////////////////////////////////////////////////////////////////// - // Function that returns the maximum depth of - // a rooted level strucutre (RLS) - // - ///////////////////////////////////////////////////////////////////////// - template - unsigned RLS_depth(Distance& d) - { - unsigned h_s = 0; - typename Distance::iterator iter; - - for (iter = d.begin(); iter != d.end(); ++iter) - { - if(*iter > h_s) - { - h_s = *iter; - } - } - - return h_s; - } - - - - ///////////////////////////////////////////////////////////////////////// - // Function that returns the width of the largest level of - // a rooted level strucutre (RLS) - // - ///////////////////////////////////////////////////////////////////////// - template - unsigned RLS_max_width(Distance& d, my_int depth) - { - - //Searching for the maximum width of a level - std::vector dummy_width(depth+1, 0); - std::vector::iterator my_it; - typename Distance::iterator iter; - unsigned w_max = 0; - - for (iter = d.begin(); iter != d.end(); ++iter) - { - dummy_width[*iter]++; - } - - for(my_it = dummy_width.begin(); my_it != dummy_width.end(); ++my_it) - { - if(*my_it > w_max) w_max = *my_it; - } - - return w_max; - - } - - - ///////////////////////////////////////////////////////////////////////// - // Function for finding a good starting node for Sloan algorithm - // - // This is to find a good starting node. "good" is in the sense - // of the ordering generated. - ///////////////////////////////////////////////////////////////////////// - template - typename graph_traits::vertex_descriptor - sloan_start_end_vertices(Graph& G, - typename graph_traits::vertex_descriptor &s, - ColorMap color, - DegreeMap degree) - { - typedef typename property_traits::value_type DS; - typedef typename graph_traits::vertex_descriptor Vertex; - typedef typename std::vector< typename graph_traits::vertices_size_type>::iterator vec_iter; - typedef typename graph_traits::vertices_size_type size_type; - - typedef typename property_map::const_type VertexID; - - s = *(vertices(G).first); - Vertex e = s; - Vertex i; - unsigned my_degree = get(degree, s ); - unsigned dummy, h_i, h_s, w_i, w_e; - bool new_start = true; - unsigned maximum_degree = 0; - - //Creating a std-vector for storing the distance from the start vertex in dist - std::vector::vertices_size_type> dist(num_vertices(G), 0); - - //Wrap a property_map_iterator around the std::iterator - boost::iterator_property_map dist_pmap(dist.begin(), get(vertex_index, G)); - - //Creating a property_map for the indices of a vertex - typename property_map::type index_map = get(vertex_index, G); - - //Creating a priority queue - typedef indirect_cmp > Compare; - Compare comp(degree); - std::priority_queue, Compare> degree_queue(comp); - - //step 1 - //Scan for the vertex with the smallest degree and the maximum degree - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(G); ui != ui_end; ++ui) - { - dummy = get(degree, *ui); - - if(dummy < my_degree) - { - my_degree = dummy; - s = *ui; - } - - if(dummy > maximum_degree) - { - maximum_degree = dummy; - } - } - //end 1 - - do{ - new_start = false; //Setting the loop repetition status to false - - //step 2 - //initialize the the disance std-vector with 0 - for(typename std::vector::vertices_size_type>::iterator iter = dist.begin(); iter != dist.end(); ++iter) *iter = 0; - - //generating the RLS (rooted level structure) - breadth_first_search - (G, s, visitor - ( - make_bfs_visitor(record_distances(dist_pmap, on_tree_edge() ) ) - ) - ); - - //end 2 - - //step 3 - //calculating the depth of the RLS - h_s = RLS_depth(dist); - - //step 4 - //pushing one node of each degree in an ascending manner into degree_queue - std::vector shrink_trace(maximum_degree, false); - for (tie(ui, ui_end) = vertices(G); ui != ui_end; ++ui) - { - dummy = get(degree, *ui); - - if( (dist[index_map[*ui]] == h_s ) && ( !shrink_trace[ dummy ] ) ) - { - degree_queue.push(*ui); - shrink_trace[ dummy ] = true; - } - } - - //end 3 & 4 - - - //step 5 - //Initializing w - w_e = MAXINT; - //end 5 - - - //step 6 - //Testing for termination - while( !degree_queue.empty() ) - { - i = degree_queue.top(); //getting the node with the lowest degree from the degree queue - degree_queue.pop(); //ereasing the node with the lowest degree from the degree queue - - //generating a RLS - for(typename std::vector::vertices_size_type>::iterator iter = dist.begin(); iter != dist.end(); ++iter) *iter = 0; - - breadth_first_search - (G, i, boost::visitor - ( - make_bfs_visitor(record_distances(dist_pmap, on_tree_edge() ) ) - ) - ); - - //Calculating depth and width of the rooted level - h_i = RLS_depth(dist); - w_i = RLS_max_width(dist, h_i); - - //Testing for termination - if( (h_i > h_s) && (w_i < w_e) ) - { - h_s = h_i; - s = i; - while(!degree_queue.empty()) degree_queue.pop(); - new_start = true; - } - else if(w_i < w_e) - { - w_e = w_i; - e = i; - } - } - //end 6 - - }while(new_start); - - return e; - } - - ////////////////////////////////////////////////////////////////////////// - // Sloan algorithm with a given starting Vertex. - // - // This algorithm requires user to provide a starting vertex to - // compute Sloan ordering. - ////////////////////////////////////////////////////////////////////////// - template - OutputIterator - sloan_ordering(Graph& g, - typename graph_traits::vertex_descriptor s, - typename graph_traits::vertex_descriptor e, - OutputIterator permutation, - ColorMap color, - DegreeMap degree, - PriorityMap priority, - Weight W1, - Weight W2) - { - //typedef typename property_traits::value_type DS; - typedef typename property_traits::value_type DS; - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - typedef typename graph_traits::vertex_descriptor Vertex; - typedef typename std::vector::vertices_size_type>::iterator vec_iter; - typedef typename graph_traits::vertices_size_type size_type; - - typedef typename property_map::const_type VertexID; - - - //Creating a std-vector for storing the distance from the end vertex in it - typename std::vector::vertices_size_type> dist(num_vertices(g), 0); - - //Wrap a property_map_iterator around the std::iterator - boost::iterator_property_map dist_pmap(dist.begin(), get(vertex_index, g)); - - breadth_first_search - (g, e, visitor - ( - make_bfs_visitor(record_distances(dist_pmap, on_tree_edge() ) ) - ) - ); - - //Creating a property_map for the indices of a vertex - typename property_map::type index_map = get(vertex_index, g); - - //Sets the color and priority to their initial status - unsigned cdeg; - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) - { - put(color, *ui, Color::white()); - cdeg=get(degree, *ui)+1; - put(priority, *ui, W1*dist[index_map[*ui]]-W2*cdeg ); - } - - //Priority list - typedef indirect_cmp > Compare; - Compare comp(priority); - std::list priority_list; - - //Some more declarations - typename graph_traits::out_edge_iterator ei, ei_end, ei2, ei2_end; - Vertex u, v, w; - - put(color, s, Color::green()); //Sets the color of the starting vertex to gray - priority_list.push_front(s); //Puts s into the priority_list - - while ( !priority_list.empty() ) - { - priority_list.sort(comp); //Orders the elements in the priority list in an ascending manner - - u = priority_list.front(); //Accesses the last element in the priority list - priority_list.pop_front(); //Removes the last element in the priority list - - if(get(color, u) == Color::green() ) - { - //for-loop over all out-edges of vertex u - for (tie(ei, ei_end) = out_edges(u, g); ei != ei_end; ++ei) - { - v = target(*ei, g); - - put( priority, v, get(priority, v) + W2 ); //updates the priority - - if (get(color, v) == Color::white() ) //test if the vertex is inactive - { - put(color, v, Color::green() ); //giving the vertex a preactive status - priority_list.push_front(v); //writing the vertex in the priority_queue - } - } - } - - //Here starts step 8 - *permutation++ = u; //Puts u to the first position in the permutation-vector - put(color, u, Color::black() ); //Gives u an inactive status - - //for loop over all the adjacent vertices of u - for (tie(ei, ei_end) = out_edges(u, g); ei != ei_end; ++ei) { - - v = target(*ei, g); - - if (get(color, v) == Color::green() ) { //tests if the vertex is inactive - - put(color, v, Color::red() ); //giving the vertex an active status - put(priority, v, get(priority, v)+W2); //updates the priority - - //for loop over alll adjacent vertices of v - for (tie(ei2, ei2_end) = out_edges(v, g); ei2 != ei2_end; ++ei2) { - w = target(*ei2, g); - - if(get(color, w) != Color::black() ) { //tests if vertex is postactive - - put(priority, w, get(priority, w)+W2); //updates the priority - - if(get(color, w) == Color::white() ){ - - put(color, w, Color::green() ); // gives the vertex a preactive status - priority_list.push_front(w); // puts the vertex into the priority queue - - } //end if - - } //end if - - } //end for - - } //end if - - } //end for - - } //end while - - - return permutation; - } - - ///////////////////////////////////////////////////////////////////////////////////////// - // Same algorithm as before, but without the weights given (taking default weights - template - OutputIterator - sloan_ordering(Graph& g, - typename graph_traits::vertex_descriptor s, - typename graph_traits::vertex_descriptor e, - OutputIterator permutation, - ColorMap color, - DegreeMap degree, - PriorityMap priority) - { - return sloan_ordering(g, s, e, permutation, color, degree, priority, WEIGHT1, WEIGHT2); - } - - - ////////////////////////////////////////////////////////////////////////// - // Sloan algorithm without a given starting Vertex. - // - // This algorithm finds a good starting vertex itself to - // compute Sloan-ordering. - ////////////////////////////////////////////////////////////////////////// - - - - template < class Graph, class OutputIterator, - class Color, class Degree, - class Priority, class Weight> - inline OutputIterator - sloan_ordering(Graph& G, - OutputIterator permutation, - Color color, - Degree degree, - Priority priority, - Weight W1, - Weight W2 ) - { - typedef typename boost::graph_traits::vertex_descriptor Vertex; - - Vertex s, e; - e = sloan_start_end_vertices(G, s, color, degree); - - return sloan_ordering(G, s, e, permutation, color, degree, priority, W1, W2); - } - - ///////////////////////////////////////////////////////////////////////////////////////// - // Same as before, but without given weights (default weights are taken instead) - template < class Graph, class OutputIterator, - class Color, class Degree, - class Priority > - inline OutputIterator - sloan_ordering(Graph& G, - OutputIterator permutation, - Color color, - Degree degree, - Priority priority) - { - return sloan_ordering(G, permutation, color, degree, priority, WEIGHT1, WEIGHT2); - } - - -} // namespace boost - - -#endif // BOOST_GRAPH_SLOAN_HPP diff --git a/sdk/include/boost/graph/smallest_last_ordering.hpp b/sdk/include/boost/graph/smallest_last_ordering.hpp deleted file mode 100644 index 74e4d19f602..00000000000 --- a/sdk/include/boost/graph/smallest_last_ordering.hpp +++ /dev/null @@ -1,125 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_SMALLEST_LAST_VERTEX_ORDERING_HPP -#define BOOST_SMALLEST_LAST_VERTEX_ORDERING_HPP -/* - The smallest-last ordering is defined for the loopless graph G with - vertices a(j), j = 1,2,...,n where a(j) is the j-th column of A and - with edge (a(i),a(j)) if and only if columns i and j have a - non-zero in the same row position. The smallest-last ordering is - determined recursively by letting list(k), k = n,...,1 be a column - with least degree in the subgraph spanned by the un-ordered - columns. - */ -#include -#include -#include -#include - -namespace boost { - - template - void - smallest_last_vertex_ordering(const VertexListGraph& G, Order order, - Degree degree, Marker marker) { - typedef typename graph_traits GraphTraits; - typedef typename GraphTraits::vertex_descriptor Vertex; - //typedef typename GraphTraits::size_type size_type; - typedef std::size_t size_type; - - const size_type num = num_vertices(G); - - typedef typename vertex_property_map::type ID; - typedef bucket_sorter BucketSorter; - - BucketSorter degree_bucket_sorter(num, num, degree, - get_vertex_property(G, vertex_index)); - - smallest_last_vertex_ordering(G, order, degree, marker, degree_bucket_sorter); - } - - template - void - smallest_last_vertex_ordering(const VertexListGraph& G, Order order, - Degree degree, Marker marker, - BucketSorter& degree_buckets) { - typedef typename graph_traits GraphTraits; - typedef typename GraphTraits::vertex_descriptor Vertex; - //typedef typename GraphTraits::size_type size_type; - typedef std::size_t size_type; - - const size_type num = num_vertices(G); - - typename GraphTraits::vertex_iterator v, vend; - for (boost::tie(v, vend) = vertices(G); v != vend; ++v) { - put(marker, *v, num); - put(degree, *v, out_degree(*v, G)); - degree_buckets.push(*v); - } - - size_type minimum_degree = 1; - size_type current_order = num - 1; - - while ( 1 ) { - typedef typename BucketSorter::stack MDStack; - MDStack minimum_degree_stack = degree_buckets[minimum_degree]; - while (minimum_degree_stack.empty()) - minimum_degree_stack = degree_buckets[++minimum_degree]; - - Vertex node = minimum_degree_stack.top(); - put(order, current_order, node); - - if ( current_order == 0 ) //find all vertices - break; - - minimum_degree_stack.pop(); - put(marker, node, 0); //node has been ordered. - - typename GraphTraits::adjacency_iterator v, vend; - for (boost::tie(v,vend) = adjacent_vertices(node, G); v != vend; ++v) - - if ( get(marker,*v) > current_order ) { //*v is unordered vertex - put(marker, *v, current_order); //mark the columns adjacent to node - - //It is possible minimum degree goes down - //Here we keep tracking it. - put(degree, *v, get(degree, *v) - 1); - minimum_degree = std::min(minimum_degree, get(degree, *v)); - - //update the position of *v in the bucket sorter - degree_buckets.update(*v); - } - - current_order--; - } - - //at this point, order[i] = v_i; - } - -} - -#endif - diff --git a/sdk/include/boost/graph/stanford_graph.hpp b/sdk/include/boost/graph/stanford_graph.hpp deleted file mode 100644 index 9bc124d4885..00000000000 --- a/sdk/include/boost/graph/stanford_graph.hpp +++ /dev/null @@ -1,581 +0,0 @@ -//======================================================================= -// Copyright 1997-2001 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -#ifndef BOOST_GRAPH_SGB_GRAPH_HPP -#define BOOST_GRAPH_SGB_GRAPH_HPP - -#include -#include -#include -#include -#include -#include - -// Thanks to Andreas Scherer for numerous suggestions and fixes! - -// This file adapts a Stanford GraphBase (SGB) Graph pointer into a -// VertexListGraph. Note that a graph adaptor class is not needed, -// SGB's Graph* is used as is. The VertexListGraph concept is fulfilled by -// defining the appropriate non-member functions for Graph*. -// -// The PROTOTYPES change file extensions to SGB must be applied so -// that the SGB functions have real prototypes which are necessary for -// the C++ compiler. To apply the PROTOTYPES extensions, before you do -// "make tests install" for SGB do "ln -s PROTOTYPES/* ." to the SGB -// root directory (or just copy all the files from the PROTOTYPES -// directory to the SGB root directory). -// -extern "C" { - // We include all global definitions for the general stuff - // of The Stanford GraphBase and its various graph generator - // functions by reading all SGB headerfiles as in section 2 of - // the "test_sample" program. -#include /* SGB data structures */ -#include /* SGB input/output routines */ -#include /* random number generator */ -#include /* routines for shortest paths */ -#include /* the basic graph operations */ -#undef empty /* avoid name clash with C++ standard library */ - inline Graph* empty( long n ) /* and provide workaround */ - { return board(n,0L,0L,0L,2L,0L,0L); } -#include /* graphs based on literature */ -#include /* graphs based on economic data */ -#include /* graphs based on football scores */ -#include /* graphs based on logic circuits */ -#undef val /* avoid name clash with g++ headerfile stl_tempbuf.h */ - // val ==> Vertex::x.I -#include /* graphs based on Mona Lisa */ -#include /* graphs based on mileage data */ -#include /* planar graphs */ -#include /* Ramanujan graphs */ -#include /* random graphs */ -#include /* graphs based on Roget's Thesaurus */ -#include /* we save results in ASCII format */ -#include /* five-letter-word graphs */ -#undef weight /* avoid name clash with BGL parameter */ - // weight ==> Vertex::u.I -} - -namespace boost { - class sgb_edge; -} - -class sgb_out_edge_iterator; -class sgb_adj_iterator; -class sgb_vertex_iterator; - -namespace boost { - typedef Graph* sgb_graph_ptr; - typedef const Graph* sgb_const_graph_ptr; - - struct sgb_traversal_tag : - public virtual vertex_list_graph_tag, - public virtual incidence_graph_tag, - public virtual adjacency_graph_tag { }; - - template <> struct graph_traits { - typedef Vertex* vertex_descriptor; - typedef boost::sgb_edge edge_descriptor; - typedef sgb_out_edge_iterator out_edge_iterator; - typedef void in_edge_iterator; - typedef sgb_adj_iterator adjacency_iterator; - typedef sgb_vertex_iterator vertex_iterator; - typedef void edge_iterator; - typedef long vertices_size_type; - typedef long edge_size_type; - typedef long degree_size_type; - typedef directed_tag directed_category; - typedef sgb_traversal_tag traversal_category; - typedef allow_parallel_edge_tag edge_parallel_category; - }; - template <> struct graph_traits { - typedef Vertex* vertex_descriptor; - typedef boost::sgb_edge edge_descriptor; - typedef sgb_out_edge_iterator out_edge_iterator; - typedef void in_edge_iterator; - typedef sgb_adj_iterator adjacency_iterator; - typedef sgb_vertex_iterator vertex_iterator; - typedef void edge_iterator; - typedef long vertices_size_type; - typedef long edge_size_type; - typedef long degree_size_type; - typedef directed_tag directed_category; - typedef sgb_traversal_tag traversal_category; - typedef allow_parallel_edge_tag edge_parallel_category; - }; -} - -namespace boost { - - struct edge_length_t { - typedef edge_property_tag kind; - }; - - // We could just use Arc* as the edge descriptor type, but - // we want to add the source(e,g) function which requires - // that we carry along a pointer to the source vertex. - class sgb_edge { - typedef sgb_edge self; - public: - sgb_edge() : _arc(0), _src(0) { } - sgb_edge(Arc* a, Vertex* s) : _arc(a), _src(s) { } - friend Vertex* source(self e, sgb_const_graph_ptr) { return e._src; } - friend Vertex* target(self e, sgb_const_graph_ptr) { return e._arc->tip; } - friend bool operator==(const self& a, const self& b) { - return a._arc == b._arc; } - friend bool operator!=(const self& a, const self& b) { - return a._arc != b._arc; } -#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) - template friend class sgb_edge_length_map; - template friend class sgb_edge_util_map; - friend long get(edge_length_t, const sgb_graph_ptr&, const sgb_edge& key); - friend long get(edge_length_t, const sgb_const_graph_ptr&, const sgb_edge& key); - friend void put(edge_length_t, sgb_graph_ptr&, const sgb_edge& key, long value); - protected: -#endif - Arc* _arc; - Vertex* _src; - }; -} // namespace boost - - class sgb_out_edge_iterator - : public boost::forward_iterator_helper< - sgb_out_edge_iterator, boost::sgb_edge, - std::ptrdiff_t, boost::sgb_edge*, boost::sgb_edge> - { - typedef sgb_out_edge_iterator self; - public: - sgb_out_edge_iterator() : _src(0), _arc(0) {} - sgb_out_edge_iterator(Vertex* s, Arc* d) : _src(s), _arc(d) {} - boost::sgb_edge operator*() { return boost::sgb_edge(_arc, _src); } - self& operator++() { _arc = _arc->next; return *this; } - friend bool operator==(const self& x, const self& y) { - return x._arc == y._arc; } - protected: - Vertex* _src; - Arc* _arc; - }; - - class sgb_adj_iterator - : public boost::forward_iterator_helper< - sgb_adj_iterator, Vertex*, std::ptrdiff_t, Vertex**,Vertex*> - { - typedef sgb_adj_iterator self; - public: - sgb_adj_iterator() : _arc(0) {} - sgb_adj_iterator(Arc* d) : _arc(d) {} - Vertex* operator*() { return _arc->tip; } - self& operator++() { _arc = _arc->next; return *this; } - friend bool operator==(const self& x, const self& y) { - return x._arc == y._arc; } - protected: - Arc* _arc; - }; - - // The reason we have this instead of just using Vertex* is that we - // want to use Vertex* as the vertex_descriptor instead of just - // Vertex, which avoids problems with boost passing vertex descriptors - // by value and how that interacts with the sgb_vertex_id_map. - class sgb_vertex_iterator - : public boost::forward_iterator_helper< - sgb_vertex_iterator, Vertex*, std::ptrdiff_t, Vertex**, Vertex*> - { - typedef sgb_vertex_iterator self; - public: - sgb_vertex_iterator() : _v(0) { } - sgb_vertex_iterator(Vertex* v) : _v(v) { } - Vertex* operator*() { return _v; } - self& operator++() { ++_v; return *this; } - friend bool operator==(const self& x, const self& y) { - return x._v == y._v; } - protected: - Vertex* _v; - }; - -namespace boost { - - inline std::pair - vertices(sgb_const_graph_ptr g) - { - return std::make_pair(sgb_vertex_iterator(g->vertices), - sgb_vertex_iterator(g->vertices + g->n)); - } - - inline std::pair - out_edges(Vertex* u, sgb_const_graph_ptr) - { - return std::make_pair( sgb_out_edge_iterator(u, u->arcs), - sgb_out_edge_iterator(u, 0) ); - } - - inline boost::graph_traits::degree_size_type - out_degree(Vertex* u, sgb_const_graph_ptr g) - { - boost::graph_traits::out_edge_iterator i, i_end; - boost::tie(i, i_end) = out_edges(u, g); - return std::distance(i, i_end); - } - - // in_edges? - - inline std::pair - adjacent_vertices(Vertex* u, sgb_const_graph_ptr) - { - return std::make_pair( sgb_adj_iterator(u->arcs), - sgb_adj_iterator(0) ); - } - - inline long num_vertices(sgb_const_graph_ptr g) { return g->n; } - inline long num_edges(sgb_const_graph_ptr g) { return g->m; } - - inline Vertex* vertex(long v, sgb_const_graph_ptr g) - { return g->vertices + v; } - - // Various Property Maps - - // Vertex ID - class sgb_vertex_id_map - : public boost::put_get_helper - { - public: - typedef boost::readable_property_map_tag category; - typedef long value_type; - typedef long reference; - typedef Vertex* key_type; - sgb_vertex_id_map() : _g(0) { } - sgb_vertex_id_map(sgb_graph_ptr g) : _g(g) { } - long operator[](Vertex* v) const { return v - _g->vertices; } - protected: - sgb_graph_ptr _g; - }; - inline sgb_vertex_id_map get(vertex_index_t, sgb_graph_ptr g) { - return sgb_vertex_id_map(g); - } - - // Vertex Name - class sgb_vertex_name_map - : public boost::put_get_helper - { - public: - typedef boost::readable_property_map_tag category; - typedef char* value_type; - typedef char* reference; - typedef Vertex* key_type; - char* operator[](Vertex* v) const { return v->name; } - }; - inline sgb_vertex_name_map get(vertex_name_t, sgb_graph_ptr) { - return sgb_vertex_name_map(); - } - - // Vertex Property Tags -#define SGB_PROPERTY_TAG(KIND,TAG) \ - template struct TAG##_property { \ - typedef KIND##_property_tag kind; \ - typedef T type; \ - }; - SGB_PROPERTY_TAG(vertex, u) - SGB_PROPERTY_TAG(vertex, v) - SGB_PROPERTY_TAG(vertex, w) - SGB_PROPERTY_TAG(vertex, x) - SGB_PROPERTY_TAG(vertex, y) - SGB_PROPERTY_TAG(vertex, z) - - // Edge Property Tags - SGB_PROPERTY_TAG(edge, a) - SGB_PROPERTY_TAG(edge, b) - - // Various Utility Maps - - // helpers - inline Vertex*& get_util(util& u, Vertex*) { return u.V; } - inline Arc*& get_util(util& u, Arc*) { return u.A; } - inline sgb_graph_ptr& get_util(util& u, sgb_graph_ptr) { return u.G; } - inline char*& get_util(util& u, char*) { return u.S; } - inline long& get_util(util& u, long) { return u.I; } - -#define SGB_GET_UTIL_FIELD(KIND,X) \ - template \ - inline T& get_util_field(KIND* k, X##_property) { \ - return get_util(k->X, T()); } - - SGB_GET_UTIL_FIELD(Vertex, u) - SGB_GET_UTIL_FIELD(Vertex, v) - SGB_GET_UTIL_FIELD(Vertex, w) - SGB_GET_UTIL_FIELD(Vertex, x) - SGB_GET_UTIL_FIELD(Vertex, y) - SGB_GET_UTIL_FIELD(Vertex, z) - - SGB_GET_UTIL_FIELD(Arc, a) - SGB_GET_UTIL_FIELD(Arc, b) - - // Vertex Utility Map - template - class sgb_vertex_util_map - : public boost::put_get_helper > - { - public: - typedef boost::lvalue_property_map_tag category; - typedef typename Tag::type value_type; - typedef Vertex* key_type; - typedef Ref reference; - reference operator[](Vertex* v) const { - return get_util_field(v, Tag()); - } - }; - - // Edge Utility Map - template - class sgb_edge_util_map - : public boost::put_get_helper > - { - public: - typedef boost::lvalue_property_map_tag category; - typedef typename Tag::type value_type; - typedef Vertex* key_type; - typedef Ref reference; - reference operator[](const sgb_edge& e) const { - return get_util_field(e._arc, Tag()); - } - }; - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - template - inline sgb_vertex_util_map - get_property_map(Tag, const sgb_graph_ptr& g, vertex_property_tag) { - return sgb_vertex_util_map(); - } - template - inline sgb_vertex_util_map - get_property_map(Tag, sgb_graph_ptr& g, vertex_property_tag) { - return sgb_vertex_util_map(); - } - - template - inline sgb_edge_util_map - get_property_map(Tag, const sgb_graph_ptr& g, edge_property_tag) { - return sgb_edge_util_map(); - } - template - inline sgb_edge_util_map - get_property_map(Tag, sgb_graph_ptr& g, edge_property_tag) { - return sgb_edge_util_map(); - } - -#endif // ! BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // Edge Length Access - template - class sgb_edge_length_map - : public boost::put_get_helper > - { - public: - typedef boost::lvalue_property_map_tag category; - typedef long value_type; - typedef sgb_edge key_type; - typedef Ref reference; - reference operator[](const sgb_edge& e) const { - return e._arc->len; - } - }; - - inline sgb_edge_length_map - get(edge_length_t, const sgb_graph_ptr&) { - return sgb_edge_length_map(); - } - inline sgb_edge_length_map - get(edge_length_t, const sgb_const_graph_ptr&) { - return sgb_edge_length_map(); - } - inline sgb_edge_length_map - get(edge_length_t, sgb_graph_ptr&) { - return sgb_edge_length_map(); - } - inline long - get(edge_length_t, const sgb_graph_ptr&, const sgb_edge& key) { - return key._arc->len; - } - inline long - get(edge_length_t, const sgb_const_graph_ptr&, const sgb_edge& key) { - return key._arc->len; - } - inline void - put(edge_length_t, sgb_graph_ptr&, const sgb_edge& key, long value) - { - key._arc->len = value; - } - - // Property Map Traits Classes - template <> - struct property_map { - typedef sgb_edge_length_map type; - typedef sgb_edge_length_map const_type; - }; - template <> - struct property_map { - typedef sgb_vertex_id_map type; - typedef sgb_vertex_id_map const_type; - }; - template <> - struct property_map { - typedef sgb_vertex_name_map type; - typedef sgb_vertex_name_map const_type; - }; - - template <> - struct property_map { - typedef sgb_edge_length_map const_type; - }; - template <> - struct property_map { - typedef sgb_vertex_id_map const_type; - }; - template <> - struct property_map { - typedef sgb_vertex_name_map const_type; - }; - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - - namespace detail { - template - struct sgb_choose_property_map { }; - template - struct sgb_choose_property_map { - typedef typename PropertyTag::type value_type; - typedef sgb_vertex_util_map type; - typedef sgb_vertex_util_map const_type; - }; - template - struct sgb_choose_property_map { - typedef typename PropertyTag::type value_type; - typedef sgb_edge_util_map type; - typedef sgb_edge_util_map const_type; - }; - } // namespace detail - template - struct property_map { - typedef typename property_kind::type Kind; - typedef detail::sgb_choose_property_map Choice; - typedef typename Choice::type type; - typedef typename Choice::const_type const_type; - }; - template - struct property_map { - typedef typename property_kind::type Kind; - typedef detail::sgb_choose_property_map Choice; - typedef typename Choice::const_type const_type; - }; - -#define SGB_UTIL_ACCESSOR(KIND,X) \ - template \ - inline sgb_##KIND##_util_map< X##_property, T&> \ - get(X##_property, sgb_graph_ptr&) { \ - return sgb_##KIND##_util_map< X##_property, T&>(); \ - } \ - template \ - inline sgb_##KIND##_util_map< X##_property, const T&> \ - get(X##_property, const sgb_graph_ptr&) { \ - return sgb_##KIND##_util_map< X##_property, const T&>(); \ - } \ - template \ - inline sgb_##KIND##_util_map< X##_property, const T&> \ - get(X##_property, const sgb_const_graph_ptr&) { \ - return sgb_##KIND##_util_map< X##_property, const T&>(); \ - } \ - template \ - inline typename \ - sgb_##KIND##_util_map< X##_property, const T&>::value_type \ - get(X##_property, const sgb_graph_ptr&, const Key& key) { \ - return sgb_##KIND##_util_map< X##_property, const T&>()[key]; \ - } \ - template \ - inline typename \ - sgb_##KIND##_util_map< X##_property, const T&>::value_type \ - get(X##_property, const sgb_const_graph_ptr&, const Key& key) { \ - return sgb_##KIND##_util_map< X##_property, const T&>()[key]; \ - } \ - template \ - inline void \ - put(X##_property, sgb_graph_ptr&, const Key& key, const Value& value) { \ - sgb_##KIND##_util_map< X##_property, T&>()[key] = value; \ - } - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#define SGB_UTIL_ACCESSOR_TYPE(KIND,TAG,TYPE) \ - inline sgb_##KIND##_util_map< TAG, TYPE& > \ - get(TAG, sgb_graph_ptr&) { \ - return sgb_##KIND##_util_map< TAG, TYPE& >(); \ - } \ - inline sgb_##KIND##_util_map< TAG, const TYPE& > \ - get(TAG, const sgb_graph_ptr&) { \ - return sgb_##KIND##_util_map< TAG, const TYPE& >(); \ - } \ - inline sgb_##KIND##_util_map< TAG, const TYPE& > \ - get(TAG, const sgb_const_graph_ptr&) { \ - return sgb_##KIND##_util_map< TAG, const TYPE& >(); \ - } \ - template \ - inline typename sgb_##KIND##_util_map< TAG, const TYPE& >::value_type \ - get(TAG, const sgb_graph_ptr&, const Key& key) { \ - return sgb_##KIND##_util_map< TAG, const TYPE& >()[key]; \ - } \ - template \ - inline typename sgb_##KIND##_util_map< TAG, const TYPE& >::value_type \ - get(TAG, const sgb_const_graph_ptr&, const Key& key) { \ - return sgb_##KIND##_util_map< TAG, const TYPE& >()[key]; \ - } \ - template \ - inline void \ - put(TAG, sgb_graph_ptr&, const Key& key, const Value& value) { \ - sgb_##KIND##_util_map< TAG, TYPE& >()[key] = value; \ - } \ - template <> struct property_map > { \ - typedef sgb_##KIND##_util_map< TAG, TYPE&> type; \ - typedef sgb_##KIND##_util_map< TAG, const TYPE&> const_type; \ - } - -#define SGB_UTIL_ACCESSOR(KIND,TAG) \ - SGB_UTIL_ACCESSOR_TYPE(KIND, TAG##_property, Vertex*); \ - SGB_UTIL_ACCESSOR_TYPE(KIND, TAG##_property, Arc*); \ - SGB_UTIL_ACCESSOR_TYPE(KIND, TAG##_property, sgb_graph_ptr); \ - SGB_UTIL_ACCESSOR_TYPE(KIND, TAG##_property, long); \ - SGB_UTIL_ACCESSOR_TYPE(KIND, TAG##_property, char*); - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - SGB_UTIL_ACCESSOR(vertex, u) - SGB_UTIL_ACCESSOR(vertex, v) - SGB_UTIL_ACCESSOR(vertex, w) - SGB_UTIL_ACCESSOR(vertex, x) - SGB_UTIL_ACCESSOR(vertex, y) - SGB_UTIL_ACCESSOR(vertex, z) - - SGB_UTIL_ACCESSOR(edge, a) - SGB_UTIL_ACCESSOR(edge, b) - -} // namespace boost - -#endif // BOOST_GRAPH_SGB_GRAPH_HPP diff --git a/sdk/include/boost/graph/strong_components.hpp b/sdk/include/boost/graph/strong_components.hpp deleted file mode 100644 index 4a5fd1b5e54..00000000000 --- a/sdk/include/boost/graph/strong_components.hpp +++ /dev/null @@ -1,350 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -#ifndef BOOST_GRAPH_STRONG_COMPONENTS_HPP -#define BOOST_GRAPH_STRONG_COMPONENTS_HPP - -#include -#include -#include -#include -#include - -namespace boost { - - //========================================================================== - // This is Tarjan's algorithm for strongly connected components - // from his paper "Depth first search and linear graph algorithms". - // It calculates the components in a single application of DFS. - // We implement the algorithm as a dfs-visitor. - - namespace detail { - - template - class tarjan_scc_visitor : public dfs_visitor<> - { - typedef typename property_traits::value_type comp_type; - typedef typename property_traits::value_type time_type; - public: - tarjan_scc_visitor(ComponentMap comp_map, RootMap r, DiscoverTime d, - comp_type& c_, Stack& s_) - : c(c_), comp(comp_map), root(r), discover_time(d), - dfs_time(time_type()), s(s_) { } - - template - void discover_vertex(typename graph_traits::vertex_descriptor v, - const Graph&) { - put(root, v, v); - put(comp, v, std::numeric_limits::max()); - put(discover_time, v, dfs_time++); - s.push(v); - } - template - void finish_vertex(typename graph_traits::vertex_descriptor v, - const Graph& g) { - typename graph_traits::vertex_descriptor w; - typename graph_traits::out_edge_iterator ei, ei_end; - for (tie(ei, ei_end) = out_edges(v, g); ei != ei_end; ++ei) { - w = target(*ei, g); - if (get(comp, w) == std::numeric_limits::max()) - put(root, v, this->min_discover_time(get(root,v), get(root,w))); - } - if (get(root, v) == v) { - do { - w = s.top(); s.pop(); - put(comp, w, c); - } while (w != v); - ++c; - } - } - private: - template - Vertex min_discover_time(Vertex u, Vertex v) { - return get(discover_time, u) < get(discover_time,v) ? u : v; - } - - comp_type& c; - ComponentMap comp; - RootMap root; - DiscoverTime discover_time; - time_type dfs_time; - Stack& s; - }; - - template - typename property_traits::value_type - strong_components_impl - (const Graph& g, // Input - ComponentMap comp, // Output - // Internal record keeping - RootMap root, - DiscoverTime discover_time, - const bgl_named_params& params) - { - typedef typename graph_traits::vertex_descriptor Vertex; - function_requires< ReadWritePropertyMapConcept >(); - function_requires< ReadWritePropertyMapConcept >(); - typedef typename property_traits::value_type RootV; - function_requires< ConvertibleConcept >(); - function_requires< ReadWritePropertyMapConcept >(); - - typename property_traits::value_type total = 0; - - std::stack s; - detail::tarjan_scc_visitor > - vis(comp, root, discover_time, total, s); - depth_first_search(g, params.visitor(vis)); - return total; - } - - //------------------------------------------------------------------------- - // The dispatch functions handle the defaults for the rank and discover - // time property maps. - // dispatch with class specialization to avoid VC++ bug - - template - struct strong_comp_dispatch2 { - template - inline static typename property_traits::value_type - apply(const Graph& g, - ComponentMap comp, - RootMap r_map, - const bgl_named_params& params, - DiscoverTimeMap time_map) - { - return strong_components_impl(g, comp, r_map, time_map, params); - } - }; - - - template <> - struct strong_comp_dispatch2 { - template - inline static typename property_traits::value_type - apply(const Graph& g, - ComponentMap comp, - RootMap r_map, - const bgl_named_params& params, - detail::error_property_not_found) - { - typedef typename graph_traits::vertices_size_type size_type; - size_type n = num_vertices(g) > 0 ? num_vertices(g) : 1; - std::vector time_vec(n); - return strong_components_impl - (g, comp, r_map, - make_iterator_property_map(time_vec.begin(), choose_const_pmap - (get_param(params, vertex_index), - g, vertex_index), time_vec[0]), - params); - } - }; - - template - inline typename property_traits::value_type - scc_helper2(const Graph& g, - ComponentMap comp, - RootMap r_map, - const bgl_named_params& params, - DiscoverTimeMap time_map) - { - return strong_comp_dispatch2::apply(g, comp, r_map, params, time_map); - } - - template - struct strong_comp_dispatch1 { - - template - inline static typename property_traits::value_type - apply(const Graph& g, - ComponentMap comp, - const bgl_named_params& params, - RootMap r_map) - { - return scc_helper2(g, comp, r_map, params, get_param(params, vertex_discover_time)); - } - }; - template <> - struct strong_comp_dispatch1 { - - template - inline static typename property_traits::value_type - apply(const Graph& g, - ComponentMap comp, - const bgl_named_params& params, - detail::error_property_not_found) - { - typedef typename graph_traits::vertex_descriptor Vertex; - typename std::vector::size_type - n = num_vertices(g) > 0 ? num_vertices(g) : 1; - std::vector root_vec(n); - return scc_helper2 - (g, comp, - make_iterator_property_map(root_vec.begin(), choose_const_pmap - (get_param(params, vertex_index), - g, vertex_index), root_vec[0]), - params, - get_param(params, vertex_discover_time)); - } - }; - - template - inline typename property_traits::value_type - scc_helper1(const Graph& g, - ComponentMap comp, - const bgl_named_params& params, - RootMap r_map) - { - return detail::strong_comp_dispatch1::apply(g, comp, params, - r_map); - } - - } // namespace detail - - template - inline typename property_traits::value_type - strong_components(const Graph& g, ComponentMap comp, - const bgl_named_params& params) - { - typedef typename graph_traits::directed_category DirCat; - BOOST_STATIC_ASSERT((is_convertible::value == true)); - return detail::scc_helper1(g, comp, params, - get_param(params, vertex_root_t())); - } - - template - inline typename property_traits::value_type - strong_components(const Graph& g, ComponentMap comp) - { - typedef typename graph_traits::directed_category DirCat; - BOOST_STATIC_ASSERT((is_convertible::value == true)); - bgl_named_params params(0); - return strong_components(g, comp, params); - } - - template - void build_component_lists - (const Graph& g, - typename graph_traits::vertices_size_type num_scc, - ComponentMap component_number, - ComponentLists& components) - { - components.resize(num_scc); - typename graph_traits::vertex_iterator vi, vi_end; - for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) - components[component_number[*vi]].push_back(*vi); - } - - -} // namespace boost - -#include -#include -#include -#include -#include // for components_recorder - -namespace boost { - - //========================================================================== - // This is the version of strongly connected components from - // "Intro. to Algorithms" by Cormen, Leiserson, Rivest, which was - // adapted from "Data Structure and Algorithms" by Aho, Hopcroft, - // and Ullman, who credit the algorithm to S.R. Kosaraju and M. Sharir. - // The algorithm is based on computing DFS forests the graph - // and its transpose. - - // This algorithm is slower than Tarjan's by a constant factor, uses - // more memory, and puts more requirements on the graph type. - - template - typename property_traits::value_type - kosaraju_strong_components(Graph& G, ComponentsMap c, - FinishTime finish_time, ColorMap color) - { - function_requires< MutableGraphConcept >(); - // ... - - typedef typename graph_traits::vertex_descriptor Vertex; - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - typename property_traits::value_type time = 0; - depth_first_search - (G, make_dfs_visitor(stamp_times(finish_time, time, on_finish_vertex())), - color); - - Graph G_T(num_vertices(G)); - transpose_graph(G, G_T); - - typedef typename property_traits::value_type count_type; - - count_type c_count(0); - detail::components_recorder - vis(c, c_count); - - // initialize G_T - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(G_T); ui != ui_end; ++ui) - put(color, *ui, Color::white()); - - typedef typename property_traits::value_type D; - typedef indirect_cmp< FinishTime, std::less > Compare; - - Compare fl(finish_time); - std::priority_queue, Compare > Q(fl); - - typename graph_traits::vertex_iterator i, j, iend, jend; - tie(i, iend) = vertices(G_T); - tie(j, jend) = vertices(G); - for ( ; i != iend; ++i, ++j) { - put(f, *i, get(finish_time, *j)); - Q.push(*i); - } - - while ( !Q.empty() ) { - Vertex u = Q.top(); - Q.pop(); - if (get(color, u) == Color::white()) { - depth_first_visit(G_T, u, vis, color); - ++c_count; - } - } - return c_count; - } - -} // namespace boost - -#endif // BOOST_GRAPH_STRONG_COMPONENTS_HPP diff --git a/sdk/include/boost/graph/subgraph.hpp b/sdk/include/boost/graph/subgraph.hpp deleted file mode 100644 index bba91f3ce77..00000000000 --- a/sdk/include/boost/graph/subgraph.hpp +++ /dev/null @@ -1,780 +0,0 @@ -//======================================================================= -// Copyright 2001 University of Notre Dame. -// Authors: Jeremy G. Siek and Lie-Quan Lee -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -#ifndef BOOST_SUBGRAPH_HPP -#define BOOST_SUBGRAPH_HPP - -// UNDER CONSTRUCTION - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { - - struct subgraph_tag { }; - - // Invariants of an induced subgraph: - // - If vertex u is in subgraph g, then u must be in g.parent(). - // - If edge e is in subgraph g, then e must be in g.parent(). - // - If edge e=(u,v) is in the root graph, then edge e - // is also in any subgraph that contains both vertex u and v. - - // The Graph template parameter must have a vertex_index - // and edge_index internal property. It is assumed that - // the vertex indices are assigned automatically by the - // graph during a call to add_vertex(). It is not - // assumed that the edge vertices are assigned automatically, - // they are explicitly assigned here. - - template - class subgraph { - typedef graph_traits Traits; - typedef std::list*> ChildrenList; - public: - // Graph requirements - typedef typename Traits::vertex_descriptor vertex_descriptor; - typedef typename Traits::edge_descriptor edge_descriptor; - typedef typename Traits::directed_category directed_category; - typedef typename Traits::edge_parallel_category edge_parallel_category; - typedef typename Traits::traversal_category traversal_category; - - // IncidenceGraph requirements - typedef typename Traits::out_edge_iterator out_edge_iterator; - typedef typename Traits::degree_size_type degree_size_type; - - // AdjacencyGraph requirements - typedef typename Traits::adjacency_iterator adjacency_iterator; - - // VertexListGraph requirements - typedef typename Traits::vertex_iterator vertex_iterator; - typedef typename Traits::vertices_size_type vertices_size_type; - - // EdgeListGraph requirements - typedef typename Traits::edge_iterator edge_iterator; - typedef typename Traits::edges_size_type edges_size_type; - - typedef typename Traits::in_edge_iterator in_edge_iterator; - - typedef typename Graph::edge_property_type edge_property_type; - typedef typename Graph::vertex_property_type vertex_property_type; - typedef subgraph_tag graph_tag; - typedef Graph graph_type; - typedef typename Graph::graph_property_type graph_property_type; - - // Constructors - - // Create the main graph, the root of the subgraph tree - subgraph() - : m_parent(0), m_edge_counter(0) - { } - subgraph(const graph_property_type& p) - : m_graph(p), m_parent(0), m_edge_counter(0) - { } - subgraph(vertices_size_type n, - const graph_property_type& p = graph_property_type()) - : m_graph(n, p), m_parent(0), m_edge_counter(0), m_global_vertex(n) - { - typename Graph::vertex_iterator v, v_end; - vertices_size_type i = 0; - for (tie(v, v_end) = vertices(m_graph); v != v_end; ++v) - m_global_vertex[i++] = *v; - } - - // copy constructor - subgraph(const subgraph& x) - : m_graph(x.m_graph), m_parent(x.m_parent), - m_edge_counter(x.m_edge_counter), - m_global_vertex(x.m_global_vertex) - { - // Do a deep copy - for (typename ChildrenList::const_iterator i = x.m_children.begin(); - i != x.m_children.end(); ++i) - m_children.push_back(new subgraph( **i )); - } - - - ~subgraph() { - for (typename ChildrenList::iterator i = m_children.begin(); - i != m_children.end(); ++i) - delete *i; - } - - - // Create a subgraph - subgraph& create_subgraph() { - m_children.push_back(new subgraph()); - m_children.back()->m_parent = this; - return *m_children.back(); - } - - // Create a subgraph with the specified vertex set. - template - subgraph& create_subgraph(VertexIterator first, - VertexIterator last) - { - m_children.push_back(new subgraph()); - m_children.back()->m_parent = this; - for (; first != last; ++first) - add_vertex(*first, *m_children.back()); - return *m_children.back(); - } - - // local <-> global descriptor conversion functions - vertex_descriptor local_to_global(vertex_descriptor u_local) const - { - return m_global_vertex[u_local]; - } - vertex_descriptor global_to_local(vertex_descriptor u_global) const - { - vertex_descriptor u_local; bool in_subgraph; - tie(u_local, in_subgraph) = this->find_vertex(u_global); - assert(in_subgraph == true); - return u_local; - } - edge_descriptor local_to_global(edge_descriptor e_local) const - { - return m_global_edge[get(get(edge_index, m_graph), e_local)]; - } - edge_descriptor global_to_local(edge_descriptor e_global) const - { - return - (*m_local_edge.find(get(get(edge_index, root().m_graph), e_global))).second; - } - - // Is vertex u (of the root graph) contained in this subgraph? - // If so, return the matching local vertex. - std::pair - find_vertex(vertex_descriptor u_global) const - { - typename std::map::const_iterator - i = m_local_vertex.find(u_global); - return std::make_pair((*i).second, i != m_local_vertex.end()); - } - - // Return the parent graph. - subgraph& parent() { return *m_parent; } - const subgraph& parent() const { return *m_parent; } - - bool is_root() const { return m_parent == 0; } - - // Return the root graph of the subgraph tree. - subgraph& root() { - if (this->is_root()) - return *this; - else - return m_parent->root(); - } - const subgraph& root() const { - if (this->is_root()) - return *this; - else - return m_parent->root(); - } - - // Return the children subgraphs of this graph/subgraph. - // Use a list of pointers because the VC++ std::list doesn't like - // storing incomplete type. - typedef typename indirect_iterator_generator, subgraph&, std::bidirectional_iterator_tag, - subgraph* >::type children_iterator; - - typedef typename indirect_iterator_generator, const subgraph&, std::bidirectional_iterator_tag, - const subgraph* >::type const_children_iterator; - - std::pair - children() const - { - return std::make_pair(const_children_iterator(m_children.begin()), - const_children_iterator(m_children.end())); - } - - std::pair - children() - { - return std::make_pair(children_iterator(m_children.begin()), - children_iterator(m_children.end())); - } - - std::size_t num_children() const { return m_children.size(); } - - // private: - typedef typename property_map::type EdgeIndexMap; - typedef typename property_traits::value_type edge_index_type; - - Graph m_graph; - subgraph* m_parent; - edge_index_type m_edge_counter; // for generating unique edge indices - ChildrenList m_children; - std::vector m_global_vertex; // local -> global - std::map m_local_vertex; // global -> local - std::vector m_global_edge; // local -> global - std::map m_local_edge; // global -> local - - edge_descriptor - local_add_edge(vertex_descriptor u_local, vertex_descriptor v_local, - edge_descriptor e_global) - { - edge_descriptor e_local; - bool inserted; - tie(e_local, inserted) = add_edge(u_local, v_local, m_graph); - put(edge_index, m_graph, e_local, m_edge_counter++); - m_global_edge.push_back(e_global); - m_local_edge[get(get(edge_index, this->root()), e_global)] = e_local; - return e_local; - } - - }; - - //=========================================================================== - // Functions special to the Subgraph Class - - template - typename subgraph::vertex_descriptor - add_vertex(typename subgraph::vertex_descriptor u_global, - subgraph& g) - { - assert(!g.is_root()); - typename subgraph::vertex_descriptor u_local, v_global, uu_global; - typename subgraph::edge_descriptor e_global; - - u_local = add_vertex(g.m_graph); - g.m_global_vertex.push_back(u_global); - g.m_local_vertex[u_global] = u_local; - - subgraph& r = g.root(); - - // remember edge global and local maps - { - typename subgraph::out_edge_iterator ei, ei_end; - for (tie(ei, ei_end) = out_edges(u_global, r); - ei != ei_end; ++ei) { - e_global = *ei; - v_global = target(e_global, r); - if (g.find_vertex(v_global).second == true) - g.local_add_edge(u_local, g.global_to_local(v_global), e_global); - } - } - if (is_directed(g)) { // not necessary for undirected graph - typename subgraph::vertex_iterator vi, vi_end; - typename subgraph::out_edge_iterator ei, ei_end; - for (tie(vi, vi_end) = vertices(r); vi != vi_end; ++vi) { - v_global = *vi; - if (g.find_vertex(v_global).second) - for (tie(ei, ei_end) = out_edges(*vi, r); ei != ei_end; ++ei) { - e_global = *ei; - uu_global = target(e_global, r); - if (uu_global == u_global && g.find_vertex(v_global).second) - g.local_add_edge(g.global_to_local(v_global), u_local, e_global); - } - } - } - - return u_local; - } - - //=========================================================================== - // Functions required by the IncidenceGraph concept - - template - std::pair::out_edge_iterator, - typename graph_traits::out_edge_iterator> - out_edges(typename graph_traits::vertex_descriptor u_local, - const subgraph& g) - { return out_edges(u_local, g.m_graph); } - - template - typename graph_traits::degree_size_type - out_degree(typename graph_traits::vertex_descriptor u_local, - const subgraph& g) - { return out_degree(u_local, g.m_graph); } - - template - typename graph_traits::vertex_descriptor - source(typename graph_traits::edge_descriptor e_local, - const subgraph& g) - { return source(e_local, g.m_graph); } - - template - typename graph_traits::vertex_descriptor - target(typename graph_traits::edge_descriptor e_local, - const subgraph& g) - { return target(e_local, g.m_graph); } - - //=========================================================================== - // Functions required by the BidirectionalGraph concept - - template - std::pair::in_edge_iterator, - typename graph_traits::in_edge_iterator> - in_edges(typename graph_traits::vertex_descriptor u_local, - const subgraph& g) - { return in_edges(u_local, g.m_graph); } - - template - typename graph_traits::degree_size_type - in_degree(typename graph_traits::vertex_descriptor u_local, - const subgraph& g) - { return in_degree(u_local, g.m_graph); } - - template - typename graph_traits::degree_size_type - degree(typename graph_traits::vertex_descriptor u_local, - const subgraph& g) - { return degree(u_local, g.m_graph); } - - //=========================================================================== - // Functions required by the AdjacencyGraph concept - - template - std::pair::adjacency_iterator, - typename subgraph::adjacency_iterator> - adjacent_vertices(typename subgraph::vertex_descriptor u_local, - const subgraph& g) - { return adjacent_vertices(u_local, g.m_graph); } - - //=========================================================================== - // Functions required by the VertexListGraph concept - - template - std::pair::vertex_iterator, - typename subgraph::vertex_iterator> - vertices(const subgraph& g) - { return vertices(g.m_graph); } - - template - typename subgraph::vertices_size_type - num_vertices(const subgraph& g) - { return num_vertices(g.m_graph); } - - //=========================================================================== - // Functions required by the EdgeListGraph concept - - template - std::pair::edge_iterator, - typename subgraph::edge_iterator> - edges(const subgraph& g) - { return edges(g.m_graph); } - - template - typename subgraph::edges_size_type - num_edges(const subgraph& g) - { return num_edges(g.m_graph); } - - //=========================================================================== - // Functions required by the AdjacencyMatrix concept - - template - std::pair::edge_descriptor, bool> - edge(typename subgraph::vertex_descriptor u_local, - typename subgraph::vertex_descriptor v_local, - const subgraph& g) - { - return edge(u_local, v_local, g.m_graph); - } - - //=========================================================================== - // Functions required by the MutableGraph concept - - namespace detail { - - template - void add_edge_recur_down - (Vertex u_global, Vertex v_global, Edge e_global, subgraph& g); - - template - void children_add_edge(Vertex u_global, Vertex v_global, Edge e_global, - Children& c, subgraph* orig) - { - for (typename Children::iterator i = c.begin(); i != c.end(); ++i) - if ((*i)->find_vertex(u_global).second - && (*i)->find_vertex(v_global).second) - add_edge_recur_down(u_global, v_global, e_global, **i, orig); - } - - template - void add_edge_recur_down - (Vertex u_global, Vertex v_global, Edge e_global, subgraph& g, - subgraph* orig) - { - if (&g != orig ) { - // add local edge only if u_global and v_global are in subgraph g - Vertex u_local, v_local; - bool u_in_subgraph, v_in_subgraph; - tie(u_local, u_in_subgraph) = g.find_vertex(u_global); - tie(v_local, v_in_subgraph) = g.find_vertex(v_global); - if (u_in_subgraph && v_in_subgraph) - g.local_add_edge(u_local, v_local, e_global); - } - children_add_edge(u_global, v_global, e_global, g.m_children, orig); - } - - template - std::pair::edge_descriptor, bool> - add_edge_recur_up(Vertex u_global, Vertex v_global, - const typename Graph::edge_property_type& ep, - subgraph& g, subgraph* orig) - { - if (g.is_root()) { - typename subgraph::edge_descriptor e_global; - bool inserted; - tie(e_global, inserted) = add_edge(u_global, v_global, ep, g.m_graph); - put(edge_index, g.m_graph, e_global, g.m_edge_counter++); - g.m_global_edge.push_back(e_global); - children_add_edge(u_global, v_global, e_global, g.m_children, orig); - return std::make_pair(e_global, inserted); - } else - return add_edge_recur_up(u_global, v_global, ep, *g.m_parent, orig); - } - - } // namespace detail - - // Add an edge to the subgraph g, specified by the local vertex - // descriptors u and v. In addition, the edge will be added to any - // other subgraphs which contain vertex descriptors u and v. - - template - std::pair::edge_descriptor, bool> - add_edge(typename subgraph::vertex_descriptor u_local, - typename subgraph::vertex_descriptor v_local, - const typename G::edge_property_type& ep, - subgraph& g) - { - if (g.is_root()) // u_local and v_local are really global - return detail::add_edge_recur_up(u_local, v_local, ep, g, &g); - else { - typename subgraph::edge_descriptor e_local, e_global; - bool inserted; - tie(e_global, inserted) = detail::add_edge_recur_up - (g.local_to_global(u_local), g.local_to_global(v_local), ep, g, &g); - e_local = g.local_add_edge(u_local, v_local, e_global); - return std::make_pair(e_local, inserted); - } - } - - template - std::pair::edge_descriptor, bool> - add_edge(typename subgraph::vertex_descriptor u, - typename subgraph::vertex_descriptor v, - subgraph& g) - { - typename G::edge_property_type ep; - return add_edge(u, v, ep, g); - } - - namespace detail { - - //------------------------------------------------------------------------- - // implementation of remove_edge(u,v,g) - - template - void remove_edge_recur_down(Vertex u_global, Vertex v_global, - subgraph& g); - - template - void children_remove_edge(Vertex u_global, Vertex v_global, - Children& c) - { - for (typename Children::iterator i = c.begin(); i != c.end(); ++i) - if ((*i)->find_vertex(u_global).second - && (*i)->find_vertex(v_global).second) - remove_edge_recur_down(u_global, v_global, **i); - } - - template - void remove_edge_recur_down(Vertex u_global, Vertex v_global, - subgraph& g) - { - Vertex u_local, v_local; - u_local = g.m_local_vertex[u_global]; - v_local = g.m_local_vertex[v_global]; - remove_edge(u_local, v_local, g.m_graph); - children_remove_edge(u_global, v_global, g.m_children); - } - - template - void remove_edge_recur_up(Vertex u_global, Vertex v_global, - subgraph& g) - { - if (g.is_root()) { - remove_edge(u_global, v_global, g.m_graph); - children_remove_edge(u_global, v_global, g.m_children); - } else - remove_edge_recur_up(u_global, v_global, *g.m_parent); - } - - //------------------------------------------------------------------------- - // implementation of remove_edge(e,g) - - template - void remove_edge_recur_down(Edge e_global, subgraph& g); - - template - void children_remove_edge(Edge e_global, Children& c) - { - for (typename Children::iterator i = c.begin(); i != c.end(); ++i) - if ((*i)->find_vertex(source(e_global, **i)).second - && (*i)->find_vertex(target(e_global, **i)).second) - remove_edge_recur_down(source(e_global, **i), - target(e_global, **i), **i); - } - - template - void remove_edge_recur_down(Edge e_global, subgraph& g) - { - remove_edge(g.global_to_local(e_global), g.m_graph); - children_remove_edge(e_global, g.m_children); - } - - template - void remove_edge_recur_up(Edge e_global, subgraph& g) - { - if (g.is_root()) { - remove_edge(e_global, g.m_graph); - children_remove_edge(e_global, g.m_children); - } else - remove_edge_recur_up(e_global, *g.m_parent); - } - - } // namespace detail - - template - void - remove_edge(typename subgraph::vertex_descriptor u_local, - typename subgraph::vertex_descriptor v_local, - subgraph& g) - { - if (g.is_root()) - detail::remove_edge_recur_up(u_local, v_local, g); - else - detail::remove_edge_recur_up(g.local_to_global(u_local), - g.local_to_global(v_local), g); - } - - template - void - remove_edge(typename subgraph::edge_descriptor e_local, - subgraph& g) - { - if (g.is_root()) - detail::remove_edge_recur_up(e_local, g); - else - detail::remove_edge_recur_up(g.local_to_global(e_local), g); - } - - template - void - remove_edge_if(Predicate p, subgraph& g) - { - // This is wrong... - remove_edge_if(p, g.m_graph); - } - - template - void - clear_vertex(typename subgraph::vertex_descriptor v_local, - subgraph& g) - { - // this is wrong... - clear_vertex(v_local, g.m_graph); - } - - namespace detail { - - template - typename subgraph::vertex_descriptor - add_vertex_recur_up(subgraph& g) - { - typename subgraph::vertex_descriptor u_local, u_global; - if (g.is_root()) { - u_global = add_vertex(g.m_graph); - g.m_global_vertex.push_back(u_global); - } else { - u_global = add_vertex_recur_up(*g.m_parent); - u_local = add_vertex(g.m_graph); - g.m_global_vertex.push_back(u_global); - g.m_local_vertex[u_global] = u_local; - } - return u_global; - } - - } // namespace detail - - template - typename subgraph::vertex_descriptor - add_vertex(subgraph& g) - { - typename subgraph::vertex_descriptor u_local, u_global; - if (g.is_root()) { - u_global = add_vertex(g.m_graph); - g.m_global_vertex.push_back(u_global); - u_local = u_global; - } else { - u_global = detail::add_vertex_recur_up(g.parent()); - u_local = add_vertex(g.m_graph); - g.m_global_vertex.push_back(u_global); - g.m_local_vertex[u_global] = u_local; - } - return u_local; - } - - template - void remove_vertex(typename subgraph::vertex_descriptor u, - subgraph& g) - { - // UNDER CONSTRUCTION - assert(false); - } - - - //=========================================================================== - // Functions required by the PropertyGraph concept - - template - class subgraph_property_map - : public put_get_helper< - typename property_traits::reference, - subgraph_property_map > - { - typedef property_traits Traits; - public: - typedef typename Traits::category category; - typedef typename Traits::value_type value_type; - typedef typename Traits::key_type key_type; - typedef typename Traits::reference reference; - - subgraph_property_map() { } - - subgraph_property_map(GraphPtr g, PropertyMap pmap) - : m_g(g), m_pmap(pmap) { } - - inline reference operator[](key_type e_local) const { - if (m_g->m_parent == 0) - return m_pmap[e_local]; - else - return m_pmap[m_g->local_to_global(e_local)]; - } - GraphPtr m_g; - PropertyMap m_pmap; - }; - - namespace detail { - - struct subgraph_property_generator { - template - class bind_ { - typedef typename SubGraph::graph_type Graph; - typedef SubGraph* SubGraphPtr; - typedef const SubGraph* const_SubGraphPtr; - typedef typename property_map::type PMap; - typedef typename property_map::const_type const_PMap; - public: - typedef subgraph_property_map type; - typedef subgraph_property_map - const_type; - }; - }; - - } // namespace detail - - template <> - struct vertex_property_selector { - typedef detail::subgraph_property_generator type; - }; - - template <> - struct edge_property_selector { - typedef detail::subgraph_property_generator type; - }; - - template - typename property_map< subgraph, Property>::type - get(Property, subgraph& g) - { - typedef typename property_map< subgraph, Property>::type PMap; - return PMap(&g, get(Property(), g.m_graph)); - } - - template - typename property_map< subgraph, Property>::const_type - get(Property, const subgraph& g) - { - typedef typename property_map< subgraph, Property>::const_type PMap; - return PMap(&g, get(Property(), g.m_graph)); - } - - template - typename property_traits< - typename property_map< subgraph, Property>::const_type - >::value_type - get(Property, const subgraph& g, const Key& k) - { - typedef typename property_map< subgraph, Property>::const_type PMap; - PMap pmap(&g, get(Property(), g.m_graph)); - return pmap[k]; - } - - template - void - put(Property, subgraph& g, const Key& k, const Value& val) - { - typedef typename property_map< subgraph, Property>::type PMap; - PMap pmap(&g, get(Property(), g.m_graph)); - pmap[k] = val; - } - - template - inline - typename graph_property::type& - get_property(subgraph& g, Tag tag) { - return get_property(g.m_graph, tag); - } - - template - inline - const typename graph_property::type& - get_property(const subgraph& g, Tag tag) { - return get_property(g.m_graph, tag); - } - - //=========================================================================== - // Miscellaneous Functions - - template - typename subgraph::vertex_descriptor - vertex(typename subgraph::vertices_size_type n, const subgraph& g) - { - return vertex(n, g.m_graph); - } - -} // namespace boost - -#endif // BOOST_SUBGRAPH_HPP diff --git a/sdk/include/boost/graph/topological_sort.hpp b/sdk/include/boost/graph/topological_sort.hpp deleted file mode 100644 index ed177f33c90..00000000000 --- a/sdk/include/boost/graph/topological_sort.hpp +++ /dev/null @@ -1,92 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_TOPOLOGICAL_SORT_HPP -#define BOOST_GRAPH_TOPOLOGICAL_SORT_HPP - -#include -#include -#include -#include -#include - -namespace boost { - - - // Topological sort visitor - // - // This visitor merely writes the linear ordering into an - // OutputIterator. The OutputIterator could be something like an - // ostream_iterator, or it could be a back/front_insert_iterator. - // Note that if it is a back_insert_iterator, the recorded order is - // the reverse topological order. On the other hand, if it is a - // front_insert_iterator, the recorded order is the topological - // order. - // - template - struct topo_sort_visitor : public dfs_visitor<> - { - topo_sort_visitor(OutputIterator _iter) - : m_iter(_iter) { } - - template - void back_edge(const Edge& u, Graph&) { throw not_a_dag(); } - - template - void finish_vertex(const Vertex& u, Graph&) { *m_iter++ = u; } - - OutputIterator m_iter; - }; - - - // Topological Sort - // - // The topological sort algorithm creates a linear ordering - // of the vertices such that if edge (u,v) appears in the graph, - // then u comes before v in the ordering. The graph must - // be a directed acyclic graph (DAG). The implementation - // consists mainly of a call to depth-first search. - // - - template - void topological_sort(VertexListGraph& g, OutputIterator result, - const bgl_named_params& params) - { - typedef topo_sort_visitor TopoVisitor; - depth_first_search(g, params.visitor(TopoVisitor(result))); - } - - template - void topological_sort(VertexListGraph& g, OutputIterator result) - { - topological_sort(g, result, - bgl_named_params(0)); // bogus - } - -} // namespace boost - -#endif /*BOOST_GRAPH_TOPOLOGICAL_SORT_H*/ diff --git a/sdk/include/boost/graph/transitive_closure.hpp b/sdk/include/boost/graph/transitive_closure.hpp deleted file mode 100644 index 9f688752bd5..00000000000 --- a/sdk/include/boost/graph/transitive_closure.hpp +++ /dev/null @@ -1,352 +0,0 @@ -// Copyright (C) 2001 Vladimir Prus -// Copyright (C) 2001 Jeremy Siek -// Permission to copy, use, modify, sell and distribute this software is -// granted, provided this copyright notice appears in all copies and -// modified version are clearly marked as such. This software is provided -// "as is" without express or implied warranty, and with no claim as to its -// suitability for any purpose. - -// NOTE: this final is generated by libs/graph/doc/transitive_closure.w - -#ifndef BOOST_GRAPH_TRANSITIVE_CLOSURE_HPP -#define BOOST_GRAPH_TRANSITIVE_CLOSURE_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost -{ - - namespace detail - { - inline void - union_successor_sets(const std::vector < std::size_t > &s1, - const std::vector < std::size_t > &s2, - std::vector < std::size_t > &s3) - { - for (std::size_t k = 0; k < s1.size(); ++k) - s3[k] = std::min(s1[k], s2[k]); - } - } // namespace detail - - namespace detail - { - template < typename Container, typename ST = std::size_t, - typename VT = typename Container::value_type > - struct subscript_t:public std::unary_function < ST, VT > - { - subscript_t(Container & c):container(&c) - { - } - VT & operator() (const ST & i) const - { - return (*container)[i]; - } - protected: - Container * container; - }; - template < typename Container > - subscript_t < Container > subscript(Container & c) { - return subscript_t < Container > (c); - } - } // namespace detail - - template < typename Graph, typename GraphTC, - typename G_to_TC_VertexMap, - typename VertexIndexMap > - void transitive_closure(const Graph & g, GraphTC & tc, - G_to_TC_VertexMap g_to_tc_map, - VertexIndexMap index_map) - { - if (num_vertices(g) == 0) - return; - typedef typename graph_traits < Graph >::vertex_descriptor vertex; - typedef typename graph_traits < Graph >::edge_descriptor edge; - typedef typename graph_traits < Graph >::vertex_iterator vertex_iterator; - typedef typename property_traits < VertexIndexMap >::value_type size_type; - typedef typename graph_traits < - Graph >::adjacency_iterator adjacency_iterator; - - function_requires < VertexListGraphConcept < Graph > >(); - function_requires < AdjacencyGraphConcept < Graph > >(); - function_requires < VertexMutableGraphConcept < GraphTC > >(); - function_requires < EdgeMutableGraphConcept < GraphTC > >(); - function_requires < ReadablePropertyMapConcept < VertexIndexMap, - vertex > >(); - - typedef size_type cg_vertex; - std::vector < cg_vertex > component_number_vec(num_vertices(g)); - iterator_property_map < cg_vertex *, VertexIndexMap, cg_vertex, cg_vertex& > - component_number(&component_number_vec[0], index_map); - - int num_scc = strong_components(g, component_number, - vertex_index_map(index_map)); - - std::vector < std::vector < vertex > >components; - build_component_lists(g, num_scc, component_number, components); - - typedef std::vector > CG_t; - CG_t CG(num_scc); - for (cg_vertex s = 0; s < components.size(); ++s) { - std::vector < cg_vertex > adj; - for (size_type i = 0; i < components[s].size(); ++i) { - vertex u = components[s][i]; - adjacency_iterator v, v_end; - for (tie(v, v_end) = adjacent_vertices(u, g); v != v_end; ++v) { - cg_vertex t = component_number[*v]; - if (s != t) // Avoid loops in the condensation graph - adj.push_back(t); - } - } - std::sort(adj.begin(), adj.end()); - typename std::vector::iterator di = - std::unique(adj.begin(), adj.end()); - if (di != adj.end()) - adj.erase(di, adj.end()); - CG[s] = adj; - } - - std::vector topo_order; - std::vector topo_number(num_vertices(CG)); - topological_sort(CG, std::back_inserter(topo_order), - vertex_index_map(identity_property_map())); - std::reverse(topo_order.begin(), topo_order.end()); - size_type n = 0; - for (typename std::vector::iterator iter = topo_order.begin(); - iter != topo_order.end(); ++iter) - topo_number[*iter] = n++; - - for (size_type i = 0; i < num_vertices(CG); ++i) - std::sort(CG[i].begin(), CG[i].end(), - compose_f_gx_hy(std::less(), - detail::subscript(topo_number), - detail::subscript(topo_number))); - - std::vector > chains; - { - std::vector in_a_chain(num_vertices(CG)); - for (typename std::vector::iterator i = topo_order.begin(); - i != topo_order.end(); ++i) { - cg_vertex v = *i; - if (!in_a_chain[v]) { - chains.resize(chains.size() + 1); - std::vector& chain = chains.back(); - for (;;) { - chain.push_back(v); - in_a_chain[v] = true; - typename graph_traits::adjacency_iterator adj_first, adj_last; - tie(adj_first, adj_last) = adjacent_vertices(v, CG); - typename graph_traits::adjacency_iterator next - = std::find_if(adj_first, adj_last, - not1(detail::subscript(in_a_chain))); - if (next != adj_last) - v = *next; - else - break; // end of chain, dead-end - - } - } - } - } - std::vector chain_number(num_vertices(CG)); - std::vector pos_in_chain(num_vertices(CG)); - for (size_type i = 0; i < chains.size(); ++i) - for (size_type j = 0; j < chains[i].size(); ++j) { - cg_vertex v = chains[i][j]; - chain_number[v] = i; - pos_in_chain[v] = j; - } - - cg_vertex inf = std::numeric_limits < cg_vertex >::max(); - std::vector > successors(num_vertices(CG), - std::vector - (chains.size(), inf)); - for (typename std::vector::reverse_iterator - i = topo_order.rbegin(); i != topo_order.rend(); ++i) { - cg_vertex u = *i; - typename graph_traits::adjacency_iterator adj, adj_last; - for (tie(adj, adj_last) = adjacent_vertices(u, CG); - adj != adj_last; ++adj) { - cg_vertex v = *adj; - if (topo_number[v] < successors[v][chain_number[v]]) { - // Succ(u) = Succ(u) U Succ(v) - detail::union_successor_sets(successors[u], successors[v], - successors[u]); - // Succ(u) = Succ(u) U {v} - successors[u][chain_number[v]] = topo_number[v]; - } - } - } - - for (size_type i = 0; i < CG.size(); ++i) - CG[i].clear(); - for (size_type i = 0; i < CG.size(); ++i) - for (size_type j = 0; j < chains.size(); ++j) { - size_type topo_num = successors[i][j]; - if (topo_num < inf) { - cg_vertex v = topo_order[topo_num]; - for (size_type k = pos_in_chain[v]; k < chains[j].size(); ++k) - CG[i].push_back(chains[j][k]); - } - } - - - // Add vertices to the transitive closure graph - typedef typename graph_traits < GraphTC >::vertex_descriptor tc_vertex; - { - vertex_iterator i, i_end; - for (tie(i, i_end) = vertices(g); i != i_end; ++i) - g_to_tc_map[*i] = add_vertex(tc); - } - // Add edges between all the vertices in two adjacent SCCs - typename graph_traits::vertex_iterator si, si_end; - for (tie(si, si_end) = vertices(CG); si != si_end; ++si) { - cg_vertex s = *si; - typename graph_traits::adjacency_iterator i, i_end; - for (tie(i, i_end) = adjacent_vertices(s, CG); i != i_end; ++i) { - cg_vertex t = *i; - for (size_type k = 0; k < components[s].size(); ++k) - for (size_type l = 0; l < components[t].size(); ++l) - add_edge(g_to_tc_map[components[s][k]], - g_to_tc_map[components[t][l]], tc); - } - } - // Add edges connecting all vertices in a SCC - for (size_type i = 0; i < components.size(); ++i) - if (components[i].size() > 1) - for (size_type k = 0; k < components[i].size(); ++k) - for (size_type l = 0; l < components[i].size(); ++l) { - vertex u = components[i][k], v = components[i][l]; - add_edge(g_to_tc_map[u], g_to_tc_map[v], tc); - } - - } - - template - void transitive_closure(const Graph & g, GraphTC & tc) - { - if (num_vertices(g) == 0) - return; - typedef typename property_map::const_type - VertexIndexMap; - VertexIndexMap index_map = get(vertex_index, g); - - typedef typename graph_traits::vertex_descriptor tc_vertex; - std::vector to_tc_vec(num_vertices(g)); - iterator_property_map < tc_vertex *, VertexIndexMap, tc_vertex, tc_vertex&> - g_to_tc_map(&to_tc_vec[0], index_map); - - transitive_closure(g, tc, g_to_tc_map, index_map); - } - - namespace detail - { - template < typename Graph, typename GraphTC, typename G_to_TC_VertexMap, - typename VertexIndexMap> - void transitive_closure_dispatch - (const Graph & g, GraphTC & tc, - G_to_TC_VertexMap g_to_tc_map, VertexIndexMap index_map) - { - typedef typename graph_traits < GraphTC >::vertex_descriptor tc_vertex; - typename std::vector < tc_vertex >::size_type - n = is_default_param(g_to_tc_map) ? num_vertices(g) : 1; - std::vector < tc_vertex > to_tc_vec(n); - - transitive_closure - (g, tc, - choose_param(g_to_tc_map, make_iterator_property_map - (to_tc_vec.begin(), index_map, to_tc_vec[0])), - index_map); - } - } // namespace detail - - template < typename Graph, typename GraphTC, - typename P, typename T, typename R > - void transitive_closure(const Graph & g, GraphTC & tc, - const bgl_named_params < P, T, R > ¶ms) - { - if (num_vertices(g) == 0) - return; - detail::transitive_closure_dispatch - (g, tc, get_param(params, orig_to_copy_t()), - choose_const_pmap(get_param(params, vertex_index), g, vertex_index) ); - } - - - template < typename G > void warshall_transitive_closure(G & g) - { - typedef typename graph_traits < G >::vertex_descriptor vertex; - typedef typename graph_traits < G >::vertex_iterator vertex_iterator; - - function_requires < AdjacencyMatrixConcept < G > >(); - function_requires < EdgeMutableGraphConcept < G > >(); - - // Matrix form: - // for k - // for i - // if A[i,k] - // for j - // A[i,j] = A[i,j] | A[k,j] - vertex_iterator ki, ke, ii, ie, ji, je; - for (tie(ki, ke) = vertices(g); ki != ke; ++ki) - for (tie(ii, ie) = vertices(g); ii != ie; ++ii) - if (edge(*ii, *ki, g).second) - for (tie(ji, je) = vertices(g); ji != je; ++ji) - if (!edge(*ii, *ji, g).second && edge(*ki, *ji, g).second) { - add_edge(*ii, *ji, g); - } - } - - - template < typename G > void warren_transitive_closure(G & g) - { - using namespace boost; - typedef typename graph_traits < G >::vertex_descriptor vertex; - typedef typename graph_traits < G >::vertex_iterator vertex_iterator; - - function_requires < AdjacencyMatrixConcept < G > >(); - function_requires < EdgeMutableGraphConcept < G > >(); - - // Make sure second loop will work - if (num_vertices(g) == 0) - return; - - // for i = 2 to n - // for k = 1 to i - 1 - // if A[i,k] - // for j = 1 to n - // A[i,j] = A[i,j] | A[k,j] - - vertex_iterator ic, ie, jc, je, kc, ke; - for (tie(ic, ie) = vertices(g), ++ic; ic != ie; ++ic) - for (tie(kc, ke) = vertices(g); *kc != *ic; ++kc) - if (edge(*ic, *kc, g).second) - for (tie(jc, je) = vertices(g); jc != je; ++jc) - if (!edge(*ic, *jc, g).second && edge(*kc, *jc, g).second) { - add_edge(*ic, *jc, g); - } - // for i = 1 to n - 1 - // for k = i + 1 to n - // if A[i,k] - // for j = 1 to n - // A[i,j] = A[i,j] | A[k,j] - - for (tie(ic, ie) = vertices(g), --ie; ic != ie; ++ic) - for (kc = ic, ke = ie, ++kc; kc != ke; ++kc) - if (edge(*ic, *kc, g).second) - for (tie(jc, je) = vertices(g); jc != je; ++jc) - if (!edge(*ic, *jc, g).second && edge(*kc, *jc, g).second) { - add_edge(*ic, *jc, g); - } - } - - -} // namespace boost - -#endif // BOOST_GRAPH_TRANSITIVE_CLOSURE_HPP diff --git a/sdk/include/boost/graph/transpose_graph.hpp b/sdk/include/boost/graph/transpose_graph.hpp deleted file mode 100644 index 0e4b29c98b1..00000000000 --- a/sdk/include/boost/graph/transpose_graph.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_TRANSPOSE_HPP -#define BOOST_GRAPH_TRANSPOSE_HPP - -#include -#include -#include -#include - - -namespace boost { - - template - void transpose_graph(const VertexListGraph& G, MutableGraph& G_T) - { - reverse_graph R(G); - copy_graph(R, G_T); - } - - template - void transpose_graph(const VertexListGraph& G, MutableGraph& G_T, - const bgl_named_params& params) - { - reverse_graph Rev(G); - copy_graph(Rev, G_T, params); - } - -} // namespace boost - -#endif // BOOST_GRAPH_TRANSPOSE_HPP diff --git a/sdk/include/boost/graph/tree_traits.hpp b/sdk/include/boost/graph/tree_traits.hpp deleted file mode 100644 index 720e50cd9bc..00000000000 --- a/sdk/include/boost/graph/tree_traits.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// (C) Copyright Jeremy Siek 1999. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -#ifndef BOOST_TREE_STRUCTURE_HPP -#define BOOST_TREE_STRUCTURE_HPP - -namespace boost { - - template - struct tree_traits { - typedef typename T::node_descriptor node_descriptor; - typedef typename T::children_iterator children_iterator; - }; - - - template - void traverse_tree(typename tree_traits::node_descriptor v, - Tree& t, TreeVisitor visitor) - { - visitor.preorder(v, t); - typename tree_traits::children_iterator i, end; - tie(i, end) = children(v, t); - if (i != end) { - traverse_tree(*i++, t, visitor); - visitor.inorder(v, t); - while (i != end) - traverse_tree(*i++, t, visitor); - } else - visitor.inorder(v, t); - visitor.postorder(v, t); - } - - struct null_tree_visitor { - template void preorder(Node, Tree&) { } - template void inorder(Node, Tree&) { } - template void postorder(Node, Tree&) { } - }; - -} /* namespace boost */ - -#endif /* BOOST_TREE_STRUCTURE_HPP */ diff --git a/sdk/include/boost/graph/undirected_dfs.hpp b/sdk/include/boost/graph/undirected_dfs.hpp deleted file mode 100644 index d549d2b6dec..00000000000 --- a/sdk/include/boost/graph/undirected_dfs.hpp +++ /dev/null @@ -1,195 +0,0 @@ -// -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -#ifndef BOOST_GRAPH_UNDIRECTED_DFS_HPP -#define BOOST_GRAPH_UNDIRECTED_DFS_HPP - -#include - -namespace boost { - - namespace detail { - - template - void undir_dfv_impl - (const IncidenceGraph& g, - typename graph_traits::vertex_descriptor u, - DFSVisitor& vis, // pass-by-reference here, important! - VertexColorMap vertex_color, - EdgeColorMap edge_color) - { - function_requires >(); - function_requires >(); - typedef typename graph_traits::vertex_descriptor Vertex; - typedef typename graph_traits::edge_descriptor Edge; - function_requires >(); - function_requires >(); - typedef typename property_traits::value_type ColorValue; - typedef typename property_traits::value_type EColorValue; - function_requires< ColorValueConcept >(); - function_requires< ColorValueConcept >(); - typedef color_traits Color; - typedef color_traits EColor; - typename graph_traits::out_edge_iterator ei, ei_end; - - put(vertex_color, u, Color::gray()); vis.discover_vertex(u, g); - for (tie(ei, ei_end) = out_edges(u, g); ei != ei_end; ++ei) { - Vertex v = target(*ei, g); vis.examine_edge(*ei, g); - ColorValue v_color = get(vertex_color, v); - EColorValue uv_color = get(edge_color, *ei); - put(edge_color, *ei, EColor::black()); - if (v_color == Color::white()) { vis.tree_edge(*ei, g); - undir_dfv_impl(g, v, vis, vertex_color, edge_color); - } else if (v_color == Color::gray() && uv_color == EColor::white()) - vis.back_edge(*ei, g); - } - put(vertex_color, u, Color::black()); vis.finish_vertex(u, g); - } - } // namespace detail - - template - void - undirected_dfs(const Graph& g, DFSVisitor vis, - VertexColorMap vertex_color, EdgeColorMap edge_color, - Vertex start_vertex) - { - function_requires >(); - function_requires >(); - - typedef typename property_traits::value_type ColorValue; - typedef color_traits Color; - - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) { - put(vertex_color, *ui, Color::white()); vis.initialize_vertex(*ui, g); - } - typename graph_traits::edge_iterator ei, ei_end; - for (tie(ei, ei_end) = edges(g); ei != ei_end; ++ei) - put(edge_color, *ei, Color::white()); - - if (start_vertex != *vertices(g).first){ vis.start_vertex(start_vertex, g); - detail::undir_dfv_impl(g, start_vertex, vis, vertex_color, edge_color); - } - - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) { - ColorValue u_color = get(vertex_color, *ui); - if (u_color == Color::white()) { vis.start_vertex(*ui, g); - detail::undir_dfv_impl(g, *ui, vis, vertex_color, edge_color); - } - } - } - - template - void - undirected_dfs(const Graph& g, DFSVisitor vis, - VertexColorMap vertex_color, EdgeColorMap edge_color) - { - undirected_dfs(g, vis, vertex_color, edge_color, *vertices(g).first); - } - - namespace detail { - template - struct udfs_dispatch { - - template - static void - apply(const Graph& g, DFSVisitor vis, Vertex start_vertex, - const bgl_named_params&, - EdgeColorMap edge_color, - VertexColorMap vertex_color) - { - undirected_dfs(g, vis, vertex_color, edge_color, start_vertex); - } - }; - - template <> - struct udfs_dispatch { - template - static void - apply(const Graph& g, DFSVisitor vis, Vertex start_vertex, - const bgl_named_params& params, - EdgeColorMap edge_color, - detail::error_property_not_found) - { - std::vector color_vec(num_vertices(g)); - default_color_type c = white_color; // avoid warning about un-init - undirected_dfs - (g, vis, make_iterator_property_map - (color_vec.begin(), - choose_const_pmap(get_param(params, vertex_index), - g, vertex_index), c), - edge_color, - start_vertex); - } - }; - - } // namespace detail - - - // Named Parameter Variant - template - void - undirected_dfs(const Graph& g, - const bgl_named_params& params) - { - typedef typename property_value< bgl_named_params, - vertex_color_t>::type C; - detail::udfs_dispatch::apply - (g, - choose_param(get_param(params, graph_visitor), - make_dfs_visitor(null_visitor())), - choose_param(get_param(params, root_vertex_t()), - *vertices(g).first), - params, - get_param(params, edge_color), - get_param(params, vertex_color) - ); - } - - - template - void undirected_depth_first_visit - (const IncidenceGraph& g, - typename graph_traits::vertex_descriptor u, - DFSVisitor vis, VertexColorMap vertex_color, EdgeColorMap edge_color) - { - detail::undir_dfv_impl(g, u, vis, vertex_color, edge_color); - } - - -} // namespace boost - - -#endif diff --git a/sdk/include/boost/graph/vector_as_graph.hpp b/sdk/include/boost/graph/vector_as_graph.hpp deleted file mode 100644 index fd7008e34d6..00000000000 --- a/sdk/include/boost/graph/vector_as_graph.hpp +++ /dev/null @@ -1,291 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= - -// The mutating functions (add_edge, etc.) were added by Vladimir Prus. - -// Copyright (C) 2001 Vladimir Prus -// Permission to copy, use, modify, sell and distribute this software is -// granted, provided this copyright notice appears in all copies and -// modified version are clearly marked as such. This software is provided -// "as is" without express or implied warranty, and with no claim as to its -// suitability for any purpose. - -#ifndef BOOST_VECTOR_AS_GRAPH_HPP -#define BOOST_VECTOR_AS_GRAPH_HPP - -#include -#include -#include -#include -#include -#include - -/* - This module implements the VertexListGraph concept using a - std::vector as the "back-bone" of the graph (the vector *is* the - graph object). The edge-lists type of the graph is templated, so the - user can choose any STL container, so long as the value_type of the - container is convertible to the size_type of the vector. For now any - graph properties must be stored seperately. - - This module requires the C++ compiler to support partial - specialization for the graph_traits class, so this is not portable - to VC++. - -*/ - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -#error The vector-as-graph module requires a compiler that supports partial specialization -#endif - - -namespace boost { - namespace detail { - template struct val_out_edge_ret; - template struct val_out_edge_iter; - template struct val_edge; - } -} - -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -namespace boost { - - struct vector_as_graph_traversal_tag - : public vertex_list_graph_tag, - public adjacency_graph_tag, - public incidence_graph_tag { }; - - template - struct graph_traits< std::vector > - { - typedef typename EdgeList::value_type V; - typedef V vertex_descriptor; - typedef typename detail::val_edge::type edge_descriptor; - typedef typename EdgeList::const_iterator adjacency_iterator; - typedef typename detail::val_out_edge_iter::type - out_edge_iterator; - typedef typename integer_range::iterator vertex_iterator; - typedef directed_tag directed_category; - typedef allow_parallel_edge_tag edge_parallel_category; - typedef vector_as_graph_traversal_tag traversal_category; - typedef typename std::vector::size_type vertices_size_type; - typedef void edges_size_type; - typedef typename EdgeList::size_type degree_size_type; - }; -} -#endif - -namespace boost { - - namespace detail { - - // "val" is short for Vector Adjacency List - - template - struct val_edge - { - typedef typename EdgeList::value_type V; - typedef std::pair type; - }; - - // need rewrite this using boost::iterator_adaptor - template - class val_out_edge_iterator - : public boost::iterator > - { - typedef val_out_edge_iterator self; - typedef std::pair Edge; - public: - val_out_edge_iterator() { } - val_out_edge_iterator(V s, Iter i) : _source(s), _iter(i) { } - Edge operator*() { return Edge(_source, *_iter); } - self& operator++() { ++_iter; return *this; } - self operator++(int) { self t = *this; ++_iter; return t; } - bool operator==(const self& x) const { return _iter == x._iter; } - bool operator!=(const self& x) const { return _iter != x._iter; } - protected: - V _source; - Iter _iter; - }; - - template - struct val_out_edge_iter - { - typedef typename EdgeList::value_type V; - typedef typename EdgeList::const_iterator Iter; - typedef val_out_edge_iterator type; - }; - - template - struct val_out_edge_ret - { - typedef typename val_out_edge_iter::type IncIter; - typedef std::pair type; - }; - - } // namesapce detail - - template - typename detail::val_out_edge_ret::type - out_edges(typename EdgeList::value_type v, - const std::vector& g) - { - typedef typename detail::val_out_edge_iter::type Iter; - typedef typename detail::val_out_edge_ret::type return_type; - return return_type(Iter(v, g[v].begin()), Iter(v, g[v].end())); - } - - template - typename EdgeList::size_type - out_degree(typename EdgeList::value_type v, - const std::vector& g) - { - return g[v].size(); - } - - template - std::pair - adjacent_vertices(typename EdgeList::value_type v, - const std::vector& g) - { - return std::make_pair(g[v].begin(), g[v].end()); - } - - // source() and target() already provided for pairs in graph_traits.hpp - - template - std::pair - ::iterator, - typename boost::integer_range - ::iterator > - vertices(const std::vector& v) - { - typedef typename boost::integer_range - ::iterator Iter; - return std::make_pair(Iter(0), Iter(v.size())); - } - - template - typename std::vector::size_type - num_vertices(const std::vector& v) - { - return v.size(); - } - - template - typename std::pair::type, bool> - add_edge(typename EdgeList::value_type u, typename EdgeList::value_type v, - std::vector& g) - { - typedef typename detail::val_edge::type edge_type; - g[u].insert(g[u].end(), v); - return std::make_pair(edge_type(u, v), true); - } - - template - void - remove_edge(typename EdgeList::value_type u, typename EdgeList::value_type v, - std::vector& g) - { - typename EdgeList::iterator i = remove(g[u].begin(), g[u].end(), v); - if (i != g[u].end()) - g[u].erase(i, g[u].end()); - } - - template - void - remove_edge(typename detail::val_edge::type e, - std::vector& g) - { - typename EdgeList::value_type u, v; - u = e.first; - v = e.second; - // FIXME: edge type does not fully specify the edge to be deleted - typename EdgeList::iterator i = remove(g[u].begin(), g[u].end(), v); - if (i != g[u].end()) - g[u].erase(i, g[u].end()); - } - - template - void - remove_edge_if(Predicate p, - std::vector& g) - { - for (size_t u = 0; u < g.size(); ++u) { - // Oops! gcc gets internal compiler error on compose_....... - - typedef typename EdgeList::iterator iterator; - iterator b = g[u].begin(), e = g[u].end(); - - if (!g[u].empty()) { - - for(; b != e;) { - if (p(std::make_pair(u, *b))) { - --e; - if (b == e) - break; - else - iter_swap(b, e); - } else { - ++b; - } - } - } - - if (e != g[u].end()) - g[u].erase(e, g[u].end()); - } - } - - template - typename EdgeList::value_type - add_vertex(std::vector& g) - { - g.resize(g.size()+1); - return g.size()-1; - } - - template - void - clear_vertex(typename EdgeList::value_type u, - std::vector& g) - { - g[u].clear(); - for (size_t i = 0; i < g.size(); ++i) - remove_edge(i, u, g); - } - - template - void - remove_vertex(typename EdgeList::value_type u, - std::vector& g) - { - assert(!"implemented"); - } - -} // namespace boost - -#endif // BOOST_VECTOR_AS_GRAPH_HPP diff --git a/sdk/include/boost/graph/visitors.hpp b/sdk/include/boost/graph/visitors.hpp deleted file mode 100644 index f6d1939f245..00000000000 --- a/sdk/include/boost/graph/visitors.hpp +++ /dev/null @@ -1,264 +0,0 @@ -//======================================================================= -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// -// Revision History: -// 01 April 2001: Modified to use new header. (JMaddock) -// -#ifndef BOOST_GRAPH_GRAPH_SEARCH_VISITORS_HPP -#define BOOST_GRAPH_GRAPH_SEARCH_VISITORS_HPP - -#include -#include -#include -#include -#include -#include - -namespace boost { - - // This is a bit more convenient than std::numeric_limits because - // you don't have to explicitly provide type T. - template - inline T numeric_limits_max(T) { return std::numeric_limits::max(); } - - //======================================================================== - // Event Tags - - namespace detail { - // For partial specialization workaround - enum event_visitor_enum - { on_no_event_num, - on_initialize_vertex_num, on_start_vertex_num, - on_discover_vertex_num, on_finish_vertex_num, on_examine_vertex_num, - on_examine_edge_num, on_tree_edge_num, on_non_tree_edge_num, - on_gray_target_num, on_black_target_num, - on_forward_or_cross_edge_num, on_back_edge_num, - on_edge_relaxed_num, on_edge_not_relaxed_num, - on_edge_minimized_num, on_edge_not_minimized_num - }; - } // namespace detail - - struct on_no_event { enum { num = detail::on_no_event_num }; }; - - struct on_initialize_vertex { - enum { num = detail::on_initialize_vertex_num }; }; - struct on_start_vertex { enum { num = detail::on_start_vertex_num }; }; - struct on_discover_vertex { enum { num = detail::on_discover_vertex_num }; }; - struct on_examine_vertex { enum { num = detail::on_examine_vertex_num }; }; - struct on_finish_vertex { enum { num = detail::on_finish_vertex_num }; }; - - struct on_examine_edge { enum { num = detail::on_examine_edge_num }; }; - struct on_tree_edge { enum { num = detail::on_tree_edge_num }; }; - struct on_non_tree_edge { enum { num = detail::on_non_tree_edge_num }; }; - struct on_gray_target { enum { num = detail::on_gray_target_num }; }; - struct on_black_target { enum { num = detail::on_black_target_num }; }; - struct on_forward_or_cross_edge { - enum { num = detail::on_forward_or_cross_edge_num }; }; - struct on_back_edge { enum { num = detail::on_back_edge_num }; }; - - struct on_edge_relaxed { enum { num = detail::on_edge_relaxed_num }; }; - struct on_edge_not_relaxed { - enum { num = detail::on_edge_not_relaxed_num }; }; - struct on_edge_minimized { enum { num = detail::on_edge_minimized_num }; }; - struct on_edge_not_minimized { - enum { num = detail::on_edge_not_minimized_num }; }; - - struct true_tag { enum { num = true }; }; - struct false_tag { enum { num = false }; }; - - //======================================================================== - // base_visitor and null_visitor - - // needed for MSVC workaround - template - struct base_visitor { - typedef on_no_event event_filter; - template - void operator()(T, Graph&) { } - }; - - struct null_visitor : public base_visitor { - typedef on_no_event event_filter; - template - void operator()(T, Graph&) { } - }; - - //======================================================================== - // The invoke_visitors() function - - namespace detail { - template - inline void - invoke_dispatch(Visitor& v, T x, Graph& g, true_tag) { - v(x, g); - } - template - inline void - invoke_dispatch(Visitor&, T, Graph&, false_tag) { } - } // namespace detail - - template - inline void - invoke_visitors(std::pair& vlist, T x, Graph& g, Tag tag) { - typedef typename Visitor::event_filter Category; - typedef typename graph_detail::is_same::is_same_tag - IsSameTag; - detail::invoke_dispatch(vlist.first, x, g, IsSameTag()); - invoke_visitors(vlist.second, x, g, tag); - } -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - template - inline void - invoke_visitors(base_visitor& vis, T x, Graph& g, Tag) { - typedef typename Visitor::event_filter Category; - typedef typename graph_detail::is_same::is_same_tag - IsSameTag; - Visitor& v = static_cast(vis); - detail::invoke_dispatch(v, x, g, IsSameTag()); - } -#else - template - inline void - invoke_visitors(Visitor& v, T x, Graph& g, Tag) { - typedef typename Visitor::event_filter Category; - typedef typename graph_detail::is_same::is_same_tag - IsSameTag; - detail::invoke_dispatch(v, x, g, IsSameTag()); - } -#endif - - //======================================================================== - // predecessor_recorder - - template - struct predecessor_recorder - : public base_visitor > - { - typedef Tag event_filter; - predecessor_recorder(PredecessorMap pa) : m_predecessor(pa) { } - template - void operator()(Edge e, const Graph& g) { - put(m_predecessor, target(e, g), source(e, g)); - } - PredecessorMap m_predecessor; - }; - template - predecessor_recorder - record_predecessors(PredecessorMap pa, Tag) { - return predecessor_recorder (pa); - } - - //======================================================================== - // edge_predecessor_recorder - - template - struct edge_predecessor_recorder - : public base_visitor > - { - typedef Tag event_filter; - edge_predecessor_recorder(PredEdgeMap pa) : m_predecessor(pa) { } - template - void operator()(Edge e, const Graph& g) { - put(m_predecessor, target(e, g), e); - } - PredEdgeMap m_predecessor; - }; - template - edge_predecessor_recorder - record_edge_predecessors(PredEdgeMap pa, Tag) { - return edge_predecessor_recorder (pa); - } - - //======================================================================== - // distance_recorder - - template - struct distance_recorder - : public base_visitor > - { - typedef Tag event_filter; - distance_recorder(DistanceMap pa) : m_distance(pa) { } - template - void operator()(Edge e, const Graph& g) { - typename graph_traits::vertex_descriptor - u = source(e, g), v = target(e, g); - put(m_distance, v, get(m_distance, u) + 1); - } - DistanceMap m_distance; - }; - template - distance_recorder - record_distances(DistanceMap pa, Tag) { - return distance_recorder (pa); - } - - //======================================================================== - // time_stamper - - - template - struct time_stamper - : public base_visitor > - { - typedef Tag event_filter; - time_stamper(TimeMap pa, TimeT& t) : m_time_pa(pa), m_time(t) { } - template - void operator()(Vertex u, const Graph&) { - put(m_time_pa, u, ++m_time); - } - TimeMap m_time_pa; - TimeT& m_time; - }; - template - time_stamper - stamp_times(TimeMap pa, TimeT& time_counter, Tag) { - return time_stamper(pa, time_counter); - } - - //======================================================================== - // property_writer - - template - struct property_writer - : public base_visitor > - { - typedef Tag event_filter; - - property_writer(PA pa, OutputIterator out) : m_pa(pa), m_out(out) { } - - template - void operator()(T x, Graph&) { *m_out++ = get(m_pa, x); } - PA m_pa; - OutputIterator m_out; - }; - template - property_writer - write_property(PA pa, OutputIterator out, Tag) { - return property_writer(pa, out); - } - -} /* namespace boost */ - -#endif diff --git a/sdk/include/boost/graph/wavefront.hpp b/sdk/include/boost/graph/wavefront.hpp deleted file mode 100644 index 35503a9dde2..00000000000 --- a/sdk/include/boost/graph/wavefront.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// -//======================================================================= -// Copyright 2002 Marc Wintermantel (wintermantel@imes.mavt.ethz.ch) -// ETH Zurich, Center of Structure Technologies (www.imes.ethz.ch/st) -// -// This file is part of the Boost Graph Library -// -// You should have received a copy of the License Agreement for the -// Boost Graph Library along with the software; see the file LICENSE. -// If not, contact Office of Research, University of Notre Dame, Notre -// Dame, IN 46556. -// -// Permission to modify the code and to distribute modified code is -// granted, provided the text of this NOTICE is retained, a notice that -// the code was modified is included with the above COPYRIGHT NOTICE and -// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE -// file is distributed with the modified code. -// -// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. -// By way of example, but not limitation, Licensor MAKES NO -// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY -// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS -// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS -// OR OTHER RIGHTS. -//======================================================================= -// - -#ifndef BOOST_GRAPH_WAVEFRONT_HPP -#define BOOST_GRAPH_WAVEFRONT_HPP - -#include -#include -#include -#include -#include - -namespace boost { - - template - typename graph_traits::vertices_size_type - ith_wavefront(typename graph_traits::vertex_descriptor i, - const Graph& g, - VertexIndexMap index) - { - typename graph_traits::vertex_descriptor v, w; - typename graph_traits::vertices_size_type b = 1; - typename graph_traits::out_edge_iterator edge_it2, edge_it2_end; - typename graph_traits::vertices_size_type index_i = index[i]; - std::vector rows_active(num_vertices(g), false); - - rows_active[index_i] = true; - - typename graph_traits::vertex_iterator ui, ui_end; - for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) - { - v = *ui; - if(index[v] <= index_i) - { - for (tie(edge_it2, edge_it2_end) = out_edges(v, g); edge_it2 != edge_it2_end; ++edge_it2) - { - w = target(*edge_it2, g); - if( (index[w] >= index_i) && (!rows_active[index[w]]) ) - { - b++; - rows_active[index[w]] = true; - } - } - } - } - - return b; - } - - - template - typename graph_traits::vertices_size_type - ith_wavefront(typename graph_traits::vertex_descriptor i, - const Graph& g) - { - return ith_wavefront(i, g, get(vertex_index, g)); - } - - - template - typename graph_traits::vertices_size_type - max_wavefront(const Graph& g, VertexIndexMap index) - { - typename graph_traits::vertices_size_type b = 0; - typename graph_traits::vertex_iterator i, end; - for (tie(i, end) = vertices(g); i != end; ++i) - b = std::max(b, ith_wavefront(*i, g, index)); - return b; - } - - template - typename graph_traits::vertices_size_type - max_wavefront(const Graph& g) - { - return max_wavefront(g, get(vertex_index, g)); - } - - - template - double - aver_wavefront(const Graph& g, VertexIndexMap index) - { - double b = 0; - typename graph_traits::vertex_iterator i, end; - for (tie(i, end) = vertices(g); i != end; ++i) - b += ith_wavefront(*i, g, index); - - b /= num_vertices(g); - return b; - } - - template - double - aver_wavefront(const Graph& g) - { - return aver_wavefront(g, get(vertex_index, g)); - } - - - template - double - rms_wavefront(const Graph& g, VertexIndexMap index) - { - double b = 0; - typename graph_traits::vertex_iterator i, end; - for (tie(i, end) = vertices(g); i != end; ++i) - b += std::pow(double ( ith_wavefront(*i, g, index) ), 2.0); - - b /= num_vertices(g); - - return std::sqrt(b); - } - - template - double - rms_wavefront(const Graph& g) - { - return rms_wavefront(g, get(vertex_index, g)); - } - - -} // namespace boost - -#endif // BOOST_GRAPH_WAVEFRONT_HPP diff --git a/sdk/include/boost/half_open_range.hpp b/sdk/include/boost/half_open_range.hpp deleted file mode 100644 index c2818463be5..00000000000 --- a/sdk/include/boost/half_open_range.hpp +++ /dev/null @@ -1,426 +0,0 @@ -// (C) Copyright Jeremy Siek and David Abrahams 2000-2001. Permission to copy, -// use, modify, sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided "as is" -// without express or implied warranty, and with no claim as to its suitability -// for any purpose. -// -// Revision History: -// 11 Feb 2001 Use new iterator_adaptor interface, Fixes for Borland. -// (Dave Abrahams) -// 04 Feb 2001 Support for user-defined iterator categories (Dave Abrahams) -// 30 Jan 2001 Initial Checkin (Dave Abrahams) - -#ifndef BOOST_HALF_OPEN_RANGE_HPP_ -# define BOOST_HALF_OPEN_RANGE_HPP_ - -# include -# include -# include -# include -# include -# include -# include - -namespace boost { - -namespace detail { - - // Template class choose_finish -- allows us to maintain the invariant that - // start() <= finish() on half_open_range specializations that support random - // access. -#ifdef __MWERKS__ - template - const T& choose_finish(const T&, const T& finish, std::input_iterator_tag) - { - return finish; - } - - template - const T& choose_finish(const T&, const T& finish, std::output_iterator_tag) - { - return finish; - } - - template - const T& choose_finish(const T& start, const T& finish, std::random_access_iterator_tag) - { - return finish < start ? start : finish; - } -#else - template struct finish_chooser; - - template <> - struct finish_chooser - { - template - struct rebind - { - static T choose(const T&, const T& finish) - { return finish; } - }; - }; - - template <> - struct finish_chooser - { - template - struct rebind - { - static T choose(const T& start, const T& finish) - { return finish < start ? start : finish; } - }; - }; - - template - struct choose_finish - { - static const Incrementable choose(const Incrementable& start, const Incrementable& finish) - { - return finish_chooser<( - ::boost::is_convertible::value - )>::template rebind::choose(start, finish); - } - }; -#endif -} - -template -struct half_open_range -{ - typedef typename counting_iterator_generator::type iterator; - - private: // utility type definitions - // Using iter_t prevents compiler confusion with boost::iterator - typedef typename counting_iterator_generator::type iter_t; - - typedef std::less less_value; - typedef typename iter_t::iterator_category category; - typedef half_open_range self; - - public: - typedef iter_t const_iterator; - typedef typename iterator::value_type value_type; - typedef typename iterator::difference_type difference_type; - typedef typename iterator::reference reference; - typedef typename iterator::reference const_reference; - typedef typename iterator::pointer pointer; - typedef typename iterator::pointer const_pointer; - - // It would be nice to select an unsigned type, but this is appropriate - // since the library makes an attempt to select a difference_type which can - // hold the difference between any two iterators. - typedef typename iterator::difference_type size_type; - - half_open_range(Incrementable start, Incrementable finish) - : m_start(start), - m_finish( -#ifndef __MWERKS__ - detail::choose_finish::choose(start, finish) -#else - detail::choose_finish(start, finish, category()) -#endif - ) - {} - - // Implicit conversion from std::pair allows us - // to accept the results of std::equal_range(), for example. - half_open_range(const std::pair& x) - : m_start(x.first), - m_finish( -#ifndef __MWERKS__ - detail::choose_finish::choose(x.first, x.second) -#else - detail::choose_finish(x.first, x.second, category()) -#endif - ) - {} - - half_open_range& operator=(const self& x) - { - m_start = x.m_start; - m_finish = x.m_finish; - return *this; - } - - half_open_range& operator=(const std::pair& x) - { - m_start = x.first; - m_finish = -#ifndef __MWERKS__ - detail::choose_finish::choose(x.first, x.second); -#else - detail::choose_finish(x.first, x.second, category(); -#endif - } - - iterator begin() const { return iterator(m_start); } - iterator end() const { return iterator(m_finish); } - - Incrementable front() const { assert(!this->empty()); return m_start; } - Incrementable back() const { assert(!this->empty()); return boost::prior(m_finish); } - - Incrementable start() const { return m_start; } - Incrementable finish() const { return m_finish; } - - size_type size() const { return boost::detail::distance(begin(), end()); } - - bool empty() const - { - return m_finish == m_start; - } - - void swap(half_open_range& x) { - std::swap(m_start, x.m_start); - std::swap(m_finish, x.m_finish); - } - - public: // functions requiring random access elements - - // REQUIRES: x is reachable from this->front() - bool contains(const value_type& x) const - { - BOOST_STATIC_ASSERT((boost::is_same::value)); - return !less_value()(x, m_start) && less_value()(x, m_finish); - } - - bool contains(const half_open_range& x) const - { - BOOST_STATIC_ASSERT((boost::is_same::value)); - return x.empty() || !less_value()(x.m_start, m_start) && !less_value()(m_finish, x.m_finish); - } - - bool intersects(const half_open_range& x) const - { - BOOST_STATIC_ASSERT((boost::is_same::value)); - return less_value()( - less_value()(this->m_start, x.m_start) ? x.m_start : this->m_start, - less_value()(this->m_finish, x.m_finish) ? this->m_finish : x.m_finish); - } - - half_open_range& operator&=(const half_open_range& x) - { - BOOST_STATIC_ASSERT((boost::is_same::value)); - - if (less_value()(this->m_start, x.m_start)) - this->m_start = x.m_start; - - if (less_value()(x.m_finish, this->m_finish)) - this->m_finish = x.m_finish; - - if (less_value()(this->m_finish, this->m_start)) - this->m_start = this->m_finish; - - return *this; - } - - half_open_range& operator|=(const half_open_range& x) - { - BOOST_STATIC_ASSERT((boost::is_same::value)); - - if (!x.empty()) - { - if (this->empty()) - { - *this = x; - } - else - { - if (less_value()(x.m_start, this->m_start)) - this->m_start = x.m_start; - - if (less_value()(this->m_finish, x.m_finish)) - this->m_finish = x.m_finish; - } - } - return *this; - } - - // REQUIRES: x is reachable from this->front() - const_iterator find(const value_type& x) const - { - BOOST_STATIC_ASSERT((boost::is_same::value)); - - return const_iterator(this->contains(x) ? x : m_finish); - } - - // REQUIRES: index >= 0 && index < size() - value_type operator[](size_type index) const - { - assert(index >= 0 && index < size()); - return m_start + index; - } - - value_type at(size_type index) const - { - if (index < 0 || index >= size()) - throw std::out_of_range(std::string("half_open_range")); - return m_start + index; - } - - private: // data members - Incrementable m_start, m_finish; -}; - -template -half_open_range operator|( - half_open_range x, - const half_open_range& y) -{ - return x |= y; -} - -template -half_open_range operator&( - half_open_range x, - const half_open_range& y) -{ - return x &= y; -} - -template -inline bool operator==( - const half_open_range& x, - const half_open_range& y) -{ - const bool y_empty = y.empty(); - return x.empty() ? y_empty : !y_empty && x.start() == y.start() && x.finish() == y.finish(); -} - -template -inline bool operator!=( - const half_open_range& x, - const half_open_range& y) -{ - return !(x == y); -} - -template -inline half_open_range -make_half_open_range(Incrementable first, Incrementable last) -{ - return half_open_range(first, last); -} - -template -bool intersects( - const half_open_range& x, - const half_open_range& y) -{ - return x.intersects(y); -} - -template -bool contains( - const half_open_range& x, - const half_open_range& y) -{ - return x.contains(y); -} - -} // namespace boost - -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -namespace std { -template struct less > - : binary_function< - boost::half_open_range, - boost::half_open_range,bool> -{ - bool operator()( - const boost::half_open_range& x, - const boost::half_open_range& y) const - { - less cmp; - return !y.empty() && ( - cmp(x.start(), y.start()) - || !cmp(y.start(), x.start()) - && cmp(x.finish(), y.finish())); - } -}; - -template struct less_equal > - : binary_function< - boost::half_open_range, - boost::half_open_range,bool> -{ - bool operator()( - const boost::half_open_range& x, - const boost::half_open_range& y) const - { - typedef boost::half_open_range range; - less cmp; - return !cmp(y,x); - } -}; -template struct greater > - : binary_function< - boost::half_open_range, - boost::half_open_range,bool> -{ - bool operator()( - const boost::half_open_range& x, - const boost::half_open_range& y) const - { - typedef boost::half_open_range range; - less cmp; - return cmp(y,x); - } -}; - -template struct greater_equal > - : binary_function< - boost::half_open_range, - boost::half_open_range,bool> -{ - bool operator()( - const boost::half_open_range& x, - const boost::half_open_range& y) const - { - typedef boost::half_open_range range; - less cmp; - return !cmp(x,y); - } -}; -} // namespace std - -#else - -namespace boost { -// Can't partially specialize std::less et al, so we must provide the operators -template -bool operator<(const half_open_range& x, - const half_open_range& y) -{ - return !y.empty() && ( - x.empty() || std::less()(x.start(), y.start()) - || !std::less()(y.start(), x.start()) - && std::less()(x.finish(), y.finish())); -} - -template -bool operator>(const half_open_range& x, - const half_open_range& y) -{ - return y < x; -} - -template -bool operator<=(const half_open_range& x, - const half_open_range& y) -{ - return !(y < x); -} - -template -bool operator>=(const half_open_range& x, - const half_open_range& y) -{ - return !(x < y); -} -} // namespace boost - -#endif - - -#endif // BOOST_HALF_OPEN_RANGE_HPP_ diff --git a/sdk/include/boost/integer.hpp b/sdk/include/boost/integer.hpp deleted file mode 100644 index 3c42772671f..00000000000 --- a/sdk/include/boost/integer.hpp +++ /dev/null @@ -1,129 +0,0 @@ -// boost integer.hpp header file -------------------------------------------// - -// (C) Copyright Beman Dawes 1999. Permission to copy, use, modify, sell -// and distribute this software is granted provided this copyright -// notice appears in all copies. This software is provided "as is" without -// express or implied warranty, and with no claim as to its suitability for -// any purpose. - -// See http://www.boost.org/libs/integer for documentation. - -// Revision History -// 22 Sep 01 Added value-based integer templates. (Daryle Walker) -// 01 Apr 01 Modified to use new header. (John Maddock) -// 30 Jul 00 Add typename syntax fix (Jens Maurer) -// 28 Aug 99 Initial version - -#ifndef BOOST_INTEGER_HPP -#define BOOST_INTEGER_HPP - -#include // self include - -#include // for boost::integer_traits -#include // for std::numeric_limits - -namespace boost -{ - - // Helper templates ------------------------------------------------------// - - // fast integers from least integers - // int_fast_t<> works correctly for unsigned too, in spite of the name. - template< typename LeastInt > - struct int_fast_t { typedef LeastInt fast; }; // imps may specialize - - // convert category to type - template< int Category > struct int_least_helper {}; // default is empty - - // specializatons: 1=long, 2=int, 3=short, 4=signed char, - // 6=unsigned long, 7=unsigned int, 8=unsigned short, 9=unsigned long - // no specializations for 0 and 5: requests for a type > long are in error - template<> struct int_least_helper<1> { typedef long least; }; - template<> struct int_least_helper<2> { typedef int least; }; - template<> struct int_least_helper<3> { typedef short least; }; - template<> struct int_least_helper<4> { typedef signed char least; }; - template<> struct int_least_helper<6> { typedef unsigned long least; }; - template<> struct int_least_helper<7> { typedef unsigned int least; }; - template<> struct int_least_helper<8> { typedef unsigned short least; }; - template<> struct int_least_helper<9> { typedef unsigned char least; }; - - // integer templates specifying number of bits ---------------------------// - - // signed - template< int Bits > // bits (including sign) required - struct int_t - { - typedef typename int_least_helper - < - (Bits-1 <= std::numeric_limits::digits) + - (Bits-1 <= std::numeric_limits::digits) + - (Bits-1 <= std::numeric_limits::digits) + - (Bits-1 <= std::numeric_limits::digits) - >::least least; - typedef typename int_fast_t::fast fast; - }; - - // unsigned - template< int Bits > // bits required - struct uint_t - { - typedef typename int_least_helper - < - 5 + - (Bits <= std::numeric_limits::digits) + - (Bits <= std::numeric_limits::digits) + - (Bits <= std::numeric_limits::digits) + - (Bits <= std::numeric_limits::digits) - >::least least; - typedef typename int_fast_t::fast fast; - // int_fast_t<> works correctly for unsigned too, in spite of the name. - }; - - // integer templates specifying extreme value ----------------------------// - - // signed - template< long MaxValue > // maximum value to require support - struct int_max_value_t - { - typedef typename int_least_helper - < - (MaxValue <= integer_traits::const_max) + - (MaxValue <= integer_traits::const_max) + - (MaxValue <= integer_traits::const_max) + - (MaxValue <= integer_traits::const_max) - >::least least; - typedef typename int_fast_t::fast fast; - }; - - template< long MinValue > // minimum value to require support - struct int_min_value_t - { - typedef typename int_least_helper - < - (MinValue >= integer_traits::const_min) + - (MinValue >= integer_traits::const_min) + - (MinValue >= integer_traits::const_min) + - (MinValue >= integer_traits::const_min) - >::least least; - typedef typename int_fast_t::fast fast; - }; - - // unsigned - template< unsigned long Value > // maximum value to require support - struct uint_value_t - { - typedef typename int_least_helper - < - 5 + - (Value <= integer_traits::const_max) + - (Value <= integer_traits::const_max) + - (Value <= integer_traits::const_max) + - (Value <= integer_traits::const_max) - >::least least; - typedef typename int_fast_t::fast fast; - }; - - -} // namespace boost - -#endif // BOOST_INTEGER_HPP diff --git a/sdk/include/boost/integer/integer_mask.hpp b/sdk/include/boost/integer/integer_mask.hpp deleted file mode 100644 index 30f6340a6dc..00000000000 --- a/sdk/include/boost/integer/integer_mask.hpp +++ /dev/null @@ -1,93 +0,0 @@ -// Boost integer/integer_mask.hpp header file ------------------------------// - -// (C) Copyright Daryle Walker 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for updates, documentation, and revision history. - -#ifndef BOOST_INTEGER_INTEGER_MASK_HPP -#define BOOST_INTEGER_INTEGER_MASK_HPP - -#include // self include - -#include // for BOOST_STATIC_CONSTANT -#include // for boost::uint_t - -#include // for UCHAR_MAX, etc. -#include // for std::size_t - -#include // for std::numeric_limits - - -namespace boost -{ - - -// Specified single-bit mask class declaration -----------------------------// -// (Lowest bit starts counting at 0.) - -template < std::size_t Bit > -struct high_bit_mask_t -{ - typedef typename uint_t<(Bit + 1)>::least least; - typedef typename uint_t<(Bit + 1)>::fast fast; - - BOOST_STATIC_CONSTANT( least, high_bit = (least( 1u ) << Bit) ); - BOOST_STATIC_CONSTANT( fast, high_bit_fast = (fast( 1u ) << Bit) ); - - BOOST_STATIC_CONSTANT( std::size_t, bit_position = Bit ); - -}; // boost::high_bit_mask_t - - -// Specified bit-block mask class declaration ------------------------------// -// Makes masks for the lowest N bits -// (Specializations are needed when N fills up a type.) - -template < std::size_t Bits > -struct low_bits_mask_t -{ - typedef typename uint_t::least least; - typedef typename uint_t::fast fast; - - BOOST_STATIC_CONSTANT( least, sig_bits = (~( ~(least( 0u )) << Bits )) ); - BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); - - BOOST_STATIC_CONSTANT( std::size_t, bit_count = Bits ); - -}; // boost::low_bits_mask_t - - -#define BOOST_LOW_BITS_MASK_SPECIALIZE( Type ) \ - template < > struct low_bits_mask_t< std::numeric_limits::digits > { \ - typedef std::numeric_limits limits_type; \ - typedef uint_t::least least; \ - typedef uint_t::fast fast; \ - BOOST_STATIC_CONSTANT( least, sig_bits = (~( least(0u) )) ); \ - BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); \ - BOOST_STATIC_CONSTANT( std::size_t, bit_count = limits_type::digits ); \ - } - -BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned char ); - -#if USHRT_MAX > UCHAR_MAX -BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned short ); -#endif - -#if UINT_MAX > USHRT_MAX -BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned int ); -#endif - -#if ULONG_MAX > UINT_MAX -BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned long ); -#endif - -#undef BOOST_LOW_BITS_MASK_SPECIALIZE - - -} // namespace boost - - -#endif // BOOST_INTEGER_INTEGER_MASK_HPP diff --git a/sdk/include/boost/integer/static_log2.hpp b/sdk/include/boost/integer/static_log2.hpp deleted file mode 100644 index 972b970c9e6..00000000000 --- a/sdk/include/boost/integer/static_log2.hpp +++ /dev/null @@ -1,141 +0,0 @@ -// Boost integer/static_log2.hpp header file -------------------------------// - -// (C) Copyright Daryle Walker 2001. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for updates, documentation, and revision history. - -#ifndef BOOST_INTEGER_STATIC_LOG2_HPP -#define BOOST_INTEGER_STATIC_LOG2_HPP - -#include // self include - -#include // for BOOST_STATIC_CONSTANT, etc. -#include // for std::numeric_limits - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -#include // for boost::ct_if<> -#endif - - -namespace boost -{ - - -// Implementation details --------------------------------------------------// - -namespace detail -{ - -// Forward declarations -template < unsigned long Val, int Place = 0, int Index - = std::numeric_limits::digits > - struct static_log2_helper_t; - -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template < unsigned long Val, int Place > - struct static_log2_helper_t< Val, Place, 1 >; - -#else - -template < int Place > - struct static_log2_helper_final_step; - -template < unsigned long Val, int Place = 0, int Index - = std::numeric_limits::digits > - struct static_log2_helper_nopts_t; - -#endif - -// Recursively build the logarithm by examining the upper bits -template < unsigned long Val, int Place, int Index > -struct static_log2_helper_t -{ -private: - BOOST_STATIC_CONSTANT( int, half_place = Index / 2 ); - BOOST_STATIC_CONSTANT( unsigned long, lower_mask = (1ul << half_place) - - 1ul ); - BOOST_STATIC_CONSTANT( unsigned long, upper_mask = ~lower_mask ); - BOOST_STATIC_CONSTANT( bool, do_shift = (Val & upper_mask) != 0ul ); - - BOOST_STATIC_CONSTANT( unsigned long, new_val = do_shift ? (Val - >> half_place) : Val ); - BOOST_STATIC_CONSTANT( int, new_place = do_shift ? (Place + half_place) - : Place ); - BOOST_STATIC_CONSTANT( int, new_index = Index - half_place ); - -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - typedef static_log2_helper_t next_step_type; -#else - typedef static_log2_helper_nopts_t next_step_type; -#endif - -public: - BOOST_STATIC_CONSTANT( int, value = next_step_type::value ); - -}; // boost::detail::static_log2_helper_t - -// Non-recursive case -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template < unsigned long Val, int Place > -struct static_log2_helper_t< Val, Place, 1 > -{ -public: - BOOST_STATIC_CONSTANT( int, value = Place ); - -}; // boost::detail::static_log2_helper_t - -#else - -template < int Place > -struct static_log2_helper_final_step -{ -public: - BOOST_STATIC_CONSTANT( int, value = Place ); - -}; // boost::detail::static_log2_helper_final_step - -template < unsigned long Val, int Place, int Index > -struct static_log2_helper_nopts_t -{ -private: - typedef static_log2_helper_t recursive_step_type; - typedef static_log2_helper_final_step final_step_type; - - typedef typename ct_if<( Index != 1 ), recursive_step_type, - final_step_type>::type next_step_type; - -public: - BOOST_STATIC_CONSTANT( int, value = next_step_type::value ); - -}; // boost::detail::static_log2_helper_nopts_t - -#endif - -} // namespace detail - - -// Compile-time log-base-2 evaluator class declaration ---------------------// - -template < unsigned long Value > -struct static_log2 -{ - BOOST_STATIC_CONSTANT( int, value - = detail::static_log2_helper_t::value ); -}; - -template < > -struct static_log2< 0ul > -{ - // The logarithm of zero is undefined. -}; - - -} // namespace boost - - -#endif // BOOST_INTEGER_STATIC_LOG2_HPP diff --git a/sdk/include/boost/integer/static_min_max.hpp b/sdk/include/boost/integer/static_min_max.hpp deleted file mode 100644 index 216a3e3f6fd..00000000000 --- a/sdk/include/boost/integer/static_min_max.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// Boost integer/static_min_max.hpp header file ----------------------------// - -// (C) Copyright Daryle Walker 2001. Permission to copy, use, modify, sell -// and distribute this software is granted provided this copyright notice -// appears in all copies. This software is provided "as is" without -// express or implied warranty, and with no claim as to its suitability -// for any purpose. - -// See http://www.boost.org for updates, documentation, and revision history. - -#ifndef BOOST_INTEGER_STATIC_MIN_MAX_HPP -#define BOOST_INTEGER_STATIC_MIN_MAX_HPP - -#include // self include - -#include // for BOOST_STATIC_CONSTANT - - -namespace boost -{ - - -// Compile-time extrema class declarations ---------------------------------// -// Get the minimum or maximum of two values, signed or unsigned. - -template < long Value1, long Value2 > -struct static_signed_min -{ - BOOST_STATIC_CONSTANT( long, value = (Value1 > Value2) ? Value2 : Value1 ); -}; - -template < long Value1, long Value2 > -struct static_signed_max -{ - BOOST_STATIC_CONSTANT( long, value = (Value1 < Value2) ? Value2 : Value1 ); -}; - -template < unsigned long Value1, unsigned long Value2 > -struct static_unsigned_min -{ - BOOST_STATIC_CONSTANT( unsigned long, value - = (Value1 > Value2) ? Value2 : Value1 ); -}; - -template < unsigned long Value1, unsigned long Value2 > -struct static_unsigned_max -{ - BOOST_STATIC_CONSTANT( unsigned long, value - = (Value1 < Value2) ? Value2 : Value1 ); -}; - - -} // namespace boost - - -#endif // BOOST_INTEGER_STATIC_MIN_MAX_HPP diff --git a/sdk/include/boost/integer_fwd.hpp b/sdk/include/boost/integer_fwd.hpp deleted file mode 100644 index 3b36b35412a..00000000000 --- a/sdk/include/boost/integer_fwd.hpp +++ /dev/null @@ -1,154 +0,0 @@ -// Boost integer_fwd.hpp header file ---------------------------------------// - -// (C) Copyright boost.org 2001. Permission to copy, use, modify, sell -// and distribute this software is granted provided this copyright -// notice appears in all copies. This software is provided "as is" without -// express or implied warranty, and with no claim as to its suitability for -// any purpose. - -// See http://www.boost.org/libs/integer for documentation. - -#ifndef BOOST_INTEGER_FWD_HPP -#define BOOST_INTEGER_FWD_HPP - -#include // for UCHAR_MAX, etc. -#include // for std::size_t - -#include // for BOOST_NO_INTRINSIC_WCHAR_T -#include // for std::numeric_limits - - -namespace boost -{ - - -// From ------------------------------------------------// - -// Only has typedefs or using statements, with #conditionals - - -// From -----------------------------------------// - -template < class T > - class integer_traits; - -template < > - class integer_traits< bool >; - -template < > - class integer_traits< char >; - -template < > - class integer_traits< signed char >; - -template < > - class integer_traits< unsigned char >; - -#ifndef BOOST_NO_INTRINSIC_WCHAR_T -template < > - class integer_traits< wchar_t >; -#endif - -template < > - class integer_traits< short >; - -template < > - class integer_traits< unsigned short >; - -template < > - class integer_traits< int >; - -template < > - class integer_traits< unsigned int >; - -template < > - class integer_traits< long >; - -template < > - class integer_traits< unsigned long >; - -#ifdef ULLONG_MAX -template < > - class integer_traits< long long >; - -template < > - class integer_traits< unsigned long long >; -#endif - - -// From ------------------------------------------------// - -template < typename LeastInt > - struct int_fast_t; - -template< int Bits > - struct int_t; - -template< int Bits > - struct uint_t; - -template< long MaxValue > - struct int_max_value_t; - -template< long MinValue > - struct int_min_value_t; - -template< unsigned long Value > - struct uint_value_t; - - -// From -----------------------------------// - -template < std::size_t Bit > - struct high_bit_mask_t; - -template < std::size_t Bits > - struct low_bits_mask_t; - -template < > - struct low_bits_mask_t< ::std::numeric_limits::digits >; - -#if USHRT_MAX > UCHAR_MAX -template < > - struct low_bits_mask_t< ::std::numeric_limits::digits >; -#endif - -#if UINT_MAX > USHRT_MAX -template < > - struct low_bits_mask_t< ::std::numeric_limits::digits >; -#endif - -#if ULONG_MAX > UINT_MAX -template < > - struct low_bits_mask_t< ::std::numeric_limits::digits >; -#endif - - -// From ------------------------------------// - -template < unsigned long Value > - struct static_log2; - -template < > - struct static_log2< 0ul >; - - -// From ---------------------------------// - -template < long Value1, long Value2 > - struct static_signed_min; - -template < long Value1, long Value2 > - struct static_signed_max; - -template < unsigned long Value1, unsigned long Value2 > - struct static_unsigned_min; - -template < unsigned long Value1, unsigned long Value2 > - struct static_unsigned_max; - - -} // namespace boost - - -#endif // BOOST_INTEGER_FWD_HPP diff --git a/sdk/include/boost/integer_traits.hpp b/sdk/include/boost/integer_traits.hpp deleted file mode 100644 index 428081e07a0..00000000000 --- a/sdk/include/boost/integer_traits.hpp +++ /dev/null @@ -1,217 +0,0 @@ -/* boost integer_traits.hpp header file - * - * Copyright Jens Maurer 2000 - * Permission to use, copy, modify, sell, and distribute this software - * is hereby granted without fee provided that the above copyright notice - * appears in all copies and that both that copyright notice and this - * permission notice appear in supporting documentation, - * - * Jens Maurer makes no representations about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * $Id: integer_traits.hpp,v 1.22 2002/12/27 16:51:52 beman_dawes Exp $ - * - * Idea by Beman Dawes, Ed Brey, Steve Cleary, and Nathan Myers - */ - -// See http://www.boost.org/libs/integer for documentation. - - -#ifndef BOOST_INTEGER_TRAITS_HPP -#define BOOST_INTEGER_TRAITS_HPP - -#include -#include - -// These are an implementation detail and not part of the interface -#include -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) && !defined(BOOST_NO_CWCHAR) -#include -#endif - - -namespace boost { -template -class integer_traits : public std::numeric_limits -{ -public: - BOOST_STATIC_CONSTANT(bool, is_integral = false); -}; - -namespace detail { -template -class integer_traits_base -{ -public: - BOOST_STATIC_CONSTANT(bool, is_integral = true); - BOOST_STATIC_CONSTANT(T, const_min = min_val); - BOOST_STATIC_CONSTANT(T, const_max = max_val); -}; - -#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -// A definition is required even for integral static constants -template -const bool integer_traits_base::is_integral; - -template -const T integer_traits_base::const_min; - -template -const T integer_traits_base::const_max; -#endif - -} // namespace detail - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -#ifndef BOOST_NO_INTRINSIC_WCHAR_T -template<> -class integer_traits - : public std::numeric_limits, -#if defined(WCHAR_MIN) && defined(WCHAR_MAX) - public detail::integer_traits_base -#elif defined(__BORLANDC__) || defined(__CYGWIN__) || defined(__MINGW32__) || (defined(__BEOS__) && defined(__GNUC__)) - // No WCHAR_MIN and WCHAR_MAX, whar_t is short and unsigned: - public detail::integer_traits_base -#elif (defined(__sgi) && (!defined(__SGI_STL_PORT) || __SGI_STL_PORT < 0x400))\ - || (defined __APPLE__)\ - || (defined(__OpenBSD__) && defined(__GNUC__))\ - || (defined(__FreeBSD__) && defined(__GNUC__))\ - || (defined(__hpux) && defined(__GNUC__) && (__GNUC__ == 3) && !defined(__SGI_STL_PORT)) - // No WCHAR_MIN and WCHAR_MAX, wchar_t has the same range as int. - // - SGI MIPSpro with native library - // - gcc 3.x on HP-UX - // - Mac OS X with native library - // - gcc on FreeBSD - public detail::integer_traits_base -#elif defined(__hpux) && defined(__GNUC__) && (__GNUC__ == 2) && !defined(__SGI_STL_PORT) - // No WCHAR_MIN and WCHAR_MAX, wchar_t has the same range as unsigned int. - // - gcc 2.95.x on HP-UX - // (also, std::numeric_limits appears to return the wrong values). - public detail::integer_traits_base -#else -#error No WCHAR_MIN and WCHAR_MAX present, please adjust integer_traits<> for your compiler. -#endif -{ }; -#endif // BOOST_NO_INTRINSIC_WCHAR_T - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) -#if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG) - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -#elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG) - -template<> -class integer_traits : public std::numeric_limits, public detail::integer_traits_base{ }; -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -#elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG) - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -#elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG) - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; - -#endif -#endif - -} // namespace boost - -#endif /* BOOST_INTEGER_TRAITS_HPP */ - - diff --git a/sdk/include/boost/intrusive_ptr.hpp b/sdk/include/boost/intrusive_ptr.hpp deleted file mode 100644 index 3b988a8f5ab..00000000000 --- a/sdk/include/boost/intrusive_ptr.hpp +++ /dev/null @@ -1,247 +0,0 @@ -#ifndef BOOST_INTRUSIVE_PTR_HPP_INCLUDED -#define BOOST_INTRUSIVE_PTR_HPP_INCLUDED - -// -// intrusive_ptr.hpp -// -// Copyright (c) 2001, 2002 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/smart_ptr/intrusive_ptr.html for documentation. -// - -#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash -# pragma warning(push) -# pragma warning(disable:4284) // odd return type for operator-> -#endif - -#include -#include - -#include // for std::less -#include // for std::basic_ostream - - -namespace boost -{ - -// -// intrusive_ptr -// -// A smart pointer that uses intrusive reference counting. -// -// Relies on unqualified calls to -// -// void intrusive_ptr_add_ref(T * p); -// void intrusive_ptr_release(T * p); -// -// (p != 0) -// -// The object is responsible for destroying itself. -// - -template class intrusive_ptr -{ -private: - - typedef intrusive_ptr this_type; - -public: - - typedef T element_type; - - intrusive_ptr(): p_(0) - { - } - - intrusive_ptr(T * p, bool add_ref = true): p_(p) - { - if(p_ != 0 && add_ref) intrusive_ptr_add_ref(p_); - } - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES) - - template intrusive_ptr(intrusive_ptr const & rhs): p_(rhs.get()) - { - if(p_ != 0) intrusive_ptr_add_ref(p_); - } - -#endif - - intrusive_ptr(intrusive_ptr const & rhs): p_(rhs.p_) - { - if(p_ != 0) intrusive_ptr_add_ref(p_); - } - - ~intrusive_ptr() - { - if(p_ != 0) intrusive_ptr_release(p_); - } - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES) - - template intrusive_ptr & operator=(intrusive_ptr const & rhs) - { - this_type(rhs).swap(*this); - return *this; - } - -#endif - - intrusive_ptr & operator=(intrusive_ptr const & rhs) - { - this_type(rhs).swap(*this); - return *this; - } - - intrusive_ptr & operator=(T * rhs) - { - this_type(rhs).swap(*this); - return *this; - } - - T * get() const - { - return p_; - } - - T & operator*() const - { - return *p_; - } - - T * operator->() const - { - return p_; - } - - typedef T * (intrusive_ptr::*unspecified_bool_type) () const; - - operator unspecified_bool_type () const - { - return p_ == 0? 0: &intrusive_ptr::get; - } - - // operator! is a Borland-specific workaround - bool operator! () const - { - return p_ == 0; - } - - void swap(intrusive_ptr & rhs) - { - T * tmp = p_; - p_ = rhs.p_; - rhs.p_ = tmp; - } - -private: - - T * p_; -}; - -template inline bool operator==(intrusive_ptr const & a, intrusive_ptr const & b) -{ - return a.get() == b.get(); -} - -template inline bool operator!=(intrusive_ptr const & a, intrusive_ptr const & b) -{ - return a.get() != b.get(); -} - -template inline bool operator==(intrusive_ptr const & a, T * b) -{ - return a.get() == b; -} - -template inline bool operator!=(intrusive_ptr const & a, T * b) -{ - return a.get() != b; -} - -template inline bool operator==(T * a, intrusive_ptr const & b) -{ - return a == b.get(); -} - -template inline bool operator!=(T * a, intrusive_ptr const & b) -{ - return a != b.get(); -} - -#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96 - -// Resolve the ambiguity between our op!= and the one in rel_ops - -template inline bool operator!=(intrusive_ptr const & a, intrusive_ptr const & b) -{ - return a.get() != b.get(); -} - -#endif - -template inline bool operator<(intrusive_ptr const & a, intrusive_ptr const & b) -{ - return std::less()(a.get(), b.get()); -} - -template void swap(intrusive_ptr & lhs, intrusive_ptr & rhs) -{ - lhs.swap(rhs); -} - -// mem_fn support - -template T * get_pointer(intrusive_ptr const & p) -{ - return p.get(); -} - -template intrusive_ptr static_pointer_cast(intrusive_ptr const & p) -{ - return static_cast(p.get()); -} - -template intrusive_ptr dynamic_pointer_cast(intrusive_ptr const & p) -{ - return dynamic_cast(p.get()); -} - -// operator<< - -#if defined(__GNUC__) && (__GNUC__ < 3) - -template std::ostream & operator<< (std::ostream & os, intrusive_ptr const & p) -{ - os << p.get(); - return os; -} - -#else - -# if BOOST_WORKAROUND(BOOST_MSVC, <= 1200 && __SGI_STL_PORT) -// MSVC6 has problems finding std::basic_ostream through the using declaration in namespace _STL -using std::basic_ostream; -template basic_ostream & operator<< (basic_ostream & os, intrusive_ptr const & p) -# else -template std::basic_ostream & operator<< (std::basic_ostream & os, intrusive_ptr const & p) -# endif -{ - os << p.get(); - return os; -} - -#endif - -} // namespace boost - -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -#endif // #ifndef BOOST_INTRUSIVE_PTR_HPP_INCLUDED diff --git a/sdk/include/boost/io/ios_state.hpp b/sdk/include/boost/io/ios_state.hpp deleted file mode 100644 index c39c7a112cc..00000000000 --- a/sdk/include/boost/io/ios_state.hpp +++ /dev/null @@ -1,361 +0,0 @@ -// Boost io/ios_state.hpp header file --------------------------------------// - -// (C) Copyright Daryle Walker 2002. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for updates, documentation, and revision history. - -#ifndef BOOST_IO_IOS_STATE_HPP -#define BOOST_IO_IOS_STATE_HPP - -#include // self include - -#include // for std::ios_base, std::basic_ios, etc. -#include // for std::locale -#include // for std::basic_ostream -#include // for std::basic_streambuf -#include // for std::char_traits - - -namespace boost -{ -namespace io -{ - - -// Basic stream state saver class declarations -----------------------------// - -class ios_flags_saver -{ -public: - typedef ::std::ios_base state_type; - typedef ::std::ios_base::fmtflags aspect_type; - - explicit ios_flags_saver( state_type &s ) - : s_save_( s ), a_save_( s.flags() ) - {} - ios_flags_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.flags(a) ) - {} - ~ios_flags_saver() - { s_save_.flags( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - -class ios_precision_saver -{ -public: - typedef ::std::ios_base state_type; - typedef ::std::streamsize aspect_type; - - explicit ios_precision_saver( state_type &s ) - : s_save_( s ), a_save_( s.precision() ) - {} - ios_precision_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.precision(a) ) - {} - ~ios_precision_saver() - { s_save_.precision( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - -class ios_width_saver -{ -public: - typedef ::std::ios_base state_type; - typedef ::std::streamsize aspect_type; - - explicit ios_width_saver( state_type &s ) - : s_save_( s ), a_save_( s.width() ) - {} - ios_width_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.width(a) ) - {} - ~ios_width_saver() - { s_save_.width( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - - -// Advanced stream state saver class template declarations -----------------// - -template < typename Ch, class Tr > -class basic_ios_iostate_saver -{ -public: - typedef ::std::basic_ios state_type; - typedef ::std::ios_base::iostate aspect_type; - - explicit basic_ios_iostate_saver( state_type &s ) - : s_save_( s ), a_save_( s.rdstate() ) - {} - basic_ios_iostate_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.rdstate() ) - { s.clear(a); } - ~basic_ios_iostate_saver() - { s_save_.clear( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - -template < typename Ch, class Tr > -class basic_ios_exception_saver -{ -public: - typedef ::std::basic_ios state_type; - typedef ::std::ios_base::iostate aspect_type; - - explicit basic_ios_exception_saver( state_type &s ) - : s_save_( s ), a_save_( s.exceptions() ) - {} - basic_ios_exception_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.exceptions() ) - { s.exceptions(a); } - ~basic_ios_exception_saver() - { s_save_.exceptions( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - -template < typename Ch, class Tr > -class basic_ios_tie_saver -{ -public: - typedef ::std::basic_ios state_type; - typedef ::std::basic_ostream * aspect_type; - - explicit basic_ios_tie_saver( state_type &s ) - : s_save_( s ), a_save_( s.tie() ) - {} - basic_ios_tie_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.tie(a) ) - {} - ~basic_ios_tie_saver() - { s_save_.tie( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - -template < typename Ch, class Tr > -class basic_ios_rdbuf_saver -{ -public: - typedef ::std::basic_ios state_type; - typedef ::std::basic_streambuf * aspect_type; - - explicit basic_ios_rdbuf_saver( state_type &s ) - : s_save_( s ), a_save_( s.rdbuf() ) - {} - basic_ios_rdbuf_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.rdbuf(a) ) - {} - ~basic_ios_rdbuf_saver() - { s_save_.rdbuf( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - -template < typename Ch, class Tr > -class basic_ios_fill_saver -{ -public: - typedef ::std::basic_ios state_type; - typedef typename state_type::char_type aspect_type; - - explicit basic_ios_fill_saver( state_type &s ) - : s_save_( s ), a_save_( s.fill() ) - {} - basic_ios_fill_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.fill(a) ) - {} - ~basic_ios_fill_saver() - { s_save_.fill( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - -template < typename Ch, class Tr > -class basic_ios_locale_saver -{ -public: - typedef ::std::basic_ios state_type; - typedef ::std::locale aspect_type; - - explicit basic_ios_locale_saver( state_type &s ) - : s_save_( s ), a_save_( s.getloc() ) - {} - basic_ios_locale_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.imbue(a) ) - {} - ~basic_ios_locale_saver() - { s_save_.imbue( a_save_ ); } - -private: - state_type & s_save_; - aspect_type const a_save_; -}; - - -// User-defined stream state saver class declarations ----------------------// - -class ios_iword_saver -{ -public: - typedef ::std::ios_base state_type; - typedef int index_type; - typedef long aspect_type; - - explicit ios_iword_saver( state_type &s, index_type i ) - : s_save_( s ), a_save_( s.iword(i) ), i_save_( i ) - {} - ios_iword_saver( state_type &s, index_type i, aspect_type const &a ) - : s_save_( s ), a_save_( s.iword(i) ), i_save_( i ) - { s.iword(i) = a; } - ~ios_iword_saver() - { s_save_.iword( i_save_ ) = a_save_; } - -private: - state_type & s_save_; - aspect_type const a_save_; - index_type const i_save_; -}; - -class ios_pword_saver -{ -public: - typedef ::std::ios_base state_type; - typedef int index_type; - typedef void * aspect_type; - - explicit ios_pword_saver( state_type &s, index_type i ) - : s_save_( s ), a_save_( s.pword(i) ), i_save_( i ) - {} - ios_pword_saver( state_type &s, index_type i, aspect_type const &a ) - : s_save_( s ), a_save_( s.pword(i) ), i_save_( i ) - { s.pword(i) = a; } - ~ios_pword_saver() - { s_save_.pword( i_save_ ) = a_save_; } - -private: - state_type & s_save_; - aspect_type const a_save_; - index_type const i_save_; -}; - - -// Combined stream state saver class (template) declarations ---------------// - -class ios_base_all_saver -{ -public: - typedef ::std::ios_base state_type; - - explicit ios_base_all_saver( state_type &s ) - : s_save_( s ), a1_save_( s.flags() ), a2_save_( s.precision() ) - , a3_save_( s.width() ) - {} - - ~ios_base_all_saver() - { - s_save_.width( a3_save_ ); - s_save_.precision( a2_save_ ); - s_save_.flags( a1_save_ ); - } - -private: - state_type & s_save_; - state_type::fmtflags const a1_save_; - ::std::streamsize const a2_save_; - ::std::streamsize const a3_save_; -}; - -template < typename Ch, class Tr > -class basic_ios_all_saver -{ -public: - typedef ::std::basic_ios state_type; - - explicit basic_ios_all_saver( state_type &s ) - : s_save_( s ), a1_save_( s.flags() ), a2_save_( s.precision() ) - , a3_save_( s.width() ), a4_save_( s.rdstate() ) - , a5_save_( s.exceptions() ), a6_save_( s.tie() ) - , a7_save_( s.rdbuf() ), a8_save_( s.fill() ), a9_save_( s.getloc() ) - {} - - ~basic_ios_all_saver() - { - s_save_.imbue( a9_save_ ); - s_save_.fill( a8_save_ ); - s_save_.rdbuf( a7_save_ ); - s_save_.tie( a6_save_ ); - s_save_.exceptions( a5_save_ ); - s_save_.clear( a4_save_ ); - s_save_.width( a3_save_ ); - s_save_.precision( a2_save_ ); - s_save_.flags( a1_save_ ); - } - -private: - state_type & s_save_; - typename state_type::fmtflags const a1_save_; - ::std::streamsize const a2_save_; - ::std::streamsize const a3_save_; - typename state_type::iostate const a4_save_; - typename state_type::iostate const a5_save_; - ::std::basic_ostream * const a6_save_; - ::std::basic_streambuf * const a7_save_; - typename state_type::char_type const a8_save_; - ::std::locale const a9_save_; -}; - -class ios_all_word_saver -{ -public: - typedef ::std::ios_base state_type; - typedef int index_type; - - ios_all_word_saver( state_type &s, index_type i ) - : s_save_( s ), i_save_( i ), a1_save_( s.iword(i) ) - , a2_save_( s.pword(i) ) - {} - - ~ios_all_word_saver() - { - s_save_.pword( i_save_ ) = a2_save_; - s_save_.iword( i_save_ ) = a1_save_; - } - -private: - state_type & s_save_; - index_type const i_save_; - long const a1_save_; - void * const a2_save_; -}; - - -} // namespace io -} // namespace boost - - -#endif // BOOST_IO_IOS_STATE_HPP diff --git a/sdk/include/boost/io_fwd.hpp b/sdk/include/boost/io_fwd.hpp deleted file mode 100644 index a00fc96ae7b..00000000000 --- a/sdk/include/boost/io_fwd.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// Boost io_fwd.hpp header file --------------------------------------------// - -// (C) Copyright boost.org 2002. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or -// implied warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org/libs/io for documentation. - -#ifndef BOOST_IO_FWD_HPP -#define BOOST_IO_FWD_HPP - -#include // for std::char_traits (declaration) - - -namespace boost -{ -namespace io -{ - - -// From -------------------------------------------// - -class ios_flags_saver; -class ios_precision_saver; -class ios_width_saver; -class ios_base_all_saver; - -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_iostate_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_exception_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_tie_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_rdbuf_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_fill_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_locale_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_all_saver; - -typedef basic_ios_iostate_saver ios_iostate_saver; -typedef basic_ios_iostate_saver wios_iostate_saver; -typedef basic_ios_exception_saver ios_exception_saver; -typedef basic_ios_exception_saver wios_exception_saver; -typedef basic_ios_tie_saver ios_tie_saver; -typedef basic_ios_tie_saver wios_tie_saver; -typedef basic_ios_rdbuf_saver ios_rdbuf_saver; -typedef basic_ios_rdbuf_saver wios_rdbuf_saver; -typedef basic_ios_fill_saver ios_fill_saver; -typedef basic_ios_fill_saver wios_fill_saver; -typedef basic_ios_locale_saver ios_locale_saver; -typedef basic_ios_locale_saver wios_locale_saver; -typedef basic_ios_all_saver ios_all_saver; -typedef basic_ios_all_saver wios_all_saver; - -class ios_iword_saver; -class ios_pword_saver; -class ios_all_word_saver; - - -} // namespace io -} // namespace boost - - -#endif // BOOST_IO_FWD_HPP diff --git a/sdk/include/boost/iterator.hpp b/sdk/include/boost/iterator.hpp deleted file mode 100644 index 8b82097a00e..00000000000 --- a/sdk/include/boost/iterator.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// interator.hpp workarounds for non-conforming standard libraries ---------// - -// (C) Copyright Boost.org 2000. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org/libs/utility for documentation. - -// Revision History -// 12 Jan 01 added for std::ptrdiff_t (Jens Maurer) -// 28 Jun 00 Workarounds to deal with known MSVC bugs (David Abrahams) -// 26 Jun 00 Initial version (Jeremy Siek) - -#ifndef BOOST_ITERATOR_HPP -#define BOOST_ITERATOR_HPP - -#include -#include // std::ptrdiff_t -#include - -namespace boost -{ -# if defined(BOOST_NO_STD_ITERATOR) && !defined(BOOST_MSVC_STD_ITERATOR) - template - struct iterator - { - typedef T value_type; - typedef Distance difference_type; - typedef Pointer pointer; - typedef Reference reference; - typedef Category iterator_category; - }; -# else - - // declare iterator_base in namespace detail to work around MSVC bugs which - // prevent derivation from an identically-named class in a different namespace. - namespace detail { - template -# if !defined(BOOST_MSVC_STD_ITERATOR) - struct iterator_base : std::iterator {}; -# else - struct iterator_base : std::iterator - { - typedef Reference reference; - typedef Pointer pointer; - typedef Distance difference_type; - }; -# endif - } - - template - struct iterator : detail::iterator_base {}; -# endif -} // namespace boost - -#endif // BOOST_ITERATOR_HPP diff --git a/sdk/include/boost/iterator_adaptors.hpp b/sdk/include/boost/iterator_adaptors.hpp deleted file mode 100644 index 9387f22b7a7..00000000000 --- a/sdk/include/boost/iterator_adaptors.hpp +++ /dev/null @@ -1,1437 +0,0 @@ -// (C) Copyright David Abrahams 2000. Permission to copy, use, -// modify, sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. -// -// (C) Copyright Jeremy Siek 2000. Permission to copy, use, modify, -// sell and distribute this software is granted provided this -// copyright notice appears in all copies. This software is provided -// "as is" without express or implied warranty, and with no claim as -// to its suitability for any purpose. - -// See http://www.boost.org/libs/utility/iterator_adaptors.htm for documentation. - -// Revision History: - -// 01 Feb 2002 Jeremy Siek -// Added more comments in default_iterator_policies. -// 08 Jan 2001 David Abrahams -// Moved concept checks into a separate class, which makes MSVC -// better at dealing with them. -// 07 Jan 2001 David Abrahams -// Choose proxy for operator->() only if the reference type is not a reference. -// Updated workarounds for __MWERKS__ == 0x2406 -// 20 Dec 2001 David Abrahams -// Adjusted is_convertible workarounds for __MWERKS__ == 0x2406 -// 03 Nov 2001 Jeremy Siek -// Changed the named template parameter interface and internal. -// 04 Oct 2001 Jeremy Siek -// Changed projection_iterator to not rely on the default reference, -// working around a limitation of detail::iterator_traits. -// 04 Oct 2001 David Abrahams -// Applied indirect_iterator patch from George A. Heintzelman -// Changed name of "bind" to "select" to avoid problems with MSVC. -// 26 Sep 2001 David Abrahams -// Added borland bug fix -// 08 Mar 2001 Jeremy Siek -// Added support for optional named template parameters. -// 19 Feb 2001 David Abrahams -// Rolled back reverse_iterator_pair_generator again, as it doesn't -// save typing on a conforming compiler. -// 18 Feb 2001 David Abrahams -// Reinstated reverse_iterator_pair_generator -// 16 Feb 2001 David Abrahams -// Add an implicit conversion operator to operator_arrow_proxy -// as CW and BCC workarounds. -// 11 Feb 2001 David Abrahams -// Switch to use of BOOST_STATIC_CONSTANT where possible -// 11 Feb 2001 Jeremy Siek -// Removed workaround for older MIPSpro compiler. The workaround -// was preventing the proper functionality of the underlying -// iterator being carried forward into the iterator adaptor. -// Also added is_bidirectional enum to avoid EDG compiler error. -// 11 Feb 2001 David Abrahams -// Borland fixes up the wazoo. It finally works! -// 10 Feb 2001 David Abrahams -// Removed traits argument from iterator_adaptor<> and switched to -// explicit trait specification for maximum ease-of-use. -// Added comments to detail::iterator_defaults<> -// Began using detail::iterator_defaults<> unconditionally for code clarity -// Changed uses of `Iterator' to `Base' where non-iterators can be used. -// -// 10 Feb 2001 David Abrahams -// Rolled in supposed Borland fixes from John Maddock, but not seeing any -// improvement yet -// Changed argument order to indirect_ generator, for convenience in the -// case of input iterators (where Reference must be a value type). -// Removed derivation of filter_iterator_policies from -// default_iterator_policies, since the iterator category is likely to be -// reduced (we don't want to allow illegal operations like decrement). -// Support for a simpler filter iterator interface. -// -// 09 Feb 2001 David Abrahams -// Improved interface to indirect_ and reverse_ iterators -// Rolled back Jeremy's new constructor for now; it was causing -// problems with counting_iterator_test -// Attempted fix for Borland -// -// 09 Feb 2001 Jeremy Siek -// Added iterator constructor to allow const adaptor -// from non-const adaptee. -// Changed make_xxx to pass iterators by-value to -// get arrays converted to pointers. -// Removed InnerIterator template parameter from -// indirect_iterator_generator. -// Rearranged parameters for make_filter_iterator -// -// 07 Feb 2001 Jeremy Siek -// Removed some const iterator adaptor generators. -// Added make_xxx_iterator() helper functions for remaining -// iterator adaptors. -// Removed some traits template parameters where they -// where no longer needed thanks to detail::iterator_traits. -// Moved some of the compile-time logic into enums for -// EDG compatibility. -// -// 07 Feb 2001 David Abrahams -// Removed iterator_adaptor_pair_generator and -// reverse_iterator_pair_generator (more such culling to come) -// Improved comments -// Changed all uses of std::iterator_traits as default arguments -// to boost::detail::iterator_traits for improved utility in -// non-generic contexts -// Fixed naming convention of non-template parameter names -// -// 06 Feb 2001 David Abrahams -// Produce operator-> proxy objects for InputIterators -// Added static assertions to do some basic concept checks -// Renamed single-type generators -> xxx_generator -// Renamed const/nonconst iterator generators -> xxx_pair_generator -// Added make_transform_iterator(iter, function) -// The existence of boost::detail::iterator_traits allowed many -// template arguments to be defaulted. Some arguments had to be -// moved to accomplish it. -// -// 04 Feb 2001 MWERKS bug workaround, concept checking for proper -// reference types (David Abrahams) - -#ifndef BOOST_ITERATOR_ADAPTOR_DWA053000_HPP_ -# define BOOST_ITERATOR_ADAPTOR_DWA053000_HPP_ - -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# if BOOST_WORKAROUND(__GNUC__, == 2) && __GNUC_MINOR__ <= 96 && !defined(__STL_USE_NAMESPACES) -# define BOOST_RELOPS_AMBIGUITY_BUG 1 -# endif - -namespace boost { - -//============================================================================ -// Concept checking classes that express the requirements for iterator -// policies and adapted types. These classes are mostly for -// documentation purposes, and are not used in this header file. They -// merely provide a more succinct statement of what is expected of the -// iterator policies. - -template -struct TrivialIteratorPoliciesConcept -{ - typedef typename Traits::reference reference; - void constraints() { - function_requires< AssignableConcept >(); - function_requires< DefaultConstructibleConcept >(); - function_requires< AssignableConcept >(); - function_requires< DefaultConstructibleConcept >(); - - const_constraints(); - } - void const_constraints() const { - reference r = p.dereference(x); - b = p.equal(x, x); - ignore_unused_variable_warning(r); - } - Policies p; - Adapted x; - mutable bool b; -}; - -// Add InputIteratorPoliciesConcept? - -template -struct ForwardIteratorPoliciesConcept -{ - typedef typename Traits::iterator_category iterator_category; - void constraints() { - function_requires< - TrivialIteratorPoliciesConcept - >(); - - p.increment(x); - std::forward_iterator_tag t = iterator_category(); - ignore_unused_variable_warning(t); - } - Policies p; - Adapted x; - iterator_category category; -}; - -template -struct BidirectionalIteratorPoliciesConcept -{ - typedef typename Traits::iterator_category iterator_category; - void constraints() { - function_requires< - ForwardIteratorPoliciesConcept - >(); - - p.decrement(x); - std::bidirectional_iterator_tag t = iterator_category(); - ignore_unused_variable_warning(t); - } - Policies p; - Adapted x; -}; - -template -struct RandomAccessIteratorPoliciesConcept -{ - typedef typename Traits::difference_type DifferenceType; - typedef typename Traits::iterator_category iterator_category; - void constraints() { - function_requires< - BidirectionalIteratorPoliciesConcept - >(); - - p.advance(x, n); - std::random_access_iterator_tag t = iterator_category(); - const_constraints(); - ignore_unused_variable_warning(t); - } - void const_constraints() const { - n = p.distance(x, x); - } - Policies p; - Adapted x; - mutable DifferenceType n; - mutable bool b; -}; - - -//============================================================================ -// Default policies for iterator adaptors. You can use this as a base -// class if you want to customize particular policies. -struct default_iterator_policies -{ - // Some of the member functions were defined static, but Borland - // got confused and thought they were non-const. Also, Sun C++ - // does not like static function templates. - // - // The reason some members were defined static is because there is - // not state (data members) needed by those members of the - // default_iterator_policies class. If your policies class member - // functions need to access state stored in the policies object, - // then the member functions should not be static (they can't be). - - template - void initialize(Base&) - { } - - template - typename IteratorAdaptor::reference dereference(const IteratorAdaptor& x) const - { return *x.base(); } - - template - void increment(IteratorAdaptor& x) - { ++x.base(); } - - template - void decrement(IteratorAdaptor& x) - { --x.base(); } - - template - void advance(IteratorAdaptor& x, DifferenceType n) - { x.base() += n; } - - template - typename IteratorAdaptor1::difference_type - distance(const IteratorAdaptor1& x, const IteratorAdaptor2& y) const - { return y.base() - x.base(); } - - template - bool equal(const IteratorAdaptor1& x, const IteratorAdaptor2& y) const - { return x.base() == y.base(); } -}; - -// putting the comparisons in a base class avoids the g++ -// ambiguous overload bug due to the relops operators - -#ifdef BOOST_RELOPS_AMBIGUITY_BUG -template -struct iterator_comparisons : Base { }; - -template -inline bool operator==(const iterator_comparisons& xb, - const iterator_comparisons& yb) -{ - const D1& x = static_cast(xb); - const D2& y = static_cast(yb); - return x.policies().equal(x, y); -} - -template -inline bool operator!=(const iterator_comparisons& xb, - const iterator_comparisons& yb) -{ - const D1& x = static_cast(xb); - const D2& y = static_cast(yb); - return !x.policies().equal(x, y); -} - -template -inline bool operator<(const iterator_comparisons& xb, - const iterator_comparisons& yb) -{ - const D1& x = static_cast(xb); - const D2& y = static_cast(yb); - return x.policies().distance(y, x) < 0; -} - -template -inline bool operator>(const iterator_comparisons& xb, - const iterator_comparisons& yb) -{ - const D1& x = static_cast(xb); - const D2& y = static_cast(yb); - return x.policies().distance(y, x) > 0; -} - -template -inline bool operator>=(const iterator_comparisons& xb, - const iterator_comparisons& yb) -{ - const D1& x = static_cast(xb); - const D2& y = static_cast(yb); - return x.policies().distance(y, x) >= 0; -} - -template -inline bool operator<=(const iterator_comparisons& xb, - const iterator_comparisons& yb) -{ - const D1& x = static_cast(xb); - const D2& y = static_cast(yb); - return x.policies().distance(y, x) <= 0; -} -#endif - -namespace detail { - - // operator->() needs special support for input iterators to strictly meet the - // standard's requirements. If *i is not a reference type, we must still - // produce a (constant) lvalue to which a pointer can be formed. We do that by - // returning an instantiation of this special proxy class template. - - template - struct operator_arrow_proxy - { - operator_arrow_proxy(const T& x) : m_value(x) {} - const T* operator->() const { return &m_value; } - // This function is needed for MWCW and BCC, which won't call operator-> - // again automatically per 13.3.1.2 para 8 - operator const T*() const { return &m_value; } - T m_value; - }; - - template - inline operator_arrow_proxy - operator_arrow(const Iter& i, std::input_iterator_tag) { - typedef typename Iter::value_type value_t; // VC++ needs this typedef - return operator_arrow_proxy(*i); - } - - template - inline typename Iter::pointer - operator_arrow(const Iter& i, std::forward_iterator_tag) { - return &(*i); - } - - template - struct operator_arrow_result_generator - { - typedef operator_arrow_proxy proxy; - // Borland chokes unless it's an actual enum (!) - enum { use_proxy = !boost::is_reference::value }; - - typedef typename boost::detail::if_true<(use_proxy)>::template - then< - proxy, - // else - Pointer - >::type type; - }; - - -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || defined(BOOST_NO_STD_ITERATOR_TRAITS) - - // Select default pointer and reference types for adapted non-pointer - // iterators based on the iterator and the value_type. Poor man's partial - // specialization is in use here. - template - struct iterator_defaults_select - { - template - struct traits - { - // The assumption is that iterator_traits can deduce these types - // properly as long as the iterator is not a pointer. - typedef typename boost::detail::iterator_traits::pointer pointer; - typedef typename boost::detail::iterator_traits::reference reference; - }; - }; - - // Select default pointer and reference types for adapted pointer iterators - // given a (possibly-const) value_type. - template <> - struct iterator_defaults_select - { - template - struct traits - { - typedef Value* pointer; - typedef Value& reference; - }; - }; - - // Consolidate selection of the default pointer and reference type - template - struct iterator_defaults - { - BOOST_STATIC_CONSTANT(bool, is_ptr = boost::is_pointer::value); - - typedef typename iterator_defaults_select::template traits traits; - typedef typename traits::pointer pointer; - typedef typename traits::reference reference; - }; -# else - template - struct iterator_defaults : iterator_traits - { - // Trying to factor the common is_same expression into an enum or a - // static bool constant confused Borland. - typedef typename if_true<( - ::boost::is_same::value_type>::value - )>::template then< - typename iterator_traits::pointer, - Value* - >::type pointer; - - typedef typename if_true<( - ::boost::is_same::value_type>::value - )>::template then< - typename iterator_traits::reference, - Value& - >::type reference; - - }; -# endif - - //=========================================================================== - // Specify the defaults for iterator_adaptor's template parameters - - struct default_argument { }; - // This class template is a workaround for MSVC. - struct dummy_default_gen { - template - struct select { typedef default_argument type; }; - }; - // This class template is a workaround for MSVC. - template struct default_generator { - typedef dummy_default_gen type; - }; - - struct default_value_type { - template - struct select { - typedef typename boost::detail::iterator_traits::value_type type; - }; - }; - template <> struct default_generator - { typedef default_value_type type; }; // VC++ workaround - - struct default_difference_type { - template - struct select { - typedef typename boost::detail::iterator_traits::difference_type type; - }; - }; - template <> struct default_generator - { typedef default_difference_type type; }; // VC++ workaround - - struct default_iterator_category { - template - struct select { - typedef typename boost::detail::iterator_traits::iterator_category type; - }; - }; - template <> struct default_generator - { typedef default_iterator_category type; }; // VC++ workaround - - struct default_pointer { - template - struct select { - typedef typename Traits::value_type Value; - typedef typename boost::detail::iterator_defaults::pointer - type; - }; - }; - template <> struct default_generator - { typedef default_pointer type; }; // VC++ workaround - - struct default_reference { - template - struct select { - typedef typename Traits::value_type Value; - typedef typename boost::detail::iterator_defaults::reference - type; - }; - }; - template <> struct default_generator - { typedef default_reference type; }; // VC++ workaround - -} // namespace detail - - - //=========================================================================== - // Support for named template parameters - -struct named_template_param_base { }; - -namespace detail { - struct value_type_tag { }; - struct reference_tag { }; - struct pointer_tag { }; - struct difference_type_tag { }; - struct iterator_category_tag { }; - - // avoid using std::pair because A or B might be a reference type, and g++ - // complains about forming references to references inside std::pair - template - struct cons_type { - typedef A first_type; - typedef B second_type; - }; - -} // namespace detail - -template struct value_type_is : public named_template_param_base -{ - typedef detail::cons_type type; -}; -template struct reference_is : public named_template_param_base -{ - typedef detail::cons_type type; -}; -template struct pointer_is : public named_template_param_base -{ - typedef detail::cons_type type; -}; -template struct difference_type_is - : public named_template_param_base -{ - typedef detail::cons_type type; -}; -template struct iterator_category_is - : public named_template_param_base -{ - typedef detail::cons_type type; -}; - -namespace detail { - - struct end_of_list { }; - - // Given an associative list, find the value with the matching key. - // An associative list is a list of key-value pairs. The list is - // built out of cons_type's and is terminated by end_of_list. - -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || BOOST_WORKAROUND(__BORLANDC__, != 0) - template - struct find_param; - - struct find_param_continue { - template struct select { - typedef typename AssocList::first_type Head; - typedef typename Head::first_type Key1; - typedef typename Head::second_type Value; - typedef typename if_true<(is_same::value)>::template - then::type - >::type type; - }; - }; - struct find_param_end { - template - struct select { typedef detail::default_argument type; }; - }; - template struct find_param_helper1 - { typedef find_param_continue type; }; - template <> struct find_param_helper1 - { typedef find_param_end type; }; - - template - struct find_param { - typedef typename find_param_helper1::type select1; - typedef typename select1::template select::type type; - }; -# else - template struct find_param; - - template - struct find_param { typedef default_argument type; }; - - // Found a matching Key, return the associated Value - template - struct find_param, Rest>, Key> { - typedef Value type; - }; - - // Non-matching keys, continue the search - template - struct find_param, Rest>, Key2> { - typedef typename find_param::type type; - }; -# endif - - struct make_named_arg { - template - struct select { typedef typename Value::type type; }; - }; - struct make_key_value { - template - struct select { typedef detail::cons_type type; }; - }; - - template - struct is_named_parameter - { - enum { value = is_convertible< typename add_reference< Value >::type, add_reference< named_template_param_base >::type >::value }; - }; - -# if BOOST_WORKAROUND(__MWERKS__, <= 0x2407) // workaround for broken is_convertible implementation - template struct is_named_parameter > { enum { value = true }; }; - template struct is_named_parameter > { enum { value = true }; }; - template struct is_named_parameter > { enum { value = true }; }; - template struct is_named_parameter > { enum { value = true }; }; - template struct is_named_parameter > { enum { value = true }; }; -# endif - - template - struct make_arg { -# if BOOST_WORKAROUND(__BORLANDC__, > 0) - // Borland C++ doesn't like the extra indirection of is_named_parameter - typedef typename - if_true<(is_convertible::value)>:: - template then::type Make; -# else - enum { is_named = is_named_parameter::value }; - typedef typename if_true<(is_named)>::template - then::type Make; -# endif - typedef typename Make::template select::type type; - }; - - // Mechanism for resolving the default argument for a template parameter. - - template struct is_default { typedef type_traits::no_type type; }; - template <> struct is_default - { typedef type_traits::yes_type type; }; - - struct choose_default { - template - struct select { - typedef typename default_generator::type Gen; - typedef typename Gen::template select::type type; - }; - }; - struct choose_arg { - template - struct select { - typedef Arg type; - }; - }; - - template - struct choose_arg_or_default { typedef choose_arg type; }; - template <> struct choose_arg_or_default { - typedef choose_default type; - }; - - template - class resolve_default { - typedef typename choose_arg_or_default::type>::type - Selector; - public: - typedef typename Selector - ::template select::type type; - }; - - template - class iterator_adaptor_traits_gen - { - // Form an associative list out of the template parameters - // If the argument is a normal parameter (not named) then make_arg - // creates a key-value pair. If the argument is a named parameter, - // then make_arg extracts the key-value pair defined inside the - // named parameter. - typedef detail::cons_type< typename make_arg::type, - detail::cons_type::type, - detail::cons_type::type, - detail::cons_type::type, - detail::cons_type::type, - end_of_list> > > > > ArgList; - - // Search the list for particular parameters - typedef typename find_param::type Val; - typedef typename find_param::type Diff; - typedef typename find_param::type Cat; - typedef typename find_param::type Ptr; - typedef typename find_param::type Ref; - - typedef boost::iterator - Traits0; - - // Compute the defaults if necessary - typedef typename resolve_default::type - value_type; - // if getting default value type from iterator_traits, then it won't be const - typedef typename resolve_default::type difference_type; - typedef typename resolve_default::type iterator_category; - - typedef boost::iterator Traits1; - - // Compute the defaults for pointer and reference. This is done as a - // separate step because the defaults for pointer and reference depend - // on value_type. - typedef typename resolve_default::type - pointer; - typedef typename resolve_default::type - reference; - - public: - typedef boost::iterator::type, - difference_type, pointer, reference> type; - }; - - // This is really a partial concept check for iterators. Should it - // be moved or done differently? - template - struct validator - { - BOOST_STATIC_CONSTANT( - bool, is_input_or_output_iter - = (boost::is_convertible::value - | boost::is_convertible::value)); - - // Iterators should satisfy one of the known categories - BOOST_STATIC_ASSERT(is_input_or_output_iter); - - // Iterators >= ForwardIterator must produce real references - // as required by the C++ standard requirements in Table 74. - BOOST_STATIC_CONSTANT( - bool, forward_iter_with_real_reference - = ((!boost::is_convertible::value) - | boost::is_same::value - | boost::is_same::type&>::value)); - - BOOST_STATIC_ASSERT(forward_iter_with_real_reference); - }; - - template struct dependent - { - typedef Result type; - }; - -} // namespace detail - - - -// This macro definition is only temporary in this file -# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -# define BOOST_ARG_DEPENDENT_TYPENAME typename -# else -# define BOOST_ARG_DEPENDENT_TYPENAME -# endif - -//============================================================================ -//iterator_adaptor - Adapts a generic piece of data as an iterator. Adaptation -// is especially easy if the data being adapted is itself an iterator -// -// Base - the base (usually iterator) type being wrapped. -// -// Policies - a set of policies determining how the resulting iterator -// works. -// -// Value - if supplied, the value_type of the resulting iterator, unless -// const. If const, a conforming compiler strips constness for the -// value_type. If not supplied, iterator_traits::value_type is used -// -// Reference - the reference type of the resulting iterator, and in -// particular, the result type of operator*(). If not supplied but -// Value is supplied, Value& is used. Otherwise -// iterator_traits::reference is used. -// -// Pointer - the pointer type of the resulting iterator, and in -// particular, the result type of operator->(). If not -// supplied but Value is supplied, Value* is used. Otherwise -// iterator_traits::pointer is used. -// -// Category - the iterator_category of the resulting iterator. If not -// supplied, iterator_traits::iterator_category is used. -// -// Distance - the difference_type of the resulting iterator. If not -// supplied, iterator_traits::difference_type is used. -template -struct iterator_adaptor : -#ifdef BOOST_RELOPS_AMBIGUITY_BUG - iterator_comparisons< - iterator_adaptor, - typename detail::iterator_adaptor_traits_gen::type - > -#else - detail::iterator_adaptor_traits_gen::type -#endif -{ - typedef iterator_adaptor self; - public: - typedef detail::iterator_adaptor_traits_gen TraitsGen; - typedef typename TraitsGen::type Traits; - - typedef typename Traits::difference_type difference_type; - typedef typename Traits::value_type value_type; - typedef typename Traits::pointer pointer; - typedef typename Traits::reference reference; - typedef typename Traits::iterator_category iterator_category; - - typedef Base base_type; - typedef Policies policies_type; - - private: - typedef detail::validator< - iterator_category,value_type,difference_type,pointer,reference - > concept_check; - - public: - iterator_adaptor() - { - } - - explicit - iterator_adaptor(const Base& it, const Policies& p = Policies()) - : m_iter_p(it, p) { - policies().initialize(base()); - } - - template - iterator_adaptor ( - const iterator_adaptor& src) - : m_iter_p(src.base(), src.policies()) - { - policies().initialize(base()); - } - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(__BORLANDC__, > 0) - // This is required to prevent a bug in how VC++ generates - // the assignment operator for compressed_pair - iterator_adaptor& operator= (const iterator_adaptor& x) { - m_iter_p = x.m_iter_p; - return *this; - } -#endif - reference operator*() const { - return policies().dereference(*this); - } - -#if BOOST_WORKAROUND(BOOST_MSVC, > 0) -# pragma warning(push) -# pragma warning( disable : 4284 ) -#endif - - typename boost::detail::operator_arrow_result_generator::type - operator->() const - { return detail::operator_arrow(*this, iterator_category()); } - -#if BOOST_WORKAROUND(BOOST_MSVC, > 0) -# pragma warning(pop) -#endif - - template - typename detail::dependent::type operator[](diff_type n) const - { return *(*this + n); } - - self& operator++() { -#if !BOOST_WORKAROUND(__MWERKS__, < 0x2405) - policies().increment(*this); -#else - // Odd bug, MWERKS couldn't deduce the type for the member template - // Workaround by explicitly specifying the type. - policies().increment(*this); -#endif - return *this; - } - - self operator++(int) { self tmp(*this); ++*this; return tmp; } - - self& operator--() { -#if !BOOST_WORKAROUND(__MWERKS__, < 0x2405) - policies().decrement(*this); -#else - policies().decrement(*this); -#endif - return *this; - } - - self operator--(int) { self tmp(*this); --*this; return tmp; } - - self& operator+=(difference_type n) { - policies().advance(*this, n); - return *this; - } - - self& operator-=(difference_type n) { - policies().advance(*this, -n); - return *this; - } - - base_type const& base() const { return m_iter_p.first(); } - - // Moved from global scope to avoid ambiguity with the operator-() which - // subtracts iterators from one another. - self operator-(difference_type x) const - { self result(*this); return result -= x; } -private: - compressed_pair m_iter_p; - -public: // implementation details (too many compilers have trouble when these are private). - base_type& base() { return m_iter_p.first(); } - Policies& policies() { return m_iter_p.second(); } - const Policies& policies() const { return m_iter_p.second(); } -}; - -template -iterator_adaptor -operator+( - iterator_adaptor p, - Distance2 x) -{ - return p += x; -} - -template -iterator_adaptor -operator+( - Distance2 x, - iterator_adaptor p) -{ - return p += x; -} - -template -typename iterator_adaptor::difference_type -operator-( - const iterator_adaptor& x, - const iterator_adaptor& y) -{ - typedef typename iterator_adaptor::difference_type difference_type; - return x.policies().distance(y, x); -} - -#ifndef BOOST_RELOPS_AMBIGUITY_BUG -template -inline bool -operator==( - const iterator_adaptor& x, - const iterator_adaptor& y) -{ - return x.policies().equal(x, y); -} - -template -inline bool -operator<( - const iterator_adaptor& x, - const iterator_adaptor& y) -{ - return x.policies().distance(y, x) < 0; -} - -template -inline bool -operator>( - const iterator_adaptor& x, - const iterator_adaptor& y) -{ - return x.policies().distance(y, x) > 0; -} - -template -inline bool -operator>=( - const iterator_adaptor& x, - const iterator_adaptor& y) -{ - return x.policies().distance(y, x) >= 0; -} - -template -inline bool -operator<=( - const iterator_adaptor& x, - const iterator_adaptor& y) -{ - return x.policies().distance(y, x) <= 0; -} - -template -inline bool -operator!=( - const iterator_adaptor& x, - const iterator_adaptor& y) -{ - return !x.policies().equal(x, y); -} -#endif - -//============================================================================= -// Transform Iterator Adaptor -// -// Upon deference, apply some unary function object and return the -// result by value. - -template -struct transform_iterator_policies : public default_iterator_policies -{ - transform_iterator_policies() { } - transform_iterator_policies(const AdaptableUnaryFunction& f) : m_f(f) { } - - template - typename IteratorAdaptor::reference - dereference(const IteratorAdaptor& iter) const - { return m_f(*iter.base()); } - - AdaptableUnaryFunction m_f; -}; - -template -class transform_iterator_generator -{ - typedef typename AdaptableUnaryFunction::result_type value_type; -public: - typedef iterator_adaptor, - value_type, value_type, value_type*, std::input_iterator_tag> - type; -}; - -template -inline typename transform_iterator_generator::type -make_transform_iterator( - Iterator base, - const AdaptableUnaryFunction& f = AdaptableUnaryFunction()) -{ - typedef typename transform_iterator_generator::type result_t; - return result_t(base, f); -} - -//============================================================================= -// Indirect Iterators Adaptor - -// Given a pointer to pointers (or iterator to iterators), -// apply a double dereference inside operator*(). -// -// We use the term "outer" to refer to the first level iterator type -// and "inner" to refer to the second level iterator type. For -// example, given T**, T* is the inner iterator type and T** is the -// outer iterator type. Also, const T* would be the const inner -// iterator. - -// We tried to implement this with transform_iterator, but that required -// using boost::remove_ref, which is not compiler portable. - -struct indirect_iterator_policies : public default_iterator_policies -{ - template - typename IteratorAdaptor::reference dereference(const IteratorAdaptor& x) const - { return **x.base(); } -}; - -namespace detail { -# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) // strangely instantiated even when unused! Maybe try a recursive template someday ;-) - template - struct traits_of_value_type { - typedef typename boost::detail::iterator_traits::value_type outer_value; - typedef typename boost::detail::iterator_traits::value_type value_type; - typedef typename boost::detail::iterator_traits::reference reference; - typedef typename boost::detail::iterator_traits::pointer pointer; - }; -# endif -} - -template ::value_type -#endif - , class Reference -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - = BOOST_ARG_DEPENDENT_TYPENAME detail::traits_of_value_type< - OuterIterator>::reference -#else - = Value & -#endif - , class Category = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_traits< - OuterIterator>::iterator_category - , class Pointer -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - = BOOST_ARG_DEPENDENT_TYPENAME detail::traits_of_value_type< - OuterIterator>::pointer -#else - = Value* -#endif - > -struct indirect_iterator_generator -{ - typedef iterator_adaptor type; -}; - -template ::value_type -#endif - , class Reference -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - = BOOST_ARG_DEPENDENT_TYPENAME detail::traits_of_value_type< - OuterIterator>::reference -#else - = Value & -#endif - , class ConstReference = Value const& - , class Category = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_traits< - OuterIterator>::iterator_category - , class Pointer -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - = BOOST_ARG_DEPENDENT_TYPENAME detail::traits_of_value_type< - OuterIterator>::pointer -#else - = Value* -#endif - , class ConstPointer = Value const* - > -struct indirect_iterator_pair_generator -{ - typedef typename indirect_iterator_generator::type iterator; - typedef typename indirect_iterator_generator::type const_iterator; -}; - -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -template -inline typename indirect_iterator_generator::type -make_indirect_iterator(OuterIterator base) -{ - typedef typename indirect_iterator_generator - ::type result_t; - return result_t(base); -} -#endif - -//============================================================================= -// Reverse Iterators Adaptor - -struct reverse_iterator_policies : public default_iterator_policies -{ - template - typename IteratorAdaptor::reference dereference(const IteratorAdaptor& x) const - { return *boost::prior(x.base()); } - - template - void increment(BidirectionalIterator& x) const - { --x.base(); } - - template - void decrement(BidirectionalIterator& x) const - { ++x.base(); } - - template - void advance(BidirectionalIterator& x, DifferenceType n) const - { x.base() -= n; } - - template - typename Iterator1::difference_type distance( - const Iterator1& x, const Iterator2& y) const - { return x.base() - y.base(); } - - template - bool equal(const Iterator1& x, const Iterator2& y) const - { return x.base() == y.base(); } -}; - -template ::value_type, - class Reference = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_defaults::reference, - class Pointer = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_defaults::pointer, - class Category = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_traits::iterator_category, - class Distance = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_traits::difference_type - > -struct reverse_iterator_generator -{ - typedef iterator_adaptor type; -}; - -template -inline typename reverse_iterator_generator::type -make_reverse_iterator(BidirectionalIterator base) -{ - typedef typename reverse_iterator_generator::type result_t; - return result_t(base); -} - -//============================================================================= -// Projection Iterators Adaptor - -template -struct projection_iterator_policies : public default_iterator_policies -{ - projection_iterator_policies() { } - projection_iterator_policies(const AdaptableUnaryFunction& f) : m_f(f) { } - - template - typename IteratorAdaptor::reference dereference(IteratorAdaptor const& iter) const { - return m_f(*iter.base()); - } - - AdaptableUnaryFunction m_f; -}; - -template -class projection_iterator_generator { - typedef typename AdaptableUnaryFunction::result_type value_type; - typedef projection_iterator_policies policies; -public: - typedef iterator_adaptor type; -}; - -template -class const_projection_iterator_generator { - typedef typename AdaptableUnaryFunction::result_type value_type; - typedef projection_iterator_policies policies; -public: - typedef iterator_adaptor type; -}; - -template -struct projection_iterator_pair_generator { - typedef typename projection_iterator_generator::type iterator; - typedef typename const_projection_iterator_generator::type const_iterator; -}; - - -template -inline typename projection_iterator_generator::type -make_projection_iterator( - Iterator iter, - const AdaptableUnaryFunction& f = AdaptableUnaryFunction()) -{ - typedef typename projection_iterator_generator::type result_t; - return result_t(iter, f); -} - -template -inline typename const_projection_iterator_generator::type -make_const_projection_iterator( - Iterator iter, - const AdaptableUnaryFunction& f = AdaptableUnaryFunction()) -{ - typedef typename const_projection_iterator_generator::type result_t; - return result_t(iter, f); -} - -//============================================================================= -// Filter Iterator Adaptor - -template -class filter_iterator_policies -{ -public: - filter_iterator_policies() { } - - filter_iterator_policies(const Predicate& p, const Iterator& end) - : m_predicate(p), m_end(end) { } - - void initialize(Iterator& x) { - satisfy_predicate(x); - } - - // The Iter template argument is neccessary for compatibility with a MWCW - // bug workaround - template - void increment(IteratorAdaptor& x) { - ++x.base(); - satisfy_predicate(x.base()); - } - - template - typename IteratorAdaptor::reference dereference(const IteratorAdaptor& x) const - { return *x.base(); } - - template - bool equal(const IteratorAdaptor1& x, const IteratorAdaptor2& y) const - { return x.base() == y.base(); } - - private: - void satisfy_predicate(Iterator& iter); - Predicate m_predicate; - Iterator m_end; -}; - -template -void filter_iterator_policies::satisfy_predicate( - Iterator& iter) -{ - while (m_end != iter && !m_predicate(*iter)) - ++iter; -} - - - -namespace detail { - // A type generator returning Base if T is derived from Base, and T otherwise. - template - struct reduce_to_base_class - { - typedef typename if_true<( - ::boost::is_convertible::value - )>::template then::type type; - }; - - // "Steps down" the category of iterators below bidirectional so the category - // can be used with filter iterators. - template - struct non_bidirectional_category - { -# if !BOOST_WORKAROUND(__MWERKS__, <= 0x2407) - typedef typename reduce_to_base_class< - std::forward_iterator_tag, - typename iterator_traits::iterator_category - >::type type; - private: - // For some reason, putting this assertion in filter_iterator_generator fails inexplicably under MSVC - BOOST_STATIC_CONSTANT( - bool, is_bidirectional - = (!boost::is_convertible::value)); - BOOST_STATIC_ASSERT(is_bidirectional); -# else - // is_convertible doesn't work with MWERKS - typedef typename iterator_traits::iterator_category input_category; - public: - typedef typename if_true<( - boost::is_same::value - || boost::is_same::value - )>::template then< - std::forward_iterator_tag, - input_category - >::type type; -# endif - }; -} - -template ::value_type, - class Reference = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_defaults::reference, - class Pointer = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_defaults::pointer, - class Category = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::non_bidirectional_category::type, - class Distance = BOOST_ARG_DEPENDENT_TYPENAME boost::detail::iterator_traits::difference_type - > -class filter_iterator_generator { - BOOST_STATIC_CONSTANT(bool, is_bidirectional - = (boost::is_convertible::value)); -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) // I don't have any idea why this occurs, but it doesn't seem to hurt too badly. - BOOST_STATIC_ASSERT(!is_bidirectional); -#endif - typedef filter_iterator_policies policies_type; - public: - typedef iterator_adaptor type; -}; - -// This keeps MSVC happy; it doesn't like to deduce default template arguments -// for template function return types -namespace detail { - template - struct filter_generator { - typedef typename boost::filter_iterator_generator::type type; - }; -} - -template -inline typename detail::filter_generator::type -make_filter_iterator(Iterator first, Iterator last, const Predicate& p = Predicate()) -{ - typedef filter_iterator_generator Gen; - typedef filter_iterator_policies policies_t; - typedef typename Gen::type result_t; - return result_t(first, policies_t(p, last)); -} - -} // namespace boost -# undef BOOST_ARG_DEPENDENT_TYPENAME - - -#endif - - - diff --git a/sdk/include/boost/lambda/algorithm.hpp b/sdk/include/boost/lambda/algorithm.hpp deleted file mode 100644 index c11e5b238c2..00000000000 --- a/sdk/include/boost/lambda/algorithm.hpp +++ /dev/null @@ -1,1378 +0,0 @@ -// -- algorithm.hpp -- Boost Lambda Library ----------------------------------- -// Copyright (C) 2002 Jaakko Järvi (jaakko.jarvi@cs.utu.fi) -// Copyright (C) 2002 Gary Powell (gwpowell@hotmail.com) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. -// -// For more information, see http://www.boost.org - -#ifndef BOOST_LAMBDA_ALGORITHM_HPP -#define BOOST_LAMBDA_ALGORITHM_HPP - -#include "boost/lambda/core.hpp" - -#include -#include // for iterator_traits -#include // for std::pair - -namespace boost { - namespace lambda { - -namespace ll { - -// for_each --------------------------------- - -struct for_each { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c) const - { return ::std::for_each(a, b, c); } -}; - -// find --------------------------------- - -struct find { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, const C& c) const - { return ::std::find(a, b, c); } -}; - - -// find_if --------------------------------- - -struct find_if { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c) const - { return ::std::find_if(a, b, c); } -}; - -// find_end --------------------------------- - -struct find_end { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c, D d) const - { return ::std::find_end(a, b, c, d); } - - template - A - operator()(A a, B b, C c, D d, E e) const - { return ::std::find_end(a, b, c, d, e); } - -}; - -// find_first_of --------------------------------- - -struct find_first_of { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c, D d) const - { return ::std::find_first_of(a, b, c, d); } - - template - A - operator()(A a, B b, C c, D d, E e) const - { return ::std::find_first_of(a, b, c, d, e); } - -}; - -// adjacent_find --------------------------------- - -struct adjacent_find { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b) const - { return ::std::adjacent_find(a, b); } - - template - A - operator()(A a, B b, C c) const - { return ::std::adjacent_find(a, b, c); } - -}; - -// count --------------------------------- - -struct count { - - template - struct sig { - typedef typename ::std::iterator_traits< - typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type - >::difference_type type; - }; - - template - typename ::std::iterator_traits::difference_type - operator()(A a, B b) const - { return ::std::count(a, b); } -}; - -// count_if --------------------------------- - -struct count_if { - - template - struct sig { - typedef typename ::std::iterator_traits< - typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type - >::difference_type type; - }; - - template - typename ::std::iterator_traits::difference_type - operator()(A a, B b, C c) const - { return ::std::count_if(a, b, c); } -}; - - -// mismatch --------------------------------- - -struct mismatch { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type element_type; - - typedef ::std::pair< element_type, element_type > type; - }; - - template - ::std::pair - operator()(A a, B b) const - { return ::std::mismatch(a, b); } - - template - ::std::pair - operator()(A a, B b, C c) const - { return ::std::mismatch(a, b, c); } - -}; - -// equal --------------------------------- - -struct equal { - - template - struct sig { - typedef bool type; - }; - - template - bool - operator()(A a, B b, C c) const - { return ::std::equal(a, b, c); } - - template - bool - operator()(A a, B b, C c, D d) const - { return ::std::equal(a, b, c, d); } - -}; - -// search -------------------------------- - -struct search { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c, D d) const - { return std::search(a, b, c, d);} - - template - A - operator()(A a, B b, C c, D d, E e) - { return std::search(a, b, c, d, e);} - -}; - -// copy --------------------------------- - -struct copy { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c) const - { return ::std::copy(a, b, c); } - -}; - -// copy_backward --------------------------------- - -struct copy_backward { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c) const - { return ::std::copy_backward(a, b, c); } - -}; - -// swap --------------------------------- - -struct swap { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::swap(a, b); } - -}; - -// swap_ranges --------------------------------- - -struct swap_ranges { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c) const - { return ::std::swap_ranges(a, b, c); } - -}; - -// iter_swap --------------------------------- - -struct iter_swap { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::iter_swap(a, b); } - -}; - - -// transform -------------------------------- - -struct transform { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element< - boost::tuples::length::value - 2, - Args - >::type - >::type type; - }; - - template - C - operator()(A a, B b, C c, D d) const - { return std::transform(a, b, c, d);} - - template - D - operator()(A a, B b, C c, D d, E e) - { return std::transform(a, b, c, d, e);} - -}; - -// replace --------------------------------- - -struct replace { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c, D d) const - { ::std::replace(a, b, c, d); } - -}; - -// replace_if --------------------------------- - -struct replace_if { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c, D d) const - { ::std::replace_if(a, b, c, d); } - -}; - -// replace_copy --------------------------------- - -struct replace_copy { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c, D d, E e) const - { return ::std::replace_copy(a, b, c, d, e); } - -}; - -// replace_copy_if --------------------------------- - -struct replace_copy_if { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c, D d, E e) const - { return ::std::replace_copy_if(a, b, c, d, e); } - -}; - -// fill --------------------------------- - -struct fill { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c) const - { ::std::fill(a, b, c); } - -}; - -// fill_n --------------------------------- - -struct fill_n { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c) const - { ::std::fill_n(a, b, c); } - -}; - -// generate --------------------------------- - -struct generate { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c) const - { ::std::generate(a, b, c); } - -}; - -// generate_n --------------------------------- - -struct generate_n { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c) const - { ::std::generate_n(a, b, c); } - -}; - -// remove --------------------------------- - -struct remove { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c) const - { return ::std::remove(a, b, c); } -}; - -// remove_if --------------------------------- - -struct remove_if { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c) const - { return ::std::remove_if(a, b, c); } -}; - -// remove_copy --------------------------------- - -struct remove_copy { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c, D d) const - { return ::std::remove_copy(a, b, c, d); } -}; - -// remove_copy_if --------------------------------- - -struct remove_copy_if { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c, D d) const - { return ::std::remove_copy_if(a, b, c, d); } -}; - -// unique --------------------------------- - -struct unique { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b) const - { return ::std::unique(a, b); } - - template - A - operator()(A a, B b, C c) const - { return ::std::unique(a, b, c); } - -}; - -// unique_copy --------------------------------- - -struct unique_copy { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c) const - { return ::std::unique_copy(a, b, c); } - - template - C - operator()(A a, B b, C c, D d) const - { return ::std::unique_copy(a, b, c, d); } - -}; - -// reverse --------------------------------- - -struct reverse { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::reverse(a, b); } - -}; - -// reverse_copy --------------------------------- - -struct reverse_copy { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c) const - { return ::std::reverse_copy(a, b, c); } - -}; - -// rotate --------------------------------- - -struct rotate { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c) const - { ::std::rotate(a, b, c); } - -}; - -// rotate_copy --------------------------------- - -struct rotate_copy { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c, D d) const - { return ::std::rotate_copy(a, b, c, d); } - -}; - -// random_shuffle --------------------------------- - -struct random_shuffle { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::random_shuffle(a, b); } - - template - void - operator()(A a, B b, C c) const - { ::std::random_shuffle(a, b, c); } - -}; - - -// partition --------------------------------- - -struct partition { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c) const - { return ::std::partition(a, b, c); } - -}; - -// stable_partition --------------------------------- - -struct stable_partition { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c) const - { return ::std::stable_partition(a, b, c); } - -}; - -// sort --------------------------------- - -struct sort { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::sort(a, b); } - - template - void - operator()(A a, B b, C c) const - { ::std::sort(a, b, c); } - -}; - -// stable_sort --------------------------------- - -struct stable_sort { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::stable_sort(a, b); } - - template - void - operator()(A a, B b, C c) const - { ::std::stable_sort(a, b, c); } - -}; - -// partial_sort --------------------------------- - -struct partial_sort { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c) const - { ::std::partial_sort(a, b, c); } - - template - void - operator()(A a, B b, C c, D d) const - { ::std::partial_sort(a, b, c, d); } - -}; - -// partial_sort_copy --------------------------------- - -struct partial_sort_copy { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<3, Args>::type - >::type type; - }; - - template - C - operator()(A a, B b, C c, D d) const - { return ::std::partial_sort_copy(a, b, c, d); } - - template - C - operator()(A a, B b, C c, D d, E e) const - { return ::std::partial_sort_copy(a, b, c, d, e); } -}; - -// nth_element --------------------------------- - -struct nth_element { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c) const - { ::std::nth_element(a, b, c); } - - template - void - operator()(A a, B b, C c, D d) const - { ::std::nth_element(a, b, c, d); } - -}; - -// lower_bound --------------------------------- - -struct lower_bound { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c) const - { return ::std::lower_bound(a, b, c); } - - template - A - operator()(A a, B b, C c, D d) const - { return ::std::lower_bound(a, b, c, d); } - -}; - -// upper_bound --------------------------------- - -struct upper_bound { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b, C c) const - { return ::std::upper_bound(a, b, c); } - - template - A - operator()(A a, B b, C c, D d) const - { return ::std::upper_bound(a, b, c, d); } - -}; - -// equal_range --------------------------------- - -struct equal_range { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type element_type; - - typedef ::std::pair< element_type, element_type > type; - }; - - template - ::std::pair - operator()(A a, B b, C c) const - { return ::std::equal_range(a, b, c); } - - template - ::std::pair - operator()(A a, B b, C c, D d) const - { return ::std::equal_range(a, b, c, d); } - -}; - -// binary_search --------------------------------- - -struct binary_search { - - template - struct sig { - typedef bool type; - }; - - template - bool - operator()(A a, B b, C c) const - { return ::std::binary_search(a, b, c); } - - template - bool - operator()(A a, B b, C c, D d) const - { return ::std::binary_search(a, b, c, d); } - -}; - -// merge -------------------------------- - -struct merge { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<5, Args>::type - >::type type; - }; - - template - E - operator()(A a, B b, C c, D d, E e) const - { return std::merge(a, b, c, d, e);} - - template - E - operator()(A a, B b, C c, D d, E e, F f) - { return std::merge(a, b, c, d, e, f);} - -}; - -// inplace_merge --------------------------------- - -struct inplace_merge { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b, C c) const - { ::std::inplace_merge(a, b, c); } - - template - void - operator()(A a, B b, C c, D d) const - { ::std::inplace_merge(a, b, c, d); } - -}; - -// includes --------------------------------- - -struct includes { - - template - struct sig { - typedef bool type; - }; - - template - bool - operator()(A a, B b, C c, D d) const - { return ::std::includes(a, b, c, d); } - - template - bool - operator()(A a, B b, C c, D d, E e) const - { return ::std::includes(a, b, c, d, e); } - -}; - -// set_union -------------------------------- - -struct set_union { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<5, Args>::type - >::type type; - }; - - template - E - operator()(A a, B b, C c, D d, E e) const - { return std::set_union(a, b, c, d, e);} - - template - E - operator()(A a, B b, C c, D d, E e, F f) - { return std::set_union(a, b, c, d, e, f);} - -}; - -// set_intersection -------------------------------- - -struct set_intersection { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<5, Args>::type - >::type type; - }; - - template - E - operator()(A a, B b, C c, D d, E e) const - { return std::set_intersection(a, b, c, d, e);} - - template - E - operator()(A a, B b, C c, D d, E e, F f) - { return std::set_intersection(a, b, c, d, e, f);} - -}; - -// set_difference -------------------------------- - -struct set_difference { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<5, Args>::type - >::type type; - }; - - template - E - operator()(A a, B b, C c, D d, E e) const - { return std::set_difference(a, b, c, d, e);} - - template - E - operator()(A a, B b, C c, D d, E e, F f) - { return std::set_difference(a, b, c, d, e, f);} - -}; - - -// set_symmetric_difference -------------------------------- - -struct set_symmetric_difference { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<5, Args>::type - >::type type; - }; - - template - E - operator()(A a, B b, C c, D d, E e) const - { return std::set_symmetric_difference(a, b, c, d, e);} - - template - E - operator()(A a, B b, C c, D d, E e, F f) - { return std::set_symmetric_difference(a, b, c, d, e, f);} - -}; - -// push_heap --------------------------------- - -struct push_heap { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::push_heap(a, b); } - - template - void - operator()(A a, B b, C c) const - { ::std::push_heap(a, b, c); } - -}; - -// pop_heap --------------------------------- - -struct pop_heap { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::pop_heap(a, b); } - - template - void - operator()(A a, B b, C c) const - { ::std::pop_heap(a, b, c); } - -}; - - -// make_heap --------------------------------- - -struct make_heap { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::make_heap(a, b); } - - template - void - operator()(A a, B b, C c) const - { ::std::make_heap(a, b, c); } - -}; - -// sort_heap --------------------------------- - -struct sort_heap { - - template - struct sig { - typedef void type; - }; - - template - void - operator()(A a, B b) const - { ::std::sort_heap(a, b); } - - template - void - operator()(A a, B b, C c) const - { ::std::sort_heap(a, b, c); } - -}; - -// min --------------------------------- - -struct min { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b) const - { return ::std::min(a, b); } - - template - A - operator()(A a, B b, C c) const - { return ::std::min(a, b, c); } - -}; - -// max --------------------------------- - -struct max { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b) const - { return ::std::max(a, b); } - - template - A - operator()(A a, B b, C c) const - { return ::std::max(a, b, c); } - -}; - -struct min_element { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b) const - { return ::std::min_element(a, b); } - - template - A - operator()(A a, B b, C c) const - { return ::std::min_element(a, b, c); } - -}; - -// max_element --------------------------------- - -struct max_element { - - template - struct sig { - typedef typename boost::remove_const< - typename boost::tuples::element<1, Args>::type - >::type type; - }; - - template - A - operator()(A a, B b) const - { return ::std::max_element(a, b); } - - template - A - operator()(A a, B b, C c) const - { return ::std::max_element(a, b, c); } - -}; - - -// lexicographical_compare --------------------------------- - -struct lexicographical_compare { - - template - struct sig { - typedef bool type; - }; - - template - bool - operator()(A a, B b, C c, D d) const - { return ::std::lexicographical_compare(a, b, c, d); } - - template - bool - operator()(A a, B b, C c, D d, E e) const - { return ::std::lexicographical_compare(a, b, c, d, e); } - -}; - -// next_permutation --------------------------------- - -struct next_permutation { - - template - struct sig { - typedef bool type; - }; - - template - bool - operator()(A a, B b) const - { return ::std::next_permutation(a, b); } - - template - bool - operator()(A a, B b, C c) const - { return ::std::next_permutation(a, b, c); } - -}; - -// prev_permutation --------------------------------- - -struct prev_permutation { - - template - struct sig { - typedef bool type; - }; - - template - bool - operator()(A a, B b) const - { return ::std::prev_permutation(a, b); } - - template - bool - operator()(A a, B b, C c) const - { return ::std::prev_permutation(a, b, c); } - -}; - - - - - -} // end of ll namespace - -// There is no good way to call an overloaded member function in a -// lambda expression. -// The macro below defines a function object class for calling a -// const_iterator returning member function of a container. - -#define CALL_MEMBER(X) \ -struct call_##X { \ -template \ - struct sig { \ - typedef typename boost::remove_const< \ - typename boost::tuples::element<1, Args>::type \ - >::type::const_iterator type; \ - }; \ - \ - template \ - typename T::const_iterator \ - operator()(const T& t) const \ - { \ - return t.X(); \ - } \ -}; - -// create call_begin and call_end classes -CALL_MEMBER(begin) -CALL_MEMBER(end) - -#undef CALL_MEMBER - -} // end of lambda namespace -} // end of boost namespace - - - -#endif diff --git a/sdk/include/boost/lambda/bind.hpp b/sdk/include/boost/lambda/bind.hpp deleted file mode 100644 index 623c33e7347..00000000000 --- a/sdk/include/boost/lambda/bind.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// -- bind.hpp -- Boost Lambda Library -------------------------------------- - -// Copyright (C) 1999-2001 Jaakko Järvi (jaakko.jarvi@cs.utu.fi) -// Gary Powell (gwpowell@hotmail.com) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. -// -// For more information, see http://www.boost.org - -#ifndef BOOST_LAMBDA_BIND_HPP -#define BOOST_LAMBDA_BIND_HPP - -#include "boost/lambda/core.hpp" - -#include "boost/lambda/detail/bind_functions.hpp" - -#endif diff --git a/sdk/include/boost/lambda/casts.hpp b/sdk/include/boost/lambda/casts.hpp deleted file mode 100644 index e83ec501c73..00000000000 --- a/sdk/include/boost/lambda/casts.hpp +++ /dev/null @@ -1,224 +0,0 @@ -// - casts.hpp -- BLambda Library ------------- -// -// Copyright (C) 2000 Gary Powell (powellg@amazon.com) -// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi@cs.utu.fi) -// -// Permission to copy, use, sell and distribute this software is granted -// provided this copyright notice appears in all copies. -// Permission to modify the code and to distribute modified code is granted -// provided this copyright notice appears in all copies, and a notice -// that the code was modified is included with the copyright notice. -// -// This software is provided "as is" without express or implied warranty, -// and with no claim as to its suitability for any purpose. -// -// For more information, see http://www.boost.org - -// ----------------------------------------------- - -#if !defined(BOOST_LAMBDA_CASTS_HPP) -#define BOOST_LAMBDA_CASTS_HPP - -#include - -namespace boost { -namespace lambda { - -template class cast_action; - -template class static_cast_action; -template class dynamic_cast_action; -template class const_cast_action; -template class reinterpret_cast_action; - -class typeid_action; -class sizeof_action; - -// Cast actions - -template class cast_action > -{ -public: - template - static RET apply(Arg1 &a1) { - return static_cast(a1); - } -}; - -template class cast_action > { -public: - template - static RET apply(Arg1 &a1) { - return dynamic_cast(a1); - } -}; - -template class cast_action > { -public: - template - static RET apply(Arg1 &a1) { - return const_cast(a1); - } -}; - -template class cast_action > { -public: - template - static RET apply(Arg1 &a1) { - return reinterpret_cast(a1); - } -}; - - // typedid action -class typeid_action { -public: - template - static RET apply(Arg1 &a1) { - return typeid(a1); - } -}; - -// sizeof action -class sizeof_action -{ -public: - template - static RET apply(Arg1 &a1) { - return sizeof(a1); - } -}; - - -// return types of casting lambda_functors (all "T" type.) - -template