|
Boost-Commit : |
From: dgregor_at_[hidden]
Date: 2008-04-02 22:04:27
Author: dgregor
Date: 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
New Revision: 44008
URL: http://svn.boost.org/trac/boost/changeset/44008
Log:
Merged to Boost 1.35.0
Added:
branches/CMake/release/INSTALL
- copied unchanged from r44005, /branches/release/INSTALL
branches/CMake/release/doc/html/mpi.html
- copied unchanged from r44005, /branches/release/doc/html/mpi.html
branches/CMake/release/libs/thread/doc/acknowledgements.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/acknowledgements.qbk
branches/CMake/release/libs/thread/doc/barrier.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/barrier.qbk
branches/CMake/release/libs/thread/doc/changes.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/changes.qbk
branches/CMake/release/libs/thread/doc/condition_variables.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/condition_variables.qbk
branches/CMake/release/libs/thread/doc/mutex_concepts.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/mutex_concepts.qbk
branches/CMake/release/libs/thread/doc/mutexes.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/mutexes.qbk
branches/CMake/release/libs/thread/doc/once.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/once.qbk
branches/CMake/release/libs/thread/doc/overview.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/overview.qbk
branches/CMake/release/libs/thread/doc/shared_mutex_ref.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/shared_mutex_ref.qbk
branches/CMake/release/libs/thread/doc/thread.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/thread.qbk
branches/CMake/release/libs/thread/doc/thread_ref.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/thread_ref.qbk
branches/CMake/release/libs/thread/doc/tss.qbk
- copied unchanged from r44005, /branches/release/libs/thread/doc/tss.qbk
branches/CMake/release/tools/release/index.html
- copied unchanged from r44005, /branches/release/tools/release/index.html
branches/CMake/release/tools/release/inspect.sh
- copied unchanged from r44005, /branches/release/tools/release/inspect.sh
branches/CMake/release/tools/release/make_packages.sh
- copied unchanged from r44005, /branches/release/tools/release/make_packages.sh
branches/CMake/release/tools/release/snapshot_posix.sh
- copied unchanged from r44005, /branches/release/tools/release/snapshot_posix.sh
branches/CMake/release/tools/release/snapshot_windows.sh
- copied unchanged from r44005, /branches/release/tools/release/snapshot_windows.sh
Removed:
branches/CMake/release/libs/filesystem/example/vc++.bat
branches/CMake/release/libs/python/build/VisualStudio/
branches/CMake/release/libs/thread/doc/acknowledgements.xml
branches/CMake/release/libs/thread/doc/barrier-ref.xml
branches/CMake/release/libs/thread/doc/bibliography.xml
branches/CMake/release/libs/thread/doc/build.xml
branches/CMake/release/libs/thread/doc/concepts.xml
branches/CMake/release/libs/thread/doc/condition-ref.xml
branches/CMake/release/libs/thread/doc/configuration.xml
branches/CMake/release/libs/thread/doc/design.xml
branches/CMake/release/libs/thread/doc/entities.xml
branches/CMake/release/libs/thread/doc/exceptions-ref.xml
branches/CMake/release/libs/thread/doc/faq.xml
branches/CMake/release/libs/thread/doc/glossary.xml
branches/CMake/release/libs/thread/doc/implementation_notes.xml
branches/CMake/release/libs/thread/doc/mutex-ref.xml
branches/CMake/release/libs/thread/doc/once-ref.xml
branches/CMake/release/libs/thread/doc/overview.xml
branches/CMake/release/libs/thread/doc/rationale.xml
branches/CMake/release/libs/thread/doc/read_write_mutex-ref.xml
branches/CMake/release/libs/thread/doc/recursive_mutex-ref.xml
branches/CMake/release/libs/thread/doc/reference.xml
branches/CMake/release/libs/thread/doc/release_notes.xml
branches/CMake/release/libs/thread/doc/thread-ref.xml
branches/CMake/release/libs/thread/doc/thread.xml
branches/CMake/release/libs/thread/doc/tss-ref.xml
branches/CMake/release/libs/thread/doc/xtime-ref.xml
branches/CMake/release/tools/release/make_tarballs.py
branches/CMake/release/tools/release/utils.py
Properties modified:
branches/CMake/release/ (props changed)
branches/CMake/release/boost/archive/detail/dynamically_initialized.hpp (props changed)
branches/CMake/release/boost/archive/detail/register_archive.hpp (props changed)
branches/CMake/release/boost/assign.hpp (props changed)
branches/CMake/release/boost/assign/assignment_exception.hpp (props changed)
branches/CMake/release/boost/assign/list_inserter.hpp (props changed)
branches/CMake/release/boost/assign/list_of.hpp (props changed)
branches/CMake/release/boost/assign/ptr_list_inserter.hpp (props changed)
branches/CMake/release/boost/assign/ptr_list_of.hpp (props changed)
branches/CMake/release/boost/assign/ptr_map_inserter.hpp (props changed)
branches/CMake/release/boost/assign/std.hpp (props changed)
branches/CMake/release/boost/assign/std/deque.hpp (props changed)
branches/CMake/release/boost/assign/std/list.hpp (props changed)
branches/CMake/release/boost/assign/std/map.hpp (props changed)
branches/CMake/release/boost/assign/std/queue.hpp (props changed)
branches/CMake/release/boost/assign/std/set.hpp (props changed)
branches/CMake/release/boost/assign/std/slist.hpp (props changed)
branches/CMake/release/boost/assign/std/stack.hpp (props changed)
branches/CMake/release/boost/assign/std/vector.hpp (props changed)
branches/CMake/release/boost/bimap/bimap.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/associative_container_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/container_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/detail/comparison_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/detail/functor_bag.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/detail/identity_converters.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/detail/key_extractor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/list_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/list_map_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/map_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/multimap_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/multiset_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/sequence_container_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/set_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/support/iterator_facade_converters.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/unordered_map_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/unordered_multimap_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/unordered_set_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/vector_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/container_adaptor/vector_map_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/detail/bimap_core.hpp (props changed)
branches/CMake/release/boost/bimap/detail/concept_tags.hpp (props changed)
branches/CMake/release/boost/bimap/detail/debug/static_error.hpp (props changed)
branches/CMake/release/boost/bimap/detail/generate_index_binder.hpp (props changed)
branches/CMake/release/boost/bimap/detail/generate_relation_binder.hpp (props changed)
branches/CMake/release/boost/bimap/detail/generate_view_binder.hpp (props changed)
branches/CMake/release/boost/bimap/detail/is_set_type_of.hpp (props changed)
branches/CMake/release/boost/bimap/detail/manage_additional_parameters.hpp (props changed)
branches/CMake/release/boost/bimap/detail/manage_bimap_key.hpp (props changed)
branches/CMake/release/boost/bimap/detail/map_view_base.hpp (props changed)
branches/CMake/release/boost/bimap/detail/map_view_iterator.hpp (props changed)
branches/CMake/release/boost/bimap/detail/modifier_adaptor.hpp (props changed)
branches/CMake/release/boost/bimap/detail/non_unique_views_helper.hpp (props changed)
branches/CMake/release/boost/bimap/detail/set_view_base.hpp (props changed)
branches/CMake/release/boost/bimap/detail/set_view_iterator.hpp (props changed)
branches/CMake/release/boost/bimap/detail/test/check_metadata.hpp (props changed)
branches/CMake/release/boost/bimap/detail/user_interface_config.hpp (props changed)
branches/CMake/release/boost/bimap/list_of.hpp (props changed)
branches/CMake/release/boost/bimap/multiset_of.hpp (props changed)
branches/CMake/release/boost/bimap/property_map/set_support.hpp (props changed)
branches/CMake/release/boost/bimap/property_map/unordered_set_support.hpp (props changed)
branches/CMake/release/boost/bimap/relation/detail/access_builder.hpp (props changed)
branches/CMake/release/boost/bimap/relation/detail/metadata_access_builder.hpp (props changed)
branches/CMake/release/boost/bimap/relation/detail/mutant.hpp (props changed)
branches/CMake/release/boost/bimap/relation/detail/static_access_builder.hpp (props changed)
branches/CMake/release/boost/bimap/relation/detail/to_mutable_relation_functor.hpp (props changed)
branches/CMake/release/boost/bimap/relation/member_at.hpp (props changed)
branches/CMake/release/boost/bimap/relation/mutant_relation.hpp (props changed)
branches/CMake/release/boost/bimap/relation/pair_layout.hpp (props changed)
branches/CMake/release/boost/bimap/relation/structured_pair.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/data_extractor.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/get.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/get_pair_functor.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/is_tag_of_member_at.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/member_with_tag.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/opposite_tag.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/pair_by.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/pair_type_by.hpp (props changed)
branches/CMake/release/boost/bimap/relation/support/value_type_of.hpp (props changed)
branches/CMake/release/boost/bimap/relation/symmetrical_base.hpp (props changed)
branches/CMake/release/boost/bimap/set_of.hpp (props changed)
branches/CMake/release/boost/bimap/support/data_type_by.hpp (props changed)
branches/CMake/release/boost/bimap/support/iterator_type_by.hpp (props changed)
branches/CMake/release/boost/bimap/support/key_type_by.hpp (props changed)
branches/CMake/release/boost/bimap/support/lambda.hpp (props changed)
branches/CMake/release/boost/bimap/support/map_by.hpp (props changed)
branches/CMake/release/boost/bimap/support/map_type_by.hpp (props changed)
branches/CMake/release/boost/bimap/support/value_type_by.hpp (props changed)
branches/CMake/release/boost/bimap/tags/support/apply_to_value_type.hpp (props changed)
branches/CMake/release/boost/bimap/tags/support/default_tagged.hpp (props changed)
branches/CMake/release/boost/bimap/tags/support/is_tagged.hpp (props changed)
branches/CMake/release/boost/bimap/tags/support/overwrite_tagged.hpp (props changed)
branches/CMake/release/boost/bimap/tags/support/tag_of.hpp (props changed)
branches/CMake/release/boost/bimap/tags/support/value_type_of.hpp (props changed)
branches/CMake/release/boost/bimap/tags/tagged.hpp (props changed)
branches/CMake/release/boost/bimap/unconstrained_set_of.hpp (props changed)
branches/CMake/release/boost/bimap/unordered_multiset_of.hpp (props changed)
branches/CMake/release/boost/bimap/unordered_set_of.hpp (props changed)
branches/CMake/release/boost/bimap/vector_of.hpp (props changed)
branches/CMake/release/boost/bimap/views/list_map_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/list_set_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/map_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/multimap_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/multiset_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/set_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/unconstrained_map_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/unconstrained_set_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/unordered_map_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/unordered_multimap_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/unordered_multiset_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/unordered_set_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/vector_map_view.hpp (props changed)
branches/CMake/release/boost/bimap/views/vector_set_view.hpp (props changed)
branches/CMake/release/boost/concept/assert.hpp (props changed)
branches/CMake/release/boost/concept/detail/borland.hpp (props changed)
branches/CMake/release/boost/concept/detail/concept_def.hpp (props changed)
branches/CMake/release/boost/concept/detail/concept_undef.hpp (props changed)
branches/CMake/release/boost/concept/detail/general.hpp (props changed)
branches/CMake/release/boost/concept/detail/has_constraints.hpp (props changed)
branches/CMake/release/boost/concept/detail/msvc.hpp (props changed)
branches/CMake/release/boost/concept/requires.hpp (contents, props changed)
branches/CMake/release/boost/concept/usage.hpp (props changed)
branches/CMake/release/boost/concept_check/borland.hpp (props changed)
branches/CMake/release/boost/concept_check/general.hpp (props changed)
branches/CMake/release/boost/concept_check/has_constraints.hpp (props changed)
branches/CMake/release/boost/concept_check/msvc.hpp (props changed)
branches/CMake/release/boost/detail/indirect_traits.hpp (props changed)
branches/CMake/release/boost/detail/is_function_ref_tester.hpp (props changed)
branches/CMake/release/boost/detail/is_incrementable.hpp (props changed)
branches/CMake/release/boost/detail/is_xxx.hpp (props changed)
branches/CMake/release/boost/foreach.hpp (props changed)
branches/CMake/release/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp (props changed)
branches/CMake/release/boost/fusion/algorithm/query/ext_/find_if_s.hpp (props changed)
branches/CMake/release/boost/fusion/container/ext_/tree.hpp (props changed)
branches/CMake/release/boost/fusion/sequence/intrinsic/ext_/segments.hpp (props changed)
branches/CMake/release/boost/fusion/sequence/intrinsic/ext_/size_s.hpp (props changed)
branches/CMake/release/boost/fusion/support/ext_/is_segmented.hpp (props changed)
branches/CMake/release/boost/fusion/view/ext_/multiple_view.hpp (props changed)
branches/CMake/release/boost/fusion/view/ext_/segmented_iterator.hpp (props changed)
branches/CMake/release/boost/fusion/view/ext_/segmented_iterator_range.hpp (props changed)
branches/CMake/release/boost/graph/max_cardinality_matching.hpp (props changed)
branches/CMake/release/boost/graph/profile.hpp (props changed)
branches/CMake/release/boost/graph/sloan_ordering.hpp (props changed)
branches/CMake/release/boost/graph/wavefront.hpp (props changed)
branches/CMake/release/boost/implicit_cast.hpp (props changed)
branches/CMake/release/boost/indirect_reference.hpp (props changed)
branches/CMake/release/boost/iostreams/categories.hpp (props changed)
branches/CMake/release/boost/iostreams/chain.hpp (props changed)
branches/CMake/release/boost/iostreams/char_traits.hpp (props changed)
branches/CMake/release/boost/iostreams/checked_operations.hpp (props changed)
branches/CMake/release/boost/iostreams/close.hpp (props changed)
branches/CMake/release/boost/iostreams/code_converter.hpp (props changed)
branches/CMake/release/boost/iostreams/combine.hpp (props changed)
branches/CMake/release/boost/iostreams/compose.hpp (props changed)
branches/CMake/release/boost/iostreams/concepts.hpp (props changed)
branches/CMake/release/boost/iostreams/constants.hpp (props changed)
branches/CMake/release/boost/iostreams/copy.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/absolute_path.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/access_control.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/adapter/concept_adapter.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/adapter/device_adapter.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/adapter/direct_adapter.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/adapter/filter_adapter.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/adapter/mode_adapter.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/adapter/non_blocking_adapter.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/adapter/output_iterator_adapter.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/adapter/range_adapter.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/add_facet.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/bool_trait_def.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/broken_overload_resolution/forward.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/broken_overload_resolution/stream.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/buffer.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/call_traits.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/char_traits.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/codecvt_helper.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/codecvt_holder.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/auto_link.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/bzip2.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/codecvt.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/disable_warnings.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/dyn_link.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/enable_warnings.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/gcc.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/limits.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/overload_resolution.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/rtl.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/wide_streams.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/windows_posix.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/config/zlib.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/counted_array.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/current_directory.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/default_arg.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/dispatch.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/double_object.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/enable_if_stream.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/error.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/execute.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/forward.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/fstream.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/functional.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/ios.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/iostream.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/is_dereferenceable.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/is_iterator_range.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/newline.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/optional.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/param_type.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/push.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/push_params.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/resolve.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/select.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/select_by_size.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/streambuf.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/streambuf/chainbuf.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/streambuf/direct_streambuf.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/streambuf/indirect_streambuf.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/streambuf/linked_streambuf.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/system_failure.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/template_params.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/translate_int_type.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/vc6/close.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/vc6/read.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/vc6/write.hpp (props changed)
branches/CMake/release/boost/iostreams/detail/wrap_unwrap.hpp (props changed)
branches/CMake/release/boost/iostreams/device/array.hpp (props changed)
branches/CMake/release/boost/iostreams/device/back_inserter.hpp (props changed)
branches/CMake/release/boost/iostreams/device/file.hpp (props changed)
branches/CMake/release/boost/iostreams/device/file_descriptor.hpp (props changed)
branches/CMake/release/boost/iostreams/device/mapped_file.hpp (props changed)
branches/CMake/release/boost/iostreams/device/null.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/aggregate.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/bzip2.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/counter.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/gzip.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/line.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/newline.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/regex.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/stdio.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/symmetric.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/test.hpp (props changed)
branches/CMake/release/boost/iostreams/filter/zlib.hpp (props changed)
branches/CMake/release/boost/iostreams/filtering_stream.hpp (props changed)
branches/CMake/release/boost/iostreams/filtering_streambuf.hpp (props changed)
branches/CMake/release/boost/iostreams/flush.hpp (props changed)
branches/CMake/release/boost/iostreams/get.hpp (props changed)
branches/CMake/release/boost/iostreams/imbue.hpp (props changed)
branches/CMake/release/boost/iostreams/input_sequence.hpp (props changed)
branches/CMake/release/boost/iostreams/invert.hpp (props changed)
branches/CMake/release/boost/iostreams/operations.hpp (props changed)
branches/CMake/release/boost/iostreams/operations_fwd.hpp (props changed)
branches/CMake/release/boost/iostreams/optimal_buffer_size.hpp (props changed)
branches/CMake/release/boost/iostreams/output_sequence.hpp (props changed)
branches/CMake/release/boost/iostreams/pipeline.hpp (props changed)
branches/CMake/release/boost/iostreams/positioning.hpp (props changed)
branches/CMake/release/boost/iostreams/put.hpp (props changed)
branches/CMake/release/boost/iostreams/putback.hpp (props changed)
branches/CMake/release/boost/iostreams/read.hpp (props changed)
branches/CMake/release/boost/iostreams/restrict.hpp (props changed)
branches/CMake/release/boost/iostreams/seek.hpp (props changed)
branches/CMake/release/boost/iostreams/skip.hpp (props changed)
branches/CMake/release/boost/iostreams/stream.hpp (props changed)
branches/CMake/release/boost/iostreams/stream_buffer.hpp (props changed)
branches/CMake/release/boost/iostreams/tee.hpp (props changed)
branches/CMake/release/boost/iostreams/traits.hpp (props changed)
branches/CMake/release/boost/iostreams/traits_fwd.hpp (props changed)
branches/CMake/release/boost/iostreams/write.hpp (props changed)
branches/CMake/release/boost/iterator/detail/any_conversion_eater.hpp (props changed)
branches/CMake/release/boost/iterator/detail/facade_iterator_category.hpp (props changed)
branches/CMake/release/boost/iterator/detail/minimum_category.hpp (props changed)
branches/CMake/release/boost/iterator/is_lvalue_iterator.hpp (props changed)
branches/CMake/release/boost/iterator/is_readable_iterator.hpp (props changed)
branches/CMake/release/boost/iterator/zip_iterator.hpp (props changed)
branches/CMake/release/boost/mpl/eval_if.hpp (props changed)
branches/CMake/release/boost/mpl/map/aux_/value_type_impl.hpp (props changed)
branches/CMake/release/boost/mpl/min_element.hpp (props changed)
branches/CMake/release/boost/mpl/print.hpp (props changed)
branches/CMake/release/boost/mpl/set/aux_/value_type_impl.hpp (props changed)
branches/CMake/release/boost/mpl/value_type.hpp (props changed)
branches/CMake/release/boost/mpl/value_type_fwd.hpp (props changed)
branches/CMake/release/boost/numeric/conversion/detail/old_numeric_cast.hpp (props changed)
branches/CMake/release/boost/parameter.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/arg_list.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/cast.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/default.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/maybe.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/overloads.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/parameter_requirements.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/parenthesized_type.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/preprocessor/flatten.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/preprocessor/for_each.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/python/invoker.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/python/invoker_iterate.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/result_of0.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/set.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/tag.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/tagged_argument.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/template_keyword.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/unwrap_cv_reference.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/void.hpp (props changed)
branches/CMake/release/boost/parameter/aux_/yesno.hpp (props changed)
branches/CMake/release/boost/parameter/binding.hpp (props changed)
branches/CMake/release/boost/parameter/config.hpp (props changed)
branches/CMake/release/boost/parameter/keyword.hpp (props changed)
branches/CMake/release/boost/parameter/macros.hpp (props changed)
branches/CMake/release/boost/parameter/match.hpp (props changed)
branches/CMake/release/boost/parameter/name.hpp (props changed)
branches/CMake/release/boost/parameter/parameters.hpp (props changed)
branches/CMake/release/boost/parameter/preprocessor.hpp (props changed)
branches/CMake/release/boost/parameter/python.hpp (props changed)
branches/CMake/release/boost/parameter/value_type.hpp (props changed)
branches/CMake/release/boost/pointee.hpp (props changed)
branches/CMake/release/boost/ptr_container/clone_allocator.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/associative_ptr_container.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/default_deleter.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/is_convertible.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/map_iterator.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/move.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/reversible_ptr_container.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/scoped_deleter.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/static_move_ptr.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/throw_exception.hpp (props changed)
branches/CMake/release/boost/ptr_container/detail/void_ptr_iterator.hpp (props changed)
branches/CMake/release/boost/ptr_container/exception.hpp (props changed)
branches/CMake/release/boost/ptr_container/indirect_fun.hpp (props changed)
branches/CMake/release/boost/ptr_container/nullable.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_array.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_container.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_deque.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_list.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_map.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_map_adapter.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_sequence_adapter.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_set.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_set_adapter.hpp (props changed)
branches/CMake/release/boost/ptr_container/ptr_vector.hpp (props changed)
branches/CMake/release/boost/python/arg_from_python.hpp (props changed)
branches/CMake/release/boost/python/base_type_traits.hpp (props changed)
branches/CMake/release/boost/python/borrowed.hpp (props changed)
branches/CMake/release/boost/python/cast.hpp (props changed)
branches/CMake/release/boost/python/converter/arg_from_python.hpp (props changed)
branches/CMake/release/boost/python/converter/arg_to_python.hpp (props changed)
branches/CMake/release/boost/python/converter/arg_to_python_base.hpp (props changed)
branches/CMake/release/boost/python/converter/context_result_converter.hpp (props changed)
branches/CMake/release/boost/python/converter/object_manager.hpp (props changed)
branches/CMake/release/boost/python/converter/pytype_function.hpp (props changed)
branches/CMake/release/boost/python/converter/return_from_python.hpp (props changed)
branches/CMake/release/boost/python/def_visitor.hpp (props changed)
branches/CMake/release/boost/python/detail/borrowed_ptr.hpp (props changed)
branches/CMake/release/boost/python/detail/convertible.hpp (props changed)
branches/CMake/release/boost/python/detail/copy_ctor_mutates_rhs.hpp (props changed)
branches/CMake/release/boost/python/detail/decorated_type_id.hpp (props changed)
branches/CMake/release/boost/python/detail/def_helper_fwd.hpp (props changed)
branches/CMake/release/boost/python/detail/enable_if.hpp (props changed)
branches/CMake/release/boost/python/detail/force_instantiate.hpp (props changed)
branches/CMake/release/boost/python/detail/is_shared_ptr.hpp (props changed)
branches/CMake/release/boost/python/detail/is_wrapper.hpp (props changed)
branches/CMake/release/boost/python/detail/nullary_function_adaptor.hpp (props changed)
branches/CMake/release/boost/python/detail/operator_id.hpp (props changed)
branches/CMake/release/boost/python/detail/prefix.hpp (props changed)
branches/CMake/release/boost/python/detail/python_type.hpp (props changed)
branches/CMake/release/boost/python/detail/result.hpp (props changed)
branches/CMake/release/boost/python/detail/sfinae.hpp (props changed)
branches/CMake/release/boost/python/detail/unwind_type.hpp (props changed)
branches/CMake/release/boost/python/detail/unwrap_type_id.hpp (props changed)
branches/CMake/release/boost/python/detail/unwrap_wrapper.hpp (props changed)
branches/CMake/release/boost/python/detail/value_arg.hpp (props changed)
branches/CMake/release/boost/python/detail/wrapper_base.hpp (props changed)
branches/CMake/release/boost/python/docstring_options.hpp (props changed)
branches/CMake/release/boost/python/handle.hpp (props changed)
branches/CMake/release/boost/python/handle_fwd.hpp (props changed)
branches/CMake/release/boost/python/instance_holder.hpp (props changed)
branches/CMake/release/boost/python/lvalue_from_pytype.hpp (props changed)
branches/CMake/release/boost/python/make_constructor.hpp (props changed)
branches/CMake/release/boost/python/object.hpp (props changed)
branches/CMake/release/boost/python/object/class_metadata.hpp (props changed)
branches/CMake/release/boost/python/object/function_doc_signature.hpp (props changed)
branches/CMake/release/boost/python/object/inheritance_query.hpp (props changed)
branches/CMake/release/boost/python/object/stl_iterator_core.hpp (props changed)
branches/CMake/release/boost/python/object_attributes.hpp (props changed)
branches/CMake/release/boost/python/object_core.hpp (props changed)
branches/CMake/release/boost/python/object_items.hpp (props changed)
branches/CMake/release/boost/python/object_protocol.hpp (props changed)
branches/CMake/release/boost/python/object_protocol_core.hpp (props changed)
branches/CMake/release/boost/python/other.hpp (props changed)
branches/CMake/release/boost/python/override.hpp (props changed)
branches/CMake/release/boost/python/proxy.hpp (props changed)
branches/CMake/release/boost/python/pure_virtual.hpp (props changed)
branches/CMake/release/boost/python/raw_function.hpp (props changed)
branches/CMake/release/boost/python/refcount.hpp (props changed)
branches/CMake/release/boost/python/return_arg.hpp (props changed)
branches/CMake/release/boost/python/self.hpp (props changed)
branches/CMake/release/boost/python/stl_iterator.hpp (props changed)
branches/CMake/release/boost/python/type_id.hpp (props changed)
branches/CMake/release/boost/python/wrapper.hpp (props changed)
branches/CMake/release/boost/range.hpp (props changed)
branches/CMake/release/boost/range/as_array.hpp (props changed)
branches/CMake/release/boost/range/as_literal.hpp (props changed)
branches/CMake/release/boost/range/begin.hpp (props changed)
branches/CMake/release/boost/range/category.hpp (props changed)
branches/CMake/release/boost/range/concepts.hpp (props changed)
branches/CMake/release/boost/range/config.hpp (props changed)
branches/CMake/release/boost/range/const_iterator.hpp (props changed)
branches/CMake/release/boost/range/const_reverse_iterator.hpp (props changed)
branches/CMake/release/boost/range/detail/as_literal.hpp (props changed)
branches/CMake/release/boost/range/detail/begin.hpp (props changed)
branches/CMake/release/boost/range/detail/collection_traits.hpp (props changed)
branches/CMake/release/boost/range/detail/collection_traits_detail.hpp (props changed)
branches/CMake/release/boost/range/detail/common.hpp (props changed)
branches/CMake/release/boost/range/detail/const_iterator.hpp (props changed)
branches/CMake/release/boost/range/detail/detail_str.hpp (props changed)
branches/CMake/release/boost/range/detail/difference_type.hpp (props changed)
branches/CMake/release/boost/range/detail/empty.hpp (props changed)
branches/CMake/release/boost/range/detail/end.hpp (props changed)
branches/CMake/release/boost/range/detail/implementation_help.hpp (props changed)
branches/CMake/release/boost/range/detail/iterator.hpp (props changed)
branches/CMake/release/boost/range/detail/remove_extent.hpp (props changed)
branches/CMake/release/boost/range/detail/sfinae.hpp (props changed)
branches/CMake/release/boost/range/detail/size.hpp (props changed)
branches/CMake/release/boost/range/detail/size_type.hpp (props changed)
branches/CMake/release/boost/range/detail/sizer.hpp (props changed)
branches/CMake/release/boost/range/detail/str_types.hpp (props changed)
branches/CMake/release/boost/range/detail/value_type.hpp (props changed)
branches/CMake/release/boost/range/detail/vc6/end.hpp (props changed)
branches/CMake/release/boost/range/detail/vc6/size.hpp (props changed)
branches/CMake/release/boost/range/difference_type.hpp (props changed)
branches/CMake/release/boost/range/distance.hpp (props changed)
branches/CMake/release/boost/range/empty.hpp (props changed)
branches/CMake/release/boost/range/end.hpp (props changed)
branches/CMake/release/boost/range/functions.hpp (props changed)
branches/CMake/release/boost/range/iterator.hpp (props changed)
branches/CMake/release/boost/range/iterator_range.hpp (props changed)
branches/CMake/release/boost/range/metafunctions.hpp (props changed)
branches/CMake/release/boost/range/mutable_iterator.hpp (props changed)
branches/CMake/release/boost/range/pointer.hpp (props changed)
branches/CMake/release/boost/range/rbegin.hpp (props changed)
branches/CMake/release/boost/range/reference.hpp (props changed)
branches/CMake/release/boost/range/rend.hpp (props changed)
branches/CMake/release/boost/range/result_iterator.hpp (props changed)
branches/CMake/release/boost/range/reverse_iterator.hpp (props changed)
branches/CMake/release/boost/range/reverse_result_iterator.hpp (props changed)
branches/CMake/release/boost/range/size.hpp (props changed)
branches/CMake/release/boost/range/size_type.hpp (props changed)
branches/CMake/release/boost/range/sub_range.hpp (props changed)
branches/CMake/release/boost/range/value_type.hpp (props changed)
branches/CMake/release/boost/test/unit_test_log_formatter.hpp (props changed)
branches/CMake/release/boost/test/utils/assign_op.hpp (props changed)
branches/CMake/release/boost/test/utils/named_params.hpp (props changed)
branches/CMake/release/boost/test/utils/rtti.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/argument.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/argument_factory.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/argv_traverser.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/argv_traverser.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/argv_traverser.ipp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/basic_parameter.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/char_parameter.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/char_parameter.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/char_parameter.ipp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/detail/argument_value_usage.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/dual_name_parameter.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/dual_name_parameter.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/dual_name_parameter.ipp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/fwd.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/id_policy.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/id_policy.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/id_policy.ipp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/iface/argument_factory.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/iface/id_policy.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/modifier.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/named_parameter.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/named_parameter.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/named_parameter.ipp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/parameter.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/parser.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/parser.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/parser.ipp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/positional_parameter.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/typed_parameter.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/validation.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/validation.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/validation.ipp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/value_generator.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/cla/value_handler.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/config.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/configuration.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/env/environment.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/env/environment.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/env/environment.ipp (props changed)
branches/CMake/release/boost/test/utils/runtime/env/fwd.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/env/modifier.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/env/variable.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/file/config_file.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/file/config_file.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/file/config_file_iterator.cpp (props changed)
branches/CMake/release/boost/test/utils/runtime/file/config_file_iterator.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/fwd.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/interpret_argument_value.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/parameter.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/trace.hpp (props changed)
branches/CMake/release/boost/test/utils/runtime/validation.hpp (props changed)
branches/CMake/release/boost/type_traits/aligned_storage.hpp (props changed)
branches/CMake/release/boost/type_traits/decay.hpp (props changed)
branches/CMake/release/boost/type_traits/extent.hpp (props changed)
branches/CMake/release/boost/type_traits/has_virtual_destructor.hpp (props changed)
branches/CMake/release/boost/type_traits/integral_constant.hpp (props changed)
branches/CMake/release/boost/type_traits/is_abstract.hpp (props changed)
branches/CMake/release/boost/type_traits/is_base_of.hpp (props changed)
branches/CMake/release/boost/type_traits/is_floating_point.hpp (props changed)
branches/CMake/release/boost/type_traits/is_member_object_pointer.hpp (props changed)
branches/CMake/release/boost/type_traits/is_signed.hpp (props changed)
branches/CMake/release/boost/type_traits/is_unsigned.hpp (props changed)
branches/CMake/release/boost/type_traits/rank.hpp (props changed)
branches/CMake/release/boost/type_traits/remove_all_extents.hpp (props changed)
branches/CMake/release/boost/type_traits/remove_extent.hpp (props changed)
branches/CMake/release/boost/typeof/dmc/typeof_impl.hpp (props changed)
branches/CMake/release/boost/typeof/encode_decode.hpp (props changed)
branches/CMake/release/boost/typeof/encode_decode_params.hpp (props changed)
branches/CMake/release/boost/typeof/incr_registration_group.hpp (props changed)
branches/CMake/release/boost/typeof/int_encoding.hpp (props changed)
branches/CMake/release/boost/typeof/integral_template_param.hpp (props changed)
branches/CMake/release/boost/typeof/message.hpp (props changed)
branches/CMake/release/boost/typeof/modifiers.hpp (props changed)
branches/CMake/release/boost/typeof/msvc/typeof_impl.hpp (props changed)
branches/CMake/release/boost/typeof/native.hpp (props changed)
branches/CMake/release/boost/typeof/pointers_data_members.hpp (props changed)
branches/CMake/release/boost/typeof/register_functions.hpp (props changed)
branches/CMake/release/boost/typeof/register_functions_iterate.hpp (props changed)
branches/CMake/release/boost/typeof/register_fundamental.hpp (props changed)
branches/CMake/release/boost/typeof/register_mem_functions.hpp (props changed)
branches/CMake/release/boost/typeof/std/bitset.hpp (props changed)
branches/CMake/release/boost/typeof/std/complex.hpp (props changed)
branches/CMake/release/boost/typeof/std/deque.hpp (props changed)
branches/CMake/release/boost/typeof/std/fstream.hpp (props changed)
branches/CMake/release/boost/typeof/std/functional.hpp (props changed)
branches/CMake/release/boost/typeof/std/iostream.hpp (props changed)
branches/CMake/release/boost/typeof/std/istream.hpp (props changed)
branches/CMake/release/boost/typeof/std/iterator.hpp (props changed)
branches/CMake/release/boost/typeof/std/list.hpp (props changed)
branches/CMake/release/boost/typeof/std/locale.hpp (props changed)
branches/CMake/release/boost/typeof/std/map.hpp (props changed)
branches/CMake/release/boost/typeof/std/memory.hpp (props changed)
branches/CMake/release/boost/typeof/std/ostream.hpp (props changed)
branches/CMake/release/boost/typeof/std/queue.hpp (props changed)
branches/CMake/release/boost/typeof/std/set.hpp (props changed)
branches/CMake/release/boost/typeof/std/sstream.hpp (props changed)
branches/CMake/release/boost/typeof/std/stack.hpp (props changed)
branches/CMake/release/boost/typeof/std/streambuf.hpp (props changed)
branches/CMake/release/boost/typeof/std/string.hpp (props changed)
branches/CMake/release/boost/typeof/std/utility.hpp (props changed)
branches/CMake/release/boost/typeof/std/valarray.hpp (props changed)
branches/CMake/release/boost/typeof/std/vector.hpp (props changed)
branches/CMake/release/boost/typeof/template_encoding.hpp (props changed)
branches/CMake/release/boost/typeof/template_template_param.hpp (props changed)
branches/CMake/release/boost/typeof/type_encoding.hpp (props changed)
branches/CMake/release/boost/typeof/type_template_param.hpp (props changed)
branches/CMake/release/boost/typeof/typeof.hpp (props changed)
branches/CMake/release/boost/typeof/typeof_impl.hpp (props changed)
branches/CMake/release/boost/typeof/vector.hpp (props changed)
branches/CMake/release/boost/typeof/vector100.hpp (props changed)
branches/CMake/release/boost/typeof/vector150.hpp (props changed)
branches/CMake/release/boost/typeof/vector200.hpp (props changed)
branches/CMake/release/boost/typeof/vector50.hpp (props changed)
branches/CMake/release/boost/xpressive/basic_regex.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/access.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/action.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/adaptor.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/finder.hpp (contents, props changed)
branches/CMake/release/boost/xpressive/detail/core/flow_control.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/icase.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/linker.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/action_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/alternate_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/any_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/assert_line_base.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/assert_word_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/attr_end_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/attr_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/charset_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/end_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/epsilon_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/keeper_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/literal_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/lookahead_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/mark_end_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/mark_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/optional_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/predicate_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/range_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/regex_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/set_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/string_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matcher/true_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/matchers.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/optimize.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/peeker.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/quant_style.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/regex_impl.hpp (contents, props changed)
branches/CMake/release/boost/xpressive/detail/core/results_cache.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/state.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/sub_match_impl.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/core/sub_match_vector.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/detail_fwd.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/dynamic/dynamic.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/dynamic/matchable.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/dynamic/parse_charset.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/dynamic/parser.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/dynamic/parser_enum.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/dynamic/parser_traits.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/dynamic/sequence.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/compile.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/grammar.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/is_pure.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/modifier.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/placeholders.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/static.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_action.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_alternate.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_independent.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_inverse.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_marker.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_matcher.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_modifier.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_quantifier.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_sequence.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transforms/as_set.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/transmogrify.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/type_traits.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/visitor.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/static/width_of.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/algorithm.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/any.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/boyer_moore.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/chset/basic_chset.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/chset/basic_chset.ipp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/chset/chset.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/chset/range_run.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/chset/range_run.ipp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/cons.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/counted_base.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/dont_care.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/hash_peek_bitset.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/ignore_unused.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/literals.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/never_true.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/save_restore.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/sequence_stack.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/symbols.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/tracking_ptr.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/traits_utils.hpp (props changed)
branches/CMake/release/boost/xpressive/detail/utility/width.hpp (props changed)
branches/CMake/release/boost/xpressive/match_results.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/args.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/context.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/context/callable.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/context/default.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/context/null.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/debug.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/deep_copy.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/detail/funop.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/detail/prefix.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/detail/suffix.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/domain.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/eval.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/expr.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/extends.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/fusion.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/generate.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/literal.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/make_expr.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/matches.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/operators.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/proto.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/proto_fwd.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/proto_typeof.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/ref.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/tags.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/traits.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/apply.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/arg.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/branch.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/compose.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/construct.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/fold.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/fold_tree.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/function.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/list.hpp (props changed)
branches/CMake/release/boost/xpressive/proto/transform/pass_through.hpp (props changed)
branches/CMake/release/boost/xpressive/regex_actions.hpp (props changed)
branches/CMake/release/boost/xpressive/regex_algorithms.hpp (contents, props changed)
branches/CMake/release/boost/xpressive/regex_compiler.hpp (props changed)
branches/CMake/release/boost/xpressive/regex_constants.hpp (props changed)
branches/CMake/release/boost/xpressive/regex_error.hpp (props changed)
branches/CMake/release/boost/xpressive/regex_iterator.hpp (props changed)
branches/CMake/release/boost/xpressive/regex_primitives.hpp (props changed)
branches/CMake/release/boost/xpressive/regex_token_iterator.hpp (props changed)
branches/CMake/release/boost/xpressive/regex_traits.hpp (props changed)
branches/CMake/release/boost/xpressive/sub_match.hpp (props changed)
branches/CMake/release/boost/xpressive/traits/c_regex_traits.hpp (props changed)
branches/CMake/release/boost/xpressive/traits/cpp_regex_traits.hpp (contents, props changed)
branches/CMake/release/boost/xpressive/traits/detail/c_ctype.hpp (props changed)
branches/CMake/release/boost/xpressive/traits/null_regex_traits.hpp (props changed)
branches/CMake/release/boost/xpressive/xpressive.hpp (props changed)
branches/CMake/release/boost/xpressive/xpressive_dynamic.hpp (props changed)
branches/CMake/release/boost/xpressive/xpressive_fwd.hpp (props changed)
branches/CMake/release/boost/xpressive/xpressive_static.hpp (props changed)
branches/CMake/release/boost/xpressive/xpressive_typeof.hpp (props changed)
branches/CMake/release/doc/html/images/next_disabled.png (props changed)
branches/CMake/release/doc/html/images/prev_disabled.png (props changed)
branches/CMake/release/doc/html/images/up_disabled.png (props changed)
branches/CMake/release/doc/src/images/next_disabled.png (props changed)
branches/CMake/release/doc/src/images/prev_disabled.png (props changed)
branches/CMake/release/doc/src/images/up_disabled.png (props changed)
branches/CMake/release/libs/assign/doc/email_example.html (props changed)
branches/CMake/release/libs/assign/doc/multi_index_container.html (props changed)
branches/CMake/release/libs/assign/doc/my_vector_example.html (props changed)
branches/CMake/release/libs/assign/doc/style.css (props changed)
branches/CMake/release/libs/assign/test/array.cpp (props changed)
branches/CMake/release/libs/assign/test/basic.cpp (props changed)
branches/CMake/release/libs/assign/test/email_example.cpp (props changed)
branches/CMake/release/libs/assign/test/list_inserter.cpp (props changed)
branches/CMake/release/libs/assign/test/list_of.cpp (props changed)
branches/CMake/release/libs/assign/test/list_of_workaround.cpp (props changed)
branches/CMake/release/libs/assign/test/multi_index_container.cpp (props changed)
branches/CMake/release/libs/assign/test/my_vector_example.cpp (props changed)
branches/CMake/release/libs/assign/test/ptr_list_inserter.cpp (props changed)
branches/CMake/release/libs/assign/test/ptr_list_of.cpp (props changed)
branches/CMake/release/libs/assign/test/ptr_map_inserter.cpp (props changed)
branches/CMake/release/libs/assign/test/static_list_of.cpp (props changed)
branches/CMake/release/libs/assign/test/std.cpp (props changed)
branches/CMake/release/libs/assign/test/tuple_list_of.cpp (props changed)
branches/CMake/release/libs/bimap/doc/acknowledgements.qbk (props changed)
branches/CMake/release/libs/bimap/doc/bimap.hdf (props changed)
branches/CMake/release/libs/bimap/doc/bimap.qbk (props changed)
branches/CMake/release/libs/bimap/doc/bimap_and_boost.qbk (props changed)
branches/CMake/release/libs/bimap/doc/compiler_specifics.qbk (props changed)
branches/CMake/release/libs/bimap/doc/examples.qbk (props changed)
branches/CMake/release/libs/bimap/doc/future_work.qbk (props changed)
branches/CMake/release/libs/bimap/doc/history.qbk (props changed)
branches/CMake/release/libs/bimap/doc/html/boostbook.css (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/bimap.structures.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/boost.bimap.header.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/boost.bimap.logo.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/collection.type.of.relation.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/miBimapFramework.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/more.bimap.structures.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/relation.and.pair.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/relation.and.pair.with.info.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/relation.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/bimap/tagged.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/extern/googlesoc.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/people/hector.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/people/joaquin.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/people/mafalda.png (props changed)
branches/CMake/release/libs/bimap/doc/html/images/people/matias.png (props changed)
branches/CMake/release/libs/bimap/doc/introduction.qbk (props changed)
branches/CMake/release/libs/bimap/doc/jamfile.v2 (props changed)
branches/CMake/release/libs/bimap/doc/performance.qbk (props changed)
branches/CMake/release/libs/bimap/doc/quick_tutorial.qbk (props changed)
branches/CMake/release/libs/bimap/doc/rationale.qbk (props changed)
branches/CMake/release/libs/bimap/doc/reference.qbk (props changed)
branches/CMake/release/libs/bimap/doc/reference/bimap.qbk (props changed)
branches/CMake/release/libs/bimap/doc/reference/list_of.qbk (props changed)
branches/CMake/release/libs/bimap/doc/reference/set_of.qbk (props changed)
branches/CMake/release/libs/bimap/doc/reference/unconstrained_set_of.qbk (props changed)
branches/CMake/release/libs/bimap/doc/reference/unordered_set_of.qbk (props changed)
branches/CMake/release/libs/bimap/doc/reference/vector_of.qbk (props changed)
branches/CMake/release/libs/bimap/doc/release_notes.qbk (props changed)
branches/CMake/release/libs/bimap/doc/test_suite.qbk (props changed)
branches/CMake/release/libs/bimap/doc/toolbox.qbk (props changed)
branches/CMake/release/libs/bimap/doc/tutorial.qbk (props changed)
branches/CMake/release/libs/bimap/example/Jamfile.v2 (props changed)
branches/CMake/release/libs/bimap/example/at_function_examples.cpp (props changed)
branches/CMake/release/libs/bimap/example/bimap_and_boost/assign.cpp (props changed)
branches/CMake/release/libs/bimap/example/bimap_and_boost/foreach.cpp (props changed)
branches/CMake/release/libs/bimap/example/bimap_and_boost/lambda.cpp (props changed)
branches/CMake/release/libs/bimap/example/bimap_and_boost/property_map.cpp (props changed)
branches/CMake/release/libs/bimap/example/bimap_and_boost/range.cpp (props changed)
branches/CMake/release/libs/bimap/example/bimap_and_boost/serialization.cpp (props changed)
branches/CMake/release/libs/bimap/example/bimap_and_boost/typeof.cpp (props changed)
branches/CMake/release/libs/bimap/example/bimap_and_boost/xpressive.cpp (props changed)
branches/CMake/release/libs/bimap/example/mi_to_b_path/bidirectional_map.cpp (props changed)
branches/CMake/release/libs/bimap/example/mi_to_b_path/hashed_indices.cpp (props changed)
branches/CMake/release/libs/bimap/example/mi_to_b_path/mi_bidirectional_map.cpp (props changed)
branches/CMake/release/libs/bimap/example/mi_to_b_path/mi_hashed_indices.cpp (props changed)
branches/CMake/release/libs/bimap/example/mi_to_b_path/tagged_bidirectional_map.cpp (props changed)
branches/CMake/release/libs/bimap/example/mighty_bimap.cpp (props changed)
branches/CMake/release/libs/bimap/example/population_bimap.cpp (props changed)
branches/CMake/release/libs/bimap/example/projection.cpp (props changed)
branches/CMake/release/libs/bimap/example/repetitions_counter.cpp (props changed)
branches/CMake/release/libs/bimap/example/simple_bimap.cpp (props changed)
branches/CMake/release/libs/bimap/example/standard_map_comparison.cpp (props changed)
branches/CMake/release/libs/bimap/example/step_by_step.cpp (props changed)
branches/CMake/release/libs/bimap/example/tagged_simple_bimap.cpp (props changed)
branches/CMake/release/libs/bimap/example/tutorial_info_hook.cpp (props changed)
branches/CMake/release/libs/bimap/example/tutorial_modify_and_replace.cpp (props changed)
branches/CMake/release/libs/bimap/example/tutorial_range.cpp (props changed)
branches/CMake/release/libs/bimap/example/unconstrained_collection.cpp (props changed)
branches/CMake/release/libs/bimap/example/user_defined_names.cpp (props changed)
branches/CMake/release/libs/bimap/index.html (props changed)
branches/CMake/release/libs/bimap/test/Jamfile.v2 (props changed)
branches/CMake/release/libs/bimap/test/compile_fail/test_bimap_info_1.cpp (props changed)
branches/CMake/release/libs/bimap/test/compile_fail/test_bimap_info_2.cpp (props changed)
branches/CMake/release/libs/bimap/test/compile_fail/test_bimap_info_3.cpp (props changed)
branches/CMake/release/libs/bimap/test/compile_fail/test_bimap_mutable_1.cpp (props changed)
branches/CMake/release/libs/bimap/test/compile_fail/test_bimap_mutable_2.cpp (props changed)
branches/CMake/release/libs/bimap/test/compile_fail/test_bimap_mutable_3.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap.hpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_assign.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_convenience_header.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_extra.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_info.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_lambda.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_list_of.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_modify.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_multiset_of.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_mutable.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_operator_bracket.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_ordered.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_project.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_property_map.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_range.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_sequenced.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_serialization.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_set_of.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_unconstrained.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_unordered.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_unordered_multiset_of.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_unordered_set_of.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_bimap_vector_of.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_mutant.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_mutant_relation.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_relation.hpp (props changed)
branches/CMake/release/libs/bimap/test/test_structured_pair.cpp (props changed)
branches/CMake/release/libs/bimap/test/test_tagged.cpp (props changed)
branches/CMake/release/libs/concept_check/fake_sort.hpp (props changed)
branches/CMake/release/libs/concept_check/function_requires_fail.cpp (props changed)
branches/CMake/release/libs/concept_check/old_concept_class_fail.cpp (props changed)
branches/CMake/release/libs/concept_check/old_concept_function_fail.cpp (props changed)
branches/CMake/release/libs/concept_check/old_concept_pass.cpp (props changed)
branches/CMake/release/libs/concept_check/old_concepts.hpp (props changed)
branches/CMake/release/libs/concept_check/usage_fail.cpp (props changed)
branches/CMake/release/libs/concept_check/where.cpp (props changed)
branches/CMake/release/libs/concept_check/where_fail.cpp (props changed)
branches/CMake/release/libs/config/doc/html/boostbook.css (props changed)
branches/CMake/release/libs/date_time/src/date_time.doc (contents, props changed)
branches/CMake/release/libs/foreach/doc/Jamfile.v2 (props changed)
branches/CMake/release/libs/foreach/doc/foreach.qbk (props changed)
branches/CMake/release/libs/foreach/index.html (props changed)
branches/CMake/release/libs/foreach/test/Jamfile.v2 (props changed)
branches/CMake/release/libs/foreach/test/array_byref.cpp (props changed)
branches/CMake/release/libs/foreach/test/array_byval.cpp (props changed)
branches/CMake/release/libs/foreach/test/call_once.cpp (props changed)
branches/CMake/release/libs/foreach/test/cstr_byref.cpp (props changed)
branches/CMake/release/libs/foreach/test/cstr_byval.cpp (props changed)
branches/CMake/release/libs/foreach/test/dependent_type.cpp (props changed)
branches/CMake/release/libs/foreach/test/noncopyable.cpp (props changed)
branches/CMake/release/libs/foreach/test/pair_byref.cpp (props changed)
branches/CMake/release/libs/foreach/test/pair_byval.cpp (props changed)
branches/CMake/release/libs/foreach/test/rvalue_const.cpp (props changed)
branches/CMake/release/libs/foreach/test/rvalue_nonconst.cpp (props changed)
branches/CMake/release/libs/foreach/test/stl_byref.cpp (props changed)
branches/CMake/release/libs/foreach/test/stl_byval.cpp (props changed)
branches/CMake/release/libs/foreach/test/user_defined.cpp (props changed)
branches/CMake/release/libs/foreach/test/utility.hpp (props changed)
branches/CMake/release/libs/fusion/doc/html/images/alert.png (props changed)
branches/CMake/release/libs/fusion/doc/html/images/home.png (props changed)
branches/CMake/release/libs/fusion/doc/html/images/next.png (props changed)
branches/CMake/release/libs/fusion/doc/html/images/note.png (props changed)
branches/CMake/release/libs/fusion/doc/html/images/prev.png (props changed)
branches/CMake/release/libs/fusion/doc/html/images/smiley.png (props changed)
branches/CMake/release/libs/fusion/doc/html/images/tip.png (props changed)
branches/CMake/release/libs/fusion/doc/html/images/up.png (props changed)
branches/CMake/release/libs/fusion/test/algorithm/ext_/find_if_s.cpp (props changed)
branches/CMake/release/libs/fusion/test/algorithm/ext_/for_each_s.cpp (props changed)
branches/CMake/release/libs/fusion/test/sequence/ext_/iterator_range_s.cpp (props changed)
branches/CMake/release/libs/gil/doc/adobe_logo.gif (props changed)
branches/CMake/release/libs/gil/doc/adobe_source.css (props changed)
branches/CMake/release/libs/gil/doc/boost.png (props changed)
branches/CMake/release/libs/gil/doc/html/adobe_source.css (props changed)
branches/CMake/release/libs/gil/doc/html/algorithm_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/annotated.html (props changed)
branches/CMake/release/libs/gil/doc/html/any__image_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/channel_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/classes.html (props changed)
branches/CMake/release/libs/gil/doc/html/cmyk_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/deprecated_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/device__n_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/dir_000000.html (props changed)
branches/CMake/release/libs/gil/doc/html/dir_000001.html (props changed)
branches/CMake/release/libs/gil/doc/html/dir_000002.html (props changed)
branches/CMake/release/libs/gil/doc/html/dir_000003.html (props changed)
branches/CMake/release/libs/gil/doc/html/dir_000004.html (props changed)
branches/CMake/release/libs/gil/doc/html/dirs.html (props changed)
branches/CMake/release/libs/gil/doc/html/doxygen.png (props changed)
branches/CMake/release/libs/gil/doc/html/files.html (props changed)
branches/CMake/release/libs/gil/doc/html/functions.html (props changed)
branches/CMake/release/libs/gil/doc/html/functions_func.html (props changed)
branches/CMake/release/libs/gil/doc/html/functions_rela.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0001.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0001.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0002.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0002.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0003.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0003.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0004.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0004.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0005.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0005.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0006.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0006.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0007.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0007.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0008.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0008.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0009.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0009.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0010.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0010.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0011.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0011.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0012.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0012.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0013.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0013.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0014.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0014.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0015.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0015.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0016.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0016.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0017.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0017.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0018.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0018.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0019.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0019.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0020.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0020.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0021.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0021.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0022.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0022.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0023.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0023.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0024.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0024.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0025.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0025.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0026.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0026.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0027.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0027.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0028.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0028.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0029.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0029.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0030.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0030.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0031.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0031.png (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0032.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0033.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0034.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0035.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0036.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0037.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0038.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0039.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0040.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0041.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0042.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0043.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0044.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0045.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0046.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0047.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0048.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0049.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0050.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0051.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0052.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0053.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0054.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0055.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0056.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0057.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0058.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0059.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0060.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0061.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0062.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0063.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0064.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0065.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0066.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0067.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0068.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0069.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0070.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0071.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0072.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0073.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0074.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0075.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0076.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0077.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0078.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0079.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0080.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0081.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0082.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0083.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0084.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0085.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0086.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0087.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0088.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0089.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0090.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0091.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0092.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0093.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0094.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0095.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0096.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0097.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0098.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0099.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0100.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0101.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0102.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0103.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0104.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0105.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0106.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0107.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0108.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0109.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0110.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0111.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0112.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0113.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0114.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0115.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0116.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0117.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0118.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0119.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0120.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0121.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0122.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0123.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0124.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0125.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0126.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0127.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0128.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0129.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0130.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0131.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0132.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0133.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0134.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0135.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0136.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0137.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0138.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0139.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0140.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0141.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0142.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0143.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0144.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0145.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0146.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0147.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0148.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0149.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0150.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0151.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0152.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0153.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0154.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0155.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0156.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0157.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0158.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0159.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0160.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0161.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0162.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0163.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0164.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0165.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0166.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0167.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0168.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0169.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0170.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0171.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0172.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0173.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0174.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0175.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0176.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0177.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0178.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0179.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0180.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0181.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0182.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0183.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0184.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0185.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0186.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0187.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0188.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0189.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0190.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0191.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0192.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0193.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0194.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0195.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0196.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0197.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0198.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0199.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0200.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0201.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0202.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0203.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0204.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0205.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0206.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0207.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0208.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0209.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0210.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0211.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0212.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0213.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0214.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0215.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0216.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0217.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0218.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0219.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0220.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0221.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0222.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0223.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0224.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0225.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0226.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0227.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0228.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0229.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0230.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0231.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0232.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0233.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0234.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0235.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0236.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0237.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0238.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0239.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0240.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0241.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0242.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0243.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0244.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0245.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0246.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0247.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0248.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0249.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0250.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0251.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0252.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0253.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0254.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0255.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0256.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0257.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0258.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0259.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0260.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0261.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0262.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0263.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0264.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0265.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0266.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0267.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0268.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0269.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0270.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0271.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0272.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0273.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0274.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0275.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0276.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0277.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0278.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0279.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0280.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0281.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0282.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0283.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0284.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0285.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0286.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0287.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0288.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0289.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0290.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0291.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0292.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0293.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0294.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0295.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0296.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0297.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0298.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0299.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0300.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0301.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0302.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0303.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0304.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0305.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0306.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0307.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0308.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0309.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0310.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0311.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0312.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0313.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0314.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0315.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0316.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0317.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0318.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0319.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0320.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0321.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0322.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0323.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0324.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0325.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0326.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0327.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0328.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0329.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0330.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0331.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0332.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0333.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0334.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0335.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0336.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0337.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0338.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0339.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0340.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0341.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0342.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0343.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0344.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0345.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0346.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0347.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0348.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0349.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0350.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0351.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0352.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0353.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0354.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0355.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0356.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0357.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0358.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0359.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0360.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0361.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0362.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0363.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0364.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0365.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0366.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0367.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0368.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0369.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0370.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0371.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0372.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0373.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0374.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0375.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0376.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0377.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0378.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0379.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0380.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0381.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0382.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0383.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0384.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0385.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0386.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0387.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0388.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0389.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0390.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0391.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0392.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0393.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0394.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0395.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0396.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0397.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0398.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0399.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0400.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0401.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0402.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0403.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0404.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0405.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0406.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0407.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0408.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0409.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0410.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0411.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0412.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0413.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0414.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0415.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0416.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0417.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0418.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0419.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0420.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0421.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0422.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0423.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0424.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0425.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0426.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0427.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0428.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0429.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0430.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0431.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0432.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0433.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0434.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0435.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0436.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0437.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0438.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0439.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0440.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0441.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0442.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0443.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0444.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0445.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0446.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0447.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0448.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0449.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0450.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0451.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0452.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0453.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0454.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0455.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0456.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0457.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0458.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0459.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0460.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0461.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0462.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0463.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0464.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0465.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0466.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0467.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0468.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0469.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0470.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0471.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0472.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0473.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0474.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0475.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0476.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0477.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0478.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0479.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0480.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0481.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0482.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0483.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0484.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0485.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0486.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0487.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0488.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0489.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0490.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0491.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0492.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0493.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0494.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0495.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0496.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0497.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0498.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0499.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0500.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0501.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0502.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0503.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0504.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0505.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0506.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0507.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0508.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0509.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0510.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0511.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0512.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0513.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0514.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0515.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0516.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0517.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0518.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0519.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0520.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0521.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0522.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0523.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0524.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0525.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0526.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0527.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0528.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0529.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0530.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0531.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0532.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0533.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0534.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0535.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0536.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0537.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0538.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0539.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0540.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0541.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0542.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0543.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0544.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0545.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0546.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0547.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0548.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0549.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0550.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0551.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0552.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0553.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0554.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0555.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0556.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0557.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0558.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0559.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0560.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0561.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0562.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0563.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0564.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0565.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0566.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0567.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0568.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0569.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0570.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0571.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0572.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0573.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0574.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0575.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0576.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0577.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0578.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0579.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0580.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0581.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0582.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0583.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0584.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0585.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0586.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0587.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0588.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0589.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0590.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0591.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0592.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0593.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0594.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0595.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0596.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0597.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0598.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0599.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0600.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0601.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0602.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0603.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0604.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0605.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0606.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0607.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0608.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0609.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0610.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0611.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0612.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0613.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0614.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0615.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0616.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0617.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0618.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0619.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0620.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0621.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0622.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0623.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0624.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0625.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0626.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0627.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0628.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0629.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0630.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0631.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0632.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0633.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0634.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0635.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0636.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0637.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0638.html (props changed)
branches/CMake/release/libs/gil/doc/html/g_i_l_0639.html (props changed)
branches/CMake/release/libs/gil/doc/html/gil__all_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/gildesignguide.html (props changed)
branches/CMake/release/libs/gil/doc/html/giltutorial.html (props changed)
branches/CMake/release/libs/gil/doc/html/globals.html (props changed)
branches/CMake/release/libs/gil/doc/html/globals_func.html (props changed)
branches/CMake/release/libs/gil/doc/html/gray_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/group___channel.html (props changed)
branches/CMake/release/libs/gil/doc/html/group___i_o.html (props changed)
branches/CMake/release/libs/gil/doc/html/group___image.html (props changed)
branches/CMake/release/libs/gil/doc/html/group___pixel.html (props changed)
branches/CMake/release/libs/gil/doc/html/group___point.html (props changed)
branches/CMake/release/libs/gil/doc/html/group___variant.html (props changed)
branches/CMake/release/libs/gil/doc/html/group__bits16.html (props changed)
branches/CMake/release/libs/gil/doc/html/group__bits16s.html (props changed)
branches/CMake/release/libs/gil/doc/html/group__bits32.html (props changed)
branches/CMake/release/libs/gil/doc/html/group__bits32f.html (props changed)
branches/CMake/release/libs/gil/doc/html/group__bits32s.html (props changed)
branches/CMake/release/libs/gil/doc/html/group__bits8.html (props changed)
branches/CMake/release/libs/gil/doc/html/group__bits8s.html (props changed)
branches/CMake/release/libs/gil/doc/html/hierarchy.html (props changed)
branches/CMake/release/libs/gil/doc/html/image_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/index.html (props changed)
branches/CMake/release/libs/gil/doc/html/interleaved.jpg (props changed)
branches/CMake/release/libs/gil/doc/html/io__error_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/jpeg__io_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/locator_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/mandel.jpg (props changed)
branches/CMake/release/libs/gil/doc/html/modules.html (props changed)
branches/CMake/release/libs/gil/doc/html/monkey_steps.jpg (props changed)
branches/CMake/release/libs/gil/doc/html/namespaceboost.html (props changed)
branches/CMake/release/libs/gil/doc/html/namespaces.html (props changed)
branches/CMake/release/libs/gil/doc/html/pages.html (props changed)
branches/CMake/release/libs/gil/doc/html/pixel_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/planar.jpg (props changed)
branches/CMake/release/libs/gil/doc/html/png__io_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/reduce_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/rgb_8hpp-source.html (props changed)
branches/CMake/release/libs/gil/doc/html/rgb_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/rgba_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/step_iterator.gif (props changed)
branches/CMake/release/libs/gil/doc/html/tiff__io_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/tutorial_8dox.html (props changed)
branches/CMake/release/libs/gil/doc/html/typedefs_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/utilities_8hpp.html (props changed)
branches/CMake/release/libs/gil/doc/html/variant_8hpp.html (props changed)
branches/CMake/release/libs/gil/test/error_if.cpp (props changed)
branches/CMake/release/libs/graph/doc/cochet-terrasson98numerical.pdf (props changed)
branches/CMake/release/libs/graph/doc/dasdan-dac99.pdf (props changed)
branches/CMake/release/libs/graph/doc/figs/cr.jpg (props changed)
branches/CMake/release/libs/graph/doc/figs/dominator-tree1.gif (props changed)
branches/CMake/release/libs/graph/doc/figs/dominator-tree2.gif (props changed)
branches/CMake/release/libs/graph/doc/figs/maximal-match.png (props changed)
branches/CMake/release/libs/graph/doc/figs/maximum-match.png (props changed)
branches/CMake/release/libs/graph/doc/figs/mcr.jpg (props changed)
branches/CMake/release/libs/graph/doc/figs/very_complex_graph.gif (props changed)
branches/CMake/release/libs/graph/doc/lengauer_tarjan_dominator.htm (props changed)
branches/CMake/release/libs/graph/doc/maximum_matching.html (props changed)
branches/CMake/release/libs/graph/doc/profile.htm (props changed)
branches/CMake/release/libs/graph/doc/sloan_ordering.htm (contents, props changed)
branches/CMake/release/libs/graph/doc/sloan_start_end_vertices.htm (props changed)
branches/CMake/release/libs/graph/doc/wavefront.htm (props changed)
branches/CMake/release/libs/graph/example/cycle_ratio_example.cpp (props changed)
branches/CMake/release/libs/graph/example/matching_example.cpp (props changed)
branches/CMake/release/libs/graph/example/sloan_ordering.cpp (props changed)
branches/CMake/release/libs/graph/test/cycle_ratio_s382.90.dot (props changed)
branches/CMake/release/libs/graph/test/cycle_ratio_tests.cpp (props changed)
branches/CMake/release/libs/graph/test/dominator_tree_test.cpp (props changed)
branches/CMake/release/libs/graph/test/matching_test.cpp (props changed)
branches/CMake/release/libs/graph/test/random_matching_test.cpp (props changed)
branches/CMake/release/libs/iostreams/doc/acknowledgments.html (props changed)
branches/CMake/release/libs/iostreams/doc/bibliography.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/aggregate.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/array.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/back_inserter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/bzip2.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/chain.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/char_traits.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/classes.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/code_converter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/counter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/device.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/file.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/file_descriptor.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/filtering_stream.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/filtering_streambuf.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/gzip.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/line_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/mapped_file.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/mode.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/newline_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/null.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/regex_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/stdio_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/symmetric_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/classes/zlib.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/bidirectional_device.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/bidirectional_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/blocking.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/closable.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/concepts.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/device.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/direct.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/dual_use_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/flushable.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/input_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/localizable.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/multi-character.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/multi_character.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/optimally_buffered.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/output_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/peekable.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/pipable.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/seekable_device.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/seekable_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/sink.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/source.html (props changed)
branches/CMake/release/libs/iostreams/doc/concepts/symmetric_filter.html (props changed)
branches/CMake/release/libs/iostreams/doc/faq.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/close.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/combine.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/compose.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/copy.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/filter_test.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/flush.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/functions.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/get.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/imbue.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/invert.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/optimal_buffer_size.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/positioning.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/put.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/putback.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/read.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/restrict.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/seek.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/tee.html (props changed)
branches/CMake/release/libs/iostreams/doc/functions/write.html (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/bidirectional_chain.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/important_modes.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/input_chain.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/key_bidirectional_seq.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/key_important.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/key_input_seq.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/key_output_seq.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/key_read_head.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/key_read_write_head.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/key_write_head.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/modes.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/output_chain.gif (props changed)
branches/CMake/release/libs/iostreams/doc/graphics/seekable_chain.gif (props changed)
branches/CMake/release/libs/iostreams/doc/guide/asynchronous.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/buffering.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/code_conversion.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/concepts.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/exceptions.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/filtering_streams.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/generic_streams.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/guide.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/lifetimes.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/modes.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/pipelines.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/text_processing.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/traits.html (props changed)
branches/CMake/release/libs/iostreams/doc/guide/views.html (props changed)
branches/CMake/release/libs/iostreams/doc/home.html (props changed)
branches/CMake/release/libs/iostreams/doc/index.html (props changed)
branches/CMake/release/libs/iostreams/doc/installation.html (props changed)
branches/CMake/release/libs/iostreams/doc/macros/buffer_sizes.html (props changed)
branches/CMake/release/libs/iostreams/doc/macros/macros.html (props changed)
branches/CMake/release/libs/iostreams/doc/macros/workarounds.html (props changed)
branches/CMake/release/libs/iostreams/doc/menu.html (props changed)
branches/CMake/release/libs/iostreams/doc/portability.html (props changed)
branches/CMake/release/libs/iostreams/doc/quick_reference.html (props changed)
branches/CMake/release/libs/iostreams/doc/rationale.html (props changed)
branches/CMake/release/libs/iostreams/doc/reference.html (props changed)
branches/CMake/release/libs/iostreams/doc/theme/boost.png (props changed)
branches/CMake/release/libs/iostreams/doc/theme/boost_small.png (props changed)
branches/CMake/release/libs/iostreams/doc/theme/iostreams.css (props changed)
branches/CMake/release/libs/iostreams/doc/theme/wedge.gif (props changed)
branches/CMake/release/libs/iostreams/doc/tree/tree.css (props changed)
branches/CMake/release/libs/iostreams/doc/tree/tree.js (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/container_device.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/container_sink.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/container_source.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/dictionary_filters.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/dual_use_filters.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/filter_usage.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/finite_state_filters.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/line_wrapping_filters.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/multichar_filters.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/shell_comments_filters.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/tab_expanding_filters.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/tutorial.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/unix2dos_filters.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/writing_devices.html (props changed)
branches/CMake/release/libs/iostreams/doc/tutorial/writing_filters.html (props changed)
branches/CMake/release/libs/iostreams/example/boost_back_inserter_example.cpp (props changed)
branches/CMake/release/libs/iostreams/example/container_device.hpp (props changed)
branches/CMake/release/libs/iostreams/example/container_device_example.cpp (props changed)
branches/CMake/release/libs/iostreams/example/container_sink_example.cpp (props changed)
branches/CMake/release/libs/iostreams/example/container_source_example.cpp (props changed)
branches/CMake/release/libs/iostreams/example/dictionary_filter.hpp (props changed)
branches/CMake/release/libs/iostreams/example/finite_state_filter.hpp (props changed)
branches/CMake/release/libs/iostreams/example/iterator_range_example.cpp (props changed)
branches/CMake/release/libs/iostreams/example/line_wrapping_filter.hpp (props changed)
branches/CMake/release/libs/iostreams/example/shell_comments_filter.hpp (props changed)
branches/CMake/release/libs/iostreams/example/std_back_inserter_example.cpp (props changed)
branches/CMake/release/libs/iostreams/example/tab_expanding_filter.hpp (props changed)
branches/CMake/release/libs/iostreams/example/unix2dos_filter.hpp (props changed)
branches/CMake/release/libs/iostreams/index.html (props changed)
branches/CMake/release/libs/iostreams/src/bzip2.cpp (props changed)
branches/CMake/release/libs/iostreams/src/file_descriptor.cpp (props changed)
branches/CMake/release/libs/iostreams/src/mapped_file.cpp (props changed)
branches/CMake/release/libs/iostreams/src/zlib.cpp (props changed)
branches/CMake/release/libs/iostreams/test/array_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/auto_close_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/buffer_size_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/bzip2_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/close_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/code_converter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/component_access_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/compose_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/copy_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/counter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/closable.hpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/constants.hpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/filters.hpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/null_padded_codecvt.hpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/operation_sequence.hpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/sequence.hpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/temp_file.hpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/utf8_codecvt_facet.cpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/utf8_codecvt_facet.hpp (props changed)
branches/CMake/release/libs/iostreams/test/detail/verification.hpp (props changed)
branches/CMake/release/libs/iostreams/test/direct_adapter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/example_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/execute_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/file_descriptor_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/file_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/filter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/filtering_stream_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/finite_state_filter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/flush_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/gzip_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/invert_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/large_file_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/line_filter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/mapped_file_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/newline_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/null_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/operation_sequence_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/pipeline_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/putback_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_bidir_filter_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_bidir_streambuf_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_bidir_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_input_filter_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_input_istream_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_input_seq_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_input_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_seekable_seq_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/read_seekable_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/regex_filter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/restrict_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/seek_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/seekable_file_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/seekable_filter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/sequence_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/stdio_filter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/symmetric_filter_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/tee_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/wide_stream_test.cpp (props changed)
branches/CMake/release/libs/iostreams/test/write_bidir_filter_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_bidir_streambuf_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_bidir_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_output_filter_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_output_iterator_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_output_ostream_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_output_seq_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_output_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_seekable_seq_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/write_seekable_test.hpp (props changed)
branches/CMake/release/libs/iostreams/test/zlib_test.cpp (props changed)
branches/CMake/release/libs/iterator/doc/BidirectionalTraversal.rst (props changed)
branches/CMake/release/libs/iterator/doc/ForwardTraversal.rst (props changed)
branches/CMake/release/libs/iterator/doc/GNUmakefile (props changed)
branches/CMake/release/libs/iterator/doc/IncrementableIterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/LvalueIterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/ReadableIterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/SinglePassIterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/SwappableIterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/WritableIterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/counting_iterator.pdf (props changed)
branches/CMake/release/libs/iterator/doc/docutils.sty (props changed)
branches/CMake/release/libs/iterator/doc/facade-and-adaptor.html (props changed)
branches/CMake/release/libs/iterator/doc/facade-and-adaptor.pdf (props changed)
branches/CMake/release/libs/iterator/doc/facade_iterator_category.rst (props changed)
branches/CMake/release/libs/iterator/doc/filter_iterator.pdf (props changed)
branches/CMake/release/libs/iterator/doc/function_output_iterator.pdf (props changed)
branches/CMake/release/libs/iterator/doc/index.html (props changed)
branches/CMake/release/libs/iterator/doc/index.rst (props changed)
branches/CMake/release/libs/iterator/doc/indirect_iterator.pdf (props changed)
branches/CMake/release/libs/iterator/doc/indirect_reference_ref.rst (props changed)
branches/CMake/release/libs/iterator/doc/interoperability-revisited.rst (props changed)
branches/CMake/release/libs/iterator/doc/issues.rst (props changed)
branches/CMake/release/libs/iterator/doc/iterator_adaptor.pdf (props changed)
branches/CMake/release/libs/iterator/doc/iterator_adaptor_tutorial.rst (props changed)
branches/CMake/release/libs/iterator/doc/iterator_archetypes.html (props changed)
branches/CMake/release/libs/iterator/doc/iterator_archetypes.pdf (props changed)
branches/CMake/release/libs/iterator/doc/iterator_archetypes.rst (props changed)
branches/CMake/release/libs/iterator/doc/iterator_concepts.pdf (props changed)
branches/CMake/release/libs/iterator/doc/iterator_concepts.rst (props changed)
branches/CMake/release/libs/iterator/doc/iterator_facade.pdf (props changed)
branches/CMake/release/libs/iterator/doc/iterator_facade_tutorial.rst (props changed)
branches/CMake/release/libs/iterator/doc/iterator_traits.html (props changed)
branches/CMake/release/libs/iterator/doc/iterator_traits.pdf (props changed)
branches/CMake/release/libs/iterator/doc/iterator_traits.rst (props changed)
branches/CMake/release/libs/iterator/doc/make_counting_iterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/make_filter_iterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/make_transform_iterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/make_zip_iterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/new-iter-concepts.html (props changed)
branches/CMake/release/libs/iterator/doc/new-iter-concepts.pdf (props changed)
branches/CMake/release/libs/iterator/doc/permutation_iterator.pdf (props changed)
branches/CMake/release/libs/iterator/doc/pointee.html (props changed)
branches/CMake/release/libs/iterator/doc/pointee.pdf (props changed)
branches/CMake/release/libs/iterator/doc/pointee.rst (props changed)
branches/CMake/release/libs/iterator/doc/pointee_ref.rst (props changed)
branches/CMake/release/libs/iterator/doc/reverse_iterator.pdf (props changed)
branches/CMake/release/libs/iterator/doc/rst2html (props changed)
branches/CMake/release/libs/iterator/doc/transform_iterator.pdf (props changed)
branches/CMake/release/libs/iterator/doc/transform_iterator_eg.rst (props changed)
branches/CMake/release/libs/iterator/doc/zip_iterator.html (props changed)
branches/CMake/release/libs/iterator/doc/zip_iterator.pdf (props changed)
branches/CMake/release/libs/iterator/doc/zip_iterator.rst (props changed)
branches/CMake/release/libs/iterator/doc/zip_iterator_abstract.rst (props changed)
branches/CMake/release/libs/iterator/doc/zip_iterator_eg.rst (props changed)
branches/CMake/release/libs/iterator/doc/zip_iterator_ref.rst (props changed)
branches/CMake/release/libs/iterator/example/node.hpp (props changed)
branches/CMake/release/libs/iterator/example/node_iterator1.cpp (props changed)
branches/CMake/release/libs/iterator/example/node_iterator1.hpp (props changed)
branches/CMake/release/libs/iterator/example/node_iterator2.cpp (props changed)
branches/CMake/release/libs/iterator/example/node_iterator2.hpp (props changed)
branches/CMake/release/libs/iterator/example/node_iterator3.cpp (props changed)
branches/CMake/release/libs/iterator/example/node_iterator3.hpp (props changed)
branches/CMake/release/libs/iterator/index.html (props changed)
branches/CMake/release/libs/iterator/test/constant_iter_arrow.cpp (props changed)
branches/CMake/release/libs/iterator/test/constant_iter_arrow_fail.cpp (props changed)
branches/CMake/release/libs/iterator/test/interoperable.cpp (props changed)
branches/CMake/release/libs/iterator/test/is_lvalue_iterator.cpp (props changed)
branches/CMake/release/libs/iterator/test/is_readable_iterator.cpp (props changed)
branches/CMake/release/libs/iterator/test/iter_archetype_default_ctor.cpp (props changed)
branches/CMake/release/libs/iterator/test/iterator_facade.cpp (props changed)
branches/CMake/release/libs/iterator/test/pointee.cpp (props changed)
branches/CMake/release/libs/iterator/test/zip_iterator_test.cpp (props changed)
branches/CMake/release/libs/lambda/doc/detail/lambda_doc.xml (props changed)
branches/CMake/release/libs/lambda/test/Makefile (props changed)
branches/CMake/release/libs/mpl/book/chapter1/binary.hpp (props changed)
branches/CMake/release/libs/mpl/example/fsm/player1.cpp (props changed)
branches/CMake/release/libs/mpl/example/fsm/player2.cpp (props changed)
branches/CMake/release/libs/numeric/conversion/doc/html/boostbook.css (props changed)
branches/CMake/release/libs/optional/doc/html/boostbook.css (props changed)
branches/CMake/release/libs/parameter/doc/Jamfile.v2 (props changed)
branches/CMake/release/libs/parameter/doc/html/index.html (props changed)
branches/CMake/release/libs/parameter/doc/html/reference.html (props changed)
branches/CMake/release/libs/parameter/doc/html/rst.css (props changed)
branches/CMake/release/libs/parameter/doc/html/vellipsis.gif (props changed)
branches/CMake/release/libs/parameter/doc/index.rst (props changed)
branches/CMake/release/libs/parameter/doc/python.rst (props changed)
branches/CMake/release/libs/parameter/doc/reference.rst (props changed)
branches/CMake/release/libs/parameter/index.html (props changed)
branches/CMake/release/libs/parameter/test/basics.cpp (props changed)
branches/CMake/release/libs/parameter/test/basics.hpp (props changed)
branches/CMake/release/libs/parameter/test/deduced.cpp (props changed)
branches/CMake/release/libs/parameter/test/deduced.hpp (props changed)
branches/CMake/release/libs/parameter/test/deduced_dependent_predicate.cpp (props changed)
branches/CMake/release/libs/parameter/test/deduced_unmatched_arg.cpp (props changed)
branches/CMake/release/libs/parameter/test/duplicates.cpp (props changed)
branches/CMake/release/libs/parameter/test/earwicker.cpp (props changed)
branches/CMake/release/libs/parameter/test/efficiency.cpp (props changed)
branches/CMake/release/libs/parameter/test/macros.cpp (props changed)
branches/CMake/release/libs/parameter/test/maybe.cpp (props changed)
branches/CMake/release/libs/parameter/test/mpl.cpp (props changed)
branches/CMake/release/libs/parameter/test/normalized_argument_types.cpp (props changed)
branches/CMake/release/libs/parameter/test/ntp.cpp (props changed)
branches/CMake/release/libs/parameter/test/optional_deduced_sfinae.cpp (props changed)
branches/CMake/release/libs/parameter/test/preprocessor.cpp (props changed)
branches/CMake/release/libs/parameter/test/preprocessor_deduced.cpp (props changed)
branches/CMake/release/libs/parameter/test/python_test.cpp (props changed)
branches/CMake/release/libs/parameter/test/sfinae.cpp (props changed)
branches/CMake/release/libs/parameter/test/singular.cpp (props changed)
branches/CMake/release/libs/parameter/test/timings.txt (props changed)
branches/CMake/release/libs/parameter/test/tutorial.cpp (props changed)
branches/CMake/release/libs/parameter/test/unwrap_cv_reference.cpp (props changed)
branches/CMake/release/libs/ptr_container/doc/associative_ptr_container.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/boost.png (props changed)
branches/CMake/release/libs/ptr_container/doc/conventions.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/default.css (props changed)
branches/CMake/release/libs/ptr_container/doc/examples.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/faq.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/guidelines.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/headers.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/indirect_fun.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_array.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_container.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_deque.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_list.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_map.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_map_adapter.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_multimap.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_multimap_adapter.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_multiset.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_multiset_adapter.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_sequence_adapter.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_set.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_set_adapter.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/ptr_vector.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/reference.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/reversible_ptr_container.rst (props changed)
branches/CMake/release/libs/ptr_container/doc/todo.txt (props changed)
branches/CMake/release/libs/ptr_container/doc/tutorial.rst (props changed)
branches/CMake/release/libs/ptr_container/index.html (props changed)
branches/CMake/release/libs/ptr_container/test/Jamfile.v2 (props changed)
branches/CMake/release/libs/ptr_container/test/associative_test_data.hpp (props changed)
branches/CMake/release/libs/ptr_container/test/incomplete_type_test.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/indirect_fun.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/iterator_test.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/no_exceptions.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/pointainer_speed.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_array.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_container_adapter.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_deque.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_list.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_map.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_map_adapter.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_set.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_vector.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/ptr_vector_size.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/sequence_test_data.hpp (props changed)
branches/CMake/release/libs/ptr_container/test/serialization.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/simple_test.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/test_data.hpp (props changed)
branches/CMake/release/libs/ptr_container/test/tree_test.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/tut1.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/tut34.cpp (props changed)
branches/CMake/release/libs/ptr_container/test/view_example.cpp (props changed)
branches/CMake/release/libs/python/doc/PyConDC_2003/bpl.html (props changed)
branches/CMake/release/libs/python/doc/PyConDC_2003/bpl.pdf (props changed)
branches/CMake/release/libs/python/doc/PyConDC_2003/python_cpp_mix.jpg (props changed)
branches/CMake/release/libs/python/doc/PyConDC_2003/python_cpp_mix.png (props changed)
branches/CMake/release/libs/python/doc/internals.html (props changed)
branches/CMake/release/libs/python/doc/internals.rst (props changed)
branches/CMake/release/libs/python/doc/tutorial/doc/html/images/alert.png (props changed)
branches/CMake/release/libs/python/doc/tutorial/doc/html/images/home.png (props changed)
branches/CMake/release/libs/python/doc/tutorial/doc/html/images/next.png (props changed)
branches/CMake/release/libs/python/doc/tutorial/doc/html/images/note.png (props changed)
branches/CMake/release/libs/python/doc/tutorial/doc/html/images/prev.png (props changed)
branches/CMake/release/libs/python/doc/tutorial/doc/html/images/tip.png (props changed)
branches/CMake/release/libs/python/doc/tutorial/doc/html/images/up.png (props changed)
branches/CMake/release/libs/python/doc/v2/Extractor.html (props changed)
branches/CMake/release/libs/python/doc/v2/HolderGenerator.html (props changed)
branches/CMake/release/libs/python/doc/v2/instance_holder.html (props changed)
branches/CMake/release/libs/python/doc/v2/lvalue_from_pytype.html (props changed)
branches/CMake/release/libs/python/doc/v2/operators.html (props changed)
branches/CMake/release/libs/python/doc/v2/raw_function.html (props changed)
branches/CMake/release/libs/python/doc/v2/return_arg.html (props changed)
branches/CMake/release/libs/python/doc/v2/stl_iterator.html (props changed)
branches/CMake/release/libs/python/doc/v2/type_id.html (props changed)
branches/CMake/release/libs/python/doc/v2/wrapper.html (props changed)
branches/CMake/release/libs/python/example/Jamroot (props changed)
branches/CMake/release/libs/python/example/boost-build.jam (props changed)
branches/CMake/release/libs/python/example/quickstart/Jamroot (props changed)
branches/CMake/release/libs/python/example/tutorial/Jamroot (props changed)
branches/CMake/release/libs/python/src/object/function_doc_signature.cpp (props changed)
branches/CMake/release/libs/python/src/object/stl_iterator.cpp (props changed)
branches/CMake/release/libs/python/src/object_protocol.cpp (props changed)
branches/CMake/release/libs/python/src/wrapper.cpp (props changed)
branches/CMake/release/libs/python/test/a_map_indexing_suite.cpp (props changed)
branches/CMake/release/libs/python/test/andreas_beyer.cpp (props changed)
branches/CMake/release/libs/python/test/borrowed.cpp (props changed)
branches/CMake/release/libs/python/test/cltree.cpp (props changed)
branches/CMake/release/libs/python/test/copy_ctor_mutates_rhs.cpp (props changed)
branches/CMake/release/libs/python/test/crossmod_exception_a.cpp (props changed)
branches/CMake/release/libs/python/test/crossmod_exception_b.cpp (props changed)
branches/CMake/release/libs/python/test/injected.cpp (props changed)
branches/CMake/release/libs/python/test/int_map_indexing_suite.cpp (props changed)
branches/CMake/release/libs/python/test/keywords.cpp (props changed)
branches/CMake/release/libs/python/test/object.cpp (props changed)
branches/CMake/release/libs/python/test/object_fail1.cpp (props changed)
branches/CMake/release/libs/python/test/object_manager.cpp (props changed)
branches/CMake/release/libs/python/test/operators.cpp (props changed)
branches/CMake/release/libs/python/test/polymorphism2.cpp (props changed)
branches/CMake/release/libs/python/test/polymorphism2_auto_ptr.cpp (props changed)
branches/CMake/release/libs/python/test/properties.cpp (props changed)
branches/CMake/release/libs/python/test/raw_ctor.cpp (props changed)
branches/CMake/release/libs/python/test/raw_pyobject_fail1.cpp (props changed)
branches/CMake/release/libs/python/test/raw_pyobject_fail2.cpp (props changed)
branches/CMake/release/libs/python/test/result.cpp (props changed)
branches/CMake/release/libs/python/test/return_arg.cpp (props changed)
branches/CMake/release/libs/python/test/stl_iterator.cpp (props changed)
branches/CMake/release/libs/python/test/upcast.cpp (props changed)
branches/CMake/release/libs/python/test/voidptr.cpp (props changed)
branches/CMake/release/libs/python/test/wrapper_held_type.cpp (props changed)
branches/CMake/release/libs/python/todo.html (props changed)
branches/CMake/release/libs/range/doc/examples.html (props changed)
branches/CMake/release/libs/range/doc/faq.html (props changed)
branches/CMake/release/libs/range/doc/headers.html (props changed)
branches/CMake/release/libs/range/doc/history_ack.html (props changed)
branches/CMake/release/libs/range/doc/intro.html (props changed)
branches/CMake/release/libs/range/doc/portability.html (props changed)
branches/CMake/release/libs/range/doc/range.html (props changed)
branches/CMake/release/libs/range/doc/style.css (props changed)
branches/CMake/release/libs/range/doc/style.html (props changed)
branches/CMake/release/libs/range/index.html (props changed)
branches/CMake/release/libs/range/test/adl_conformance.cpp (props changed)
branches/CMake/release/libs/range/test/adl_conformance_no_using.cpp (props changed)
branches/CMake/release/libs/range/test/algorithm_example.cpp (props changed)
branches/CMake/release/libs/range/test/array.cpp (props changed)
branches/CMake/release/libs/range/test/compat2.cpp (props changed)
branches/CMake/release/libs/range/test/compat3.cpp (props changed)
branches/CMake/release/libs/range/test/const_ranges.cpp (props changed)
branches/CMake/release/libs/range/test/extension_mechanism.cpp (props changed)
branches/CMake/release/libs/range/test/iterator_pair.cpp (props changed)
branches/CMake/release/libs/range/test/iterator_range.cpp (props changed)
branches/CMake/release/libs/range/test/mfc.cpp (props changed)
branches/CMake/release/libs/range/test/partial_workaround.cpp (props changed)
branches/CMake/release/libs/range/test/reversible_range.cpp (props changed)
branches/CMake/release/libs/range/test/std_container.cpp (props changed)
branches/CMake/release/libs/range/test/string.cpp (props changed)
branches/CMake/release/libs/range/test/sub_range.cpp (props changed)
branches/CMake/release/libs/test/build/msvc71_proj/algorithms_test.vcproj (props changed)
branches/CMake/release/libs/test/build/msvc71_proj/custom_exception_test.vcproj (props changed)
branches/CMake/release/libs/test/build/msvc71_proj/exec_mon_example.vcproj (props changed)
branches/CMake/release/libs/test/build/msvc71_proj/ifstream_line_it_tst.vcproj (props changed)
branches/CMake/release/libs/test/build/msvc71_proj/test_case_template_ex.vcproj (props changed)
branches/CMake/release/libs/test/build/msvc71_proj/token_iterator_test.vcproj (props changed)
branches/CMake/release/libs/test/doc/components/test_tools/reference/BOOST_CHECK_EQUAL_COLL.html (props changed)
branches/CMake/release/libs/test/doc/components/utf/compilation.html (props changed)
branches/CMake/release/libs/test/doc/components/utf/components/test_case/abstract_interface.html (contents, props changed)
branches/CMake/release/libs/test/doc/components/utf/components/test_case/class_tc.html (contents, props changed)
branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_boost_function_tc.html (contents, props changed)
branches/CMake/release/libs/test/doc/components/utf/components/test_case/tc_template.html (contents, props changed)
branches/CMake/release/libs/test/doc/components/utf/components/test_log/custom_log_formatter.html (contents, props changed)
branches/CMake/release/libs/test/doc/components/utf/components/test_log/index.html (contents, props changed)
branches/CMake/release/libs/test/example/cla/Jamfile (props changed)
branches/CMake/release/libs/test/example/cla/assign_to.cpp (props changed)
branches/CMake/release/libs/test/example/cla/basic_float.cpp (props changed)
branches/CMake/release/libs/test/example/cla/basic_int.cpp (props changed)
branches/CMake/release/libs/test/example/cla/basic_list.cpp (props changed)
branches/CMake/release/libs/test/example/cla/basic_string.cpp (props changed)
branches/CMake/release/libs/test/example/cla/basic_udt.cpp (props changed)
branches/CMake/release/libs/test/example/cla/char_parameter.cpp (props changed)
branches/CMake/release/libs/test/example/cla/custom_handler.cpp (props changed)
branches/CMake/release/libs/test/example/cla/custom_interpreter.cpp (props changed)
branches/CMake/release/libs/test/example/cla/custom_parameter.cpp (props changed)
branches/CMake/release/libs/test/example/cla/default_value.cpp (props changed)
branches/CMake/release/libs/test/example/cla/dual_name.cpp (props changed)
branches/CMake/release/libs/test/example/cla/global.cpp (props changed)
branches/CMake/release/libs/test/example/cla/guess_name.cpp (props changed)
branches/CMake/release/libs/test/example/cla/help.cpp (props changed)
branches/CMake/release/libs/test/example/cla/ignore_mismatch.cpp (props changed)
branches/CMake/release/libs/test/example/cla/input_separator.cpp (props changed)
branches/CMake/release/libs/test/example/cla/multiplicable.cpp (props changed)
branches/CMake/release/libs/test/example/cla/name.cpp (props changed)
branches/CMake/release/libs/test/example/cla/optional.cpp (props changed)
branches/CMake/release/libs/test/example/cla/optional_value.cpp (props changed)
branches/CMake/release/libs/test/example/cla/positional.cpp (props changed)
branches/CMake/release/libs/test/example/cla/prefix.cpp (props changed)
branches/CMake/release/libs/test/example/cla/reference.cpp (props changed)
branches/CMake/release/libs/test/example/cla/remainder.cpp (props changed)
branches/CMake/release/libs/test/example/cla/separator.cpp (props changed)
branches/CMake/release/libs/test/example/cla/usage.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/Jamfile (props changed)
branches/CMake/release/libs/test/example/cla/validation/access_unknown.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/ambiguous_access.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/ambiguous_input.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/definition_conflict.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/invalid_short_name.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/multiple_generators.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/multiple_value_handlers.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/opt_with_default_value.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/optional_plus_multiplicable.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/required_missing.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/unexpected_input.cpp (props changed)
branches/CMake/release/libs/test/example/cla/validation/unexpected_repetition.cpp (props changed)
branches/CMake/release/libs/test/example/cla/wide_string.cpp (props changed)
branches/CMake/release/libs/test/example/env/Jamfile (props changed)
branches/CMake/release/libs/test/example/env/custom_interpreter_env.cpp (props changed)
branches/CMake/release/libs/test/example/env/env_var_default_value.cpp (props changed)
branches/CMake/release/libs/test/example/env/environment_ex.cpp (props changed)
branches/CMake/release/libs/test/example/env/global_id.cpp (props changed)
branches/CMake/release/libs/test/example/env/modifier_combination.cpp (props changed)
branches/CMake/release/libs/test/example/env/validation/Jamfile (props changed)
branches/CMake/release/libs/test/example/env/validation/need_typed_access.cpp (props changed)
branches/CMake/release/libs/test/example/env/variable_ex.cpp (props changed)
branches/CMake/release/libs/test/example/named_param_example.cpp (props changed)
branches/CMake/release/libs/test/test/algorithms_test.cpp (props changed)
branches/CMake/release/libs/test/test/config_file_iterator_test.cpp (props changed)
branches/CMake/release/libs/test/test/config_file_test.cpp (props changed)
branches/CMake/release/libs/test/test/foreach_test.cpp (props changed)
branches/CMake/release/libs/test/test/test_files/cfg_file_tst1.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/cfg_file_tst2.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/cfg_file_tst3.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/cfg_file_tst4.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/cfg_file_tst5.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/cfg_file_tst6.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/cfg_file_tst7.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/errors_handling_test.pattern2 (props changed)
branches/CMake/release/libs/test/test/test_files/par_alias1.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/par_alias2.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/par_alias3.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_broken_line.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_comments_and_blanks.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_constructor.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_define.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_ifdef.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_ifdef1.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_ifdef2.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_ifdef3.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_ifdef4.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_include1.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_include1_include1.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_include2.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_include3.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_incomplete_broken_line.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_macro_def1.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_macro_subst1.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_macro_subst2.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_macro_subst3.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_macro_subst4.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value1.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value10.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value11.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value12.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value13.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value2.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value3.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value4.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value5.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value6.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value7.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value8.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_multipart_value9.cfg (props changed)
branches/CMake/release/libs/test/test/test_files/test_undef.cfg (props changed)
branches/CMake/release/libs/thread/src/pthread/once.cpp (props changed)
branches/CMake/release/libs/type_traits/test/decay_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/extent_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/has_virtual_destructor_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/is_abstract_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/is_base_of_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/is_floating_point_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/is_member_obj_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/is_signed_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/is_unsigned_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/promote_basic_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/promote_enum_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/promote_mpl_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/promote_util.hpp (props changed)
branches/CMake/release/libs/type_traits/test/rank_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/remove_all_extents_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/remove_extent_test.cpp (props changed)
branches/CMake/release/libs/type_traits/test/tricky_is_enum_test.cpp (props changed)
branches/CMake/release/libs/typeof/index.html (props changed)
branches/CMake/release/libs/typeof/test/data_member.cpp (props changed)
branches/CMake/release/libs/typeof/test/function.cpp (props changed)
branches/CMake/release/libs/typeof/test/function_binding.cpp (props changed)
branches/CMake/release/libs/typeof/test/function_ptr.cpp (props changed)
branches/CMake/release/libs/typeof/test/function_ptr_from_tpl.cpp (props changed)
branches/CMake/release/libs/typeof/test/function_ref.cpp (props changed)
branches/CMake/release/libs/typeof/test/member_function.cpp (props changed)
branches/CMake/release/libs/typeof/test/modifiers.cpp (props changed)
branches/CMake/release/libs/typeof/test/noncopyable.cpp (props changed)
branches/CMake/release/libs/typeof/test/odr.hpp (props changed)
branches/CMake/release/libs/typeof/test/odr1.cpp (props changed)
branches/CMake/release/libs/typeof/test/odr2.cpp (props changed)
branches/CMake/release/libs/typeof/test/odr_no_uns1.cpp (props changed)
branches/CMake/release/libs/typeof/test/odr_no_uns1.hpp (props changed)
branches/CMake/release/libs/typeof/test/odr_no_uns2.cpp (props changed)
branches/CMake/release/libs/typeof/test/odr_no_uns2.hpp (props changed)
branches/CMake/release/libs/typeof/test/std.cpp (props changed)
branches/CMake/release/libs/typeof/test/template_dependent.cpp (props changed)
branches/CMake/release/libs/typeof/test/template_enum.cpp (props changed)
branches/CMake/release/libs/typeof/test/template_int.cpp (props changed)
branches/CMake/release/libs/typeof/test/template_multiword.cpp (props changed)
branches/CMake/release/libs/typeof/test/template_tpl.cpp (props changed)
branches/CMake/release/libs/typeof/test/template_type.cpp (props changed)
branches/CMake/release/libs/typeof/test/test.hpp (props changed)
branches/CMake/release/libs/typeof/test/type.cpp (props changed)
branches/CMake/release/libs/utility/test/next_prior_test.cpp (props changed)
branches/CMake/release/libs/xpressive/doc/Jamfile.v2 (props changed)
branches/CMake/release/libs/xpressive/doc/acknowledgements.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/actions.qbk (contents, props changed)
branches/CMake/release/libs/xpressive/doc/concepts.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/dynamic_regexes.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/examples.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/grammars.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/history.qbk (contents, props changed)
branches/CMake/release/libs/xpressive/doc/installation.qbk (contents, props changed)
branches/CMake/release/libs/xpressive/doc/introduction.qbk (contents, props changed)
branches/CMake/release/libs/xpressive/doc/matching.qbk (contents, props changed)
branches/CMake/release/libs/xpressive/doc/nyi.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/perf.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/preface.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/quick_start.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/regexpp_diffs.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/results.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/static_regexes.qbk (contents, props changed)
branches/CMake/release/libs/xpressive/doc/substitutions.qbk (contents, props changed)
branches/CMake/release/libs/xpressive/doc/symbols.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/tips_n_tricks.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/tokenization.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/traits.qbk (props changed)
branches/CMake/release/libs/xpressive/doc/xpressive.qbk (props changed)
branches/CMake/release/libs/xpressive/example/Jamfile.v2 (props changed)
branches/CMake/release/libs/xpressive/example/example.vcproj (props changed)
branches/CMake/release/libs/xpressive/example/main.cpp (props changed)
branches/CMake/release/libs/xpressive/example/numbers.cpp (props changed)
branches/CMake/release/libs/xpressive/index.html (props changed)
branches/CMake/release/libs/xpressive/perf/Jamfile.v2 (props changed)
branches/CMake/release/libs/xpressive/perf/command_line.cpp (props changed)
branches/CMake/release/libs/xpressive/perf/gcc/long_twain_search.xml (props changed)
branches/CMake/release/libs/xpressive/perf/gcc/short_matches.xml (props changed)
branches/CMake/release/libs/xpressive/perf/gcc/short_twain_search.xml (props changed)
branches/CMake/release/libs/xpressive/perf/main.cpp (props changed)
branches/CMake/release/libs/xpressive/perf/msvc/long_twain_search.xml (props changed)
branches/CMake/release/libs/xpressive/perf/msvc/short_matches.xml (props changed)
branches/CMake/release/libs/xpressive/perf/msvc/short_twain_search.xml (props changed)
branches/CMake/release/libs/xpressive/perf/regex_comparison.hpp (props changed)
branches/CMake/release/libs/xpressive/perf/time_boost.cpp (props changed)
branches/CMake/release/libs/xpressive/perf/time_dynamic_xpressive.cpp (props changed)
branches/CMake/release/libs/xpressive/perf/time_static_xpressive.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/doc/Jamfile.v2 (props changed)
branches/CMake/release/libs/xpressive/proto/doc/acknowledgements.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/calculator.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/construction.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/evaluation.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/examples.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/extensibility.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/grammars.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/history.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/boostbook.css (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/alert.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/1.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/10.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/11.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/12.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/13.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/14.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/15.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/2.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/3.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/4.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/5.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/6.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/7.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/8.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/callouts/9.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/caution.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/home.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/important.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/next.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/note.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/prev.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/smiley.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/tip.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/up.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/html/images/warning.png (props changed)
branches/CMake/release/libs/xpressive/proto/doc/implementation.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/installation.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/preface.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/proto.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/protodoc.xml (props changed)
branches/CMake/release/libs/xpressive/proto/doc/quick_start.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/rationale.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/doc/transforms.qbk (props changed)
branches/CMake/release/libs/xpressive/proto/example/Jamfile.v2 (props changed)
branches/CMake/release/libs/xpressive/proto/example/calc1.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/calc2.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/calc3.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/hello.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/lazy_vector.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/mixed.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/rgb.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/tarray.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/vec3.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/example/vector.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/test/Jamfile.v2 (props changed)
branches/CMake/release/libs/xpressive/proto/test/calculator.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/test/examples.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/test/lambda.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/test/matches.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/test/proto_fusion.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/test/proto_fusion_s.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/test/toy_spirit.cpp (props changed)
branches/CMake/release/libs/xpressive/proto/test/toy_spirit2.cpp (props changed)
branches/CMake/release/libs/xpressive/test/Jamfile.v2 (props changed)
branches/CMake/release/libs/xpressive/test/c_traits.cpp (props changed)
branches/CMake/release/libs/xpressive/test/misc1.cpp (props changed)
branches/CMake/release/libs/xpressive/test/misc2.cpp (props changed)
branches/CMake/release/libs/xpressive/test/multiple_defs1.cpp (props changed)
branches/CMake/release/libs/xpressive/test/multiple_defs2.cpp (props changed)
branches/CMake/release/libs/xpressive/test/regress.cpp (props changed)
branches/CMake/release/libs/xpressive/test/regress.ipp (props changed)
branches/CMake/release/libs/xpressive/test/regress.txt (props changed)
branches/CMake/release/libs/xpressive/test/test.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test1.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test1.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test10.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test10.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test10u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test11.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test11.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test11u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test1u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test2.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test2.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test2u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test3.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test3.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test3u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test4.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test4.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test4u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test5.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test5.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test5u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test6.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test6.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test6u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test7.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test7.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test7u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test8.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test8.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test8u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test9.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test9.hpp (props changed)
branches/CMake/release/libs/xpressive/test/test9u.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_actions.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_assert.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_basic_regex.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_cycles.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_dynamic.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_dynamic_grammar.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_match_results.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_non_char.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_partial_match.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_regex_algorithms.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_regex_compiler.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_regex_constants.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_regex_error.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_regex_iterator.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_regex_primitives.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_regex_token_iterator.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_regex_traits.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_static.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_sub_match.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_symbols.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_typeof.cpp (props changed)
branches/CMake/release/libs/xpressive/test/test_typeof2.cpp (props changed)
branches/CMake/release/libs/xpressive/tools/Jamfile.v2 (props changed)
branches/CMake/release/libs/xpressive/tools/perl2xpr.cpp (props changed)
branches/CMake/release/rst.css (props changed)
branches/CMake/release/tools/boostbook/xsl/global.xsl (props changed)
branches/CMake/release/tools/build/v2/build-system.jam (props changed)
branches/CMake/release/tools/build/v2/debian/rules (props changed)
branches/CMake/release/tools/build/v2/kernel/boost-build.jam (props changed)
branches/CMake/release/tools/build/v2/kernel/bootstrap.jam (props changed)
branches/CMake/release/tools/build/v2/kernel/errors.jam (props changed)
branches/CMake/release/tools/build/v2/kernel/modules.jam (props changed)
branches/CMake/release/tools/build/v2/options/help.jam (props changed)
branches/CMake/release/tools/build/v2/tools/docutils.jam (props changed)
branches/CMake/release/tools/build/v2/util/indirect.jam (props changed)
branches/CMake/release/tools/inspect/minmax_check.cpp (props changed)
branches/CMake/release/tools/inspect/minmax_check.hpp (props changed)
branches/CMake/release/tools/jam/src/boehm_gc/cord/de_win.ICO (props changed)
branches/CMake/release/tools/jam/src/boehm_gc/mallocx.c (props changed)
branches/CMake/release/tools/jam/src/boehm_gc/misc.c (props changed)
branches/CMake/release/tools/jam/src/boehm_gc/typd_mlc.c (props changed)
branches/CMake/release/tools/jam/src/boehm_gc/win32_threads.c (props changed)
branches/CMake/release/tools/quickbook/Jamfile.v2 (props changed)
branches/CMake/release/tools/quickbook/detail/actions.hpp (props changed)
branches/CMake/release/tools/quickbook/detail/quickbook.cpp (props changed)
branches/CMake/release/tools/quickbook/detail/utils.hpp (props changed)
branches/CMake/release/tools/quickbook/doc/Jamfile.v2 (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/alert.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/extra/katepart/boost.hs.logo.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/home.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/next.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/note.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/prev.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/smiley.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/tip.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/images/up.png (props changed)
branches/CMake/release/tools/quickbook/doc/html/index.html (props changed)
branches/CMake/release/tools/quickbook/doc/html/quickbook/ref.html (props changed)
branches/CMake/release/tools/quickbook/doc/html/quickbook/syntax.html (props changed)
branches/CMake/release/tools/quickbook/doc/quickbook.qbk (props changed)
branches/CMake/release/tools/quickbook/doc_info.hpp (props changed)
branches/CMake/release/tools/quickbook/extra/katepart/syntax/boost_hs_boost.xml (props changed)
branches/CMake/release/tools/quickbook/extra/katepart/syntax/boost_hs_cpp.xml (props changed)
branches/CMake/release/tools/quickbook/extra/katepart/syntax/boost_hs_quickbook.xml (props changed)
branches/CMake/release/tools/quickbook/extra/katepart/syntax/boost_hs_std.xml (props changed)
branches/CMake/release/tools/quickbook/index.html (props changed)
branches/CMake/release/tools/quickbook/syntax_highlight.hpp (props changed)
branches/CMake/release/wiki/index.html (props changed)
Binary files modified:
branches/CMake/release/libs/date_time/src/date_time.doc
Text files modified:
branches/CMake/release/Jamroot | 69 ++++++++++----
branches/CMake/release/boost/asio/detail/strand_service.hpp | 6
branches/CMake/release/boost/circular_buffer/base.hpp | 37 +++++--
branches/CMake/release/boost/circular_buffer/details.hpp | 4
branches/CMake/release/boost/circular_buffer/space_optimized.hpp | 27 +++-
branches/CMake/release/boost/concept/requires.hpp | 8 +
branches/CMake/release/boost/date_time/testfrmwk.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_acc_ia64.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_cw_ppc.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_cw_x86.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_gcc_ia64.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_gcc_ppc.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_gcc_sparc.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_gcc_x86.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_nt.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_pt.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_solaris.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_sync.hpp | 2
branches/CMake/release/boost/detail/sp_counted_base_w32.hpp | 2
branches/CMake/release/boost/function_types/components.hpp | 122 +++++++++++++------------
branches/CMake/release/boost/function_types/detail/cv_traits.hpp | 14 +-
branches/CMake/release/boost/function_types/detail/pp_arity_loop.hpp | 12 +
branches/CMake/release/boost/function_types/detail/pp_cc_loop/master.hpp | 8
branches/CMake/release/boost/function_types/detail/pp_cc_loop/preprocessed.hpp | 18 +-
branches/CMake/release/boost/function_types/detail/pp_loop.hpp | 4
branches/CMake/release/boost/function_types/detail/pp_variate_loop/master.hpp | 2
branches/CMake/release/boost/function_types/detail/pp_variate_loop/preprocessed.hpp | 40 ++++----
branches/CMake/release/boost/function_types/is_member_object_pointer.hpp | 4
branches/CMake/release/boost/function_types/property_tags.hpp | 2
branches/CMake/release/boost/intrusive/unordered_set.hpp | 4
branches/CMake/release/boost/mpl/aux_/preprocessor/is_seq.hpp | 2
branches/CMake/release/boost/random/uniform_int.hpp | 2
branches/CMake/release/boost/thread/detail/move.hpp | 2
branches/CMake/release/boost/thread/locks.hpp | 3
branches/CMake/release/boost/thread/pthread/shared_mutex.hpp | 49 ++++++++++
branches/CMake/release/boost/thread/pthread/thread.hpp | 17 +++
branches/CMake/release/boost/thread/pthread/thread_data.hpp | 1
branches/CMake/release/boost/thread/pthread/tss.hpp | 2
branches/CMake/release/boost/thread/win32/basic_timed_mutex.hpp | 22 ++++
branches/CMake/release/boost/thread/win32/condition_variable.hpp | 13 ++
branches/CMake/release/boost/thread/win32/once.hpp | 2
branches/CMake/release/boost/thread/win32/shared_mutex.hpp | 114 ++++++++++++++++++++++++
branches/CMake/release/boost/thread/win32/thread.hpp | 19 +++
branches/CMake/release/boost/thread/win32/tss.hpp | 2
branches/CMake/release/boost/wave/util/flex_string.hpp | 4
branches/CMake/release/boost/xpressive/detail/core/finder.hpp | 5 +
branches/CMake/release/boost/xpressive/detail/core/regex_impl.hpp | 1
branches/CMake/release/boost/xpressive/regex_algorithms.hpp | 5
branches/CMake/release/boost/xpressive/traits/cpp_regex_traits.hpp | 2
branches/CMake/release/doc/Jamfile.v2 | 2
branches/CMake/release/doc/src/boost.xml | 2
branches/CMake/release/libs/circular_buffer/doc/circular_buffer.html | 45 +++++----
branches/CMake/release/libs/circular_buffer/doc/space_optimized.html | 43 +++++----
branches/CMake/release/libs/filesystem/doc/do-list.htm | 5
branches/CMake/release/libs/filesystem/doc/faq.htm | 8 -
branches/CMake/release/libs/filesystem/doc/i18n.html | 32 +++---
branches/CMake/release/libs/filesystem/doc/index.htm | 48 +++++-----
branches/CMake/release/libs/filesystem/doc/reference.html | 7
branches/CMake/release/libs/filesystem/src/operations.cpp | 8
branches/CMake/release/libs/function_types/build/Jamfile | 16 ++-
branches/CMake/release/libs/function_types/build/preprocess_arity_loops.cpp | 2
branches/CMake/release/libs/function_types/build/preprocess_cc_names.cpp | 2
branches/CMake/release/libs/function_types/build/preprocess_encoding.cpp | 2
branches/CMake/release/libs/function_types/build/timestamps/cc_names | 1
branches/CMake/release/libs/function_types/doc/Jamfile | 3
branches/CMake/release/libs/function_types/doc/function_types.qbk | 1
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/about_tag_types.html | 25 ++---
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/acknowledgements.html | 26 ++---
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/introduction.html | 38 ++++----
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/rationale.html | 93 +++++++++----------
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference.html | 26 ++---
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/classification.html | 101 +++++++++++----------
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html | 60 ++++++------
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/macros.html | 93 ++++++++++----------
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/synthesis.html | 68 +++++++-------
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/tag_types.html | 100 ++++++++++-----------
branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/use_cases.html | 28 ++---
branches/CMake/release/libs/function_types/doc/html/index.html | 18 +-
branches/CMake/release/libs/function_types/example/fast_mem_fn_example.cpp | 4
branches/CMake/release/libs/function_types/example/interface_example.cpp | 1
branches/CMake/release/libs/function_types/example/interpreter.hpp | 3
branches/CMake/release/libs/function_types/test/custom_ccs/member_ccs.cpp | 2
branches/CMake/release/libs/function_types/test/custom_ccs/member_ccs_exact.cpp | 2
branches/CMake/release/libs/function_types/test/custom_ccs/nonmember_ccs.cpp | 2
branches/CMake/release/libs/function_types/test/custom_ccs/nonmember_ccs_exact.cpp | 2
branches/CMake/release/libs/graph/doc/breadth_first_visit.html | 3
branches/CMake/release/libs/graph/doc/depth_first_search.html | 2
branches/CMake/release/libs/graph/doc/read_graphml.html | 2
branches/CMake/release/libs/graph/doc/read_graphviz.html | 2
branches/CMake/release/libs/graph/doc/sloan_ordering.htm | 2
branches/CMake/release/libs/graph/doc/table_of_contents.html | 2
branches/CMake/release/libs/graph/doc/write_dimacs.html | 2
branches/CMake/release/libs/libraries.htm | 49 +++++-----
branches/CMake/release/libs/maintainers.txt | 1
branches/CMake/release/libs/mpi/doc/mpi.qbk | 3
branches/CMake/release/libs/python/doc/tutorial/doc/html/python/embedding.html | 80 ++++++++--------
branches/CMake/release/libs/python/doc/tutorial/doc/html/python/exception.html | 12 +-
branches/CMake/release/libs/python/doc/tutorial/doc/html/python/exposing.html | 184 +++++++++++++++++++--------------------
branches/CMake/release/libs/python/doc/tutorial/doc/html/python/functions.html | 163 +++++++++++++++++-----------------
branches/CMake/release/libs/python/doc/tutorial/doc/html/python/hello.html | 70 ++++++++------
branches/CMake/release/libs/python/doc/tutorial/doc/html/python/iterators.html | 36 +++---
branches/CMake/release/libs/python/doc/tutorial/doc/html/python/object.html | 89 +++++++++----------
branches/CMake/release/libs/python/doc/tutorial/doc/html/python/techniques.html | 68 +++++++-------
branches/CMake/release/libs/serialization/example/portable_binary_oarchive.hpp | 2
branches/CMake/release/libs/test/doc/components/utf/components/index.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/abstract_interface.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/auto_register_facility.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/boost_function_tc.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/class_tc.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/function_tc.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/index.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_boost_function_tc.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_class_tc.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_function_tc.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_case/tc_template.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_log/custom_log_formatter.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_log/index.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_result/index.html | 2
branches/CMake/release/libs/test/doc/components/utf/components/test_suite/index.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/build_info.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/catch_system_errors.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/detect_memory_leaks.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/index.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/log_format.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/log_level.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/no_result_code.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/output_format.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/random.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/report_format.html | 6
branches/CMake/release/libs/test/doc/components/utf/parameters/report_level.html | 2
branches/CMake/release/libs/test/doc/components/utf/parameters/show_progress.html | 2
branches/CMake/release/libs/test/doc/examples/unit_test_example1.html | 4
branches/CMake/release/libs/test/doc/examples/unit_test_example2.html | 6
branches/CMake/release/libs/test/doc/examples/unit_test_example3.html | 6
branches/CMake/release/libs/test/doc/examples/unit_test_example4.html | 4
branches/CMake/release/libs/test/doc/examples/unit_test_example5.html | 6
branches/CMake/release/libs/test/doc/tutorials/hello_the_testing_world.html | 4
branches/CMake/release/libs/test/doc/tutorials/new_year_resolution.html | 4
branches/CMake/release/libs/thread/doc/Jamfile.v2 | 80 ++++++++++------
branches/CMake/release/libs/thread/src/pthread/thread.cpp | 2
branches/CMake/release/libs/thread/src/win32/tss_pe.cpp | 9 +
branches/CMake/release/libs/thread/test/condition_test_common.hpp | 2
branches/CMake/release/libs/thread/test/shared_mutex_locking_thread.hpp | 8 +
branches/CMake/release/libs/thread/test/test_condition.cpp | 3
branches/CMake/release/libs/thread/test/test_shared_mutex_part_2.cpp | 4
branches/CMake/release/libs/thread/test/test_tss.cpp | 38 ++++++++
branches/CMake/release/libs/thread/test/util.inl | 5
branches/CMake/release/libs/xpressive/doc/actions.qbk | 5
branches/CMake/release/libs/xpressive/doc/history.qbk | 2
branches/CMake/release/libs/xpressive/doc/installation.qbk | 3
branches/CMake/release/libs/xpressive/doc/introduction.qbk | 26 +++--
branches/CMake/release/libs/xpressive/doc/matching.qbk | 33 +++---
branches/CMake/release/libs/xpressive/doc/static_regexes.qbk | 2
branches/CMake/release/libs/xpressive/doc/substitutions.qbk | 110 ++++++++++++++++++++---
branches/CMake/release/more/getting_started/detail/links.rst | 2
branches/CMake/release/more/getting_started/unix-variants.html | 2
branches/CMake/release/more/getting_started/windows.html | 2
branches/CMake/release/status/explicit-failures-markup.xml | 37 ++++---
branches/CMake/release/tools/inspect/link_check.cpp | 58 +++++++++++-
159 files changed, 1696 insertions(+), 1194 deletions(-)
Modified: branches/CMake/release/Jamroot
==============================================================================
--- branches/CMake/release/Jamroot (original)
+++ branches/CMake/release/Jamroot 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,6 +1,6 @@
# Copyright Vladimir Prus 2002-2006.
# Copyright Dave Abrahams 2005-2006.
-# Copyright Rene Rivera 2005-2006.
+# Copyright Rene Rivera 2005-2007.
# Copyright Douglas Gregor 2005.
#
# Distributed under the Boost Software License, Version 1.0.
@@ -39,7 +39,21 @@
#
# Other Options:
#
-# --builddir=DIR Build in this location instead of building
+# --build-type=<type> Build the specified pre-defined set of variations
+# of the libraries. Note, that which variants get
+# built depends on what each library supports.
+#
+# minimal (default) - Builds the single
+# "release" version of the libraries. This
+# release corresponds to specifying:
+# "release <threading>multi <link>shared
+# <runtime-link>shared" as the Boost.Build
+# variant to build.
+#
+# complete - Attempts to build all possible
+# variations.
+#
+# --build-dir=DIR Build in this location instead of building
# within the distribution tree. Recommended!
#
# --toolset=toolset Indicates the toolset to build with.
@@ -109,25 +123,38 @@
constant BOOST_VERSION_TAG : $(version-tag:J="_") ;
-local default-build ;
-if $(__file__:D) = ""
-{
- default-build =
- debug release
- <threading>single <threading>multi
- <link>shared <link>static
- ;
-
- if [ os.name ] = NT
- {
- default-build += <runtime-link>shared <runtime-link>static ;
- }
+# Option to choose how many variants to build. The default is "minimal",
+# which builds only the "release <threading>multi <link>shared" variant.
+local build-type = [ MATCH "^--build-type=(.*)" : [ modules.peek : ARGV ] ] ;
+build-type ?= minimal ;
+if ! ( $(build-type) in minimal complete )
+{
+ build-type = minimal ;
}
-else
+
+# Specify the build variants keyed on the build-type.
+local default-build,minimal =
+ release
+ <threading>multi
+ <link>shared
+ <runtime-link>shared
+ ;
+local default-build,complete =
+ debug release
+ <threading>single <threading>multi
+ <link>shared <link>static
+ <runtime-link>shared <runtime-link>static
+ ;
+
+# Set the default build.
+local default-build = $(default-build,$(build-type)) ;
+
+# We only use the default build when building at the root to
+# avoid having it impact the default regression testing of "debug".
+# TODO: Consider having a "testing" build type instead of this check.
+if $(__file__:D) != ""
{
- default-build =
- debug
- ;
+ default-build = debug ;
}
@@ -293,8 +320,10 @@
# On OSX, version suffix is not needed -- the linker expets
# libFoo.1.2.3.dylib format.
# AIX linkers don't accept version suffixes either.
+ # Pgi compilers can't accept library with version suffix
if $(type) = SHARED_LIB &&
- ! ( [ $(property-set).get <target-os> ] in windows cygwin darwin aix )
+ ( ! ( [ $(property-set).get <target-os> ] in windows cygwin darwin aix ) &&
+ ! ( [ $(property-set).get <toolset> ] in pgi ) )
{
result = $(result).$(BOOST_VERSION) ;
}
Modified: branches/CMake/release/boost/asio/detail/strand_service.hpp
==============================================================================
--- branches/CMake/release/boost/asio/detail/strand_service.hpp (original)
+++ branches/CMake/release/boost/asio/detail/strand_service.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -428,10 +428,9 @@
if (impl->current_handler_ == 0)
{
// This handler now has the lock, so can be dispatched immediately.
- impl->current_handler_ = ptr.get();
+ impl->current_handler_ = ptr.release();
lock.unlock();
this->get_io_service().dispatch(invoke_current_handler(*this, impl));
- ptr.release();
}
else
{
@@ -468,10 +467,9 @@
if (impl->current_handler_ == 0)
{
// This handler now has the lock, so can be dispatched immediately.
- impl->current_handler_ = ptr.get();
+ impl->current_handler_ = ptr.release();
lock.unlock();
this->get_io_service().post(invoke_current_handler(*this, impl));
- ptr.release();
}
else
{
Modified: branches/CMake/release/boost/circular_buffer/base.hpp
==============================================================================
--- branches/CMake/release/boost/circular_buffer/base.hpp (original)
+++ branches/CMake/release/boost/circular_buffer/base.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -679,12 +679,13 @@
Does not invalidate any iterators.
\par Complexity
Constant (in the size of the <code>circular_buffer</code>).
- \sa <code>capacity()</code>, <code>max_size()</code>, <code>reserve()</code>, <code>resize()</code>
+ \sa <code>capacity()</code>, <code>max_size()</code>, <code>reserve()</code>,
+ <code>\link resize() resize(size_type, const_reference)\endlink</code>
*/
size_type size() const { return m_size; }
- //! Get the largest possible size or capacity of the <code>circular_buffer</code>.
- /*!
+ /*! \brief Get the largest possible size or capacity of the <code>circular_buffer</code>. (It depends on
+ allocator's %max_size()).
\return The maximum size/capacity the <code>circular_buffer</code> can be set to.
\throws Nothing.
\par Exception Safety
@@ -753,7 +754,8 @@
Does not invalidate any iterators.
\par Complexity
Constant (in the size of the <code>circular_buffer</code>).
- \sa <code>reserve()</code>, <code>size()</code>, <code>max_size()</code>, <code>set_capacity()</code>
+ \sa <code>reserve()</code>, <code>size()</code>, <code>max_size()</code>,
+ <code>set_capacity(capacity_type)</code>
*/
capacity_type capacity() const { return m_end - m_buff; }
@@ -774,7 +776,8 @@
<code>end()</code>) if the new capacity is different from the original.
\par Complexity
Linear (in <code>min[size(), new_capacity]</code>).
- \sa <code>rset_capacity()</code>, <code>resize()</code>
+ \sa <code>rset_capacity(capacity_type)</code>,
+ <code>\link resize() resize(size_type, const_reference)\endlink</code>
*/
void set_capacity(capacity_type new_capacity) {
if (new_capacity == capacity())
@@ -816,7 +819,8 @@
any iterator.
\par Complexity
Linear (in the new size of the <code>circular_buffer</code>).
- \sa <code>rresize()</code>, <code>set_capacity()</code>
+ \sa <code>\link rresize() rresize(size_type, const_reference)\endlink</code>,
+ <code>set_capacity(capacity_type)</code>
*/
void resize(size_type new_size, param_value_type item = value_type()) {
if (new_size > size()) {
@@ -846,7 +850,8 @@
<code>end()</code>) if the new capacity is different from the original.
\par Complexity
Linear (in <code>min[size(), new_capacity]</code>).
- \sa <code>set_capacity()</code>, <code>rresize()</code>
+ \sa <code>set_capacity(capacity_type)</code>,
+ <code>\link rresize() rresize(size_type, const_reference)\endlink</code>
*/
void rset_capacity(capacity_type new_capacity) {
if (new_capacity == capacity())
@@ -887,7 +892,8 @@
any iterator.
\par Complexity
Linear (in the new size of the <code>circular_buffer</code>).
- \sa <code>rresize()</code>, <code>set_capacity()</code>
+ \sa <code>\link resize() resize(size_type, const_reference)\endlink</code>,
+ <code>rset_capacity(capacity_type)</code>
*/
void rresize(size_type new_size, param_value_type item = value_type()) {
if (new_size > size()) {
@@ -910,7 +916,8 @@
\par Complexity
Constant.
\warning This constructor has been defined only due to compatibility with the STL container definition. Avoid
- using it because it may allocate <b>very large</b> amount of memory.
+ using it because it may allocate <b>very large</b> amount of memory (depending on allocator's
+ %max_size()).
*/
explicit circular_buffer(const allocator_type& alloc = allocator_type())
: m_size(0), m_alloc(alloc) {
@@ -1296,7 +1303,8 @@
Does not invalidate any iterators with the exception of iterators pointing to the overwritten element.
\par Complexity
Constant (in the size of the <code>circular_buffer</code>).
- \sa <code>push_front()</code>, <code>pop_back()</code>, <code>pop_front()</code>
+ \sa <code>\link push_front() push_front(const_reference)\endlink</code>,
+ <code>pop_back()</code>, <code>pop_front()</code>
*/
void push_back(param_value_type item = value_type()) {
if (full()) {
@@ -1325,7 +1333,8 @@
Does not invalidate any iterators with the exception of iterators pointing to the overwritten element.
\par Complexity
Constant (in the size of the <code>circular_buffer</code>).
- \sa <code>push_back()</code>, <code>pop_back()</code>, <code>pop_front()</code>
+ \sa <code>\link push_back() push_back(const_reference)\endlink</code>,
+ <code>pop_back()</code>, <code>pop_front()</code>
*/
void push_front(param_value_type item = value_type()) {
BOOST_TRY {
@@ -1358,7 +1367,8 @@
Invalidates only iterators pointing to the removed element.
\par Complexity
Constant (in the size of the <code>circular_buffer</code>).
- \sa <code>pop_front()</code>, <code>push_back()</code>, <code>push_front()</code>
+ \sa <code>pop_front()</code>, <code>\link push_back() push_back(const_reference)\endlink</code>,
+ <code>\link push_front() push_front(const_reference)\endlink</code>
*/
void pop_back() {
BOOST_CB_ASSERT(!empty()); // check for empty buffer (back element not available)
@@ -1378,7 +1388,8 @@
Invalidates only iterators pointing to the removed element.
\par Complexity
Constant (in the size of the <code>circular_buffer</code>).
- \sa <code>pop_back()</code>, <code>push_back()</code>, <code>push_front()</code>
+ \sa <code>pop_back()</code>, <code>\link push_back() push_back(const_reference)\endlink</code>,
+ <code>\link push_front() push_front(const_reference)\endlink</code>
*/
void pop_front() {
BOOST_CB_ASSERT(!empty()); // check for empty buffer (front element not available)
Modified: branches/CMake/release/boost/circular_buffer/details.hpp
==============================================================================
--- branches/CMake/release/boost/circular_buffer/details.hpp (original)
+++ branches/CMake/release/boost/circular_buffer/details.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -227,9 +227,7 @@
//! Difference type.
typedef typename base_iterator::difference_type difference_type;
-#if !defined(BOOST_CB_TEST) && BOOST_CB_ENABLE_DEBUG == 0
-private:
-#endif
+public:
// Member variables
//! The circular buffer where the iterator points to.
Modified: branches/CMake/release/boost/circular_buffer/space_optimized.hpp
==============================================================================
--- branches/CMake/release/boost/circular_buffer/space_optimized.hpp (original)
+++ branches/CMake/release/boost/circular_buffer/space_optimized.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -150,7 +150,8 @@
Does not invalidate any iterators.
\par Complexity
Constant (in the size of the <code>circular_buffer_space_optimized</code>).
- \sa <code>reserve()</code>, <code>size()</code>, <code>max_size()</code>, <code>set_capacity()</code>
+ \sa <code>reserve()</code>, <code>size()</code>, <code>max_size()</code>,
+ <code>set_capacity(const capacity_type&)</code>
*/
const capacity_type& capacity() const { return m_capacity_ctrl; }
@@ -191,7 +192,8 @@
boost::%circular_buffer_space_optimized\<int\>(cb).swap(cb);</code><br><br>
For more information about the shrink-to-fit technique in STL see
<a href="http://www.gotw.ca/gotw/054.htm">http://www.gotw.ca/gotw/054.htm>.
- \sa <code>rset_capacity()</code>, <code>resize()</code>
+ \sa <code>rset_capacity(const capacity_type&)</code>,
+ <code>\link resize() resize(size_type, const_reference)\endlink</code>
*/
void set_capacity(const capacity_type& capacity_ctrl) {
m_capacity_ctrl = capacity_ctrl;
@@ -226,7 +228,8 @@
equal to <code>end()</code>).
\par Complexity
Linear (in the new size of the <code>circular_buffer_space_optimized</code>).
- \sa <code>rresize()</code>, <code>set_capacity()</code>
+ \sa <code>\link rresize() rresize(size_type, const_reference)\endlink</code>,
+ <code>set_capacity(const capacity_type&)</code>
*/
void resize(size_type new_size, param_value_type item = value_type()) {
if (new_size > size()) {
@@ -260,7 +263,8 @@
equal to <code>end()</code>).
\par Complexity
Linear (in <code>min[size(), capacity_ctrl.%capacity()]</code>).
- \sa <code>set_capacity()</code>, <code>rresize()</code>
+ \sa <code>set_capacity(const capacity_type&)</code>,
+ <code>\link rresize() rresize(size_type, const_reference)\endlink</code>
*/
void rset_capacity(const capacity_type& capacity_ctrl) {
m_capacity_ctrl = capacity_ctrl;
@@ -295,7 +299,8 @@
equal to <code>end()</code>).
\par Complexity
Linear (in the new size of the <code>circular_buffer_space_optimized</code>).
- \sa <code>rresize()</code>, <code>set_capacity()</code>
+ \sa <code>\link resize() resize(size_type, const_reference)\endlink</code>,
+ <code>rset_capacity(const capacity_type&)</code>
*/
void rresize(size_type new_size, param_value_type item = value_type()) {
if (new_size > size()) {
@@ -717,7 +722,8 @@
equal to <code>end()</code>).
\par Complexity
Linear (in the size of the <code>circular_buffer_space_optimized</code>).
- \sa <code>push_front()</code>, <code>pop_back()</code>, <code>pop_front()</code>
+ \sa <code>\link push_front() push_front(const_reference)\endlink</code>, <code>pop_back()</code>,
+ <code>pop_front()</code>
*/
void push_back(param_value_type item = value_type()) {
check_low_capacity();
@@ -741,7 +747,8 @@
equal to <code>end()</code>).
\par Complexity
Linear (in the size of the <code>circular_buffer_space_optimized</code>).
- \sa <code>push_back()</code>, <code>pop_back()</code>, <code>pop_front()</code>
+ \sa <code>\link push_back() push_back(const_reference)\endlink</code>, <code>pop_back()</code>,
+ <code>pop_front()</code>
*/
void push_front(param_value_type item = value_type()) {
check_low_capacity();
@@ -762,7 +769,8 @@
equal to <code>end()</code>).
\par Complexity
Linear (in the size of the <code>circular_buffer_space_optimized</code>).
- \sa <code>pop_front()</code>, <code>push_back()</code>, <code>push_front()</code>
+ \sa <code>pop_front()</code>, <code>\link push_back() push_back(const_reference)\endlink</code>,
+ <code>\link push_front() push_front(const_reference)\endlink</code>
*/
void pop_back() {
circular_buffer<T, Alloc>::pop_back();
@@ -783,7 +791,8 @@
equal to <code>end()</code>).
\par Complexity
Linear (in the size of the <code>circular_buffer_space_optimized</code>).
- \sa <code>pop_back()</code>, <code>push_back()</code>, <code>push_front()</code>
+ \sa <code>pop_back()</code>, <code>\link push_back() push_back(const_reference)\endlink</code>,
+ <code>\link push_front() push_front(const_reference)\endlink</code>
*/
void pop_front() {
circular_buffer<T, Alloc>::pop_front();
Modified: branches/CMake/release/boost/concept/requires.hpp
==============================================================================
--- branches/CMake/release/boost/concept/requires.hpp (original)
+++ branches/CMake/release/boost/concept/requires.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -4,6 +4,7 @@
#ifndef BOOST_CONCEPT_REQUIRES_DWA2006430_HPP
# define BOOST_CONCEPT_REQUIRES_DWA2006430_HPP
+# include <boost/config.hpp>
# include <boost/parameter/aux_/parenthesized_type.hpp>
# include <boost/concept/assert.hpp>
# include <boost/preprocessor/seq/for_each.hpp>
@@ -38,8 +39,11 @@
# endif
};
-
-#define BOOST_CONCEPT_REQUIRES_(r,data,t) + (::boost::_requires_<void(*)t>::value)
+# if BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(1010))
+# define BOOST_CONCEPT_REQUIRES_(r,data,t) | (::boost::_requires_<void(*)t>::value)
+# else
+# define BOOST_CONCEPT_REQUIRES_(r,data,t) + (::boost::_requires_<void(*)t>::value)
+# endif
#if defined(NDEBUG) || BOOST_WORKAROUND(BOOST_MSVC, < 1300)
Modified: branches/CMake/release/boost/date_time/testfrmwk.hpp
==============================================================================
--- branches/CMake/release/boost/date_time/testfrmwk.hpp (original)
+++ branches/CMake/release/boost/date_time/testfrmwk.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -5,7 +5,7 @@
/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
* Use, modification and distribution is subject to the
* Boost Software License, Version 1.0. (See accompanying
- * file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
* $Date$
*/
Modified: branches/CMake/release/boost/detail/sp_counted_base_acc_ia64.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_acc_ia64.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_acc_ia64.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -15,7 +15,7 @@
// Lock-free algorithm by Alexander Terekhov
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
#include <machine/sys/inline.h>
namespace boost
Modified: branches/CMake/release/boost/detail/sp_counted_base_cw_ppc.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_cw_ppc.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_cw_ppc.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -24,7 +24,7 @@
// formulation
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
namespace boost
{
Modified: branches/CMake/release/boost/detail/sp_counted_base_cw_x86.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_cw_x86.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_cw_x86.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -25,7 +25,7 @@
// formulation
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
namespace boost
{
Modified: branches/CMake/release/boost/detail/sp_counted_base_gcc_ia64.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_gcc_ia64.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_gcc_ia64.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -16,7 +16,7 @@
// Lock-free algorithm by Alexander Terekhov
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
namespace boost
{
Modified: branches/CMake/release/boost/detail/sp_counted_base_gcc_ppc.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_gcc_ppc.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_gcc_ppc.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -24,7 +24,7 @@
// formulation
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
namespace boost
{
Modified: branches/CMake/release/boost/detail/sp_counted_base_gcc_sparc.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_gcc_sparc.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_gcc_sparc.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -19,7 +19,7 @@
//
// Thanks to Michael van der Westhuizen
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
#include <inttypes.h> // int32_t
namespace boost
Modified: branches/CMake/release/boost/detail/sp_counted_base_gcc_x86.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_gcc_x86.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_gcc_x86.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -24,7 +24,7 @@
// formulation
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
namespace boost
{
Modified: branches/CMake/release/boost/detail/sp_counted_base_nt.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_nt.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_nt.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -18,7 +18,7 @@
// http://www.boost.org/LICENSE_1_0.txt)
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
namespace boost
{
Modified: branches/CMake/release/boost/detail/sp_counted_base_pt.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_pt.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_pt.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -18,7 +18,7 @@
// http://www.boost.org/LICENSE_1_0.txt)
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
#include <pthread.h>
namespace boost
Modified: branches/CMake/release/boost/detail/sp_counted_base_solaris.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_solaris.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_solaris.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -20,7 +20,7 @@
// formulation
//
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
#include <atomic.h>
namespace boost
Modified: branches/CMake/release/boost/detail/sp_counted_base_sync.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_sync.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_sync.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -15,7 +15,7 @@
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
#include <limits.h>
namespace boost
Modified: branches/CMake/release/boost/detail/sp_counted_base_w32.hpp
==============================================================================
--- branches/CMake/release/boost/detail/sp_counted_base_w32.hpp (original)
+++ branches/CMake/release/boost/detail/sp_counted_base_w32.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -26,7 +26,7 @@
#include <boost/detail/interlocked.hpp>
#include <boost/detail/workaround.hpp>
-#include "sp_typeinfo.hpp"
+#include <boost/detail/sp_typeinfo.hpp>
namespace boost
{
Modified: branches/CMake/release/boost/function_types/components.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/components.hpp (original)
+++ branches/CMake/release/boost/function_types/components.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -120,13 +120,14 @@
template
< typename Components
, typename IfTagged
- , typename ThenTag
+ , typename ThenTag
+ , typename DefaultBase = components_non_func_base
>
struct retagged_if
: mpl::if_
< detail::represents_impl<Components, IfTagged>
, detail::changed_tag<Components,IfTagged,ThenTag>
- , components_non_func_base
+ , DefaultBase
>::type
{ };
@@ -213,14 +214,71 @@
: components_impl<T,L>
{ };
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x565))
+
+ template<typename T, class C>
+ struct member_obj_ptr_result
+ { typedef T & type; };
+
+ template<typename T, class C>
+ struct member_obj_ptr_result<T, C const>
+ { typedef T const & type; };
+
+ template<typename T, class C>
+ struct member_obj_ptr_result<T, C volatile>
+ { typedef T volatile & type; };
+
+ template<typename T, class C>
+ struct member_obj_ptr_result<T, C const volatile>
+ { typedef T const volatile & type; };
+
+ template<typename T, class C>
+ struct member_obj_ptr_result<T &, C>
+ { typedef T & type; };
+
+ template<typename T, class C>
+ struct member_obj_ptr_result<T &, C const>
+ { typedef T & type; };
+
+ template<typename T, class C>
+ struct member_obj_ptr_result<T &, C volatile>
+ { typedef T & type; };
+
+ template<typename T, class C>
+ struct member_obj_ptr_result<T &, C const volatile>
+ { typedef T & type; };
+
+ template<typename T, class C, typename L>
+ struct member_obj_ptr_components
+ : member_object_pointer_base
+ {
+ typedef function_types::components<T C::*, L> type;
+ typedef components_mpl_sequence_tag tag;
+
+ typedef mpl::integral_c<std::size_t,1> function_arity;
+
+ typedef mpl::vector2< typename detail::member_obj_ptr_result<T,C>::type,
+ typename detail::class_transform<C,L>::type > types;
+ };
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x565))
+# define BOOST_FT_variations BOOST_FT_pointer|BOOST_FT_member_pointer
+
+ template<typename T, class C, typename L>
+ struct components_impl<T C::*, L>
+ : member_obj_ptr_components<T,C,L>
+ { };
+
+#else
+# define BOOST_FT_variations BOOST_FT_pointer
+
// This workaround removes the member pointer from the type to allow
// detection of member function pointers with BCC.
template<typename T, typename C, typename L>
struct components_impl<T C::*, L>
: detail::retagged_if
< detail::components_impl<typename boost::remove_cv<T>::type *, L>
- , pointer_tag, /* --> */ member_pointer_tag >
+ , pointer_tag, /* --> */ member_function_pointer_tag
+ , member_obj_ptr_components<T,C,L> >
{ };
// BCC lets us test the cv-qualification of a function type by template
@@ -349,65 +407,13 @@
struct components_bcc
: mpl::if_
< detail::represents_impl< detail::components_impl<T,L>
- , member_pointer_tag>
+ , member_function_pointer_tag>
, detail::mfp_components<detail::components_impl<T,L>,T,OrigT,L>
, detail::components_impl<T,L>
>::type
{ };
-// TODO: add data member support for Borland
-
-# define BOOST_FT_variations BOOST_FT_pointer
-#else // end of BORLAND WORKAROUND
-# define BOOST_FT_variations BOOST_FT_pointer|BOOST_FT_member_pointer
-
- template<typename T, class C>
- struct member_obj_ptr_result
- { typedef T & type; };
-
- template<typename T, class C>
- struct member_obj_ptr_result<T, C const>
- { typedef T const & type; };
-
- template<typename T, class C>
- struct member_obj_ptr_result<T, C volatile>
- { typedef T volatile & type; };
-
- template<typename T, class C>
- struct member_obj_ptr_result<T, C const volatile>
- { typedef T const volatile & type; };
-
- template<typename T, class C>
- struct member_obj_ptr_result<T &, C>
- { typedef T & type; };
-
- template<typename T, class C>
- struct member_obj_ptr_result<T &, C const>
- { typedef T & type; };
-
- template<typename T, class C>
- struct member_obj_ptr_result<T &, C volatile>
- { typedef T & type; };
-
- template<typename T, class C>
- struct member_obj_ptr_result<T &, C const volatile>
- { typedef T & type; };
-
-
- template<typename T, class C, typename L>
- struct components_impl<T C::*, L>
- : member_object_pointer_base
- {
- typedef function_types::components<T C::*, L> type;
- typedef components_mpl_sequence_tag tag;
-
- typedef mpl::integral_c<std::size_t,1> function_arity;
-
- typedef mpl::vector2< typename detail::member_obj_ptr_result<T,C>::type,
- typename detail::class_transform<C,L>::type > types;
- };
-
-#endif
+#endif // end of BORLAND WORKAROUND
#define BOOST_FT_al_path boost/function_types/detail/components_impl
#include <boost/function_types/detail/pp_loop.hpp>
Modified: branches/CMake/release/boost/function_types/detail/cv_traits.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/detail/cv_traits.hpp (original)
+++ branches/CMake/release/boost/function_types/detail/cv_traits.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,8 @@
#include <cstddef>
#include <boost/detail/workaround.hpp>
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ || BOOST_WORKAROUND(__BORLANDC__, <= 0x582)
# include <boost/type_traits/remove_cv.hpp>
# include <boost/type_traits/remove_pointer.hpp>
# include <boost/type_traits/remove_reference.hpp>
@@ -22,10 +23,8 @@
namespace boost { namespace function_types { namespace detail {
-namespace ft = boost::function_types;
-
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if ! (defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ || BOOST_WORKAROUND(__BORLANDC__, <= 0x582))
template<typename T> struct cv_traits
{ typedef non_cv tag; typedef T type; };
@@ -109,12 +108,13 @@
{
static T _t;
BOOST_STATIC_CONSTANT(std::size_t, value =
- sizeof(ft::detail::switch_cv(ft::detail::ref_to_ptr(_t) ) ));
+ sizeof(::boost::function_types::detail::switch_cv(
+ ::boost::function_types::detail::ref_to_ptr(_t) ) ));
};
template<typename T> struct cv_traits
{
- typedef typename ft::detail::cv_tag_impl<
+ typedef typename boost::function_types::detail::cv_tag_impl<
::boost::function_types::detail::cv_code<T>::value >::type
tag;
Modified: branches/CMake/release/boost/function_types/detail/pp_arity_loop.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/detail/pp_arity_loop.hpp (original)
+++ branches/CMake/release/boost/function_types/detail/pp_arity_loop.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -81,14 +81,16 @@
# include <boost/preprocessor/repetition/enum_trailing_params.hpp>
# endif
+# define BOOST_FT_AL_INCLUDE_FILE <BOOST_FT_al_path/master.hpp>
+
# define BOOST_FT_ARITY_LOOP_PREFIX 1
-# include BOOST_PP_EXPAND(<BOOST_FT_al_path/master.hpp>)
+# include BOOST_FT_AL_INCLUDE_FILE
# undef BOOST_FT_ARITY_LOOP_PREFIX
# if !BOOST_PP_IS_ITERATING
-# define BOOST_PP_FILENAME_1 <BOOST_FT_al_path/master.hpp>
+# define BOOST_PP_FILENAME_1 BOOST_FT_AL_INCLUDE_FILE
# elif BOOST_PP_ITERATION_DEPTH() == 1
-# define BOOST_PP_FILENAME_2 <BOOST_FT_al_path/master.hpp>
+# define BOOST_PP_FILENAME_2 BOOST_FT_AL_INCLUDE_FILE
# else
# error "loops nested too deeply"
# endif
@@ -133,8 +135,10 @@
# undef BOOST_FT_type
# define BOOST_FT_ARITY_LOOP_SUFFIX 1
-# include BOOST_PP_EXPAND(<BOOST_FT_al_path/master.hpp>)
+# include BOOST_FT_AL_INCLUDE_FILE
# undef BOOST_FT_ARITY_LOOP_SUFFIX
+
+# undef BOOST_FT_AL_INCLUDE_FILE
# endif
# undef BOOST_FT_FROM_ARITY
Modified: branches/CMake/release/boost/function_types/detail/pp_cc_loop/master.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/detail/pp_cc_loop/master.hpp (original)
+++ branches/CMake/release/boost/function_types/detail/pp_cc_loop/master.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -42,7 +42,7 @@
# define BOOST_FT_cc_name implicit_cc
# define BOOST_FT_cc BOOST_PP_EMPTY
# define BOOST_FT_cond callable_builtin
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
# undef BOOST_FT_cc
@@ -54,7 +54,7 @@
BOOST_PP_EXPAND(#) define BOOST_FT_cc BOOST_PP_EMPTY
BOOST_PP_EXPAND(#) define BOOST_FT_cond callable_builtin
#define _()
-BOOST_PP_EXPAND(#) include BOOST_PP_EXPAND _()( <BOOST_FT_cc_file> )
+BOOST_PP_EXPAND(#) include BOOST_FT_cc_file
#undef _
BOOST_PP_EXPAND(#) undef BOOST_FT_cond
BOOST_PP_EXPAND(#) undef BOOST_FT_cc_name
@@ -85,7 +85,7 @@
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND(<BOOST_FT_cc_file>)
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
@@ -121,7 +121,7 @@
BOOST_PP_EXPAND(#) if BOOST_FT_cond
BOOST_PP_EXPAND(#) define BOOST_FT_config_valid 1
#define _()
-BOOST_PP_EXPAND(#) include BOOST_PP_EXPAND _()(<BOOST_FT_cc_file>)
+BOOST_PP_EXPAND(#) include BOOST_FT_cc_file
#undef _
BOOST_PP_EXPAND(#) endif
Modified: branches/CMake/release/boost/function_types/detail/pp_cc_loop/preprocessed.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/detail/pp_cc_loop/preprocessed.hpp (original)
+++ branches/CMake/release/boost/function_types/detail/pp_cc_loop/preprocessed.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -15,7 +15,7 @@
# define BOOST_FT_cond BOOST_FT_CC_IMPLICIT
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
@@ -27,7 +27,7 @@
# define BOOST_FT_cond BOOST_FT_CC_CDECL
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
@@ -39,7 +39,7 @@
# define BOOST_FT_cond BOOST_FT_CC_STDCALL
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
@@ -51,7 +51,7 @@
# define BOOST_FT_cond BOOST_FT_CC_PASCAL
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
@@ -63,7 +63,7 @@
# define BOOST_FT_cond BOOST_FT_CC_FASTCALL
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
@@ -75,7 +75,7 @@
# define BOOST_FT_cond BOOST_FT_CC_CLRCALL
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
@@ -87,7 +87,7 @@
# define BOOST_FT_cond BOOST_FT_CC_THISCALL
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
@@ -99,7 +99,7 @@
# define BOOST_FT_cond BOOST_FT_CC_IMPLICIT_THISCALL
# if BOOST_FT_cond
# define BOOST_FT_config_valid 1
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# endif
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
@@ -110,7 +110,7 @@
# define BOOST_FT_cc_name implicit_cc
# define BOOST_FT_cc BOOST_PP_EMPTY
# define BOOST_FT_cond 0x00000001
-# include BOOST_PP_EXPAND ( <BOOST_FT_cc_file> )
+# include BOOST_FT_cc_file
# undef BOOST_FT_cond
# undef BOOST_FT_cc_name
# undef BOOST_FT_cc
Modified: branches/CMake/release/boost/function_types/detail/pp_loop.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/detail/pp_loop.hpp (original)
+++ branches/CMake/release/boost/function_types/detail/pp_loop.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -28,9 +28,9 @@
#if defined(BOOST_FT_al_path)
# define BOOST_FT_cc_file \
- boost/function_types/detail/pp_variate_loop/preprocessed.hpp
+ <boost/function_types/detail/pp_variate_loop/preprocessed.hpp>
# define BOOST_FT_variate_file \
- boost/function_types/detail/pp_arity_loop.hpp
+ <boost/function_types/detail/pp_arity_loop.hpp>
# ifndef BOOST_FT_type_function
# define BOOST_FT_type_function(cc,name) BOOST_FT_SYNTAX( \
Modified: branches/CMake/release/boost/function_types/detail/pp_variate_loop/master.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/detail/pp_variate_loop/master.hpp (original)
+++ branches/CMake/release/boost/function_types/detail/pp_variate_loop/master.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -140,7 +140,7 @@
# endif
# endif
BOOST_PP_EXPAND(#) define BOOST_FT_flags BOOST_PP_SLOT(1)
-BOOST_PP_EXPAND(#) include BOOST_PP_EXPAND BOOST_PP_EMPTY()(<BOOST_FT_variate_file>)
+BOOST_PP_EXPAND(#) include BOOST_FT_variate_file
BOOST_PP_EXPAND(#) undef BOOST_FT_cv
BOOST_PP_EXPAND(#) undef BOOST_FT_ell
Modified: branches/CMake/release/boost/function_types/detail/pp_variate_loop/preprocessed.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/detail/pp_variate_loop/preprocessed.hpp (original)
+++ branches/CMake/release/boost/function_types/detail/pp_variate_loop/preprocessed.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -15,7 +15,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv
# define BOOST_FT_flags 519
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -28,7 +28,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv
# define BOOST_FT_flags 263
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -42,7 +42,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv const
# define BOOST_FT_flags 1543
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -55,7 +55,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv const
# define BOOST_FT_flags 1287
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -68,7 +68,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv volatile
# define BOOST_FT_flags 2567
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -81,7 +81,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv volatile
# define BOOST_FT_flags 2311
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -94,7 +94,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv const volatile
# define BOOST_FT_flags 3591
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -107,7 +107,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv const volatile
# define BOOST_FT_flags 3335
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -123,7 +123,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv
# define BOOST_FT_flags 523
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -136,7 +136,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv
# define BOOST_FT_flags 267
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -151,7 +151,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv
# define BOOST_FT_flags 531
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -164,7 +164,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv
# define BOOST_FT_flags 275
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -181,7 +181,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv
# define BOOST_FT_flags 609
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -194,7 +194,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv
# define BOOST_FT_flags 353
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -207,7 +207,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv const
# define BOOST_FT_flags 1633
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -220,7 +220,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv const
# define BOOST_FT_flags 1377
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -233,7 +233,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv volatile
# define BOOST_FT_flags 2657
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -246,7 +246,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv volatile
# define BOOST_FT_flags 2401
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -259,7 +259,7 @@
# define BOOST_FT_nullary_param BOOST_FT_NULLARY_PARAM
# define BOOST_FT_cv const volatile
# define BOOST_FT_flags 3681
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
@@ -272,7 +272,7 @@
# define BOOST_FT_nullary_param
# define BOOST_FT_cv const volatile
# define BOOST_FT_flags 3425
-# include BOOST_PP_EXPAND ( <BOOST_FT_variate_file> )
+# include BOOST_FT_variate_file
# undef BOOST_FT_cv
# undef BOOST_FT_ell
# undef BOOST_FT_nullary_param
Modified: branches/CMake/release/boost/function_types/is_member_object_pointer.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/is_member_object_pointer.hpp (original)
+++ branches/CMake/release/boost/function_types/is_member_object_pointer.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -24,10 +24,10 @@
< function_types::components<T>
, detail::member_object_pointer_tag >
{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(2,is_member_object_pointer,(T,Tag))
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_member_object_pointer,(T))
};
}
- BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(2,function_types::is_member_object_pointer)
+ BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,function_types::is_member_object_pointer)
}
#endif
Modified: branches/CMake/release/boost/function_types/property_tags.hpp
==============================================================================
--- branches/CMake/release/boost/function_types/property_tags.hpp (original)
+++ branches/CMake/release/boost/function_types/property_tags.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -141,7 +141,7 @@
#include <boost/function_types/detail/pp_tags/preprocessed.hpp>
namespace boost { namespace function_types {
-#define BOOST_FT_cc_file boost/function_types/detail/pp_tags/cc_tag.hpp
+#define BOOST_FT_cc_file <boost/function_types/detail/pp_tags/cc_tag.hpp>
#include <boost/function_types/detail/pp_loop.hpp>
} } // namespace boost::function_types
Modified: branches/CMake/release/boost/intrusive/unordered_set.hpp
==============================================================================
--- branches/CMake/release/boost/intrusive/unordered_set.hpp (original)
+++ branches/CMake/release/boost/intrusive/unordered_set.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -557,7 +557,7 @@
//! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
//!
//! <b>Throws</b>: If hash_func or equal_func throw.
- template<class KeyType, class KeyHasher, class KeyValueEqual, class Disposer>
+ template<class KeyType, class KeyHasher, class KeyValueEqual>
size_type count(const KeyType& key, KeyHasher hash_func, KeyValueEqual equal_func) const
{ return table_.find(key, hash_func, equal_func) != end(); }
@@ -1488,7 +1488,7 @@
//! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
//!
//! <b>Throws</b>: If the internal hasher or the equality functor throws.
- template<class KeyType, class KeyHasher, class KeyValueEqual, class Disposer>
+ template<class KeyType, class KeyHasher, class KeyValueEqual>
size_type count(const KeyType& key, KeyHasher hash_func, KeyValueEqual equal_func) const
{ return table_.count(key, hash_func, equal_func); }
Modified: branches/CMake/release/boost/mpl/aux_/preprocessor/is_seq.hpp
==============================================================================
--- branches/CMake/release/boost/mpl/aux_/preprocessor/is_seq.hpp (original)
+++ branches/CMake/release/boost/mpl/aux_/preprocessor/is_seq.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -27,7 +27,7 @@
// BOOST_PP_ASSERT( BOOST_MPL_PP_IS_SEQ( (int) ) )
// BOOST_PP_ASSERT( BOOST_MPL_PP_IS_SEQ( (1)(2) ) )
-#if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
+#if (BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()) || defined(_MSC_VER) && defined(__INTEL_COMPILER) && __INTEL_COMPILER == 1010
# define BOOST_MPL_PP_IS_SEQ(seq) BOOST_PP_DEC( BOOST_PP_SEQ_SIZE( BOOST_MPL_PP_IS_SEQ_(seq) ) )
# define BOOST_MPL_PP_IS_SEQ_(seq) BOOST_MPL_PP_IS_SEQ_SEQ_( BOOST_MPL_PP_IS_SEQ_SPLIT_ seq )
Modified: branches/CMake/release/boost/random/uniform_int.hpp
==============================================================================
--- branches/CMake/release/boost/random/uniform_int.hpp (original)
+++ branches/CMake/release/boost/random/uniform_int.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -134,7 +134,7 @@
friend std::basic_istream<CharT,Traits>&
operator>>(std::basic_istream<CharT,Traits>& is, uniform_int& ud)
{
-# if BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292)) && BOOST_MSVC > 1300
+# if BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292)) && BOOST_MSVC == 1400
return detail::extract_uniform_int(is, ud, ud.impl);
# else
is >> std::ws >> ud._min >> std::ws >> ud._max;
Modified: branches/CMake/release/boost/thread/detail/move.hpp
==============================================================================
--- branches/CMake/release/boost/thread/detail/move.hpp (original)
+++ branches/CMake/release/boost/thread/detail/move.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -22,6 +22,8 @@
{
return &t;
}
+ private:
+ void operator=(thread_move_t&);
};
}
Modified: branches/CMake/release/boost/thread/locks.hpp
==============================================================================
--- branches/CMake/release/boost/thread/locks.hpp (original)
+++ branches/CMake/release/boost/thread/locks.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -27,9 +27,6 @@
class shared_lock;
template<typename Mutex>
- class exclusive_lock;
-
- template<typename Mutex>
class upgrade_lock;
template<typename Mutex>
Modified: branches/CMake/release/boost/thread/pthread/shared_mutex.hpp
==============================================================================
--- branches/CMake/release/boost/thread/pthread/shared_mutex.hpp (original)
+++ branches/CMake/release/boost/thread/pthread/shared_mutex.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -57,7 +57,14 @@
boost::this_thread::disable_interruption do_not_disturb;
boost::mutex::scoped_lock lock(state_change);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
if(!state.exclusive && !state.exclusive_waiting_blocked)
{
@@ -89,7 +96,14 @@
boost::this_thread::disable_interruption do_not_disturb;
boost::mutex::scoped_lock lock(state_change);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
if(!state.exclusive && !state.exclusive_waiting_blocked)
{
@@ -130,7 +144,14 @@
boost::this_thread::disable_interruption do_not_disturb;
boost::mutex::scoped_lock lock(state_change);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
if(state.shared_count || state.exclusive)
{
@@ -150,7 +171,14 @@
boost::this_thread::disable_interruption do_not_disturb;
boost::mutex::scoped_lock lock(state_change);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
if(state.shared_count || state.exclusive)
{
@@ -196,7 +224,14 @@
{
boost::this_thread::disable_interruption do_not_disturb;
boost::mutex::scoped_lock lock(state_change);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
if(!state.exclusive && !state.exclusive_waiting_blocked && !state.upgrade)
{
@@ -213,7 +248,14 @@
{
boost::this_thread::disable_interruption do_not_disturb;
boost::mutex::scoped_lock lock(state_change);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
if(!state.exclusive && !state.exclusive_waiting_blocked && !state.upgrade)
{
@@ -262,7 +304,14 @@
boost::this_thread::disable_interruption do_not_disturb;
boost::mutex::scoped_lock lock(state_change);
--state.shared_count;
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
if(!state.shared_count)
{
Modified: branches/CMake/release/boost/thread/pthread/thread.hpp
==============================================================================
--- branches/CMake/release/boost/thread/pthread/thread.hpp (original)
+++ branches/CMake/release/boost/thread/pthread/thread.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -21,6 +21,12 @@
#include <boost/thread/detail/move.hpp>
#include <boost/shared_ptr.hpp>
#include "thread_data.hpp"
+#include <stdlib.h>
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4251)
+#endif
namespace boost
{
@@ -293,7 +299,7 @@
}
}
- class BOOST_THREAD_DECL thread_group : private noncopyable
+ class BOOST_THREAD_DECL thread_group
{
public:
thread_group();
@@ -304,13 +310,20 @@
void remove_thread(thread* thrd);
void join_all();
void interrupt_all();
- int size() const;
+ size_t size() const;
private:
+ thread_group(thread_group&);
+ void operator=(thread_group&);
+
std::list<thread*> m_threads;
mutex m_mutex;
};
} // namespace boost
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
#endif
Modified: branches/CMake/release/boost/thread/pthread/thread_data.hpp
==============================================================================
--- branches/CMake/release/boost/thread/pthread/thread_data.hpp (original)
+++ branches/CMake/release/boost/thread/pthread/thread_data.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -72,6 +72,7 @@
}
}
+ void operator=(interruption_checker&);
public:
explicit interruption_checker(pthread_cond_t* cond):
thread_info(detail::get_current_thread_data())
Modified: branches/CMake/release/boost/thread/pthread/tss.hpp
==============================================================================
--- branches/CMake/release/boost/thread/pthread/tss.hpp (original)
+++ branches/CMake/release/boost/thread/pthread/tss.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -86,7 +86,7 @@
T* release()
{
T* const temp=get();
- detail::set_tss_data(this,0,0,false);
+ detail::set_tss_data(this,boost::shared_ptr<detail::tss_cleanup_function>(),0,false);
return temp;
}
void reset(T* new_value=0)
Modified: branches/CMake/release/boost/thread/win32/basic_timed_mutex.hpp
==============================================================================
--- branches/CMake/release/boost/thread/win32/basic_timed_mutex.hpp (original)
+++ branches/CMake/release/boost/thread/win32/basic_timed_mutex.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -33,7 +33,14 @@
void destroy()
{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4312)
+#endif
void* const old_event=BOOST_INTERLOCKED_EXCHANGE_POINTER(&event,0);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
if(old_event)
{
win32::CloseHandle(old_event);
@@ -64,7 +71,14 @@
bool timed_lock(::boost::system_time const& wait_until)
{
long old_count=active_count;
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
long const current_count=BOOST_INTERLOCKED_COMPARE_EXCHANGE(&active_count,(old_count+1)|lock_flag_value,old_count);
if(current_count==old_count)
@@ -139,7 +153,15 @@
if(!current_event)
{
void* const new_event=win32::create_anonymous_event(win32::auto_reset_event,win32::event_initially_reset);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4311)
+#pragma warning(disable:4312)
+#endif
void* const old_event=BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&event,new_event,0);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
if(old_event!=0)
{
win32::CloseHandle(new_event);
Modified: branches/CMake/release/boost/thread/win32/condition_variable.hpp
==============================================================================
--- branches/CMake/release/boost/thread/win32/condition_variable.hpp (original)
+++ branches/CMake/release/boost/thread/win32/condition_variable.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -55,10 +55,17 @@
}
else
{
- active_generation_count=(last_active_entry-generations)+1;
+ active_generation_count=unsigned(last_active_entry-generations)+1;
}
-
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4996)
+#endif
std::copy_backward(generations,generations+active_generation_count-1,generations+active_generation_count);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
generations[0]=list_entry();
}
@@ -108,6 +115,8 @@
}
}
+ private:
+ void operator=(relocker&);
};
Modified: branches/CMake/release/boost/thread/win32/once.hpp
==============================================================================
--- branches/CMake/release/boost/thread/win32/once.hpp (original)
+++ branches/CMake/release/boost/thread/win32/once.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -46,6 +46,8 @@
{
BOOST_VERIFY(win32::ReleaseMutex(mutex_handle)!=0);
}
+ private:
+ void operator=(win32_mutex_scoped_lock&);
};
#ifdef BOOST_NO_ANSI_APIS
Modified: branches/CMake/release/boost/thread/win32/shared_mutex.hpp
==============================================================================
--- branches/CMake/release/boost/thread/win32/shared_mutex.hpp (original)
+++ branches/CMake/release/boost/thread/win32/shared_mutex.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,7 +1,7 @@
#ifndef BOOST_THREAD_WIN32_SHARED_MUTEX_HPP
#define BOOST_THREAD_WIN32_SHARED_MUTEX_HPP
-// (C) Copyright 2006-7 Anthony Williams
+// (C) Copyright 2006-8 Anthony Williams
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
@@ -104,7 +104,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
return !(old_state.exclusive| old_state.exclusive_waiting_blocked);
}
@@ -115,7 +122,14 @@
bool timed_lock_shared(boost::system_time const& wait_until)
{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
state_data old_state=state;
do
@@ -137,7 +151,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
if(!(old_state.exclusive| old_state.exclusive_waiting_blocked))
{
@@ -169,7 +190,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
if(!(old_state.exclusive| old_state.exclusive_waiting_blocked))
{
@@ -226,7 +254,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
}
void lock()
@@ -236,7 +271,14 @@
bool timed_lock(boost::system_time const& wait_until)
{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
state_data old_state=state;
@@ -260,7 +302,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
if(!old_state.shared_count && !old_state.exclusive)
{
@@ -291,7 +340,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
if(!old_state.shared_count && !old_state.exclusive)
{
return true;
@@ -323,13 +379,27 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
release_waiters(old_state);
}
void lock_upgrade()
{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true)
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
{
state_data old_state=state;
do
@@ -352,7 +422,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
if(!(old_state.exclusive|| old_state.exclusive_waiting_blocked|| old_state.upgrade))
{
@@ -393,7 +470,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
}
void unlock_upgrade_and_lock()
@@ -421,7 +505,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
}
void unlock_and_lock_upgrade()
@@ -447,7 +538,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
release_waiters(old_state);
}
@@ -473,7 +571,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
release_waiters(old_state);
}
@@ -498,7 +603,14 @@
}
old_state=current_state;
}
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
release_waiters(old_state);
}
Modified: branches/CMake/release/boost/thread/win32/thread.hpp
==============================================================================
--- branches/CMake/release/boost/thread/win32/thread.hpp (original)
+++ branches/CMake/release/boost/thread/win32/thread.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -20,6 +20,13 @@
#include <algorithm>
#include <boost/ref.hpp>
#include <boost/cstdint.hpp>
+#include <stdlib.h>
+#include <memory>
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4251)
+#endif
namespace boost
{
@@ -450,9 +457,9 @@
thread* create_thread(F threadfunc)
{
boost::lock_guard<mutex> guard(m);
- thread* const new_thread=new thread(threadfunc);
- threads.push_back(new_thread);
- return new_thread;
+ std::auto_ptr<thread> new_thread(new thread(threadfunc));
+ threads.push_back(new_thread.get());
+ return new_thread.release();
}
void add_thread(thread* thrd)
@@ -498,7 +505,7 @@
}
}
- int size() const
+ size_t size() const
{
boost::lock_guard<mutex> guard(m);
return threads.size();
@@ -510,4 +517,8 @@
};
}
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
#endif
Modified: branches/CMake/release/boost/thread/win32/tss.hpp
==============================================================================
--- branches/CMake/release/boost/thread/win32/tss.hpp (original)
+++ branches/CMake/release/boost/thread/win32/tss.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -85,7 +85,7 @@
T* release()
{
T* const temp=get();
- detail::set_tss_data(this,0,0,false);
+ detail::set_tss_data(this,boost::shared_ptr<detail::tss_cleanup_function>(),0,false);
return temp;
}
void reset(T* new_value=0)
Modified: branches/CMake/release/boost/wave/util/flex_string.hpp
==============================================================================
--- branches/CMake/release/boost/wave/util/flex_string.hpp (original)
+++ branches/CMake/release/boost/wave/util/flex_string.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -705,8 +705,8 @@
if (capacity() < neededCapacity)
{
- typedef std::less_equal<const E*> le_type;
- BOOST_ASSERT(!(le_type()(begin(), &*b) && le_type()(&*b, end())));
+// typedef std::less_equal<const E*> le_type;
+// BOOST_ASSERT(!(le_type()(begin(), &*b) && le_type()(&*b, end())));
reserve(neededCapacity);
}
std::copy(b, e, end());
Modified: branches/CMake/release/boost/xpressive/detail/core/finder.hpp
==============================================================================
--- branches/CMake/release/boost/xpressive/detail/core/finder.hpp (original)
+++ branches/CMake/release/boost/xpressive/detail/core/finder.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -36,6 +36,11 @@
{
}
+ bool ok_for_partial_matches() const
+ {
+ return false;
+ }
+
bool operator ()(match_state<BidiIter> &state) const
{
Traits const &traits = traits_cast<Traits>(state);
Modified: branches/CMake/release/boost/xpressive/detail/core/regex_impl.hpp
==============================================================================
--- branches/CMake/release/boost/xpressive/detail/core/regex_impl.hpp (original)
+++ branches/CMake/release/boost/xpressive/detail/core/regex_impl.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -31,6 +31,7 @@
: counted_base<finder<BidiIter> >
{
virtual ~finder() {}
+ virtual bool ok_for_partial_matches() const { return true; }
virtual bool operator ()(match_state<BidiIter> &state) const = 0;
};
Modified: branches/CMake/release/boost/xpressive/regex_algorithms.hpp
==============================================================================
--- branches/CMake/release/boost/xpressive/regex_algorithms.hpp (original)
+++ branches/CMake/release/boost/xpressive/regex_algorithms.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -81,7 +81,8 @@
// handle partial matches
else if(state.found_partial_match_ && 0 != (flags & regex_constants::match_partial))
{
- return state.set_partial_match(), true;
+ state.set_partial_match();
+ return true;
}
}
@@ -256,7 +257,7 @@
}
// If we have a finder, use it to find where a potential match can start
- else if(impl.finder_)
+ else if(impl.finder_ && (!partial_ok || impl.finder_->ok_for_partial_matches()))
{
finder<BidiIter> const &find = *impl.finder_;
if(find(state))
Modified: branches/CMake/release/boost/xpressive/traits/cpp_regex_traits.hpp
==============================================================================
--- branches/CMake/release/boost/xpressive/traits/cpp_regex_traits.hpp (original)
+++ branches/CMake/release/boost/xpressive/traits/cpp_regex_traits.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -118,6 +118,8 @@
// Reserve some bits for the implementation
#if defined(__GLIBCXX__)
umaskex_t const std_ctype_reserved = 0x8000;
+ #elif defined(_CPPLIB_VER) && defined(BOOST_WINDOWS)
+ umaskex_t const std_ctype_reserved = 0x8200;
#else
umaskex_t const std_ctype_reserved = 0;
#endif
Modified: branches/CMake/release/doc/Jamfile.v2
==============================================================================
--- branches/CMake/release/doc/Jamfile.v2 (original)
+++ branches/CMake/release/doc/Jamfile.v2 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -35,6 +35,7 @@
<dependency>../libs/intrusive/doc//autodoc.xml
<dependency>../libs/intrusive/doc//intrusive
<dependency>../libs/asio/doc//asio
+ <dependency>../libs/thread/doc//thread
## Add path references to the QuickBook generated docs...
@@ -49,6 +50,7 @@
<implicit-dependency>../libs/mpi/doc//mpi
<implicit-dependency>../libs/interprocess/doc//interprocess
<implicit-dependency>../libs/intrusive/doc//intrusive
+ <implicit-dependency>../libs/thread/doc//thread
<xsl:param>boost.libraries=../../libs/libraries.htm
Modified: branches/CMake/release/doc/src/boost.xml
==============================================================================
--- branches/CMake/release/doc/src/boost.xml (original)
+++ branches/CMake/release/doc/src/boost.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -650,7 +650,7 @@
</libraryinfo>
</library>
- <xi:include href="../../libs/thread/doc/thread.xml"/>
+ <xi:include href="thread.xml"/>
<library name="Timer" dirname="timer" html-only="1"
url="../../libs/timer/index.html">
Modified: branches/CMake/release/libs/circular_buffer/doc/circular_buffer.html
==============================================================================
--- branches/CMake/release/libs/circular_buffer/doc/circular_buffer.html (original)
+++ branches/CMake/release/libs/circular_buffer/doc/circular_buffer.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -943,7 +943,8 @@
</dt>
<dd>
This constructor has been defined only due to compatibility with the STL container definition. Avoid
- using it because it may allocate <b>very large</b> amount of memory.
+ using it because it may allocate <b>very large</b> amount of memory (depending on allocator's
+ max_size()).
</dd>
</dl>
</td>
@@ -3187,7 +3188,8 @@
<code><a href=
"#classboost_1_1circular__buffer_195158ed4d4b03794068e259f85291995">max_size()</a></code>,
<code>reserve()</code>,
- <code>resize()</code>
+ <code><a href="#classboost_1_1circular__buffer_180c2e2e66a8fa9d0b7adc1b54921a8c3">resize(size_type,
+ const_reference)</a></code>
</dd>
</dl>
</td>
@@ -3199,7 +3201,8 @@
"#classboost_1_1circular__buffer_19ba12c0142a21a7d960877c22fa3ea00">size_type</a> max_size()
const;</b></code><br>
<br>
- Get the largest possible size or capacity of the <code>circular_buffer</code>.
+ Get the largest possible size or capacity of the <code>circular_buffer</code>. (It depends on allocator's
+ max_size()).
<dl>
<dt>
<b>Returns:</b>
@@ -3490,7 +3493,7 @@
<code><a href=
"#classboost_1_1circular__buffer_195158ed4d4b03794068e259f85291995">max_size()</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity()</a></code>
+ "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity(capacity_type)</a></code>
</dd>
</dl>
</td>
@@ -3579,8 +3582,9 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer_1477715e9d31d2cc5b02ad8ecf3c68c46">rset_capacity()</a></code>,
- <code>resize()</code>
+ "#classboost_1_1circular__buffer_1477715e9d31d2cc5b02ad8ecf3c68c46">rset_capacity(capacity_type)</a></code>,
+ <code><a href="#classboost_1_1circular__buffer_180c2e2e66a8fa9d0b7adc1b54921a8c3">resize(size_type,
+ const_reference)</a></code>
</dd>
</dl>
</td>
@@ -3685,9 +3689,9 @@
<b>See Also:</b>
</dt>
<dd>
- <code>rresize()</code>,
- <code><a href=
- "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity()</a></code>
+ <code><a href="#classboost_1_1circular__buffer_144ecd9ec5f54a2d61c7d132e445d3483">rresize(size_type,
+ const_reference)</a></code>, <code><a href=
+ "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity(capacity_type)</a></code>
</dd>
</dl>
</td>
@@ -3776,8 +3780,9 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity()</a></code>,
- <code>rresize()</code>
+ "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity(capacity_type)</a></code>,
+ <code><a href="#classboost_1_1circular__buffer_144ecd9ec5f54a2d61c7d132e445d3483">rresize(size_type,
+ const_reference)</a></code>
</dd>
</dl>
</td>
@@ -3882,9 +3887,9 @@
<b>See Also:</b>
</dt>
<dd>
- <code>rresize()</code>,
- <code><a href=
- "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity()</a></code>
+ <code><a href="#classboost_1_1circular__buffer_180c2e2e66a8fa9d0b7adc1b54921a8c3">resize(size_type,
+ const_reference)</a></code>, <code><a href=
+ "#classboost_1_1circular__buffer_1477715e9d31d2cc5b02ad8ecf3c68c46">rset_capacity(capacity_type)</a></code>
</dd>
</dl>
</td>
@@ -4594,7 +4599,7 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer_10ef57e73c193682a649d8eb4a1096dce">push_front()</a></code>,
+ "#classboost_1_1circular__buffer_10ef57e73c193682a649d8eb4a1096dce">push_front(const_reference)</a></code>,
<code><a href=
"#classboost_1_1circular__buffer_1df0da00cb501bea75afbbfab9f546a07">pop_back()</a></code>,
<code><a href=
@@ -4676,7 +4681,7 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer_1aa35dd7ef8eb1d04508494d1835cc82e">push_back()</a></code>,
+ "#classboost_1_1circular__buffer_1aa35dd7ef8eb1d04508494d1835cc82e">push_back(const_reference)</a></code>,
<code><a href=
"#classboost_1_1circular__buffer_1df0da00cb501bea75afbbfab9f546a07">pop_back()</a></code>,
<code><a href=
@@ -4748,9 +4753,9 @@
<code><a href=
"#classboost_1_1circular__buffer_18ac972dc24ef7236faa1875de92b9dd8">pop_front()</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer_1aa35dd7ef8eb1d04508494d1835cc82e">push_back()</a></code>,
+ "#classboost_1_1circular__buffer_1aa35dd7ef8eb1d04508494d1835cc82e">push_back(const_reference)</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer_10ef57e73c193682a649d8eb4a1096dce">push_front()</a></code>
+ "#classboost_1_1circular__buffer_10ef57e73c193682a649d8eb4a1096dce">push_front(const_reference)</a></code>
</dd>
</dl>
</td>
@@ -4818,9 +4823,9 @@
<code><a href=
"#classboost_1_1circular__buffer_1df0da00cb501bea75afbbfab9f546a07">pop_back()</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer_1aa35dd7ef8eb1d04508494d1835cc82e">push_back()</a></code>,
+ "#classboost_1_1circular__buffer_1aa35dd7ef8eb1d04508494d1835cc82e">push_back(const_reference)</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer_10ef57e73c193682a649d8eb4a1096dce">push_front()</a></code>
+ "#classboost_1_1circular__buffer_10ef57e73c193682a649d8eb4a1096dce">push_front(const_reference)</a></code>
</dd>
</dl>
</td>
Modified: branches/CMake/release/libs/circular_buffer/doc/space_optimized.html
==============================================================================
--- branches/CMake/release/libs/circular_buffer/doc/space_optimized.html (original)
+++ branches/CMake/release/libs/circular_buffer/doc/space_optimized.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1194,7 +1194,8 @@
<code><a href=
"circular_buffer.html#classboost_1_1circular__buffer_195158ed4d4b03794068e259f85291995">max_size()</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_149f28bc5b33d2062b9f6a33b48264e3f">set_capacity()</a></code>
+ "#classboost_1_1circular__buffer__space__optimized_149f28bc5b33d2062b9f6a33b48264e3f">set_capacity(const
+ capacity_type&)</a></code>
</dd>
</dl>
</td>
@@ -1311,9 +1312,10 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_10f096c108ebde69ae83a9de41b3bea56">rset_capacity()</a></code>,
- <code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1f244ff5576b79f8d60e273c02d71c9f2">resize()</a></code>
+ "#classboost_1_1circular__buffer__space__optimized_10f096c108ebde69ae83a9de41b3bea56">rset_capacity(const
+ capacity_type&)</a></code>, <code><a href=
+ "#classboost_1_1circular__buffer__space__optimized_1f244ff5576b79f8d60e273c02d71c9f2">resize(size_type,
+ const_reference)</a></code>
</dd>
</dl>
</td>
@@ -1423,9 +1425,10 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1d45e2e72d9e3fb42e090ebc47ac8d7ee">rresize()</a></code>,
- <code><a href=
- "#classboost_1_1circular__buffer__space__optimized_149f28bc5b33d2062b9f6a33b48264e3f">set_capacity()</a></code>
+ "#classboost_1_1circular__buffer__space__optimized_1d45e2e72d9e3fb42e090ebc47ac8d7ee">rresize(size_type,
+ const_reference)</a></code>, <code><a href=
+ "#classboost_1_1circular__buffer__space__optimized_149f28bc5b33d2062b9f6a33b48264e3f">set_capacity(const
+ capacity_type&)</a></code>
</dd>
</dl>
</td>
@@ -1523,9 +1526,10 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_149f28bc5b33d2062b9f6a33b48264e3f">set_capacity()</a></code>,
- <code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1d45e2e72d9e3fb42e090ebc47ac8d7ee">rresize()</a></code>
+ "#classboost_1_1circular__buffer__space__optimized_149f28bc5b33d2062b9f6a33b48264e3f">set_capacity(const
+ capacity_type&)</a></code>, <code><a href=
+ "#classboost_1_1circular__buffer__space__optimized_1d45e2e72d9e3fb42e090ebc47ac8d7ee">rresize(size_type,
+ const_reference)</a></code>
</dd>
</dl>
</td>
@@ -1635,9 +1639,10 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1d45e2e72d9e3fb42e090ebc47ac8d7ee">rresize()</a></code>,
- <code><a href=
- "#classboost_1_1circular__buffer__space__optimized_149f28bc5b33d2062b9f6a33b48264e3f">set_capacity()</a></code>
+ "#classboost_1_1circular__buffer__space__optimized_1f244ff5576b79f8d60e273c02d71c9f2">resize(size_type,
+ const_reference)</a></code>, <code><a href=
+ "#classboost_1_1circular__buffer__space__optimized_10f096c108ebde69ae83a9de41b3bea56">rset_capacity(const
+ capacity_type&)</a></code>
</dd>
</dl>
</td>
@@ -2400,7 +2405,7 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1f0484fd492b377ff80c0bcb76183162c">push_front()</a></code>,
+ "#classboost_1_1circular__buffer__space__optimized_1f0484fd492b377ff80c0bcb76183162c">push_front(const_reference)</a></code>,
<code><a href=
"#classboost_1_1circular__buffer__space__optimized_19c4290c18ab3dd2462dc01fb8368dff6">pop_back()</a></code>,
<code><a href=
@@ -2493,7 +2498,7 @@
</dt>
<dd>
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1cf3ffed54f5fece9315fb96726e5e205">push_back()</a></code>,
+ "#classboost_1_1circular__buffer__space__optimized_1cf3ffed54f5fece9315fb96726e5e205">push_back(const_reference)</a></code>,
<code><a href=
"#classboost_1_1circular__buffer__space__optimized_19c4290c18ab3dd2462dc01fb8368dff6">pop_back()</a></code>,
<code><a href=
@@ -2570,9 +2575,9 @@
<code><a href=
"#classboost_1_1circular__buffer__space__optimized_1d7d496c40fc053258ac7d19cf5261788">pop_front()</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1cf3ffed54f5fece9315fb96726e5e205">push_back()</a></code>,
+ "#classboost_1_1circular__buffer__space__optimized_1cf3ffed54f5fece9315fb96726e5e205">push_back(const_reference)</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1f0484fd492b377ff80c0bcb76183162c">push_front()</a></code>
+ "#classboost_1_1circular__buffer__space__optimized_1f0484fd492b377ff80c0bcb76183162c">push_front(const_reference)</a></code>
</dd>
</dl>
</td>
@@ -2645,9 +2650,9 @@
<code><a href=
"#classboost_1_1circular__buffer__space__optimized_19c4290c18ab3dd2462dc01fb8368dff6">pop_back()</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1cf3ffed54f5fece9315fb96726e5e205">push_back()</a></code>,
+ "#classboost_1_1circular__buffer__space__optimized_1cf3ffed54f5fece9315fb96726e5e205">push_back(const_reference)</a></code>,
<code><a href=
- "#classboost_1_1circular__buffer__space__optimized_1f0484fd492b377ff80c0bcb76183162c">push_front()</a></code>
+ "#classboost_1_1circular__buffer__space__optimized_1f0484fd492b377ff80c0bcb76183162c">push_front(const_reference)</a></code>
</dd>
</dl>
</td>
Modified: branches/CMake/release/libs/date_time/src/date_time.doc
==============================================================================
Binary files. No diff available.
Modified: branches/CMake/release/libs/filesystem/doc/do-list.htm
==============================================================================
--- branches/CMake/release/libs/filesystem/doc/do-list.htm (original)
+++ branches/CMake/release/libs/filesystem/doc/do-list.htm 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -4,8 +4,7 @@
Do-list</h1>
<h2>Current</h2>
<ul>
- <li>Add test cases and docs for Windows \\?\ and
- \\?\UNC\ naming conventions.</li>
+ <li>Add test cases and docs for Windows \\?\ and \\?\UNC\ naming conventions.</li>
<li>Should operations.cpp assert or BOOST_ASSERT on more preconditions?</li>
<li>Apply PJP's Wide/Narrow conversion proposal to traits, once he stabilizes it.</li>
<li>Glob syntax -> regex syntax converter. See
@@ -35,7 +34,7 @@
</ul>
<hr>
<p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->06 February, 2006<!--webbot bot="Timestamp" endspan i-checksum="40411" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->18 March, 2008<!--webbot bot="Timestamp" endspan i-checksum="29005" --></p>
<p>© Copyright Beman Dawes, 2002</p>
<p> Use, modification, and distribution are subject to the Boost Software
License, Version 1.0. (See accompanying file <a href="../../../LICENSE_1_0.txt">
Modified: branches/CMake/release/libs/filesystem/doc/faq.htm
==============================================================================
--- branches/CMake/release/libs/filesystem/doc/faq.htm (original)
+++ branches/CMake/release/libs/filesystem/doc/faq.htm 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -141,15 +141,9 @@
basic_path</i> member
functions, while operations performed by the operating system are provided as
free functions.</p>
-<p><b>Why is path normalized form different
-from canonical form?</b></p>
-<p>On operating systems such as POSIX which allow symbolic links to directories,
-the normalized form of a path can represent a different location than the
-canonical form. See use case
-from Walter Landry.</p>
<hr>
<p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->08 November, 2007<!--webbot bot="Timestamp" endspan i-checksum="39371" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->18 March, 2008<!--webbot bot="Timestamp" endspan i-checksum="29005" --></p>
<p>© Copyright Beman Dawes, 2002</p>
<p> Use, modification, and distribution are subject to the Boost Software
License, Version 1.0. See <a href="http://www.boost.org/LICENSE_1_0.txt">
Modified: branches/CMake/release/libs/filesystem/doc/i18n.html
==============================================================================
--- branches/CMake/release/libs/filesystem/doc/i18n.html (original)
+++ branches/CMake/release/libs/filesystem/doc/i18n.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -37,8 +37,7 @@
</li>
<li>More efficient operations when iterating over directories.<br>
</li>
- <li>A
- <a href="tr2_proposal.html#Class-template-basic_recursive_directory_iterator">recursive
+ <li>A <a href="reference.html#recursive_directory_iterator">recursive
directory iterator</a> is now provided. </li>
</ul>
<p>Rationale for some of the changes is also provided.</p>
@@ -68,10 +67,10 @@
file systems the <i>wpath</i> external encoding is <a href="design.htm#Kuhn">
UTF-8</a>, while for modern Windows file systems such as NTFS it is
<a href="http://en.wikipedia.org/wiki/UTF-16">UTF-16</a>.</p>
-<p>The operational functions in
+<p>The operational functions in
<a href="../../../boost/filesystem/operations.hpp">operations.hpp</a> are provided with overloads for
<i>path</i>, <i>wpath</i>, and user-defined <i>basic_path</i>'s. A
-"do-the-right-thing" rule
+"do-the-right-thing" rule
applies to implementations, ensuring that the correct overload will be chosen.</p>
<h2><a name="Simplification">Simplification</a> of path interface</h2>
<p>Prior versions of the library required users of class <i>path</i> to identify
@@ -90,11 +89,10 @@
it, but with much less impact on those who don't need it.</li>
</ul>
<p>Additionally,
-basic_filesystem_error has been put
+basic_filesystem_error has been put
on a diet and generally simplified.</p>
-<p>Error codes have been simplified and aligned with [POSIX-01]. A supporting
-header <a href="../../../boost/filesystem/cerrno.hpp">
-<boost/filesystem/cerrno.hpp></a> is also provided.</p>
+<p>Error codes have been moved to a separate library,
+Boost.System.</p>
<p><code>"//:"</code> has been introduced as a path escape prefix to identify
native paths. Rationale: simplifies basic_path constructor interfaces, easier
use for platforms needing explicit native format identification.</p>
@@ -112,19 +110,19 @@
<p>As part of the predicate discussions, particularly with Rob Stewart, it
became obvious that sometimes applications need access to raw status information
without any possibility of an exception being thrown. The
-status() function was added to meet this
+status() function was added to meet this
need. It also proved clearer to specify the semantics of predicate functions in
terms of status().</p>
<h3><a name="is_file">is_file</a>()</h3>
<p>About the same time, Jeff Garland suggested that an
-is_file() predicate would
-compliment is_directory(). In working on the analysis below, it became obvious
+is_file() predicate would
+compliment is_directory(). In working on the analysis below, it became obvious
that the expectations for is_file() were different from the expectations for !is_directory(),
so is_file() was added. </p>
<h3><a name="is_other">is_other</a>()</h3>
<p>On some operating systems, it is possible to have a directory entry which is
not for either a directory or a file. The
-is_other()
+is_other()
function identifies such cases.</p>
<h3>Should predicates throw on errors?</h3>
<p>Some conditions reported by operating systems as errors (see
@@ -132,7 +130,7 @@
false, rather than indicating serious failure. But other errors represent
serious hardware or network problems, or permissions problems.</p>
<p>Some people, particularly Rob Stewart, argue that in a function like
-is_directory(), any error should simply cause the function to return false. If
+is_directory(), any error should simply cause the function to return false. If
there is actually an underlying problem, it will be detected it due course when
a directory_iterator or fstream operation is attempted.</p>
<p>That view is was rejected because of the following considerations:</p>
@@ -390,7 +388,7 @@
the problem worse.<br>
</li>
</ul>
-<h3>No versions of status() which throw exceptions on
+<h3>No versions of status() which throw exceptions on
errors</h3>
<p>The rationale for not including versions of status()
which throw exceptions on errors is that (1) the primary purpose of this
@@ -398,7 +396,7 @@
unwanted, and (2) exceptions on errors are already provided by the predicate
functions. There would be little or no efficiency gain from providing a throwing
version of status().</p>
-<h3>Symlink identifying version of status() function</h3>
+<h3>Symlink identifying version of status() function</h3>
<p>A symlink identifying version of the status() function is distinguished by a
second argument. Often separately named functions are more appropriate than
overloading when behavior
@@ -417,8 +415,8 @@
is also provided, to meet unforeseen needs.</p>
<hr>
<p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->03 June, 2007<!--webbot bot="Timestamp" endspan i-checksum="19946" --></p>
-<p>© Copyright Beman Dawes, 2005</p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->18 March, 2008<!--webbot bot="Timestamp" endspan i-checksum="29005" --></p>
+<p>© Copyright Beman Dawes, 2005</p>
<p>Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or
copy at www.boost.org/LICENSE_1_0.txt)</p>
Modified: branches/CMake/release/libs/filesystem/doc/index.htm
==============================================================================
--- branches/CMake/release/libs/filesystem/doc/index.htm (original)
+++ branches/CMake/release/libs/filesystem/doc/index.htm 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -128,12 +128,12 @@
using boost::filesystem; // for ease of tutorial presentation;
// a namespace alias is preferred practice in real code</pre>
</blockquote>
-<p>A class path object can be created:</p>
+<p>A class path object can be created:</p>
<blockquote>
<pre>path my_path( "some_dir/file.txt" );</pre>
</blockquote>
<p>The string passed to the <i>path</i> constructor may be in a
-portable generic path format or an
+portable generic path format or an
implementation-defined native operating system format. Access functions
make <i>my_path</i> contents available to the underlying operating system API in an operating system dependent format,
such as <code>"some_dir:file.txt"</code>, <code>"[some_dir]file.txt"</code>,
@@ -166,7 +166,7 @@
<p>Paths can include references to the current directory, using "<code>.</code>"
notation, and the parent directory, using "<code>..</code>"
notation.</p>
-<p>Class basic_directory_iterator
+<p>Class basic_directory_iterator
is an important component of the library. It provides an input iterator over the
contents of a directory, with the value type being class <i>basic_path</i>.
Typedefs <i>directory_iterator</i> and <i>wdirectory_iterator</i> are provided
@@ -227,7 +227,7 @@
<h4><b>Effects and Postconditions not guaranteed in the presence of race-conditions</b></h4>
<p>Filesystem function specifications follow the C++ Standard Library form, specifying behavior in terms of
effects and postconditions. If
-a race-condition exists, a function's
+a race-condition exists, a function's
postconditions may no longer be true by the time the function returns to the
caller.</p>
<blockquote>
@@ -259,7 +259,7 @@
</blockquote>
<h4><b>May throw exceptions</b></h4>
<p>Unless otherwise specified, Boost.Filesystem functions throw <i>
-basic_filesystem_error</i>
+basic_filesystem_error</i>
exceptions if they cannot successfully complete their operational
specifications. Also, implementations may use C++ Standard Library functions,
which may throw <i>std::bad_alloc</i>. These exceptions may be thrown even
@@ -292,10 +292,8 @@
<p>The programs used to generate the Boost regression test status tables use the
Filesystem Library extensively. See:</p>
<ul>
- <li><a href="../../../tools/regression/process_jam_log.cpp">
- process_jam_log.cpp</a></li>
- <li><a href="../../../tools/regression/compiler_status.cpp">
- compiler_status.cpp</a></li>
+ <li>process_jam_log.cpp</li>
+ <li>compiler_status.cpp</li>
</ul>
<p>Test programs are sometimes useful in understanding a library, as they
illustrate what the developer expected to work and not work. See:</p>
@@ -498,12 +496,12 @@
<li>Clearer specification, by reference to [POSIX-01],
the ISO/IEEE Single Unix Standard, with provisions for Windows and other
operating systems.</li>
- <li>New functions status,
- symlink_status,
- is_file,
- is_symlink,
- create_hard_link,
- create_symlink, path member and non-member swap, path inserter, path
+ <li>New functions status,
+ symlink_status,
+ is_file,
+ is_symlink,
+ create_hard_link,
+ create_symlink, path member and non-member swap, path inserter, path
extractor, additional path relational and "/" operator overloads, additional
path member template functions taking iterator arguments.</li>
<li>More efficient operations when iterating over directories.</li>
@@ -522,19 +520,19 @@
<h3>Version 1.32.0</h3>
<ul>
- <li>file_size() function added.</li>
- <li>Class path relational operators added.</li>
- <li>equivalent() function added.</li>
- <li>create_directory() no longer
+ <li>file_size() function added.</li>
+ <li>Class path relational operators added.</li>
+ <li>equivalent() function added.</li>
+ <li>create_directory() no longer
throws if the directory already exists. A bool is returned, indicating that
the directory did not preexist. Similar changes made to
- create_directories().</li>
+ create_directories().</li>
<li>Docs added for users wishing Cygwin/POSIX behavior
on Windows.</li>
<li>For POSIX, Large File Support (LSF) is enabled if available, such as on
Linux.</li>
- <li>current_path() and
- initial_path() on POSIX now handle
+ <li>current_path() and
+ initial_path() on POSIX now handle
very long paths correctly.</li>
</ul>
@@ -544,7 +542,7 @@
<li>The object library can now be built for either
static or dynamic (shared/dll) linking. </li>
<li>Several added functions, including improved checking for directory and
- file name portability. See <a href="portability_guide.htm#name_checkÂ_functions">
+ file name portability. See <a href="portability_guide.htm#name_checkÃÂ_functions">
Name check functions</a>.</li>
<li>Separation of canonical form and normalized form and a new path member
function normalize(). This changes behavior,
@@ -555,9 +553,9 @@
<hr>
<p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->30 November, 2007<!--webbot bot="Timestamp" endspan i-checksum="39358" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->18 March, 2008<!--webbot bot="Timestamp" endspan i-checksum="29005" --></p>
-<p>© Copyright Beman Dawes, 2002-2005</p>
+<p>© Copyright Beman Dawes, 2002-2005</p>
<p> Use, modification, and distribution are subject to the Boost Software
License, Version 1.0. See <a href="http://www.boost.org/LICENSE_1_0.txt">
www.boost.org/LICENSE_1_0.txt</a></p>
Modified: branches/CMake/release/libs/filesystem/doc/reference.html
==============================================================================
--- branches/CMake/release/libs/filesystem/doc/reference.html (original)
+++ branches/CMake/release/libs/filesystem/doc/reference.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -343,7 +343,7 @@
template <class Path> class basic_recursive_directory_iterator;
- typedef basic_recursive_directory_iterator<path> recursive_directory_iterator;
+ typedef basic_recursive_directory_iterator<path> <a name="recursive_directory_iterator">recursive_directory_iterator</a>;
typedef basic_recursive_directory_iterator<wpath> wrecursive_directory_iterator;
enum file_type { status_unknown, file_not_found, regular_file, directory_file,
@@ -2260,8 +2260,7 @@
be <b>residue left over from a prior program</b> run by the command
processor! Although these semantics are often useful, they are also very
error-prone.</p>
- <p>See
- <a href="file:///C|/boost/site/libs/filesystem/doc/operations.htm#complete_note">
+ <p>See <a href="#complete_note">
<i>complete()</i> note</a> for usage suggestions. <i>-- end note</i>]</p>
</blockquote>
<h4><a name="Convenience-functions">Convenience functions</a></h4>
@@ -3058,7 +3057,7 @@
<p>Distributed under the Boost Software License, Version 1.0. See
<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a></p>
<p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->14 November 2007<!--webbot bot="Timestamp" endspan i-checksum="40333" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->18 March 2008<!--webbot bot="Timestamp" endspan i-checksum="27357" --></p>
</body>
Deleted: branches/CMake/release/libs/filesystem/example/vc++.bat
==============================================================================
--- branches/CMake/release/libs/filesystem/example/vc++.bat 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,5 +0,0 @@
-set BOOST_ROOT=..\..\..
-rem A more robust script would test for BOOST_ROOT already set in the environment.
-
-cl -EHsc -I%BOOST_ROOT% %* -link -LIBPATH:%BOOST_ROOT%\lib
-
Modified: branches/CMake/release/libs/filesystem/src/operations.cpp
==============================================================================
--- branches/CMake/release/libs/filesystem/src/operations.cpp (original)
+++ branches/CMake/release/libs/filesystem/src/operations.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1319,12 +1319,12 @@
if ( result == 0 ) return dir_itr_close( handle, buffer );
target = entry->d_name;
# ifdef BOOST_FILESYSTEM_STATUS_CACHE
- if ( entry->d_type == DT_UNKNOWN ) // filesystem does not supply d_type value
+ if ( entry->d_type == DT_UNKNOWN ) // filesystem does not supply d_type value
{
sf = symlink_sf = fs::file_status(fs::status_unknown);
}
- else // filesystem supplies d_type value
- {
+ else // filesystem supplies d_type value
+ {
if ( entry->d_type == DT_DIR )
sf = symlink_sf = fs::file_status( fs::directory_file );
else if ( entry->d_type == DT_REG )
@@ -1335,7 +1335,7 @@
symlink_sf = fs::file_status( fs::symlink_file );
}
else sf = symlink_sf = fs::file_status( fs::status_unknown );
- }
+ }
# else
sf = symlink_sf = fs::file_status( fs::status_unknown );
# endif
Modified: branches/CMake/release/libs/function_types/build/Jamfile
==============================================================================
--- branches/CMake/release/libs/function_types/build/Jamfile (original)
+++ branches/CMake/release/libs/function_types/build/Jamfile 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -2,7 +2,7 @@
# (C) Copyright Tobias Schwinger
#
# Use modification and distribution are subject to the boost Software License,
-# Version 1.0. (See http:/\/www.boost.org/LICENSE_1_0.txt).
+# Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
# Generates preprocessed files with wave.
@@ -13,18 +13,24 @@
actions wave
{
- $(BOOST_ROOT)/dist/bin/wave -S$(BOOST_ROOT) $(>) -o $(<)
+ ../../../dist/bin/wave -S../../.. $(>) -o $(<)
}
-make $(BOOST_ROOT)/libs/function_types/build/timestamps/arity_loops
+make ../../../libs/function_types/build/timestamps/arity_loops
: preprocess_arity_loops.cpp : wave
;
-make $(BOOST_ROOT)/libs/function_types/build/timestamps/encoding
+explicit ../../../libs/function_types/build/timestamps/arity_loops ;
+
+make ../../../libs/function_types/build/timestamps/encoding
: preprocess_encoding.cpp : wave
;
-make $(BOOST_ROOT)/libs/function_types/build/timestamps/cc_names
+explicit ../../../libs/function_types/build/timestamps/encoding ;
+
+make ../../../libs/function_types/build/timestamps/cc_names
: preprocess_cc_names.cpp : wave
;
+explicit ../../../libs/function_types/build/timestamps/cc_names ;
+
Modified: branches/CMake/release/libs/function_types/build/preprocess_arity_loops.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/build/preprocess_arity_loops.cpp (original)
+++ branches/CMake/release/libs/function_types/build/preprocess_arity_loops.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -2,7 +2,7 @@
// (C) Copyright Tobias Schwinger
//
// Use modification and distribution are subject to the boost Software License,
-// Version 1.0. (See http:/\/www.boost.org/LICENSE_1_0.txt).
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
//------------------------------------------------------------------------------
Modified: branches/CMake/release/libs/function_types/build/preprocess_cc_names.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/build/preprocess_cc_names.cpp (original)
+++ branches/CMake/release/libs/function_types/build/preprocess_cc_names.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -2,7 +2,7 @@
// (C) Copyright Tobias Schwinger
//
// Use modification and distribution are subject to the boost Software License,
-// Version 1.0. (See http:/\/www.boost.org/LICENSE_1_0.txt).
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
//------------------------------------------------------------------------------
Modified: branches/CMake/release/libs/function_types/build/preprocess_encoding.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/build/preprocess_encoding.cpp (original)
+++ branches/CMake/release/libs/function_types/build/preprocess_encoding.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -2,7 +2,7 @@
// (C) Copyright Tobias Schwinger
//
// Use modification and distribution are subject to the boost Software License,
-// Version 1.0. (See http:/\/www.boost.org/LICENSE_1_0.txt).
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
//------------------------------------------------------------------------------
Modified: branches/CMake/release/libs/function_types/build/timestamps/cc_names
==============================================================================
--- branches/CMake/release/libs/function_types/build/timestamps/cc_names (original)
+++ branches/CMake/release/libs/function_types/build/timestamps/cc_names 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,2 +1 @@
timestamp file
-
Modified: branches/CMake/release/libs/function_types/doc/Jamfile
==============================================================================
--- branches/CMake/release/libs/function_types/doc/Jamfile (original)
+++ branches/CMake/release/libs/function_types/doc/Jamfile 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -2,7 +2,7 @@
# (C) Copyright Tobias Schwinger
#
# Use modification and distribution are subject to the boost Software License,
-# Version 1.0. (See http:/\/www.boost.org/LICENSE_1_0.txt).
+# Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
using quickbook ;
@@ -13,6 +13,7 @@
:
<xsl:param>boost.root=../../../..
<xsl:param>boost.libraries=../../../libraries.htm
+ <xsl:param>html.stylesheet=../../../../doc/html/boostbook.css
<xsl:param>chunk.first.sections=1
<xsl:param>chunk.section.depth=2
<xsl:param>generate.section.toc.level=2
Modified: branches/CMake/release/libs/function_types/doc/function_types.qbk
==============================================================================
--- branches/CMake/release/libs/function_types/doc/function_types.qbk (original)
+++ branches/CMake/release/libs/function_types/doc/function_types.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1099,6 +1099,7 @@
* Jonathan Turkanis
* Pavel Vozenilek
* Steven Watanabe
+* K. Noel Belcourt
[endsect]
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/about_tag_types.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/about_tag_types.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/about_tag_types.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>About Tag Types</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> About Tag Types</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="use_cases.html" title="Use Cases">
-<link rel="next" href="reference.html" title="Reference">
+<link rel="prev" href="use_cases.html" title=" Use Cases">
+<link rel="next" href="reference.html" title=" Reference">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,8 +24,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.about_tag_types"></a><a class="link" href="about_tag_types.html" title="About Tag Types"> About Tag Types</a>
-</h2></div></div></div>
+<a name="boost_functiontypes.about_tag_types"></a> About Tag Types</h2></div></div></div>
<p>
Boost.FunctionTypes uses tag types to encode properties that are not types
per se, such as calling convention or whether a function is variadic or cv-
@@ -85,11 +84,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/acknowledgements.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/acknowledgements.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/acknowledgements.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,20 +1,20 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Acknowledgements</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="rationale.html" title="Rationale">
+<link rel="prev" href="rationale.html" title=" Rationale">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -23,8 +23,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements"> Acknowledgements</a>
-</h2></div></div></div>
+<a name="boost_functiontypes.acknowledgements"></a> Acknowledgements</h2></div></div></div>
<p>
Thanks go to the following people for supporting the development of this library
in one or the other way:
@@ -72,15 +71,14 @@
<li>
Steven Watanabe
</li>
+<li>
+ K. Noel Belcourt
+ </li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/introduction.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/introduction.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/introduction.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Introduction</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Introduction</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
<link rel="prev" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="next" href="use_cases.html" title="Use Cases">
+<link rel="next" href="use_cases.html" title=" Use Cases">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,8 +24,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.introduction"></a><a class="link" href="introduction.html" title="Introduction"> Introduction</a>
-</h2></div></div></div>
+<a name="boost_functiontypes.introduction"></a> Introduction</h2></div></div></div>
<p>
Boost.FunctionTypes provides functionality to classify, decompose and synthesize
function, function pointer, function reference and pointer to member types.
@@ -57,34 +56,35 @@
constant called <code class="literal">value</code>.
</p>
<pre class="programlisting">
-<a class="link" href="reference/classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="is_function_pointer">is_function_pointer</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">value</span> <span class="comment">// == true
+<a href="reference/classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="
+ is_function_pointer">is_function_pointer</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">value</span> <span class="comment">// == true
</span>
-<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">value</span> <span class="comment">// == 1
+<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
+ function_arity">function_arity</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">value</span> <span class="comment">// == 1
</span></pre>
<p>
Templates that encapsulate properties that are single types contain a type
member called <code class="literal">type</code>.
</p>
<pre class="programlisting">
-<a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="function_type">function_type</a><span class="special"><</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">bool</span><span class="special">,</span><span class="keyword">int</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span> <span class="comment">// is bool(int)
+<a href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="
+ function_type">function_type</a><span class="special"><</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">bool</span><span class="special">,</span><span class="keyword">int</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span> <span class="comment">// is bool(int)
</span>
-<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="result_type">result_type</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(&)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">type</span> <span class="comment">// is bool
+<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="
+ result_type">result_type</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(&)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">type</span> <span class="comment">// is bool
</span></pre>
<p>
Templates that encapsulate properties that are type lists model an MPL-compatible
type sequence.
</p>
<pre class="programlisting">
-<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">></span> <span class="comment">// models an MPL sequence
+<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
+ parameter_types">parameter_types</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">></span> <span class="comment">// models an MPL sequence
</span></pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/rationale.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/rationale.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/rationale.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Rationale</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Rationale</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="reference/macros.html" title="Macros">
-<link rel="next" href="acknowledgements.html" title="Acknowledgements">
+<link rel="prev" href="reference/macros.html" title=" Macros">
+<link rel="next" href="acknowledgements.html" title=" Acknowledgements">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,13 +24,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.rationale"></a><a class="link" href="rationale.html" title="Rationale"> Rationale</a>
-</h2></div></div></div>
-<a name="boost_functiontypes.rationale.error_handling_rationale"></a><h4>
-<a name="id2643688"></a>
- <a class="link" href="rationale.html#boost_functiontypes.rationale.error_handling_rationale">Error
+<a name="boost_functiontypes.rationale"></a> Rationale</h2></div></div></div>
+<a name="boost_functiontypes.rationale.error_handling_rationale"></a><h3>
+<a name="id932133"></a>
+ <a href="rationale.html#boost_functiontypes.rationale.error_handling_rationale">Error
handling rationale</a>
- </h4>
+ </h3>
<p>
The library does not define the required members of class templates in case
of an error. This technique causes the compiler to stop displaying diagnostics
@@ -41,10 +40,10 @@
The library's components have limited error conditions, so problematic input
can be spotted easily.
</p>
-<a name="boost_functiontypes.rationale.why_mpl_sequences_"></a><h4>
-<a name="id2643722"></a>
- <a class="link" href="rationale.html#boost_functiontypes.rationale.why_mpl_sequences_">Why MPL Sequences?</a>
- </h4>
+<a name="boost_functiontypes.rationale.why_mpl_sequences_"></a><h3>
+<a name="id932170"></a>
+ Why MPL Sequences?
+ </h3>
<p>
MPL provides algorithms on Sequences, so transformations (such as turning by-value
parameter types into const references for optimized forwarding or computing
@@ -54,20 +53,20 @@
other Boost libraries (most importantly Fusion),
so another reason is interoperability.
</p>
-<a name="boost_functiontypes.rationale.pointer_to_member_object_types"></a><h4>
-<a name="id2643772"></a>
- <a class="link" href="rationale.html#boost_functiontypes.rationale.pointer_to_member_object_types">Pointer
+<a name="boost_functiontypes.rationale.pointer_to_member_object_types"></a><h3>
+<a name="id932228"></a>
+ <a href="rationale.html#boost_functiontypes.rationale.pointer_to_member_object_types">Pointer
to member object types</a>
- </h4>
+ </h3>
<p>
Despite their syntax, pointer to member object types can be seen as dereferencing
functionals.
</p>
-<a name="boost_functiontypes.rationale.the_classtransform_template_parameter"></a><h4>
-<a name="id2643798"></a>
- <a class="link" href="rationale.html#boost_functiontypes.rationale.the_classtransform_template_parameter">The
+<a name="boost_functiontypes.rationale.the_classtransform_template_parameter"></a><h3>
+<a name="id932259"></a>
+ <a href="rationale.html#boost_functiontypes.rationale.the_classtransform_template_parameter">The
ClassTransform template parameter</a>
- </h4>
+ </h3>
<p>
<code class="literal">This</code>-pointer, <code class="literal">this</code>-reference or just
the object (or maybe even a smart pointer to the object) plus adjustments of
@@ -80,10 +79,10 @@
client to adjust the class type before the sequence is formed and then treat
all parameters uniformly.
</p>
-<a name="boost_functiontypes.rationale.why_tag_types_"></a><h4>
-<a name="id2643848"></a>
- <a class="link" href="rationale.html#boost_functiontypes.rationale.why_tag_types_">Why tag types?</a>
- </h4>
+<a name="boost_functiontypes.rationale.why_tag_types_"></a><h3>
+<a name="id932315"></a>
+ Why tag types?
+ </h3>
<p>
Let's consider the alternatives.
</p>
@@ -99,12 +98,12 @@
parameters do not work within MPL lambda expressions and can cause problems
with older compilers.
</p>
-<a name="boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_"></a><h4>
-<a name="id2643888"></a>
- <a class="link" href="rationale.html#boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_">Is
+<a name="boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_"></a><h3>
+<a name="id932365"></a>
+ <a href="rationale.html#boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_">Is
it safe to have the synthesis templates take a callable builtin type or an
MPL sequence as the first template argument?</a>
- </h4>
+ </h3>
<p>
Yes, but it isn't immediately obvious as the set of possible MPL sequences
isn't inherently disjoint from the set of callable builtin types.
@@ -114,23 +113,25 @@
idea, because builtin types are accessible before the headers that make the
type a sequence have been included, which can easily violate the ODR.
</p>
-<a name="boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_"></a><h4>
-<a name="id2643930"></a>
- <a class="link" href="rationale.html#boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_">Why
+<a name="boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_"></a><h3>
+<a name="id932413"></a>
+ <a href="rationale.html#boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_">Why
does the hidden <code class="literal">this</code> parameter count for the function arity
of member functions?</a>
- </h4>
+ </h3>
<p>
It was found preferable that the following condition holds:
</p>
<pre class="programlisting">
-<span class="identifier">mpl</span><span class="special">::</span><span class="identifier">size</span><span class="special"><</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">value</span>
+<span class="identifier">mpl</span><span class="special">::</span><span class="identifier">size</span><span class="special"><</span> <a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
+ parameter_types">parameter_types</a><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
+ function_arity">function_arity</a><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">value</span>
</pre>
-<a name="boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_"></a><h4>
-<a name="id2644048"></a>
- <a class="link" href="rationale.html#boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_">Why
+<a name="boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_"></a><h3>
+<a name="id932540"></a>
+ <a href="rationale.html#boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_">Why
ignore top-level cv-qualifiers on pointers?</a>
- </h4>
+ </h3>
<p>
A cv-qualified pointer is still a pointer. It usually doesn't matter and even
if it does, it's a job for Boost.TypeTraits.
@@ -138,11 +139,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,22 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Reference</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Reference</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="about_tag_types.html" title="About Tag Types">
-<link rel="next" href="reference/classification.html" title="Class templates for type classification">
+<link rel="prev" href="about_tag_types.html" title=" About Tag Types">
+<link rel="next" href="reference/classification.html" title=" Class
+ templates for type classification">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,8 +25,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.reference"></a><a class="link" href="reference.html" title="Reference"> Reference</a>
-</h2></div></div></div>
+<a name="boost_functiontypes.reference"></a> Reference</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference/classification.html"> Class
templates for type classification</a></span></dt>
@@ -39,11 +39,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/classification.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/classification.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/classification.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,23 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Class templates for type classification</title>
-<link rel="stylesheet" href="../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Class
+ templates for type classification</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="../reference.html" title="Reference">
-<link rel="next" href="decomposition.html" title="Class templates for type decomposition">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="../reference.html" title=" Reference">
+<link rel="next" href="decomposition.html" title=" Class templates
+ for type decomposition">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,9 +26,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.classification"></a><a class="link" href="classification.html" title="Class templates for type classification"> Class
- templates for type classification</a>
-</h3></div></div></div>
+<a name="boost_functiontypes.reference.classification"></a><a href="classification.html" title=" Class
+ templates for type classification"> Class
+ templates for type classification</a></h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_function">
is_function</a></span></dt>
@@ -47,11 +49,12 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_function"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function" title="is_function">
- is_function</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_function"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function" title="
+ is_function">
+ is_function</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_function</span><span class="special">;</span>
</pre>
<p>
@@ -90,11 +93,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_function_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="is_function_pointer">
- is_function_pointer</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_function_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="
+ is_function_pointer">
+ is_function_pointer</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_function_pointer</span><span class="special">;</span>
</pre>
<p>
@@ -133,11 +137,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_function_reference"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function_reference" title="is_function_reference">
- is_function_reference</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_function_reference"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function_reference" title="
+ is_function_reference">
+ is_function_reference</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_function_reference</span><span class="special">;</span>
</pre>
<p>
@@ -176,11 +181,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_member_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_pointer" title="is_member_pointer">
- is_member_pointer</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_member_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_pointer" title="
+ is_member_pointer">
+ is_member_pointer</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_member_pointer</span><span class="special">;</span>
</pre>
<p>
@@ -219,9 +225,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_member_object_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_object_pointer" title="is_member_object_pointer">
- is_member_object_pointer</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_member_object_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_object_pointer" title="
+ is_member_object_pointer">
+ is_member_object_pointer</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_member_object_pointer</span><span class="special">;</span>
@@ -257,11 +263,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_member_function_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_function_pointer" title="is_member_function_pointer">
- is_member_function_pointer</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_member_function_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_function_pointer" title="
+ is_member_function_pointer">
+ is_member_function_pointer</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_member_function_pointer</span><span class="special">;</span>
</pre>
<p>
@@ -300,11 +307,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_callable_builtin"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_callable_builtin" title="is_callable_builtin">
- is_callable_builtin</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_callable_builtin"></a><a href="classification.html#boost_functiontypes.reference.classification.is_callable_builtin" title="
+ is_callable_builtin">
+ is_callable_builtin</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_callable_builtin</span><span class="special">;</span>
</pre>
<p>
@@ -343,11 +351,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_nonmember_callable_builtin"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_nonmember_callable_builtin" title="is_nonmember_callable_builtin">
- is_nonmember_callable_builtin</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_nonmember_callable_builtin"></a><a href="classification.html#boost_functiontypes.reference.classification.is_nonmember_callable_builtin" title="
+ is_nonmember_callable_builtin">
+ is_nonmember_callable_builtin</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_nonmember_callable_builtin</span><span class="special">;</span>
</pre>
<p>
@@ -388,11 +397,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,24 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Class templates for type decomposition</title>
-<link rel="stylesheet" href="../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Class templates
+ for type decomposition</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="classification.html" title="Class templates for type classification">
-<link rel="next" href="synthesis.html" title="Class templates for type synthesis">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="classification.html" title=" Class
+ templates for type classification">
+<link rel="next" href="synthesis.html" title=" Class templates
+ for type synthesis">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,9 +27,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.decomposition"></a><a class="link" href="decomposition.html" title="Class templates for type decomposition"> Class templates
- for type decomposition</a>
-</h3></div></div></div>
+<a name="boost_functiontypes.reference.decomposition"></a><a href="decomposition.html" title=" Class templates
+ for type decomposition"> Class templates
+ for type decomposition</a></h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="decomposition.html#boost_functiontypes.reference.decomposition.result_type">
result_type</a></span></dt>
@@ -39,9 +42,9 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.decomposition.result_type"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="result_type">
- result_type</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.decomposition.result_type"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="
+ result_type">
+ result_type</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">result_type</span><span class="special">;</span>
@@ -75,9 +78,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.decomposition.parameter_types"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">
- parameter_types</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.decomposition.parameter_types"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
+ parameter_types">
+ parameter_types</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">ClassTransform</span> <span class="special">=</span> <span class="identifier">add_reference</span><span class="special"><</span><span class="identifier">_</span><span class="special">></span> <span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">parameter_types</span><span class="special">;</span>
@@ -121,9 +124,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.decomposition.function_arity"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">
- function_arity</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.decomposition.function_arity"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
+ function_arity">
+ function_arity</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">function_arity</span><span class="special">;</span>
@@ -166,9 +169,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.decomposition.components"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.components" title="components">
- components</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.decomposition.components"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.components" title="
+ components">
+ components</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">ClassTransform</span> <span class="special">=</span> <span class="identifier">add_reference</span><span class="special"><</span><span class="identifier">_</span><span class="special">></span> <span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">components</span><span class="special">;</span>
@@ -213,17 +216,14 @@
</p>
<p>
If <code class="literal">T</code> is no callable builtin type, the component types
- are an empty sequence and the Tag's meaning is equivalent to the <code class="literal"><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a></code>.
+ are an empty sequence and the Tag's meaning is equivalent to the <code class="literal"><a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a></code>.
</p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/macros.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/macros.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/macros.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Macros</title>
-<link rel="stylesheet" href="../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Macros</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="tag_types.html" title="Tag Types">
-<link rel="next" href="../rationale.html" title="Rationale">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="tag_types.html" title=" Tag Types">
+<link rel="next" href="../rationale.html" title=" Rationale">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,8 +24,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.macros"></a><a class="link" href="macros.html" title="Macros"> Macros</a>
-</h3></div></div></div>
+<a name="boost_functiontypes.reference.macros"></a> Macros</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY">
BOOST_FT_MAX_ARITY</a></span></dt>
@@ -48,9 +47,9 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY" title="BOOST_FT_MAX_ARITY">
- BOOST_FT_MAX_ARITY</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY" title="
+ BOOST_FT_MAX_ARITY">
+ BOOST_FT_MAX_ARITY</a></h4></div></div></div>
<p>
Expands to a numeric value that describes the maximum function arity supported
by the library.
@@ -67,16 +66,17 @@
</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES">
- BOOST_FT_CC_NAMES</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
+ BOOST_FT_CC_NAMES">
+ BOOST_FT_CC_NAMES</a></h4></div></div></div>
<p>
Expands to a sequence
of ternary tuples
(these data types are defined in the <a href="../../../../../preprocessor/doc/index.html" target="_top">documentation
of the Boost Preprocessor library</a>). Each sequence element describes
one calling convention specifier. The first element in each tuple is the
- macro suffix for <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="BOOST_FT_CC_*"><code class="literal">BOOST_FT_CC_*</code></a>,
+ macro suffix for <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="
+ BOOST_FT_CC_*"><code class="literal">BOOST_FT_CC_*</code></a>,
the second element is the name of the tag that describes the calling convention
and the third is the name of the specifier. The specifier is allowed to
be an empty string, so the third tuple element is either BOOST_PP_EMPTY
@@ -106,13 +106,15 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_CC"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="BOOST_FT_CC_*">
- BOOST_FT_CC_*</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="
+ BOOST_FT_CC_*">
+ BOOST_FT_CC_*</a></h4></div></div></div>
<p>
Enables a specific calling convention. * dentoes the macro suffix, as defined
- by <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
- or <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_BUILTIN_CC_NAMES</code></a>.
+ by <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
+ BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
+ or <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
+ BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_BUILTIN_CC_NAMES</code></a>.
</p>
<p>
The macro expands to a list of restrictions, separated by the <code class="literal">|</code>
@@ -147,9 +149,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs" title="BOOST_FT_COMMON_X86_CCs">
- BOOST_FT_COMMON_X86_CCs</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs" title="
+ BOOST_FT_COMMON_X86_CCs">
+ BOOST_FT_COMMON_X86_CCs</a></h4></div></div></div>
<p>
Defining this macro causes the following macros to be defined, if not defined
already:
@@ -162,9 +164,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_SYNTAX"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_SYNTAX" title="BOOST_FT_SYNTAX">
- BOOST_FT_SYNTAX</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_SYNTAX"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_SYNTAX" title="
+ BOOST_FT_SYNTAX">
+ BOOST_FT_SYNTAX</a></h4></div></div></div>
<p>
This macro allows to change the syntax of callable builtin types. It is
useful to handle the compiler specific placement of the calling convention
@@ -180,9 +182,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM" title="BOOST_FT_NULLARY_PARAM">
- BOOST_FT_NULLARY_PARAM</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM" title="
+ BOOST_FT_NULLARY_PARAM">
+ BOOST_FT_NULLARY_PARAM</a></h4></div></div></div>
<p>
Set to <code class="literal">void</code> for compilers that insist on a <code class="literal">void</code>
parameter for nullary function types, empty by default.
@@ -190,9 +192,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT" title="BOOST_FT_NO_CV_FUNC_SUPPORT">
- BOOST_FT_NO_CV_FUNC_SUPPORT</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT" title="
+ BOOST_FT_NO_CV_FUNC_SUPPORT">
+ BOOST_FT_NO_CV_FUNC_SUPPORT</a></h4></div></div></div>
<p>
Disables support for cv-qualified function types. Cv-qualified function
types are illegal by the current standard version, but there is a pending
@@ -207,9 +209,9 @@
</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE" title="BOOST_FT_PREPROCESSING_MODE">
- BOOST_FT_PREPROCESSING_MODE</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE" title="
+ BOOST_FT_PREPROCESSING_MODE">
+ BOOST_FT_PREPROCESSING_MODE</a></h4></div></div></div>
<p>
Makes the compiler preprocess as much as possible of the library code (rather
than loading already-preprocessed header files) if defined.
@@ -217,27 +219,24 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING" title="BOOST_FT_CC_PREPROCESSING">
- BOOST_FT_CC_PREPROCESSING</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING" title="
+ BOOST_FT_CC_PREPROCESSING">
+ BOOST_FT_CC_PREPROCESSING</a></h4></div></div></div>
<p>
Makes the compiler preprocess the loop over possible names for custom calling
conventions (rather than loading an already-preprocessed header file) if
defined.
</p>
<p>
- This macro is defined automatically if <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
+ This macro is defined automatically if <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
+ BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
has been defined.
</p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/synthesis.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/synthesis.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/synthesis.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,23 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Class templates for type synthesis</title>
-<link rel="stylesheet" href="../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Class templates
+ for type synthesis</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="decomposition.html" title="Class templates for type decomposition">
-<link rel="next" href="tag_types.html" title="Tag Types">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="decomposition.html" title=" Class templates
+ for type decomposition">
+<link rel="next" href="tag_types.html" title=" Tag Types">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,9 +26,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.synthesis"></a><a class="link" href="synthesis.html" title="Class templates for type synthesis"> Class templates
- for type synthesis</a>
-</h3></div></div></div>
+<a name="boost_functiontypes.reference.synthesis"></a><a href="synthesis.html" title=" Class templates
+ for type synthesis"> Class templates
+ for type synthesis</a></h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_type">
function_type</a></span></dt>
@@ -39,11 +41,12 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.synthesis.function_type"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="function_type">
- function_type</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.synthesis.function_type"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="
+ function_type">
+ function_type</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">function_type</span><span class="special">;</span>
</pre>
<p>
@@ -81,11 +84,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.synthesis.function_pointer"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">
- function_pointer</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.synthesis.function_pointer"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="
+ function_pointer">
+ function_pointer</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">function_pointer</span><span class="special">;</span>
</pre>
<p>
@@ -123,11 +127,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.synthesis.function_reference"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_reference" title="function_reference">
- function_reference</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.synthesis.function_reference"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_reference" title="
+ function_reference">
+ function_reference</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">function_reference</span><span class="special">;</span>
</pre>
<p>
@@ -165,11 +170,12 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.synthesis.member_function_pointer"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.member_function_pointer" title="member_function_pointer">
- member_function_pointer</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.synthesis.member_function_pointer"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.member_function_pointer" title="
+ member_function_pointer">
+ member_function_pointer</a></h4></div></div></div>
<pre class="programlisting">
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">null_tag</a><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">member_function_pointer</span><span class="special">;</span>
</pre>
<p>
@@ -214,11 +220,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/tag_types.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/tag_types.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/reference/tag_types.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,22 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Tag Types</title>
-<link rel="stylesheet" href="../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Tag Types</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="synthesis.html" title="Class templates for type synthesis">
-<link rel="next" href="macros.html" title="Macros">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="synthesis.html" title=" Class templates
+ for type synthesis">
+<link rel="next" href="macros.html" title=" Macros">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,8 +25,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.tag_types"></a><a class="link" href="tag_types.html" title="Tag Types"> Tag Types</a>
-</h3></div></div></div>
+<a name="boost_functiontypes.reference.tag_types"></a> Tag Types</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.variadic">
variadic</a></span></dt>
@@ -54,9 +54,9 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.variadic"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.variadic" title="variadic">
- variadic</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.variadic"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.variadic" title="
+ variadic">
+ variadic</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">variadic</span><span class="special">;</span>
</pre>
@@ -73,9 +73,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.non_variadic"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_variadic" title="non_variadic">
- non_variadic</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.non_variadic"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_variadic" title="
+ non_variadic">
+ non_variadic</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_variadic</span><span class="special">;</span>
</pre>
@@ -91,9 +91,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.default_cc"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.default_cc" title="default_cc">
- default_cc</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.default_cc"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.default_cc" title="
+ default_cc">
+ default_cc</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">default_cc</span><span class="special">;</span>
</pre>
@@ -109,9 +109,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.const_qualified"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.const_qualified" title="const_qualified">
- const_qualified</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.const_qualified"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.const_qualified" title="
+ const_qualified">
+ const_qualified</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">const_qualified</span><span class="special">;</span>
</pre>
@@ -127,9 +127,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.non_const"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_const" title="non_const">
- non_const</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.non_const"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_const" title="
+ non_const">
+ non_const</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_const</span><span class="special">;</span>
</pre>
@@ -145,9 +145,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.volatile_qualified"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_qualified" title="volatile_qualified">
- volatile_qualified</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.volatile_qualified"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_qualified" title="
+ volatile_qualified">
+ volatile_qualified</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">volatile_qualified</span><span class="special">;</span>
</pre>
@@ -163,9 +163,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.non_volatile"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_volatile" title="non_volatile">
- non_volatile</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.non_volatile"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_volatile" title="
+ non_volatile">
+ non_volatile</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_volatile</span><span class="special">;</span>
</pre>
@@ -181,8 +181,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.non_cv"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_cv" title="non_cv"> non_cv</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.non_cv"></a> non_cv</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_cv</span><span class="special">;</span>
</pre>
@@ -200,9 +199,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.const_non_volatile"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.const_non_volatile" title="const_non_volatile">
- const_non_volatile</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.const_non_volatile"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.const_non_volatile" title="
+ const_non_volatile">
+ const_non_volatile</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">const_non_volatile</span><span class="special">;</span>
</pre>
@@ -220,9 +219,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.volatile_non_const"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_non_const" title="volatile_non_const">
- volatile_non_const</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.volatile_non_const"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_non_const" title="
+ volatile_non_const">
+ volatile_non_const</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">volatile_non_const</span><span class="special">;</span>
</pre>
@@ -240,9 +239,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.cv_qualfied"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.cv_qualfied" title="cv_qualfied">
- cv_qualfied</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.cv_qualfied"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.cv_qualfied" title="
+ cv_qualfied">
+ cv_qualfied</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">cv_qualified</span><span class="special">;</span>
</pre>
@@ -260,9 +259,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.null_tag"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">
- null_tag</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.null_tag"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
+ null_tag">
+ null_tag</a></h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">null_tag</span><span class="special">;</span>
</pre>
@@ -278,8 +277,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.tag"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.tag" title="tag"> tag</a>
-</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.tag"></a> tag</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Tag1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tag2</span><span class="special">,</span>
<span class="keyword">class</span> <span class="identifier">Tag3</span> <span class="special">=</span> <span class="identifier">null_tag</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tag4</span> <span class="special">=</span> <span class="identifier">null_tag</span><span class="special">></span>
@@ -312,11 +310,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/use_cases.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/use_cases.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/boost_functiontypes/use_cases.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Use Cases</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<title> Use Cases</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="introduction.html" title="Introduction">
-<link rel="next" href="about_tag_types.html" title="About Tag Types">
+<link rel="prev" href="introduction.html" title=" Introduction">
+<link rel="next" href="about_tag_types.html" title=" About Tag Types">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,8 +24,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.use_cases"></a><a class="link" href="use_cases.html" title="Use Cases"> Use Cases</a>
-</h2></div></div></div>
+<a name="boost_functiontypes.use_cases"></a> Use Cases</h2></div></div></div>
<p>
Generic libraries that accept callable arguments are common in C++. Accepting
a callable argument of builin type often involves a lot of repetitive code
@@ -144,7 +143,8 @@
arguments from a type sequence in a single expression:
</p>
<pre class="programlisting">
-<span class="keyword">static_cast</span><span class="special"><</span><a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">function_pointer</a><span class="special"><</span><span class="identifier">Seq</span><span class="special">>::</span><span class="identifier">type</span><span class="special">>(&</span> <span class="identifier">overloaded</span><span class="special">)</span>
+<span class="keyword">static_cast</span><span class="special"><</span><a href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="
+ function_pointer">function_pointer</a><span class="special"><</span><span class="identifier">Seq</span><span class="special">>::</span><span class="identifier">type</span><span class="special">>(&</span> <span class="identifier">overloaded</span><span class="special">)</span>
</pre>
<p>
This technique can be occasionally more flexible than template argument deduction
@@ -165,11 +165,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
Modified: branches/CMake/release/libs/function_types/doc/html/index.html
==============================================================================
--- branches/CMake/release/libs/function_types/doc/html/index.html (original)
+++ branches/CMake/release/libs/function_types/doc/html/index.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -2,18 +2,18 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter 1. Boost.FunctionTypes 2.5</title>
-<link rel="stylesheet" href="boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="next" href="boost_functiontypes/introduction.html" title="Introduction">
+<link rel="next" href="boost_functiontypes/introduction.html" title=" Introduction">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -27,7 +27,7 @@
</h3></div></div>
<div><p class="copyright">Copyright © 2004 -2007 Tobias Schwinger</p></div>
<div><div class="legalnotice">
-<a name="id2625894"></a><p>
+<a name="id905080"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
</p>
@@ -46,8 +46,8 @@
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: November 25, 2007 at 18:38:02 +0000</small></p></td>
-<td align="right"><div class="copyright-footer"></div></td>
+<td align="left"><p><small>Last revised: November 05, 2007 at 18:24:58 +0100</small></p></td>
+<td align="right"><small></small></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="boost_functiontypes/introduction.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
Modified: branches/CMake/release/libs/function_types/example/fast_mem_fn_example.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/example/fast_mem_fn_example.cpp (original)
+++ branches/CMake/release/libs/function_types/example/fast_mem_fn_example.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -101,7 +101,11 @@
setup_test(v);
t.restart();
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400)
do_test(v, BOOST_EXAMPLE_FAST_MEM_FN(& test::id));
+#else // MSVC<8 does not like the implementation of the deduction macro:
+ do_test(v, ::example::fast_mem_fn< int (test::*)() const, & test::id >());
+#endif
time1 = t.elapsed();
std::cout << "fast_mem_fn | " << time1 << std::endl;
Modified: branches/CMake/release/libs/function_types/example/interface_example.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/example/interface_example.cpp (original)
+++ branches/CMake/release/libs/function_types/example/interface_example.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -8,6 +8,7 @@
// See interface.hpp in this directory for details.
#include <iostream>
+#include <typeinfo>
#include "interface.hpp"
Modified: branches/CMake/release/libs/function_types/example/interpreter.hpp
==============================================================================
--- branches/CMake/release/libs/function_types/example/interpreter.hpp (original)
+++ branches/CMake/release/libs/function_types/example/interpreter.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -133,8 +133,9 @@
void apply(Function func, token_parser & parser, Args const & args)
{
typedef typename mpl::deref<From>::type arg_type;
+ typedef typename mpl::next<From>::type next_iter_type;
- invoker<Function, typename mpl::next<From>::type, To>::apply
+ interpreter::invoker<Function, next_iter_type, To>::apply
( func, parser, fusion::push_back(args, parser.get<arg_type>()) );
}
};
Modified: branches/CMake/release/libs/function_types/test/custom_ccs/member_ccs.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/test/custom_ccs/member_ccs.cpp (original)
+++ branches/CMake/release/libs/function_types/test/custom_ccs/member_ccs.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -14,7 +14,7 @@
#include <boost/function_types/is_callable_builtin.hpp>
#ifndef BOOST_FT_CC_STDCALL
-# error "test not supported with this compiler"
+# error "test not supported with this compiler/platform"
#endif
namespace ft = boost::function_types;
Modified: branches/CMake/release/libs/function_types/test/custom_ccs/member_ccs_exact.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/test/custom_ccs/member_ccs_exact.cpp (original)
+++ branches/CMake/release/libs/function_types/test/custom_ccs/member_ccs_exact.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -14,7 +14,7 @@
#include <boost/function_types/is_callable_builtin.hpp>
#ifndef BOOST_FT_CC_STDCALL
-# error "test not supported with this compiler"
+# error "test not supported with this compiler/platform"
#endif
namespace ft = boost::function_types;
Modified: branches/CMake/release/libs/function_types/test/custom_ccs/nonmember_ccs.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/test/custom_ccs/nonmember_ccs.cpp (original)
+++ branches/CMake/release/libs/function_types/test/custom_ccs/nonmember_ccs.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -16,7 +16,7 @@
#include <boost/function_types/is_callable_builtin.hpp>
#ifndef BOOST_FT_CC_STDCALL
-# error "test not supported with this compiler"
+# error "test not supported with this compiler/platform"
#endif
namespace ft = boost::function_types;
Modified: branches/CMake/release/libs/function_types/test/custom_ccs/nonmember_ccs_exact.cpp
==============================================================================
--- branches/CMake/release/libs/function_types/test/custom_ccs/nonmember_ccs_exact.cpp (original)
+++ branches/CMake/release/libs/function_types/test/custom_ccs/nonmember_ccs_exact.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -16,7 +16,7 @@
#include <boost/function_types/is_callable_builtin.hpp>
#ifndef BOOST_FT_CC_STDCALL
-# error "test not supported with this compiler"
+# error "test not supported with this compiler/platform"
#endif
namespace ft = boost::function_types;
Modified: branches/CMake/release/libs/graph/doc/breadth_first_visit.html
==============================================================================
--- branches/CMake/release/libs/graph/doc/breadth_first_visit.html (original)
+++ branches/CMake/release/libs/graph/doc/breadth_first_visit.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -125,9 +125,6 @@
<h3>Visitor Event Points</h3>
<ul>
-<li><b><tt>vis.initialize_vertex(v, g)</tt></b> is invoked on every vertex
- before the start of the search.
-
<li><b><tt>vis.examine_vertex(u, g)</tt></b>r is invoked in each
vertex as it is removed from the queue.
Modified: branches/CMake/release/libs/graph/doc/depth_first_search.html
==============================================================================
--- branches/CMake/release/libs/graph/doc/depth_first_search.html (original)
+++ branches/CMake/release/libs/graph/doc/depth_first_search.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -66,7 +66,7 @@
actions at certain event-points within the algorithm. This provides a
mechanism for adapting the generic DFS algorithm to the many
situations in which it can be used. In the pseudo-code below, the
-event points for DFS are indicated in by the triangles and labels on
+event points for DFS are the labels on
the right. The user-defined actions must be provided in the form of a
visitor object, that is, an object whose type meets the requirements
for a DFS Visitor. In the pseudo-code
Modified: branches/CMake/release/libs/graph/doc/read_graphml.html
==============================================================================
--- branches/CMake/release/libs/graph/doc/read_graphml.html (original)
+++ branches/CMake/release/libs/graph/doc/read_graphml.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -113,7 +113,7 @@
<h1><a class="toc-backref" href="#id4" name="building-the-graphml-reader">Building the graphml reader</a></h1>
<p>To use the graphml reader, you will need to build and link against
the "bgl-graphml" library. The library can be built by following the
-<a class="reference" href="../../../more/getting_started.html#Build_Install">Boost Jam Build Instructions</a> for the subdirectory <tt class="literal"><span class="pre">libs/graph/build</span></tt>.</p>
+<a class="reference" href="../../../doc/html/bbv2/installation.html">Boost Jam Build Instructions</a> for the subdirectory <tt class="literal"><span class="pre">libs/graph/build</span></tt>.</p>
</div>
<div class="section" id="notes">
<h1><a class="toc-backref" href="#id5" name="notes">Notes</a></h1>
Modified: branches/CMake/release/libs/graph/doc/read_graphviz.html
==============================================================================
--- branches/CMake/release/libs/graph/doc/read_graphviz.html (original)
+++ branches/CMake/release/libs/graph/doc/read_graphviz.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -177,7 +177,7 @@
<h1><a class="toc-backref" href="#id5" name="building-the-graphviz-readers">Building the GraphViz Readers</a></h1>
<p>To use the GraphViz readers, you will need to build and link against
the "boost_graph" library. The library can be built by following the
-<a class="reference" href="../../../more/getting_started.html#Build_Install">Boost Jam Build Instructions</a> for the subdirectory <tt class="docutils literal"><span class="pre">libs/graph/build</span></tt>.</p>
+<a class="reference" href="../../../doc/html/bbv2/installation.html">Boost Jam Build Instructions</a> for the subdirectory <tt class="docutils literal"><span class="pre">libs/graph/build</span></tt>.</p>
</div>
<div class="section" id="deprecated-readers">
<h1><a class="toc-backref" href="#id6" name="deprecated-readers">Deprecated Readers</a></h1>
Modified: branches/CMake/release/libs/graph/doc/sloan_ordering.htm
==============================================================================
--- branches/CMake/release/libs/graph/doc/sloan_ordering.htm (original)
+++ branches/CMake/release/libs/graph/doc/sloan_ordering.htm 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -203,7 +203,7 @@
See <A
href="../example/sloan_ordering.cpp"><TT>example/sloan_ordering.cpp</TT></A>.
<H3>See Also</H3>
-<p><http://www.boost.org/libs/graph/doc/sloan_start_end_vertices.htm>sloan_start_end_vertices</http:>,
+<p>sloan_start_end_vertices,
<A
href="./bandwidth.html">bandwidth</a>, profile, wavefront
and <TT>degree_property_map</TT> in <TT>boost/graph/properties.hpp</TT>. </p>
Modified: branches/CMake/release/libs/graph/doc/table_of_contents.html
==============================================================================
--- branches/CMake/release/libs/graph/doc/table_of_contents.html (original)
+++ branches/CMake/release/libs/graph/doc/table_of_contents.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -241,7 +241,7 @@
<li>Graph Input/Output
<ol>
<li>AT&T Graphviz: read_graphviz, write_graphviz</li>
- <li>DIMACS Max-flow: read_dimacs_max_flow, write_dimacs</li>
+ <li>DIMACS Max-flow: read_dimacs_max_flow, write_dimacs_max_flow</li>
<li>GraphML: read_graphml and write_graphml</li>
</ol></li>
Modified: branches/CMake/release/libs/graph/doc/write_dimacs.html
==============================================================================
--- branches/CMake/release/libs/graph/doc/write_dimacs.html (original)
+++ branches/CMake/release/libs/graph/doc/write_dimacs.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -42,7 +42,7 @@
<BR Clear>
<H1><A NAME="sec:write_dimacs_max_flow">
-<TT>write_dimacs</TT>
+<TT>write_dimacs_max_flow</TT>
</H1>
Modified: branches/CMake/release/libs/libraries.htm
==============================================================================
--- branches/CMake/release/libs/libraries.htm (original)
+++ branches/CMake/release/libs/libraries.htm 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -376,13 +376,13 @@
<li>minmax - standard library
extensions for simultaneous min/max and min/max element computations,
from Hervé Brönnimann.</li>
+ <li>range - A new infrastructure
+ for generic algorithms that builds on top
+ of the new iterator concepts, from Thorsten Ottosen.</li>
<li>string_algo -
String algorithms library, from Pavol Droba</li>
<li>utility - Class <b>next(),</b> <b>prior()</b>
function templates, from Dave Abrahams and others. </li>
- <li>range - A new infrastructure
- for generic algorithms that builds on top
- of the new iterator concepts, from Thorsten Ottosen.</li>
</ul>
<h3><a name="Function-objects">Function objects</a> and higher-order programming</h3>
@@ -422,6 +422,8 @@
<li>enable_if -
Selective inclusion of function template overloads, from Jaakko
Järvi, Jeremiah Willcock, and Andrew Lumsdaine.</li>
+ <li>function_types - Type traits
+ for callable, built-in types, from Tobias Schwinger</li>
<li>gil - Generic Image Library, from
Lubomir Bourdev and Hailin Jin.</li>
<li>in_place_factory, typed_in_place_factory- Generic in-place construction
@@ -439,13 +441,16 @@
<li>type_traits -
Templates for fundamental properties of types, from John
Maddock, Steve Cleary, et al.</li>
- <li>function_types - Type traits
- for callable, built-in types, from Tobias Schwinger</li>
</ul>
<h3>Template <a name="Metaprogramming"> Metaprogramming</a></h3>
<ul>
+ <li>function_types - Type traits
+ for callable, built-in types, from Tobias Schwinger</li>
+ <li>fusion -
+ Library for working with tuples, including various containers,
+ algorithms, etc. </li>
<li>mpl - Template metaprogramming
framework of compile-time algorithms, sequences and metafunction classes,
from Aleksey Gurtovoy.</li>
@@ -455,10 +460,6 @@
<li>type_traits -
Templates for fundamental properties of types, from John
Maddock, Steve Cleary, et al.</li>
- <li>function_types - Type traits
- for callable, built-in types, from Tobias Schwinger</li>
- <li>fusion -
- Library for working with tuples, including various containers, algorithms, etc.
From Joel de Guzman, Dan Marsden and Tobias Schwinger.</li>
</ul>
@@ -486,15 +487,13 @@
<h3><a name="Math">Math</a> and numerics</h3>
<ul>
- <li>math - Several contributions in the
- domain of mathematics, from various authors.</li>
- <li>numeric/conversion - Optimized Policy-based Numeric Conversions,
- from Fernando Cacciola.</li>
<li>integer - Headers to ease
dealing with integral types.</li>
<li>interval - Extends the
usual arithmetic functions to mathematical intervals, from Guillaume
Melquiond, Herv? Br?nnimann and Sylvain Pion.</li>
+ <li>math - Several contributions in the
+ domain of mathematics, from various authors.</li>
<li>math/complex number algorithms -
These complex number algorithms are the inverses of trigonometric functions currently present in the C++ standard, from John Maddock.</li>
<li>math/common_factor - Greatest
@@ -509,6 +508,8 @@
A wide selection of univariate statistical distributions and functions that operate on them from John Maddock and Paul Bristow</li>
<li>multi_array - Multidimensional
containers and adaptors for arrays of contiguous data, from Ron Garcia.</li>
+ <li>numeric/conversion - Optimized Policy-based Numeric Conversions,
+ from Fernando </li>
<li>operators - Templates
ease arithmetic classes and iterators, from Dave Abrahams
and Jeremy Siek.</li>
@@ -543,18 +544,18 @@
<li>compressed_pair
- Empty member optimization, from John Maddock, Howard
Hinnant, et al.</li>
+ <li>fusion -
+ Library for working with tuples, including various containers, algorithms, etc.
+ From Joel de Guzman and Dan Marsden and Tobias Schwinger.</li>
<li>multi_index - Containers with
multiple STL-compatible access interfaces, from Joaquín M López
Muñoz.</li>
<li>pointer container
- Containers for storing heap-allocated polymorphic objects to ease OO-programming, from Thorsten Ottosen. </li>
<li>tuple - Ease definition of functions returning multiple values, and more,
- from Jaakko J?rvi.</li>
+ from Jaakko Järvi.</li>
<li>variant - Safe, generic, stack-based
discriminated union container, from Eric Friedman and Itay Maman.</li>
- <li>fusion -
- Library for working with tuples, including various containers, algorithms, etc.
- From Joel de Guzman and Dan Marsden and Tobias Schwinger.</li>
</ul>
<h3><a name="Image-processing">Image processing</a></h3>
@@ -568,6 +569,10 @@
<li>asio - Portable networking, including
sockets, timers, hostname resolution and socket iostreams, from
Chris Kohlhoff.</li>
+ <li>assign - Filling containers
+ with constant or generated data has never been
+ easier, from Thorsten Ottosen.
+ </li>
<li>format - Type-safe 'printf-like' format
operations, from Samuel Krempp.</li>
<li>io state savers - Save I/O state to
@@ -577,10 +582,6 @@
data given on command line, in config files and other sources, from Vladimir Prus.</li>
<li>serialization - Serialization
of arbitrary data for persistence and marshalling, from Robert Ramey</li>
- <li>assign - Filling containers
- with constant or generated data has never been
- easier, from Thorsten Ottosen.
- </li>
</ul>
@@ -637,14 +638,14 @@
Hinnant, et al.</li>
<li>conversion - Polymorphic and lexical casts, from Dave Abrahams and
Kevlin Henney.</li>
- <li>numeric/conversion - Optimized Policy-based Numeric Conversions,
- from Fernando Cacciola.</li>
<li>crc - Cyclic Redundancy Code, from Daryle
Walker.</li>
<li>date_time - Date-Time library from Jeff Garland.</li>
<li>filesystem - Portable paths,
iteration over directories, and other useful filesystem operations, from
Beman Dawes.</li>
+ <li>numeric/conversion - Optimized Policy-based Numeric Conversions,
+ from Fernando Cacciola.</li>
<li>optional - Discriminated-union
wrapper for optional values, from Fernando Cacciola.</li>
<li>program_options - Access to configuration
@@ -699,7 +700,7 @@
<p>Revised
<!--webbot bot="Timestamp" s-type="EDITED"
-s-format="%d %b %Y" startspan -->13 Mar 2008<!--webbot bot="Timestamp" endspan i-checksum="14911" --></p>
+s-format="%d %b %Y" startspan -->19 Mar 2008<!--webbot bot="Timestamp" endspan i-checksum="14923" --></p>
<p>© Copyright Beman Dawes 2000-2004</p>
<p>Distributed under the Boost Software License, Version 1.0.
Modified: branches/CMake/release/libs/maintainers.txt
==============================================================================
--- branches/CMake/release/libs/maintainers.txt (original)
+++ branches/CMake/release/libs/maintainers.txt 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -18,6 +18,7 @@
foreach Eric Niebler <eric -at- boost-consulting.com>
format Samuel Krempp <krempp -at- crans.ens-cachan.fr>
function Douglas Gregor <dgregor -at- cs.indiana.edu>
+function_types Tobias Schwinger <tschwinger -at- isonews2.com>
functional
functional/hash Daniel James <daniel_james -at- fmail.co.uk>
fusion Joel de Guzman <joel -at- boost-consulting.com>, Dan Marsden <danmarsden -at- yahoo.co.uk>
Modified: branches/CMake/release/libs/mpi/doc/mpi.qbk
==============================================================================
--- branches/CMake/release/libs/mpi/doc/mpi.qbk (original)
+++ branches/CMake/release/libs/mpi/doc/mpi.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -2037,7 +2037,8 @@
Boost.MPI was developed with support from Zurcher Kantonalbank. Daniel
Egloff and Michael Gauckler contributed many ideas to Boost.MPI's
design, particularly in the design of its abstractions for
-MPI data types. Prabhanjan (Anju) Kambadur developed the predecessor to
+MPI data types and the novel skeleton/context mechanism for large data
+structures. Prabhanjan (Anju) Kambadur developed the predecessor to
Boost.MPI that proved the usefulness of the Serialization library in
an MPI setting and the performance benefits of specialization in a C++
abstraction layer for MPI. Jeremy Siek managed the formal review of Boost.MPI.
Modified: branches/CMake/release/libs/python/doc/tutorial/doc/html/python/embedding.html
==============================================================================
--- branches/CMake/release/libs/python/doc/tutorial/doc/html/python/embedding.html (original)
+++ branches/CMake/release/libs/python/doc/tutorial/doc/html/python/embedding.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -3,19 +3,19 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Embedding</title>
<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../index.html" title="Chapter 1. python 1.0">
<link rel="up" href="../index.html" title="Chapter 1. python 1.0">
-<link rel="prev" href="object.html" title="Object Interface">
+<link rel="prev" href="object.html" title=" Object Interface">
<link rel="next" href="iterators.html" title="Iterators">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -39,28 +39,28 @@
a lot easier and, in a future version, it may become unnecessary to touch the
Python/C API at all. So stay tuned... <span class="inlinemediaobject"><img src="../images/smiley.png" alt="smiley"></span>
</p>
-<a name="embedding.building_embedded_programs"></a><h3>
-<a name="id2648523"></a>
+<a name="embedding.building_embedded_programs"></a><h2>
+<a name="id471329"></a>
Building embedded programs
- </h3>
+ </h2>
<p>
To be able to embed python into your programs, you have to link to both Boost.Python's
as well as Python's own runtime library.
</p>
<p>
Boost.Python's library comes in two variants. Both are located in Boost's
- <code class="literal">/libs/python/build/bin-stage</code> subdirectory. On Windows, the
- variants are called <code class="literal">boost_python.lib</code> (for release builds)
- and <code class="literal">boost_python_debug.lib</code> (for debugging). If you can't
+ <tt class="literal">/libs/python/build/bin-stage</tt> subdirectory. On Windows, the
+ variants are called <tt class="literal">boost_python.lib</tt> (for release builds)
+ and <tt class="literal">boost_python_debug.lib</tt> (for debugging). If you can't
find the libraries, you probably haven't built Boost.Python yet. See Building and Testing on how to do this.
</p>
<p>
- Python's library can be found in the <code class="literal">/libs</code> subdirectory
+ Python's library can be found in the <tt class="literal">/libs</tt> subdirectory
of your Python directory. On Windows it is called pythonXY.lib where X.Y is
your major Python version number.
</p>
<p>
- Additionally, Python's <code class="literal">/include</code> subdirectory has to be added
+ Additionally, Python's <tt class="literal">/include</tt> subdirectory has to be added
to your include path.
</p>
<p>
@@ -81,21 +81,21 @@
<library-path>$(PYTHON_LIB_PATH)
<find-library>$(PYTHON_EMBEDDED_LIBRARY) ;
</pre>
-<a name="embedding.getting_started"></a><h3>
-<a name="id2648620"></a>
+<a name="embedding.getting_started"></a><h2>
+<a name="id471434"></a>
Getting started
- </h3>
+ </h2>
<p>
Being able to build is nice, but there is nothing to build yet. Embedding the
Python interpreter into one of your C++ programs requires these 4 steps:
</p>
<div class="orderedlist"><ol type="1">
<li>
- #include <code class="literal"><boost/python.hpp></code>
+ #include <tt class="literal"><boost/python.hpp></tt>
</li>
<li>
Call Py_Initialize()
- to start the interpreter and create the <code class="literal"><span class="underline">_main</span>_</code>
+ to start the interpreter and create the <tt class="literal"><span class="underline">_main</span>_</tt>
module.
</li>
<li>
@@ -107,9 +107,9 @@
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
-<tr><td align="left" valign="top"><p>
- <span class="bold"><strong>Note that at this time you must not call Py_Finalize()
- to stop the interpreter. This may be fixed in a future version of boost.python.</strong></span>
+<tr><td colspan="2" align="left" valign="top"><p>
+ <span class="bold"><b>Note that at this time you must not call Py_Finalize()
+ to stop the interpreter. This may be fixed in a future version of boost.python.</b></span>
</p></td></tr>
</table></div>
<p>
@@ -119,8 +119,8 @@
<p>
</p>
<p>
- <span class="emphasis"><em><span class="bold"><strong>Now that we can embed the interpreter in
- our programs, lets see how to put it to use...</strong></span></em></span>
+ <span class="emphasis"><em><span class="bold"><b>Now that we can embed the interpreter in
+ our programs, lets see how to put it to use...</b></span></em></span>
</p>
<p>
</p>
@@ -130,7 +130,7 @@
<a name="python.using_the_interpreter"></a>Using the interpreter</h3></div></div></div>
<p>
As you probably already know, objects in Python are reference-counted. Naturally,
- the <code class="literal">PyObject</code>s of the Python/C API are also reference-counted.
+ the <tt class="literal">PyObject</tt>s of the Python/C API are also reference-counted.
There is a difference however. While the reference-counting is fully automatic
in Python, the Python<span class="emphasis"><em>C API requires you to do it [@http:</em></span>/www.python.org/doc/current/api/refcounts.html
by hand]. This is messy and especially hard to get right in the presence
@@ -138,10 +138,10 @@
and object class templates to
automate the process.
</p>
-<a name="using_the_interpreter.running_python_code"></a><h3>
-<a name="id2648770"></a>
+<a name="using_the_interpreter.running_python_code"></a><h2>
+<a name="id471597"></a>
Running Python code
- </h3>
+ </h2>
<p>
Boost.python provides three related functions to run Python code from C++.
</p>
@@ -156,10 +156,10 @@
and exec_file executes the code contained in the given file.
</p>
<p>
- The <code class="literal">globals</code> and <code class="literal">locals</code> parameters are
+ The <tt class="literal">globals</tt> and <tt class="literal">locals</tt> parameters are
Python dictionaries containing the globals and locals of the context in which
to run the code. For most intents and purposes you can use the namespace
- dictionary of the <code class="literal"><span class="underline">_main</span>_</code>
+ dictionary of the <tt class="literal"><span class="underline">_main</span>_</tt>
module for both parameters.
</p>
<p>
@@ -173,7 +173,7 @@
first), and returns it.
</p>
<p>
- Let's import the <code class="literal"><span class="underline">_main</span>_</code>
+ Let's import the <tt class="literal"><span class="underline">_main</span>_</tt>
module and run some Python code in its namespace:
</p>
<pre class="programlisting">
@@ -189,15 +189,15 @@
This should create a file called 'hello.txt' in the current directory containing
a phrase that is well-known in programming circles.
</p>
-<a name="using_the_interpreter.manipulating_python_objects"></a><h3>
-<a name="id2649302"></a>
+<a name="using_the_interpreter.manipulating_python_objects"></a><h2>
+<a name="id472185"></a>
Manipulating Python objects
- </h3>
+ </h2>
<p>
Often we'd like to have a class to manipulate Python objects. But we have
already seen such a class above, and in the <a href="object.html" target="_top">previous
- section</a>: the aptly named <code class="literal">object</code> class and its
- derivatives. We've already seen that they can be constructed from a <code class="literal">handle</code>.
+ section</a>: the aptly named <tt class="literal">object</tt> class and its
+ derivatives. We've already seen that they can be constructed from a <tt class="literal">handle</tt>.
The following examples should further illustrate this fact:
</p>
<pre class="programlisting">
@@ -207,7 +207,7 @@
<span class="keyword">int</span> <span class="identifier">five_squared</span> <span class="special">=</span> <span class="identifier">extract</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">main_namespace</span><span class="special">[</span><span class="string">"result"</span><span class="special">]);</span>
</pre>
<p>
- Here we create a dictionary object for the <code class="literal"><span class="underline">_main</span>_</code>
+ Here we create a dictionary object for the <tt class="literal"><span class="underline">_main</span>_</tt>
module's namespace. Then we assign 5 squared to the result variable and read
this variable from the dictionary. Another way to achieve the same result
is to use eval instead, which returns the result directly:
@@ -216,10 +216,10 @@
<span class="identifier">object</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">eval</span><span class="special">(</span><span class="string">"5 ** 2"</span><span class="special">);</span>
<span class="keyword">int</span> <span class="identifier">five_squared</span> <span class="special">=</span> <span class="identifier">extract</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">result</span><span class="special">);</span>
</pre>
-<a name="using_the_interpreter.exception_handling"></a><h3>
-<a name="id2649638"></a>
+<a name="using_the_interpreter.exception_handling"></a><h2>
+<a name="id472557"></a>
Exception handling
- </h3>
+ </h2>
<p>
If an exception occurs in the evaluation of the python expression, error_already_set
is thrown:
@@ -237,7 +237,7 @@
</span><span class="special">}</span>
</pre>
<p>
- The <code class="literal">error_already_set</code> exception class doesn't carry any
+ The <tt class="literal">error_already_set</tt> exception class doesn't carry any
information in itself. To find out more about the Python exception that occurred,
you need to use the <a href="http://www.python.org/doc/api/exceptionHandling.html" target="_top">exception
handling functions</a> of the Python<span class="emphasis"><em>C API in your catch-statement.
Modified: branches/CMake/release/libs/python/doc/tutorial/doc/html/python/exception.html
==============================================================================
--- branches/CMake/release/libs/python/doc/tutorial/doc/html/python/exception.html (original)
+++ branches/CMake/release/libs/python/doc/tutorial/doc/html/python/exception.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Exception Translation</title>
+<title> Exception Translation</title>
<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../index.html" title="Chapter 1. python 1.0">
<link rel="up" href="../index.html" title="Chapter 1. python 1.0">
<link rel="prev" href="iterators.html" title="Iterators">
-<link rel="next" href="techniques.html" title="General Techniques">
+<link rel="next" href="techniques.html" title=" General Techniques">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
Modified: branches/CMake/release/libs/python/doc/tutorial/doc/html/python/exposing.html
==============================================================================
--- branches/CMake/release/libs/python/doc/tutorial/doc/html/python/exposing.html (original)
+++ branches/CMake/release/libs/python/doc/tutorial/doc/html/python/exposing.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Exposing Classes</title>
+<title> Exposing Classes</title>
<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../index.html" title="Chapter 1. python 1.0">
<link rel="up" href="../index.html" title="Chapter 1. python 1.0">
-<link rel="prev" href="hello.html" title="Building Hello World">
+<link rel="prev" href="hello.html" title=" Building Hello World">
<link rel="next" href="functions.html" title="Functions">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -64,9 +64,9 @@
<span class="special">}</span>
</pre>
<p>
- Here, we wrote a C++ class wrapper that exposes the member functions <code class="literal">greet</code>
- and <code class="literal">set</code>. Now, after building our module as a shared library,
- we may use our class <code class="literal">World</code> in Python. Here's a sample Python
+ Here, we wrote a C++ class wrapper that exposes the member functions <tt class="literal">greet</tt>
+ and <tt class="literal">set</tt>. Now, after building our module as a shared library,
+ we may use our class <tt class="literal">World</tt> in Python. Here's a sample Python
session:
</p>
<p>
@@ -82,7 +82,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="python.constructors"></a>Constructors</h3></div></div></div>
<p>
- Our previous example didn't have any explicit constructors. Since <code class="literal">World</code>
+ Our previous example didn't have any explicit constructors. Since <tt class="literal">World</tt>
is declared as a plain struct, it has an implicit default constructor. Boost.Python
exposes the default constructor by default, which is why we were able to
write
@@ -106,9 +106,9 @@
<span class="special">};</span>
</pre>
<p>
- This time <code class="literal">World</code> has no default constructor; our previous
+ This time <tt class="literal">World</tt> has no default constructor; our previous
wrapping code would fail to compile when the library tried to expose it.
- We have to tell <code class="literal">class_<World></code> about the constructor
+ We have to tell <tt class="literal">class_<World></tt> about the constructor
we want to expose instead.
</p>
<pre class="programlisting">
@@ -124,13 +124,13 @@
<span class="special">}</span>
</pre>
<p>
- <code class="literal">init<std::string>()</code> exposes the constructor taking
- in a <code class="literal">std::string</code> (in Python, constructors are spelled
- "<code class="literal">"<span class="underline">_init</span>_"</code>").
+ <tt class="literal">init<std::string>()</tt> exposes the constructor taking
+ in a <tt class="literal">std::string</tt> (in Python, constructors are spelled
+ "<tt class="literal">"<span class="underline">_init</span>_"</tt>").
</p>
<p>
- We can expose additional constructors by passing more <code class="literal">init<...></code>s
- to the <code class="literal">def()</code> member function. Say for example we have
+ We can expose additional constructors by passing more <tt class="literal">init<...></tt>s
+ to the <tt class="literal">def()</tt> member function. Say for example we have
another World constructor taking in two doubles:
</p>
<pre class="programlisting">
@@ -142,13 +142,13 @@
</pre>
<p>
On the other hand, if we do not wish to expose any constructors at all, we
- may use <code class="literal">no_init</code> instead:
+ may use <tt class="literal">no_init</tt> instead:
</p>
<pre class="programlisting">
<span class="identifier">class_</span><span class="special"><</span><span class="identifier">Abstract</span><span class="special">>(</span><span class="string">"Abstract"</span><span class="special">,</span> <span class="identifier">no_init</span><span class="special">)</span>
</pre>
<p>
- This actually adds an <code class="literal"><span class="underline">_init</span>_</code>
+ This actually adds an <tt class="literal"><span class="underline">_init</span>_</tt>
method which always raises a Python RuntimeError exception.
</p>
</div>
@@ -158,8 +158,8 @@
<p>
Data members may also be exposed to Python so that they can be accessed as
attributes of the corresponding Python class. Each data member that we wish
- to be exposed may be regarded as <span class="bold"><strong>read-only</strong></span>
- or <span class="bold"><strong>read-write</strong></span>. Consider this class <code class="literal">Var</code>:
+ to be exposed may be regarded as <span class="bold"><b>read-only</b></span>
+ or <span class="bold"><b>read-write</b></span>. Consider this class <tt class="literal">Var</tt>:
</p>
<pre class="programlisting">
<span class="keyword">struct</span> <span class="identifier">Var</span>
@@ -170,7 +170,7 @@
<span class="special">};</span>
</pre>
<p>
- Our C++ <code class="literal">Var</code> class and its data members can be exposed
+ Our C++ <tt class="literal">Var</tt> class and its data members can be exposed
to Python:
</p>
<pre class="programlisting">
@@ -191,8 +191,8 @@
<span class="identifier">pi</span> <span class="keyword">is</span> <span class="identifier">around</span> <span class="number">3.14</span>
</pre>
<p>
- Note that <code class="literal">name</code> is exposed as <span class="bold"><strong>read-only</strong></span>
- while <code class="literal">value</code> is exposed as <span class="bold"><strong>read-write</strong></span>.
+ Note that <tt class="literal">name</tt> is exposed as <span class="bold"><b>read-only</b></span>
+ while <tt class="literal">value</tt> is exposed as <span class="bold"><b>read-write</b></span>.
</p>
<pre class="programlisting">
<span class="special">>>></span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">name</span> <span class="special">=</span> <span class="string">'e'</span> <span class="comment"># can't change name
@@ -224,7 +224,7 @@
<p>
However, in Python attribute access is fine; it doesn't neccessarily break
encapsulation to let users handle attributes directly, because the attributes
- can just be a different syntax for a method call. Wrapping our <code class="literal">Num</code>
+ can just be a different syntax for a method call. Wrapping our <tt class="literal">Num</tt>
class using Boost.Python:
</p>
<pre class="programlisting">
@@ -245,8 +245,8 @@
<span class="special">>>></span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">rovalue</span> <span class="special">=</span> <span class="number">2.17</span> <span class="comment"># error!
</span></pre>
<p>
- Take note that the class property <code class="literal">rovalue</code> is exposed as
- <span class="bold"><strong>read-only</strong></span> since the <code class="literal">rovalue</code>
+ Take note that the class property <tt class="literal">rovalue</tt> is exposed as
+ <span class="bold"><b>read-only</b></span> since the <tt class="literal">rovalue</tt>
setter member function is not passed in:
</p>
<p>
@@ -273,7 +273,7 @@
<span class="keyword">struct</span> <span class="identifier">Derived</span> <span class="special">:</span> <span class="identifier">Base</span> <span class="special">{};</span>
</pre>
<p>
- And a set of C++ functions operating on <code class="literal">Base</code> and <code class="literal">Derived</code>
+ And a set of C++ functions operating on <tt class="literal">Base</tt> and <tt class="literal">Derived</tt>
object instances:
</p>
<pre class="programlisting">
@@ -282,7 +282,7 @@
<span class="identifier">Base</span><span class="special">*</span> <span class="identifier">factory</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">new</span> <span class="identifier">Derived</span><span class="special">;</span> <span class="special">}</span>
</pre>
<p>
- We've seen how we can wrap the base class <code class="literal">Base</code>:
+ We've seen how we can wrap the base class <tt class="literal">Base</tt>:
</p>
<pre class="programlisting">
<span class="identifier">class_</span><span class="special"><</span><span class="identifier">Base</span><span class="special">>(</span><span class="string">"Base"</span><span class="special">)</span>
@@ -290,8 +290,8 @@
<span class="special">;</span>
</pre>
<p>
- Now we can inform Boost.Python of the inheritance relationship between <code class="literal">Derived</code>
- and its base class <code class="literal">Base</code>. Thus:
+ Now we can inform Boost.Python of the inheritance relationship between <tt class="literal">Derived</tt>
+ and its base class <tt class="literal">Base</tt>. Thus:
</p>
<pre class="programlisting">
<span class="identifier">class_</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">bases</span><span class="special"><</span><span class="identifier">Base</span><span class="special">></span> <span class="special">>(</span><span class="string">"Derived"</span><span class="special">)</span>
@@ -307,15 +307,15 @@
member functions)
</li>
<li>
-<span class="bold"><strong>If</strong></span> Base is polymorphic, <code class="literal">Derived</code>
+<span class="bold"><b>If</b></span> Base is polymorphic, <tt class="literal">Derived</tt>
objects which have been passed to Python via a pointer or reference to
- <code class="literal">Base</code> can be passed where a pointer or reference to
- <code class="literal">Derived</code> is expected.
+ <tt class="literal">Base</tt> can be passed where a pointer or reference to
+ <tt class="literal">Derived</tt> is expected.
</li>
</ol></div>
<p>
- Now, we will expose the C++ free functions <code class="literal">b</code> and <code class="literal">d</code>
- and <code class="literal">factory</code>:
+ Now, we will expose the C++ free functions <tt class="literal">b</tt> and <tt class="literal">d</tt>
+ and <tt class="literal">factory</tt>:
</p>
<pre class="programlisting">
<span class="identifier">def</span><span class="special">(</span><span class="string">"b"</span><span class="special">,</span> <span class="identifier">b</span><span class="special">);</span>
@@ -323,12 +323,12 @@
<span class="identifier">def</span><span class="special">(</span><span class="string">"factory"</span><span class="special">,</span> <span class="identifier">factory</span><span class="special">);</span>
</pre>
<p>
- Note that free function <code class="literal">factory</code> is being used to generate
- new instances of class <code class="literal">Derived</code>. In such cases, we use
- <code class="literal">return_value_policy<manage_new_object></code> to instruct
- Python to adopt the pointer to <code class="literal">Base</code> and hold the instance
- in a new Python <code class="literal">Base</code> object until the the Python object
- is destroyed. We will see more of Boost.Python <a class="link" href="functions.html#python.call_policies" title="Call Policies">call
+ Note that free function <tt class="literal">factory</tt> is being used to generate
+ new instances of class <tt class="literal">Derived</tt>. In such cases, we use
+ <tt class="literal">return_value_policy<manage_new_object></tt> to instruct
+ Python to adopt the pointer to <tt class="literal">Base</tt> and hold the instance
+ in a new Python <tt class="literal">Base</tt> object until the the Python object
+ is destroyed. We will see more of Boost.Python <a href="functions.html#python.call_policies" title="Call Policies">call
policies</a> later.
</p>
<pre class="programlisting">
@@ -343,7 +343,7 @@
<p>
In this section, we will learn how to make functions behave polymorphically
through virtual functions. Continuing our example, let us add a virtual function
- to our <code class="literal">Base</code> class:
+ to our <tt class="literal">Base</tt> class:
</p>
<pre class="programlisting">
<span class="keyword">struct</span> <span class="identifier">Base</span>
@@ -356,11 +356,11 @@
One of the goals of Boost.Python is to be minimally intrusive on an existing
C++ design. In principle, it should be possible to expose the interface for
a 3rd party library without changing it. It is not ideal to add anything
- to our class <code class="computeroutput"><span class="identifier">Base</span></code>. Yet, when
+ to our class <tt class="computeroutput"><span class="identifier">Base</span></tt>. Yet, when
you have a virtual function that's going to be overridden in Python and called
- polymorphically <span class="bold"><strong>from C++</strong></span>, we'll need to
+ polymorphically <span class="bold"><b>from C++</b></span>, we'll need to
add some scaffoldings to make things work properly. What we'll do is write
- a class wrapper that derives from <code class="computeroutput"><span class="identifier">Base</span></code>
+ a class wrapper that derives from <tt class="computeroutput"><span class="identifier">Base</span></tt>
that will unintrusively hook into the virtual functions so that a Python
override may be called:
</p>
@@ -374,29 +374,28 @@
<span class="special">};</span>
</pre>
<p>
- Notice too that in addition to inheriting from <code class="computeroutput"><span class="identifier">Base</span></code>,
- we also multiply- inherited <code class="computeroutput"><span class="identifier">wrapper</span><span class="special"><</span><span class="identifier">Base</span><span class="special">></span></code> (See Wrapper).
- The <code class="computeroutput"><span class="identifier">wrapper</span></code> template makes
+ Notice too that in addition to inheriting from <tt class="computeroutput"><span class="identifier">Base</span></tt>,
+ we also multiply- inherited <tt class="computeroutput"><span class="identifier">wrapper</span><span class="special"><</span><span class="identifier">Base</span><span class="special">></span></tt> (See Wrapper).
+ The <tt class="computeroutput"><span class="identifier">wrapper</span></tt> template makes
the job of wrapping classes that are meant to overridden in Python, easier.
</p>
<div class="sidebar">
-<p class="title"><b></b></p>
<p>
- <span class="inlinemediaobject"><img src="../images/alert.png" alt="alert"></span> <span class="bold"><strong>MSVC6/7 Workaround</strong></span>
+ <span class="inlinemediaobject"><img src="../images/alert.png" alt="alert"></span> <span class="bold"><b>MSVC6/7 Workaround</b></span>
</p>
<p>
- If you are using Microsoft Visual C++ 6 or 7, you have to write <code class="computeroutput"><span class="identifier">f</span></code> as:
+ If you are using Microsoft Visual C++ 6 or 7, you have to write <tt class="computeroutput"><span class="identifier">f</span></tt> as:
</p>
<p>
- <code class="computeroutput"><span class="keyword">return</span> <span class="identifier">call</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_override</span><span class="special">(</span><span class="string">"f"</span><span class="special">).</span><span class="identifier">ptr</span><span class="special">());</span></code>.
+ <tt class="computeroutput"><span class="keyword">return</span> <span class="identifier">call</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_override</span><span class="special">(</span><span class="string">"f"</span><span class="special">).</span><span class="identifier">ptr</span><span class="special">());</span></tt>.
</p>
</div>
<p>
- BaseWrap's overridden virtual member function <code class="computeroutput"><span class="identifier">f</span></code>
- in effect calls the corresponding method of the Python object through <code class="computeroutput"><span class="identifier">get_override</span></code>.
+ BaseWrap's overridden virtual member function <tt class="computeroutput"><span class="identifier">f</span></tt>
+ in effect calls the corresponding method of the Python object through <tt class="computeroutput"><span class="identifier">get_override</span></tt>.
</p>
<p>
- Finally, exposing <code class="computeroutput"><span class="identifier">Base</span></code>:
+ Finally, exposing <tt class="computeroutput"><span class="identifier">Base</span></tt>:
</p>
<pre class="programlisting">
<span class="identifier">class_</span><span class="special"><</span><span class="identifier">BaseWrap</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">noncopyable</span><span class="special">>(</span><span class="string">"Base"</span><span class="special">)</span>
@@ -404,8 +403,8 @@
<span class="special">;</span>
</pre>
<p>
- <code class="computeroutput"><span class="identifier">pure_virtual</span></code> signals Boost.Python
- that the function <code class="computeroutput"><span class="identifier">f</span></code> is a
+ <tt class="computeroutput"><span class="identifier">pure_virtual</span></tt> signals Boost.Python
+ that the function <tt class="computeroutput"><span class="identifier">f</span></tt> is a
pure virtual function.
</p>
<div class="note"><table border="0" summary="Note">
@@ -413,13 +412,13 @@
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
-<tr><td align="left" valign="top">
+<tr><td colspan="2" align="left" valign="top">
<p>
- <span class="bold"><strong>member function and methods</strong></span>
+ <span class="bold"><b>member function and methods</b></span>
</p>
<p>
- Python, like many object oriented languages uses the term <span class="bold"><strong>methods</strong></span>.
- Methods correspond roughly to C++'s <span class="bold"><strong>member functions</strong></span>
+ Python, like many object oriented languages uses the term <span class="bold"><b>methods</b></span>.
+ Methods correspond roughly to C++'s <span class="bold"><b>member functions</b></span>
</p>
</td></tr>
</table></div>
@@ -430,11 +429,11 @@
<p>
We've seen in the previous section how classes with pure virtual functions
are wrapped using Boost.Python's <a href="../../../../v2/wrapper.html" target="_top">class
- wrapper</a> facilities. If we wish to wrap <span class="bold"><strong>non</strong></span>-pure-virtual
+ wrapper</a> facilities. If we wish to wrap <span class="bold"><b>non</b></span>-pure-virtual
functions instead, the mechanism is a bit different.
</p>
<p>
- Recall that in the <a class="link" href="exposing.html#python.class_virtual_functions" title="Class Virtual Functions">previous
+ Recall that in the <a href="exposing.html#python.class_virtual_functions" title="Class Virtual Functions">previous
section</a>, we wrapped a class with a pure virtual function that we then
implemented in C++, or Python classes derived from it. Our base class:
</p>
@@ -445,8 +444,8 @@
<span class="special">};</span>
</pre>
<p>
- had a pure virtual function <code class="literal">f</code>. If, however, its member
- function <code class="literal">f</code> was not declared as pure virtual:
+ had a pure virtual function <tt class="literal">f</tt>. If, however, its member
+ function <tt class="literal">f</tt> was not declared as pure virtual:
</p>
<pre class="programlisting">
<span class="keyword">struct</span> <span class="identifier">Base</span>
@@ -472,21 +471,20 @@
<span class="special">};</span>
</pre>
<p>
- Notice how we implemented <code class="computeroutput"><span class="identifier">BaseWrap</span><span class="special">::</span><span class="identifier">f</span></code>. Now,
- we have to check if there is an override for <code class="computeroutput"><span class="identifier">f</span></code>.
- If none, then we call <code class="computeroutput"><span class="identifier">Base</span><span class="special">::</span><span class="identifier">f</span><span class="special">()</span></code>.
+ Notice how we implemented <tt class="computeroutput"><span class="identifier">BaseWrap</span><span class="special">::</span><span class="identifier">f</span></tt>. Now,
+ we have to check if there is an override for <tt class="computeroutput"><span class="identifier">f</span></tt>.
+ If none, then we call <tt class="computeroutput"><span class="identifier">Base</span><span class="special">::</span><span class="identifier">f</span><span class="special">()</span></tt>.
</p>
<div class="sidebar">
-<p class="title"><b></b></p>
<p>
- <span class="inlinemediaobject"><img src="../images/alert.png" alt="alert"></span> <span class="bold"><strong>MSVC6/7 Workaround</strong></span>
+ <span class="inlinemediaobject"><img src="../images/alert.png" alt="alert"></span> <span class="bold"><b>MSVC6/7 Workaround</b></span>
</p>
<p>
If you are using Microsoft Visual C++ 6 or 7, you have to rewrite the line
- with the <code class="computeroutput"><span class="special">*</span><span class="identifier">note</span><span class="special">*</span></code> as:
+ with the <tt class="computeroutput"><span class="special">*</span><span class="identifier">note</span><span class="special">*</span></tt> as:
</p>
<p>
- <code class="computeroutput"><span class="keyword">return</span> <span class="identifier">call</span><span class="special"><</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*>(</span><span class="identifier">f</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">());</span></code>.
+ <tt class="computeroutput"><span class="keyword">return</span> <span class="identifier">call</span><span class="special"><</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*>(</span><span class="identifier">f</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">());</span></tt>.
</p>
</div>
<p>
@@ -498,10 +496,10 @@
<span class="special">;</span>
</pre>
<p>
- Take note that we expose both <code class="computeroutput"><span class="special">&</span><span class="identifier">Base</span><span class="special">::</span><span class="identifier">f</span></code> and <code class="computeroutput"><span class="special">&</span><span class="identifier">BaseWrap</span><span class="special">::</span><span class="identifier">default_f</span></code>. Boost.Python needs to keep track
- of 1) the dispatch function <code class="literal">f</code> and 2) the forwarding function
- to its default implementation <code class="literal">default_f</code>. There's a special
- <code class="literal">def</code> function for this purpose.
+ Take note that we expose both <tt class="computeroutput"><span class="special">&</span><span class="identifier">Base</span><span class="special">::</span><span class="identifier">f</span></tt> and <tt class="computeroutput"><span class="special">&</span><span class="identifier">BaseWrap</span><span class="special">::</span><span class="identifier">default_f</span></tt>. Boost.Python needs to keep track
+ of 1) the dispatch function <tt class="literal">f</tt> and 2) the forwarding function
+ to its default implementation <tt class="literal">default_f</tt>. There's a special
+ <tt class="literal">def</tt> function for this purpose.
</p>
<p>
In Python, the results would be as expected:
@@ -517,14 +515,14 @@
<span class="special">>>></span> <span class="identifier">derived</span> <span class="special">=</span> <span class="identifier">Derived</span><span class="special">()</span>
</pre>
<p>
- Calling <code class="literal">base.f()</code>:
+ Calling <tt class="literal">base.f()</tt>:
</p>
<pre class="programlisting">
<span class="special">>>></span> <span class="identifier">base</span><span class="special">.</span><span class="identifier">f</span><span class="special">()</span>
<span class="number">0</span>
</pre>
<p>
- Calling <code class="literal">derived.f()</code>:
+ Calling <tt class="literal">derived.f()</tt>:
</p>
<pre class="programlisting">
<span class="special">>>></span> <span class="identifier">derived</span><span class="special">.</span><span class="identifier">f</span><span class="special">()</span>
@@ -534,17 +532,17 @@
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="python.class_operators_special_functions"></a>Class Operators/Special Functions</h3></div></div></div>
-<a name="class_operators_special_functions.python_operators"></a><h3>
-<a name="id2640280"></a>
+<a name="class_operators_special_functions.python_operators"></a><h2>
+<a name="id461481"></a>
Python Operators
- </h3>
+ </h2>
<p>
C is well known for the abundance of operators. C++ extends this to the extremes
by allowing operator overloading. Boost.Python takes advantage of this and
makes it easy to wrap C++ operator-powered classes.
</p>
<p>
- Consider a file position class <code class="literal">FilePos</code> and a set of operators
+ Consider a file position class <tt class="literal">FilePos</tt> and a set of operators
that take on FilePos instances:
</p>
<p>
@@ -577,16 +575,16 @@
<p>
The code snippet above is very clear and needs almost no explanation at all.
It is virtually the same as the operators' signatures. Just take note that
- <code class="literal">self</code> refers to FilePos object. Also, not every class
- <code class="literal">T</code> that you might need to interact with in an operator
- expression is (cheaply) default-constructible. You can use <code class="literal">other<T>()</code>
- in place of an actual <code class="literal">T</code> instance when writing "self
+ <tt class="literal">self</tt> refers to FilePos object. Also, not every class
+ <tt class="literal">T</tt> that you might need to interact with in an operator
+ expression is (cheaply) default-constructible. You can use <tt class="literal">other<T>()</tt>
+ in place of an actual <tt class="literal">T</tt> instance when writing "self
expressions".
</p>
-<a name="class_operators_special_functions.special_methods"></a><h3>
-<a name="id2640915"></a>
+<a name="class_operators_special_functions.special_methods"></a><h2>
+<a name="id462238"></a>
Special Methods
- </h3>
+ </h2>
<p>
Python has a few more <span class="emphasis"><em>Special Methods</em></span>. Boost.Python
supports all of the standard special method names supported by real Python
@@ -617,9 +615,9 @@
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
-<tr><td align="left" valign="top"><p>
- What is the business of <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code>? Well, the method <code class="computeroutput"><span class="identifier">str</span></code> requires the <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code> to do its work (i.e. <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code>
- is used by the method defined by <code class="computeroutput"><span class="identifier">def</span><span class="special">(</span><span class="identifier">str</span><span class="special">(</span><span class="identifier">self</span><span class="special">))</span></code>.
+<tr><td colspan="2" align="left" valign="top"><p>
+ What is the business of <tt class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></tt>? Well, the method <tt class="computeroutput"><span class="identifier">str</span></tt> requires the <tt class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></tt> to do its work (i.e. <tt class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></tt>
+ is used by the method defined by <tt class="computeroutput"><span class="identifier">def</span><span class="special">(</span><span class="identifier">str</span><span class="special">(</span><span class="identifier">self</span><span class="special">))</span></tt>.
</p></td></tr>
</table></div>
</div>
Modified: branches/CMake/release/libs/python/doc/tutorial/doc/html/python/functions.html
==============================================================================
--- branches/CMake/release/libs/python/doc/tutorial/doc/html/python/functions.html (original)
+++ branches/CMake/release/libs/python/doc/tutorial/doc/html/python/functions.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -3,19 +3,19 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Functions</title>
<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../index.html" title="Chapter 1. python 1.0">
<link rel="up" href="../index.html" title="Chapter 1. python 1.0">
-<link rel="prev" href="exposing.html" title="Exposing Classes">
-<link rel="next" href="object.html" title="Object Interface">
+<link rel="prev" href="exposing.html" title=" Exposing Classes">
+<link rel="next" href="object.html" title=" Object Interface">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -49,7 +49,7 @@
</blockquote></div>
<p>
But before you do, you might want to fire up Python 2.2 or later and type
- <code class="literal">>>> import this</code>.
+ <tt class="literal">>>> import this</tt>.
</p>
<pre class="programlisting">>>> import this
The Zen of Python, by Tim Peters
@@ -68,7 +68,7 @@
There should be one-- and preferably only one --obvious way to do it
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
-Although never is often better than <span class="bold"><strong>right</strong></span> now.
+Although never is often better than <span class="bold"><b>right</b></span> now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
@@ -126,19 +126,19 @@
</p>
<div class="orderedlist"><ol type="1">
<li>
-<code class="literal">f</code> is called passing in a reference to <code class="literal">y</code>
- and a pointer to <code class="literal">z</code>
+<tt class="literal">f</tt> is called passing in a reference to <tt class="literal">y</tt>
+ and a pointer to <tt class="literal">z</tt>
</li>
<li>
- A reference to <code class="literal">y.x</code> is returned
+ A reference to <tt class="literal">y.x</tt> is returned
</li>
<li>
-<code class="literal">y</code> is deleted. <code class="literal">x</code> is a dangling reference
+<tt class="literal">y</tt> is deleted. <tt class="literal">x</tt> is a dangling reference
</li>
<li>
-<code class="literal">x.some_method()</code> is called
+<tt class="literal">x.some_method()</tt> is called
</li>
-<li><span class="bold"><strong>BOOM!</strong></span></li>
+<li><span class="bold"><b>BOOM!</b></span></li>
</ol></div>
<p>
We could copy result into a new object:
@@ -168,7 +168,7 @@
<span class="special">};</span>
</pre>
<p>
- Notice that the data member <code class="literal">z</code> is held by class Y using
+ Notice that the data member <tt class="literal">z</tt> is held by class Y using
a raw pointer. Now we have a potential dangling pointer problem inside Y:
</p>
<pre class="programlisting">
@@ -177,7 +177,7 @@
<span class="special">>>></span> <span class="identifier">y</span><span class="special">.</span><span class="identifier">z_value</span><span class="special">()</span> <span class="preprocessor"># CRASH</span><span class="special">!</span>
</pre>
<p>
- For reference, here's the implementation of <code class="literal">f</code> again:
+ For reference, here's the implementation of <tt class="literal">f</tt> again:
</p>
<pre class="programlisting">
<span class="identifier">X</span><span class="special">&</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Y</span><span class="special">&</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">Z</span><span class="special">*</span> <span class="identifier">z</span><span class="special">)</span>
@@ -191,33 +191,33 @@
</p>
<div class="orderedlist"><ol type="1">
<li>
-<code class="literal">f</code> is called passing in a reference to <code class="literal">y</code>
- and a pointer to <code class="literal">z</code>
+<tt class="literal">f</tt> is called passing in a reference to <tt class="literal">y</tt>
+ and a pointer to <tt class="literal">z</tt>
</li>
<li>
- A pointer to <code class="literal">z</code> is held by <code class="literal">y</code>
+ A pointer to <tt class="literal">z</tt> is held by <tt class="literal">y</tt>
</li>
<li>
- A reference to <code class="literal">y.x</code> is returned
+ A reference to <tt class="literal">y.x</tt> is returned
</li>
<li>
-<code class="literal">z</code> is deleted. <code class="literal">y.z</code> is a dangling pointer
+<tt class="literal">z</tt> is deleted. <tt class="literal">y.z</tt> is a dangling pointer
</li>
<li>
-<code class="literal">y.z_value()</code> is called
+<tt class="literal">y.z_value()</tt> is called
</li>
<li>
-<code class="literal">z->value()</code> is called
+<tt class="literal">z->value()</tt> is called
</li>
-<li><span class="bold"><strong>BOOM!</strong></span></li>
+<li><span class="bold"><b>BOOM!</b></span></li>
</ol></div>
-<a name="call_policies.call_policies"></a><h3>
-<a name="id2642493"></a>
+<a name="call_policies.call_policies"></a><h2>
+<a name="id464235"></a>
Call Policies
- </h3>
+ </h2>
<p>
Call Policies may be used in situations such as the example detailed above.
- In our example, <code class="literal">return_internal_reference</code> and <code class="literal">with_custodian_and_ward</code>
+ In our example, <tt class="literal">return_internal_reference</tt> and <tt class="literal">with_custodian_and_ward</tt>
are our friends:
</p>
<pre class="programlisting">
@@ -226,27 +226,27 @@
<span class="identifier">with_custodian_and_ward</span><span class="special"><</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">></span> <span class="special">>());</span>
</pre>
<p>
- What are the <code class="literal">1</code> and <code class="literal">2</code> parameters, you
+ What are the <tt class="literal">1</tt> and <tt class="literal">2</tt> parameters, you
ask?
</p>
<pre class="programlisting">
<span class="identifier">return_internal_reference</span><span class="special"><</span><span class="number">1</span>
</pre>
<p>
- Informs Boost.Python that the first argument, in our case <code class="literal">Y&
- y</code>, is the owner of the returned reference: <code class="literal">X&</code>.
- The "<code class="literal">1</code>" simply specifies the first argument.
- In short: "return an internal reference <code class="literal">X&</code> owned
- by the 1st argument <code class="literal">Y& y</code>".
+ Informs Boost.Python that the first argument, in our case <tt class="literal">Y&
+ y</tt>, is the owner of the returned reference: <tt class="literal">X&</tt>.
+ The "<tt class="literal">1</tt>" simply specifies the first argument.
+ In short: "return an internal reference <tt class="literal">X&</tt> owned
+ by the 1st argument <tt class="literal">Y& y</tt>".
</p>
<pre class="programlisting">
<span class="identifier">with_custodian_and_ward</span><span class="special"><</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">></span>
</pre>
<p>
Informs Boost.Python that the lifetime of the argument indicated by ward
- (i.e. the 2nd argument: <code class="literal">Z* z</code>) is dependent on the lifetime
- of the argument indicated by custodian (i.e. the 1st argument: <code class="literal">Y&
- y</code>).
+ (i.e. the 2nd argument: <tt class="literal">Z* z</tt>) is dependent on the lifetime
+ of the argument indicated by custodian (i.e. the 1st argument: <tt class="literal">Y&
+ y</tt>).
</p>
<p>
It is also important to note that we have defined two policies above. Two
@@ -263,41 +263,40 @@
</p>
<div class="itemizedlist"><ul type="disc">
<li>
-<span class="bold"><strong>with_custodian_and_ward</strong></span>: Ties lifetimes
+<span class="bold"><b>with_custodian_and_ward</b></span>: Ties lifetimes
of the arguments
</li>
<li>
-<span class="bold"><strong>with_custodian_and_ward_postcall</strong></span>: Ties
+<span class="bold"><b>with_custodian_and_ward_postcall</b></span>: Ties
lifetimes of the arguments and results
</li>
<li>
-<span class="bold"><strong>return_internal_reference</strong></span>: Ties lifetime
+<span class="bold"><b>return_internal_reference</b></span>: Ties lifetime
of one argument to that of result
</li>
<li>
-<span class="bold"><strong>return_value_policy<T> with T one of:</strong></span><div class="itemizedlist"><ul type="circle">
+<span class="bold"><b>return_value_policy<T> with T one of:</b></span><div class="itemizedlist"><ul type="circle">
<li>
-<span class="bold"><strong>reference_existing_object</strong></span>: naive (dangerous)
+<span class="bold"><b>reference_existing_object</b></span>: naive (dangerous)
approach
</li>
<li>
-<span class="bold"><strong>copy_const_reference</strong></span>: Boost.Python
+<span class="bold"><b>copy_const_reference</b></span>: Boost.Python
v1 approach
</li>
<li>
-<span class="bold"><strong>copy_non_const_reference</strong></span>:
+<span class="bold"><b>copy_non_const_reference</b></span>:
</li>
<li>
-<span class="bold"><strong>manage_new_object</strong></span>: Adopt a pointer
+<span class="bold"><b>manage_new_object</b></span>: Adopt a pointer
and hold the instance
</li>
</ul></div>
</li>
</ul></div>
<div class="sidebar">
-<p class="title"><b></b></p>
<p>
- <span class="inlinemediaobject"><img src="../images/smiley.png" alt="smiley"></span> <span class="bold"><strong>Remember the Zen, Luke:</strong></span>
+ <span class="inlinemediaobject"><img src="../images/smiley.png" alt="smiley"></span> <span class="bold"><b>Remember the Zen, Luke:</b></span>
</p>
<p>
"Explicit is better than implicit"
@@ -367,21 +366,21 @@
<a name="python.default_arguments"></a>Default Arguments</h3></div></div></div>
<p>
Boost.Python wraps (member) function pointers. Unfortunately, C++ function
- pointers carry no default argument info. Take a function <code class="literal">f</code>
+ pointers carry no default argument info. Take a function <tt class="literal">f</tt>
with default arguments:
</p>
<pre class="programlisting">
<span class="keyword">int</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span> <span class="special">=</span> <span class="number">3.14</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="special">=</span> <span class="string">"hello"</span><span class="special">);</span>
</pre>
<p>
- But the type of a pointer to the function <code class="literal">f</code> has no information
+ But the type of a pointer to the function <tt class="literal">f</tt> has no information
about its default arguments:
</p>
<pre class="programlisting">
<span class="keyword">int</span><span class="special">(*</span><span class="identifier">g</span><span class="special">)(</span><span class="keyword">int</span><span class="special">,</span><span class="keyword">double</span><span class="special">,</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*)</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">;</span> <span class="comment">// defaults lost!
</span></pre>
<p>
- When we pass this function pointer to the <code class="literal">def</code> function,
+ When we pass this function pointer to the <tt class="literal">def</tt> function,
there is no way to retrieve the default arguments:
</p>
<pre class="programlisting">
@@ -389,7 +388,7 @@
</span></pre>
<p>
Because of this, when wrapping C++ code, we had to resort to manual wrapping
- as outlined in the <a class="link" href="functions.html#python.overloading" title="Overloading">previous section</a>,
+ as outlined in the previous section,
or writing thin wrappers:
</p>
<pre class="programlisting">
@@ -415,10 +414,10 @@
are overloaded with a common sequence of initial arguments
</li>
</ul></div>
-<a name="default_arguments.boost_python_function_overloads"></a><h3>
-<a name="id2644222"></a>
+<a name="default_arguments.boost_python_function_overloads"></a><h2>
+<a name="id466276"></a>
BOOST_PYTHON_FUNCTION_OVERLOADS
- </h3>
+ </h2>
<p>
Boost.Python now has a way to make it easier. For instance, given a function:
</p>
@@ -436,19 +435,19 @@
</pre>
<p>
will automatically create the thin wrappers for us. This macro will create
- a class <code class="literal">foo_overloads</code> that can be passed on to <code class="literal">def(...)</code>.
+ a class <tt class="literal">foo_overloads</tt> that can be passed on to <tt class="literal">def(...)</tt>.
The third and fourth macro argument are the minimum arguments and maximum
- arguments, respectively. In our <code class="literal">foo</code> function the minimum
- number of arguments is 1 and the maximum number of arguments is 4. The <code class="literal">def(...)</code>
+ arguments, respectively. In our <tt class="literal">foo</tt> function the minimum
+ number of arguments is 1 and the maximum number of arguments is 4. The <tt class="literal">def(...)</tt>
function will automatically add all the foo variants for us:
</p>
<pre class="programlisting">
<span class="identifier">def</span><span class="special">(</span><span class="string">"foo"</span><span class="special">,</span> <span class="identifier">foo</span><span class="special">,</span> <span class="identifier">foo_overloads</span><span class="special">());</span>
</pre>
-<a name="default_arguments.boost_python_member_function_overloads"></a><h3>
-<a name="id2644493"></a>
+<a name="default_arguments.boost_python_member_function_overloads"></a><h2>
+<a name="id466594"></a>
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS
- </h3>
+ </h2>
<p>
Objects here, objects there, objects here there everywhere. More frequently
than anything else, we need to expose member functions of our classes to
@@ -457,7 +456,7 @@
play. Another macro is provided to make this a breeze.
</p>
<p>
- Like <code class="literal">BOOST_PYTHON_FUNCTION_OVERLOADS</code>, <code class="literal">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</code>
+ Like <tt class="literal">BOOST_PYTHON_FUNCTION_OVERLOADS</tt>, <tt class="literal">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</tt>
may be used to automatically create the thin wrappers for wrapping member
functions. Let's have an example:
</p>
@@ -478,11 +477,11 @@
<span class="identifier">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</span><span class="special">(</span><span class="identifier">george_overloads</span><span class="special">,</span> <span class="identifier">wack_em</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">)</span>
</pre>
<p>
- will generate a set of thin wrappers for george's <code class="literal">wack_em</code>
+ will generate a set of thin wrappers for george's <tt class="literal">wack_em</tt>
member function accepting a minimum of 1 and a maximum of 3 arguments (i.e.
the third and fourth macro argument). The thin wrappers are all enclosed
- in a class named <code class="literal">george_overloads</code> that can then be used
- as an argument to <code class="literal">def(...)</code>:
+ in a class named <tt class="literal">george_overloads</tt> that can then be used
+ as an argument to <tt class="literal">def(...)</tt>:
</p>
<pre class="programlisting">
<span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="string">"wack_em"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">george</span><span class="special">::</span><span class="identifier">wack_em</span><span class="special">,</span> <span class="identifier">george_overloads</span><span class="special">());</span>
@@ -491,13 +490,13 @@
See the <a href="../../../../v2/overloads.html#BOOST_PYTHON_FUNCTION_OVERLOADS-spec" target="_top">overloads
reference</a> for details.
</p>
-<a name="default_arguments.init_and_optional"></a><h3>
-<a name="id2644801"></a>
+<a name="default_arguments.init_and_optional"></a><h2>
+<a name="id466958"></a>
init and optional
- </h3>
+ </h2>
<p>
A similar facility is provided for class constructors, again, with default
- arguments or a sequence of overloads. Remember <code class="literal">init<...></code>?
+ arguments or a sequence of overloads. Remember <tt class="literal">init<...></tt>?
For example, given a class X with a constructor:
</p>
<pre class="programlisting">
@@ -514,7 +513,7 @@
<span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">init</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">optional</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span> <span class="special">>())</span>
</pre>
<p>
- Notice the use of <code class="literal">init<...></code> and <code class="literal">optional<...></code>
+ Notice the use of <tt class="literal">init<...></tt> and <tt class="literal">optional<...></tt>
to signify the default (optional arguments).
</p>
</div>
@@ -522,8 +521,8 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="python.auto_overloading"></a>Auto-Overloading</h3></div></div></div>
<p>
- It was mentioned in passing in the previous section that <code class="literal">BOOST_PYTHON_FUNCTION_OVERLOADS</code>
- and <code class="literal">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</code> can also be
+ It was mentioned in passing in the previous section that <tt class="literal">BOOST_PYTHON_FUNCTION_OVERLOADS</tt>
+ and <tt class="literal">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</tt> can also be
used for overloaded functions and member functions with a common sequence
of initial arguments. Here is an example:
</p>
@@ -565,24 +564,24 @@
Notice though that we have a situation now where we have a minimum of zero
(0) arguments and a maximum of 3 arguments.
</p>
-<a name="auto_overloading.manual_wrapping"></a><h3>
-<a name="id2645458"></a>
+<a name="auto_overloading.manual_wrapping"></a><h2>
+<a name="id467739"></a>
Manual Wrapping
- </h3>
+ </h2>
<p>
- It is important to emphasize however that <span class="bold"><strong>the overloaded
- functions must have a common sequence of initial arguments</strong></span>. Otherwise,
+ It is important to emphasize however that <span class="bold"><b>the overloaded
+ functions must have a common sequence of initial arguments</b></span>. Otherwise,
our scheme above will not work. If this is not the case, we have to wrap
- our functions <a class="link" href="functions.html#python.overloading" title="Overloading">manually</a>.
+ our functions manually.
</p>
<p>
Actually, we can mix and match manual wrapping of overloaded functions and
- automatic wrapping through <code class="literal">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</code>
- and its sister, <code class="literal">BOOST_PYTHON_FUNCTION_OVERLOADS</code>. Following
- up on our example presented in the section <a class="link" href="functions.html#python.overloading" title="Overloading">on
+ automatic wrapping through <tt class="literal">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</tt>
+ and its sister, <tt class="literal">BOOST_PYTHON_FUNCTION_OVERLOADS</tt>. Following
+ up on our example presented in the section <a href="functions.html#python.overloading" title="Overloading">on
overloading</a>, since the first 4 overload functins have a common sequence
- of initial arguments, we can use <code class="literal">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</code>
- to automatically wrap the first three of the <code class="literal">def</code>s and
+ of initial arguments, we can use <tt class="literal">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</tt>
+ to automatically wrap the first three of the <tt class="literal">def</tt>s and
manually wrap just the last. Here's how we'll do this:
</p>
<pre class="programlisting">
Modified: branches/CMake/release/libs/python/doc/tutorial/doc/html/python/hello.html
==============================================================================
--- branches/CMake/release/libs/python/doc/tutorial/doc/html/python/hello.html (original)
+++ branches/CMake/release/libs/python/doc/tutorial/doc/html/python/hello.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Building Hello World</title>
+<title> Building Hello World</title>
<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../index.html" title="Chapter 1. python 1.0">
<link rel="up" href="../index.html" title="Chapter 1. python 1.0">
<link rel="prev" href="../index.html" title="Chapter 1. python 1.0">
-<link rel="next" href="exposing.html" title="Exposing Classes">
+<link rel="next" href="exposing.html" title=" Exposing Classes">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -25,29 +25,29 @@
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="python.hello"></a> Building Hello World</h2></div></div></div>
-<a name="hello.from_start_to_finish"></a><h3>
-<a name="id2586502"></a>
+<a name="hello.from_start_to_finish"></a><h2>
+<a name="id386189"></a>
From Start To Finish
- </h3>
+ </h2>
<p>
Now the first thing you'd want to do is to build the Hello World module and
try it for yourself in Python. In this section, we will outline the steps necessary
to achieve that. We will use the build tool that comes bundled with every boost
- distribution: <span class="bold"><strong>bjam</strong></span>.
+ distribution: <span class="bold"><b>bjam</b></span>.
</p>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
-<tr><td align="left" valign="top">
+<tr><td colspan="2" align="left" valign="top">
<p>
- <span class="bold"><strong>Building without bjam</strong></span>
+ <span class="bold"><b>Building without bjam</b></span>
</p>
<p>
Besides bjam, there are of course other ways to get your module built. What's
written here should not be taken as "the one and only way". There
- are of course other build tools apart from <code class="literal">bjam</code>.
+ are of course other build tools apart from <tt class="literal">bjam</tt>.
</p>
<p>
Take note however that the preferred build tool for Boost.Python is bjam.
@@ -65,7 +65,7 @@
and run a python program using the extension.
</p>
<p>
- The tutorial example can be found in the directory: <code class="literal">libs/python/example/tutorial</code>.
+ The tutorial example can be found in the directory: <tt class="literal">libs/python/example/tutorial</tt>.
There, you can find:
</p>
<div class="itemizedlist"><ul type="disc">
@@ -80,37 +80,37 @@
</li>
</ul></div>
<p>
- The <code class="literal">hello.cpp</code> file is our C++ hello world example. The
- <code class="literal">Jamroot</code> is a minimalist <span class="emphasis"><em>bjam</em></span> script
- that builds the DLLs for us. Finally, <code class="literal">hello.py</code> is our Python
- program that uses the extension in <code class="literal">hello.cpp</code>.
+ The <tt class="literal">hello.cpp</tt> file is our C++ hello world example. The
+ <tt class="literal">Jamroot</tt> is a minimalist <span class="emphasis"><em>bjam</em></span> script
+ that builds the DLLs for us. Finally, <tt class="literal">hello.py</tt> is our Python
+ program that uses the extension in <tt class="literal">hello.cpp</tt>.
</p>
<p>
Before anything else, you should have the bjam executable in your boost directory
- or somewhere in your path such that <code class="literal">bjam</code> can be executed
+ or somewhere in your path such that <tt class="literal">bjam</tt> can be executed
in the command line. Pre-built Boost.Jam executables are available for most
platforms. The complete list of Bjam executables can be found here.
</p>
-<a name="hello.let_s_jam_"></a><h3>
-<a name="id2585377"></a>
+<a name="hello.let_s_jam_"></a><h2>
+<a name="id386347"></a>
Let's Jam!
- </h3>
+ </h2>
<p>
<span class="inlinemediaobject"><img src="../images/jam.png" alt="jam"></span>
</p>
<p>
<a href="../../../../../example/tutorial/Jamroot" target="_top">Here</a> is our minimalist
- Jamroot file. Simply copy the file and tweak <code class="literal">use-project boost</code>
+ Jamroot file. Simply copy the file and tweak <tt class="literal">use-project boost</tt>
to where your boost root directory is and your OK.
</p>
<p>
The comments contained in the Jamrules file above should be sufficient to get
you going.
</p>
-<a name="hello.running_bjam"></a><h3>
-<a name="id2585427"></a>
+<a name="hello.running_bjam"></a><h2>
+<a name="id386404"></a>
Running bjam
- </h3>
+ </h2>
<p>
<span class="emphasis"><em>bjam</em></span> is run using your operating system's command line
interpreter.
@@ -144,13 +144,13 @@
<p>
The first rule tells Bjam to use the MSVC 8.0 compiler and associated tools.
The second rule provides information on Python, its version and where it is
- located. The above assumes that the Python installation is in <code class="literal">C:/dev/tools/Python/</code>.
+ located. The above assumes that the Python installation is in <tt class="literal">C:/dev/tools/Python/</tt>.
If you have one fairly "standard" python installation for your platform,
you might not need to do this.
</p>
<p>
- Now we are ready... Be sure to <code class="literal">cd</code> to <code class="literal">libs/python/example/tutorial</code>
- where the tutorial <code class="literal">"hello.cpp"</code> and the <code class="literal">"Jamroot"</code>
+ Now we are ready... Be sure to <tt class="literal">cd</tt> to <tt class="literal">libs/python/example/tutorial</tt>
+ where the tutorial <tt class="literal">"hello.cpp"</tt> and the <tt class="literal">"Jamroot"</tt>
is situated.
</p>
<p>
@@ -180,11 +180,21 @@
Or something similar. If all is well, you should now have built the DLLs and
run the Python program.
</p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ Starting from Boost 1.35, bjam erases the generated executables (e.g. pyd
+ file). To keep bjam from doing that, pass --preserve-test-targets to bjam.
+ </p></td></tr>
+</table></div>
<div class="blockquote"><blockquote class="blockquote">
<p>
</p>
<p>
- <span class="bold"><strong>There you go... Have fun!</strong></span>
+ <span class="bold"><b>There you go... Have fun!</b></span>
</p>
<p>
</p>
Modified: branches/CMake/release/libs/python/doc/tutorial/doc/html/python/iterators.html
==============================================================================
--- branches/CMake/release/libs/python/doc/tutorial/doc/html/python/iterators.html (original)
+++ branches/CMake/release/libs/python/doc/tutorial/doc/html/python/iterators.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -3,19 +3,19 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Iterators</title>
<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../index.html" title="Chapter 1. python 1.0">
<link rel="up" href="../index.html" title="Chapter 1. python 1.0">
<link rel="prev" href="embedding.html" title="Embedding">
-<link rel="next" href="exception.html" title="Exception Translation">
+<link rel="next" href="exception.html" title=" Exception Translation">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -30,7 +30,7 @@
iterators, but these are two very different beasts.
</p>
<p>
- <span class="bold"><strong>C++ iterators:</strong></span>
+ <span class="bold"><b>C++ iterators:</b></span>
</p>
<div class="itemizedlist"><ul type="disc">
<li>
@@ -45,7 +45,7 @@
</li>
</ul></div>
<p>
- <span class="bold"><strong>Python Iterators:</strong></span>
+ <span class="bold"><b>Python Iterators:</b></span>
</p>
<div class="itemizedlist"><ul type="disc">
<li>
@@ -59,8 +59,8 @@
</li>
</ul></div>
<p>
- The typical Python iteration protocol: <code class="literal"><span class="bold"><strong>for y
- in x...</strong></span></code> is as follows:
+ The typical Python iteration protocol: <tt class="literal"><span class="bold"><b>for y
+ in x...</b></span></tt> is as follows:
</p>
<p>
</p>
@@ -74,7 +74,7 @@
</span></pre>
<p>
Boost.Python provides some mechanisms to make C++ iterators play along nicely
- as Python iterators. What we need to do is to produce appropriate <code class="computeroutput"><span class="identifier">__iter__</span></code> function from C++ iterators that
+ as Python iterators. What we need to do is to produce appropriate <tt class="computeroutput"><span class="identifier">__iter__</span></tt> function from C++ iterators that
is compatible with the Python iteration protocol. For example:
</p>
<p>
@@ -91,7 +91,7 @@
<span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="string">"__iter__"</span><span class="special">,</span> <span class="identifier">iterator</span><span class="special"><</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="special">>())</span>
</pre>
<p>
- <span class="bold"><strong>range</strong></span>
+ <span class="bold"><b>range</b></span>
</p>
<p>
We can create a Python savvy iterator using the range function:
@@ -119,14 +119,14 @@
</li>
</ul></div>
<p>
- <span class="bold"><strong>iterator</strong></span>
+ <span class="bold"><b>iterator</b></span>
</p>
<div class="itemizedlist"><ul type="disc"><li>
iterator<T, Policies>()
</li></ul></div>
<p>
- Given a container <code class="literal">T</code>, iterator is a shortcut that simply
- calls <code class="literal">range</code> with &T::begin, &T::end.
+ Given a container <tt class="literal">T</tt>, iterator is a shortcut that simply
+ calls <tt class="literal">range</tt> with &T::begin, &T::end.
</p>
<p>
Let's put this into action... Here's an example from some hypothetical bogon
@@ -152,14 +152,14 @@
<span class="special">.</span><span class="identifier">property</span><span class="special">(</span><span class="string">"bogons"</span><span class="special">,</span> <span class="identifier">range</span><span class="special">(&</span><span class="identifier">F</span><span class="special">::</span><span class="identifier">b_begin</span><span class="special">,</span> <span class="special">&</span><span class="identifier">F</span><span class="special">::</span><span class="identifier">b_end</span><span class="special">));</span>
</pre>
<p>
- <span class="bold"><strong>stl_input_iterator</strong></span>
+ <span class="bold"><b>stl_input_iterator</b></span>
</p>
<p>
So far, we have seen how to expose C++ iterators and ranges to Python. Sometimes
we wish to go the other way, though: we'd like to pass a Python sequence to
an STL algorithm or use it to initialize an STL container. We need to make
- a Python iterator look like an STL iterator. For that, we use <code class="computeroutput"><span class="identifier">stl_input_iterator</span><span class="special"><></span></code>.
- Consider how we might implement a function that exposes <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special"><</span><span class="keyword">int</span><span class="special">>::</span><span class="identifier">assign</span><span class="special">()</span></code> to Python:
+ a Python iterator look like an STL iterator. For that, we use <tt class="computeroutput"><span class="identifier">stl_input_iterator</span><span class="special"><></span></tt>.
+ Consider how we might implement a function that exposes <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special"><</span><span class="keyword">int</span><span class="special">>::</span><span class="identifier">assign</span><span class="special">()</span></tt> to Python:
</p>
<p>
</p>
@@ -178,7 +178,7 @@
</span> <span class="special">;</span>
</pre>
<p>
- Now in Python, we can assign any integer sequence to <code class="computeroutput"><span class="identifier">list_int</span></code>
+ Now in Python, we can assign any integer sequence to <tt class="computeroutput"><span class="identifier">list_int</span></tt>
objects:
</p>
<p>
Modified: branches/CMake/release/libs/python/doc/tutorial/doc/html/python/object.html
==============================================================================
--- branches/CMake/release/libs/python/doc/tutorial/doc/html/python/object.html (original)
+++ branches/CMake/release/libs/python/doc/tutorial/doc/html/python/object.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,9 +1,9 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Object Interface</title>
+<title> Object Interface</title>
<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../index.html" title="Chapter 1. python 1.0">
<link rel="up" href="../index.html" title="Chapter 1. python 1.0">
<link rel="prev" href="functions.html" title="Functions">
@@ -12,10 +12,10 @@
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -35,13 +35,13 @@
Python is dynamically typed, unlike C++ which is statically typed. Python variables
may hold an integer, a float, list, dict, tuple, str, long etc., among other
things. In the viewpoint of Boost.Python and C++, these Pythonic variables
- are just instances of class <code class="literal">object</code>. We will see in this
+ are just instances of class <tt class="literal">object</tt>. We will see in this
chapter how to deal with Python objects.
</p>
<p>
As mentioned, one of the goals of Boost.Python is to provide a bidirectional
mapping between C++ and Python while maintaining the Python feel. Boost.Python
- C++ <code class="literal">object</code>s are as close as possible to Python. This should
+ C++ <tt class="literal">object</tt>s are as close as possible to Python. This should
minimize the learning curve significantly.
</p>
<p>
@@ -51,10 +51,10 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="python.basic_interface"></a>Basic Interface</h3></div></div></div>
<p>
- Class <code class="literal">object</code> wraps <code class="literal">PyObject*</code>. All the
- intricacies of dealing with <code class="literal">PyObject</code>s such as managing
- reference counting are handled by the <code class="literal">object</code> class. C++
- object interoperability is seamless. Boost.Python C++ <code class="literal">object</code>s
+ Class <tt class="literal">object</tt> wraps <tt class="literal">PyObject*</tt>. All the
+ intricacies of dealing with <tt class="literal">PyObject</tt>s such as managing
+ reference counting are handled by the <tt class="literal">object</tt> class. C++
+ object interoperability is seamless. Boost.Python C++ <tt class="literal">object</tt>s
can in fact be explicitly constructed from any C++ object.
</p>
<p>
@@ -99,7 +99,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="python.derived_object_types"></a>Derived Object types</h3></div></div></div>
<p>
- Boost.Python comes with a set of derived <code class="literal">object</code> types
+ Boost.Python comes with a set of derived <tt class="literal">object</tt> types
corresponding to that of Python's:
</p>
<div class="itemizedlist"><ul type="disc">
@@ -123,32 +123,32 @@
</li>
</ul></div>
<p>
- These derived <code class="literal">object</code> types act like real Python types.
+ These derived <tt class="literal">object</tt> types act like real Python types.
For instance:
</p>
<pre class="programlisting">
<span class="identifier">str</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special">==></span> <span class="string">"1"</span>
</pre>
<p>
- Wherever appropriate, a particular derived <code class="literal">object</code> has
- corresponding Python type's methods. For instance, <code class="literal">dict</code>
- has a <code class="literal">keys()</code> method:
+ Wherever appropriate, a particular derived <tt class="literal">object</tt> has
+ corresponding Python type's methods. For instance, <tt class="literal">dict</tt>
+ has a <tt class="literal">keys()</tt> method:
</p>
<pre class="programlisting">
<span class="identifier">d</span><span class="special">.</span><span class="identifier">keys</span><span class="special">()</span>
</pre>
<p>
- <code class="literal">make_tuple</code> is provided for declaring <span class="emphasis"><em>tuple literals</em></span>.
+ <tt class="literal">make_tuple</tt> is provided for declaring <span class="emphasis"><em>tuple literals</em></span>.
Example:
</p>
<pre class="programlisting">
<span class="identifier">make_tuple</span><span class="special">(</span><span class="number">123</span><span class="special">,</span> <span class="char">'D'</span><span class="special">,</span> <span class="string">"Hello, World"</span><span class="special">,</span> <span class="number">0.0</span><span class="special">);</span>
</pre>
<p>
- In C++, when Boost.Python <code class="literal">object</code>s are used as arguments
+ In C++, when Boost.Python <tt class="literal">object</tt>s are used as arguments
to functions, subtype matching is required. For example, when a function
- <code class="literal">f</code>, as declared below, is wrapped, it will only accept
- instances of Python's <code class="literal">str</code> type and subtypes.
+ <tt class="literal">f</tt>, as declared below, is wrapped, it will only accept
+ instances of Python's <tt class="literal">str</tt> type and subtypes.
</p>
<pre class="programlisting">
<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">str</span> <span class="identifier">name</span><span class="special">)</span>
@@ -172,18 +172,15 @@
<span class="identifier">object</span> <span class="identifier">msg</span> <span class="special">=</span> <span class="string">"%s is bigger than %s"</span> <span class="special">%</span> <span class="identifier">make_tuple</span><span class="special">(</span><span class="identifier">NAME</span><span class="special">,</span><span class="identifier">name</span><span class="special">);</span>
</pre>
<p>
- Demonstrates that you can write the C++ equivalent of <code class="literal">"format"
- % x,y,z</code> in Python, which is useful since there's no easy way to
+ Demonstrates that you can write the C++ equivalent of <tt class="literal">"format"
+ % x,y,z</tt> in Python, which is useful since there's no easy way to
do that in std C++.
</p>
-<div class="sidebar">
-<p class="title"><b></b></p>
-<p>
- <span class="inlinemediaobject"><img src="../images/alert.png" alt="alert"></span> <span class="bold"><strong>Beware</strong></span> the common pitfall
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/alert.png" alt="alert"></span> <span class="bold"><b>Beware</b></span> the common pitfall
of forgetting that the constructors of most of Python's mutable types make
copies, just as in Python.
- </p>
-</div>
+ </p></div>
<p>
Python:
</p>
@@ -198,12 +195,12 @@
<span class="identifier">dict</span> <span class="identifier">d</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">attr</span><span class="special">(</span><span class="string">"__dict__"</span><span class="special">));</span> <span class="comment">// copies x.__dict__
</span><span class="identifier">d</span><span class="special">[</span><span class="char">'whatever'</span><span class="special">]</span> <span class="special">=</span> <span class="number">3</span><span class="special">;</span> <span class="comment">// modifies the copy
</span></pre>
-<a name="derived_object_types.class__lt_t_gt__as_objects"></a><h3>
-<a name="id2647133"></a>
+<a name="derived_object_types.class__lt_t_gt__as_objects"></a><h2>
+<a name="id469744"></a>
class_<T> as objects
- </h3>
+ </h2>
<p>
- Due to the dynamic nature of Boost.Python objects, any <code class="literal">class_<T></code>
+ Due to the dynamic nature of Boost.Python objects, any <tt class="literal">class_<T></tt>
may also be one of these types! The following code snippet wraps the class
(type) object.
</p>
@@ -225,15 +222,15 @@
<a name="python.extracting_c___objects"></a>Extracting C++ objects</h3></div></div></div>
<p>
At some point, we will need to get C++ values out of object instances. This
- can be achieved with the <code class="literal">extract<T></code> function. Consider
+ can be achieved with the <tt class="literal">extract<T></tt> function. Consider
the following:
</p>
<pre class="programlisting">
<span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">attr</span><span class="special">(</span><span class="string">"length"</span><span class="special">);</span> <span class="comment">// compile error
</span></pre>
<p>
- In the code above, we got a compiler error because Boost.Python <code class="literal">object</code>
- can't be implicitly converted to <code class="literal">double</code>s. Instead, what
+ In the code above, we got a compiler error because Boost.Python <tt class="literal">object</tt>
+ can't be implicitly converted to <tt class="literal">double</tt>s. Instead, what
we wanted to do above can be achieved by writing:
</p>
<pre class="programlisting">
@@ -243,14 +240,14 @@
</pre>
<p>
The first line attempts to extract the "length" attribute of the
- Boost.Python <code class="literal">object</code>. The second line attempts to <span class="emphasis"><em>extract</em></span>
- the <code class="literal">Vec2</code> object from held by the Boost.Python <code class="literal">object</code>.
+ Boost.Python <tt class="literal">object</tt>. The second line attempts to <span class="emphasis"><em>extract</em></span>
+ the <tt class="literal">Vec2</tt> object from held by the Boost.Python <tt class="literal">object</tt>.
</p>
<p>
Take note that we said "attempt to" above. What if the Boost.Python
- <code class="literal">object</code> does not really hold a <code class="literal">Vec2</code>
+ <tt class="literal">object</tt> does not really hold a <tt class="literal">Vec2</tt>
type? This is certainly a possibility considering the dynamic nature of Python
- <code class="literal">object</code>s. To be on the safe side, if the C++ type can't
+ <tt class="literal">object</tt>s. To be on the safe side, if the C++ type can't
be extracted, an appropriate exception is thrown. To avoid an exception,
we need to test for extractibility:
</p>
@@ -260,7 +257,7 @@
<span class="identifier">Vec2</span><span class="special">&</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">();</span> <span class="special">...</span>
</pre>
<p>
- <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> The astute reader might have noticed that the <code class="literal">extract<T></code>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> The astute reader might have noticed that the <tt class="literal">extract<T></tt>
facility in fact solves the mutable copying problem:
</p>
<pre class="programlisting">
@@ -273,8 +270,8 @@
<a name="python.enums"></a>Enums</h3></div></div></div>
<p>
Boost.Python has a nifty facility to capture and wrap C++ enums. While Python
- has no <code class="literal">enum</code> type, we'll often want to expose our C++ enums
- to Python as an <code class="literal">int</code>. Boost.Python's enum facility makes
+ has no <tt class="literal">enum</tt> type, we'll often want to expose our C++ enums
+ to Python as an <tt class="literal">int</tt>. Boost.Python's enum facility makes
this easy while taking care of the proper conversions from Python's dynamic
typing to C++'s strong static typing (in C++, ints cannot be implicitly converted
to enums). To illustrate, given a C++ enum:
@@ -293,8 +290,8 @@
</pre>
<p>
can be used to expose to Python. The new enum type is created in the current
- <code class="literal">scope()</code>, which is usually the current module. The snippet
- above creates a Python class derived from Python's <code class="literal">int</code>
+ <tt class="literal">scope()</tt>, which is usually the current module. The snippet
+ above creates a Python class derived from Python's <tt class="literal">int</tt>
type which is associated with the C++ type passed as its first parameter.
</p>
<div class="note"><table border="0" summary="Note">
@@ -302,9 +299,9 @@
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
-<tr><td align="left" valign="top">
+<tr><td colspan="2" align="left" valign="top">
<p>
- <span class="bold"><strong>what is a scope?</strong></span>
+ <span class="bold"><b>what is a scope?</b></span>
</p>
<p>
The scope is a class that has an associated global Python object which
Modified: branches/CMake/release/libs/python/doc/tutorial/doc/html/python/techniques.html
==============================================================================
--- branches/CMake/release/libs/python/doc/tutorial/doc/html/python/techniques.html (original)
+++ branches/CMake/release/libs/python/doc/tutorial/doc/html/python/techniques.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,20 +1,20 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>General Techniques</title>
+<title> General Techniques</title>
<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../index.html" title="Chapter 1. python 1.0">
<link rel="up" href="../index.html" title="Chapter 1. python 1.0">
-<link rel="prev" href="exception.html" title="Exception Translation">
+<link rel="prev" href="exception.html" title=" Exception Translation">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -50,7 +50,7 @@
<p>
We have a C++ library that works with sounds: reading and writing various
formats, applying filters to the sound data, etc. It is named (conveniently)
- <code class="literal">sounds</code>. Our library already has a neat C++ namespace hierarchy,
+ <tt class="literal">sounds</tt>. Our library already has a neat C++ namespace hierarchy,
like so:
</p>
<pre class="programlisting">
@@ -93,18 +93,18 @@
<span class="special">}</span>
</pre>
<p>
- Compiling these files will generate the following Python extensions: <code class="literal">core.pyd</code>,
- <code class="literal">io.pyd</code> and <code class="literal">filters.pyd</code>.
+ Compiling these files will generate the following Python extensions: <tt class="literal">core.pyd</tt>,
+ <tt class="literal">io.pyd</tt> and <tt class="literal">filters.pyd</tt>.
</p>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
-<tr><td align="left" valign="top"><p>
- The extension <code class="literal">.pyd</code> is used for python extension modules,
+<tr><td colspan="2" align="left" valign="top"><p>
+ The extension <tt class="literal">.pyd</tt> is used for python extension modules,
which are just shared libraries. Using the default for your system, like
- <code class="literal">.so</code> for Unix and <code class="literal">.dll</code> for Windows,
+ <tt class="literal">.so</tt> for Unix and <tt class="literal">.dll</tt> for Windows,
works just as well.
</p></td></tr>
</table></div>
@@ -118,12 +118,12 @@
io.pyd
</pre>
<p>
- The file <code class="literal">__init__.py</code> is what tells Python that the directory
- <code class="literal">sounds/</code> is actually a Python package. It can be a empty
+ The file <tt class="literal">__init__.py</tt> is what tells Python that the directory
+ <tt class="literal">sounds/</tt> is actually a Python package. It can be a empty
file, but can also perform some magic, that will be shown later.
</p>
<p>
- Now our package is ready. All the user has to do is put <code class="literal">sounds</code>
+ Now our package is ready. All the user has to do is put <tt class="literal">sounds</tt>
into his PYTHONPATH
and fire up the interpreter:
</p>
@@ -162,7 +162,7 @@
</pre>
<p>
Note that we added an underscore to the module name. The filename will have
- to be changed to <code class="literal">_core.pyd</code> as well, and we do the same
+ to be changed to <tt class="literal">_core.pyd</tt> as well, and we do the same
to the other extension modules. Now, we change our package hierarchy like
so:
</p>
@@ -190,11 +190,11 @@
<span class="special">>>></span> <span class="identifier">sounds</span><span class="special">.</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">_core</span><span class="special">.</span><span class="identifier">foo</span><span class="special">(...)</span>
</pre>
<p>
- which is not what we want. But here enters the <code class="literal">__init__.py</code>
- magic: everything that is brought to the <code class="literal">__init__.py</code> namespace
+ which is not what we want. But here enters the <tt class="literal">__init__.py</tt>
+ magic: everything that is brought to the <tt class="literal">__init__.py</tt> namespace
can be accessed directly by the user. So, all we have to do is bring the
- entire namespace from <code class="literal">_core.pyd</code> to <code class="literal">core/__init__.py</code>.
- So add this line of code to <code class="literal">sounds<span class="emphasis"><em>core</em></span>__init__.py</code>:
+ entire namespace from <tt class="literal">_core.pyd</tt> to <tt class="literal">core/__init__.py</tt>.
+ So add this line of code to <tt class="literal">sounds<span class="emphasis"><em>core</em></span>__init__.py</tt>:
</p>
<pre class="programlisting">
<span class="keyword">from</span> <span class="identifier">_core</span> <span class="keyword">import</span> <span class="special">*</span>
@@ -211,10 +211,10 @@
with the additional benefit that we can easily add pure Python functions
to any module, in a way that the user can't tell the difference between a
C++ function and a Python function. Let's add a <span class="emphasis"><em>pure</em></span>
- Python function, <code class="literal">echo_noise</code>, to the <code class="literal">filters</code>
- package. This function applies both the <code class="literal">echo</code> and <code class="literal">noise</code>
- filters in sequence in the given <code class="literal">sound</code> object. We create
- a file named <code class="literal">sounds/filters/echo_noise.py</code> and code our
+ Python function, <tt class="literal">echo_noise</tt>, to the <tt class="literal">filters</tt>
+ package. This function applies both the <tt class="literal">echo</tt> and <tt class="literal">noise</tt>
+ filters in sequence in the given <tt class="literal">sound</tt> object. We create
+ a file named <tt class="literal">sounds/filters/echo_noise.py</tt> and code our
function:
</p>
<pre class="programlisting">
@@ -225,14 +225,14 @@
<span class="keyword">return</span> <span class="identifier">s</span>
</pre>
<p>
- Next, we add this line to <code class="literal">sounds<span class="emphasis"><em>filters</em></span>__init__.py</code>:
+ Next, we add this line to <tt class="literal">sounds<span class="emphasis"><em>filters</em></span>__init__.py</tt>:
</p>
<pre class="programlisting">
<span class="keyword">from</span> <span class="identifier">echo_noise</span> <span class="keyword">import</span> <span class="identifier">echo_noise</span>
</pre>
<p>
And that's it. The user now accesses this function like any other function
- from the <code class="literal">filters</code> package:
+ from the <tt class="literal">filters</tt> package:
</p>
<pre class="programlisting">
<span class="special">>>></span> <span class="keyword">import</span> <span class="identifier">sounds</span><span class="special">.</span><span class="identifier">filters</span>
@@ -266,7 +266,7 @@
</p>
<p>
We can do the same with classes that were wrapped with Boost.Python. Suppose
- we have a class <code class="literal">point</code> in C++:
+ we have a class <tt class="literal">point</tt> in C++:
</p>
<p>
</p>
@@ -279,8 +279,8 @@
<span class="special">}</span>
</pre>
<p>
- If we are using the technique from the previous session, <a class="link" href="techniques.html#python.creating_packages" title="Creating Packages">Creating
- Packages</a>, we can code directly into <code class="literal">geom/__init__.py</code>:
+ If we are using the technique from the previous session, <a href="techniques.html#python.creating_packages" title="Creating Packages">Creating
+ Packages</a>, we can code directly into <tt class="literal">geom/__init__.py</tt>:
</p>
<p>
</p>
@@ -295,7 +295,7 @@
</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">__str__</span> <span class="special">=</span> <span class="identifier">point_str</span>
</pre>
<p>
- <span class="bold"><strong>All</strong></span> point instances created from C++ will
+ <span class="bold"><b>All</b></span> point instances created from C++ will
also have this member function! This technique has several advantages:
</p>
<div class="itemizedlist"><ul type="disc">
@@ -394,7 +394,7 @@
<span class="special">}</span>
</pre>
<p>
- Now you create a file <code class="literal">main.cpp</code>, which contains the <code class="literal">BOOST_PYTHON_MODULE</code>
+ Now you create a file <tt class="literal">main.cpp</tt>, which contains the <tt class="literal">BOOST_PYTHON_MODULE</tt>
macro, and call the various export functions inside it.
</p>
<pre class="programlisting">
@@ -435,9 +435,9 @@
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
-<tr><td align="left" valign="top"><p>
+<tr><td colspan="2" align="left" valign="top"><p>
If you're exporting your classes with Pyste,
- take a look at the <code class="literal">--multiple</code> option, that generates
+ take a look at the <tt class="literal">--multiple</tt> option, that generates
the wrappers in various files as demonstrated here.
</p></td></tr>
</table></div>
@@ -446,7 +446,7 @@
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
-<tr><td align="left" valign="top"><p>
+<tr><td colspan="2" align="left" valign="top"><p>
This method is useful too if you are getting the error message <span class="emphasis"><em>"fatal
error C1204:Compiler limit:internal structure overflow"</em></span>
when compiling a large source file, as explained in the FAQ.
Modified: branches/CMake/release/libs/serialization/example/portable_binary_oarchive.hpp
==============================================================================
--- branches/CMake/release/libs/serialization/example/portable_binary_oarchive.hpp (original)
+++ branches/CMake/release/libs/serialization/example/portable_binary_oarchive.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -52,7 +52,7 @@
friend class boost::archive::basic_binary_oarchive<portable_binary_oarchive>;
friend class boost::archive::save_access;
#endif
- void save_impl(const long l){
+ void save_impl(long l){
long ll = l;
char size = 0;
if(l < 0){
Modified: branches/CMake/release/libs/test/doc/components/utf/components/index.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/index.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/index.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > <SPAN class="current_article">Components</SPAN>
</DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The Unit Test Framework components</H1>
<P class="first-line-indented">The Unit Test Framework consists of several cooperating components. All
components are located in the namespace boost::unit_test.</P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/abstract_interface.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/abstract_interface.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/abstract_interface.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
Unit Test Framework</A> > Components > <A href="index.html">The
Test Case</A> > <SPAN class="current_article">Abstract
Interface</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The abstract Test Case interface</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in unit_test_suite.hpp</P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/auto_register_facility.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/auto_register_facility.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/auto_register_facility.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
Unit Test Framework</A> > Components > <A href="index.html">The
Test Case</A> > <SPAN class="current_article">The
automatic registration facility</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The automatic registration facility</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in <A href="../../../../../../../boost/test/auto_unit_test.hpp">
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/boost_function_tc.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/boost_function_tc.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/boost_function_tc.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
Unit Test Framework</A> > Components > <A href="index.html">The
Test Case</A> > <SPAN class="current_article">The
boost::function based test case</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The boost::function based test case</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/class_tc.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/class_tc.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/class_tc.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
Unit Test Framework</A> > Components > <A href="index.html">The
Test Case</A> > <SPAN class="current_article">The
class member function based test case</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The class member function based test cases</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in unit_test_suite.hpp</P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/function_tc.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/function_tc.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/function_tc.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
> The Unit Test Framework > Components >
<A href="index.html">The Test Case</A> > <SPAN class="current_article">The
free function based test case</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The free function based test case</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in unit_test_suite.hpp </P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/index.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/index.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/index.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components > <A href="../../index.html">The
Unit Test Framework</A> > Components > <SPAN class="current_article">The
Test Case</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle"><A name="TestCase">The Test Case</A></H1>
<P class="first-line-indented">The Unit Test Framework provides an ability for the user to create the
test case based on many different sources.</P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_boost_function_tc.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_boost_function_tc.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_boost_function_tc.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
Unit Test Framework</A> > Components > <A href="index.html">The
Test Case</A> > <SPAN class="current_article">The
parameterized boost::function based test case</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The parameterized boost::function based test case</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_class_tc.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_class_tc.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_class_tc.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
Unit Test Framework</A> > Components > <A href="index.html">The
Test Case</A> > <SPAN class="current_article">The
parameterized class member function based test case</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The parameterized class member function based test case</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in unit_test_suite.hpp </P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_function_tc.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_function_tc.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/param_function_tc.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
Unit Test Framework</A> > Components > <A href="index.html">The
Test Case</A> > <SPAN class="current_article">The
parameterized function test case</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The parameterized free function based test case</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in unit_test_suite.hpp</P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_case/tc_template.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_case/tc_template.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_case/tc_template.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,7 +12,7 @@
> The Unit Test Framework > Components >
<A href="index.html">The Test Case</A> > <SPAN class="current_article">The
free function template based test case</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The free function template based test case</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in test_case_template.hpp</P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_log/custom_log_formatter.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_log/custom_log_formatter.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_log/custom_log_formatter.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -9,7 +9,7 @@
</HEAD>
<BODY>
<DIV class="header"> Boost.Test > Components > The Unit Test Framework > Components > <SPAN class="current_article">The Test Log formatter interface </SPAN></DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The test log formatter interface </H1>
<H4 class="underlined">Definition</H4>
<P>defined in unit_test_log_formatter.hpp </P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_log/index.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_log/index.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_log/index.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -9,7 +9,7 @@
</HEAD>
<BODY>
<DIV class="header"> Boost.Test > Components > The Unit Test Framework > Components > <SPAN class="current_article">The Test Log</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The Test Log</H1>
<H4 class="underlined">Definition</H4>
<P>defined in unit_test_log.hpp </P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_result/index.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_result/index.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_result/index.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Components >
<SPAN class="current_article">The Test Result</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The Test Result</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in unit_test_result.hpp </P>
Modified: branches/CMake/release/libs/test/doc/components/utf/components/test_suite/index.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/components/test_suite/index.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/components/test_suite/index.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Components >
<SPAN class="current_article">The Test Suite</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The Test Suite</H1>
<H5>Definition</H5>
<P class="first-line-indented"> defined in unit_test_suite.hpp </P>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/build_info.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/build_info.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/build_info.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters
> <SPAN class="current_article">Build info</SPAN></DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'build info' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/catch_system_errors.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/catch_system_errors.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/catch_system_errors.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters > <SPAN class="current_article">Catch
system errors </SPAN></DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'catch system errors' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/detect_memory_leaks.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/detect_memory_leaks.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/detect_memory_leaks.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters
> <SPAN class="current_article">Detect memory leaks </SPAN></DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'build info' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/index.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/index.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/index.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > <SPAN class="current_article">Parameters</SPAN>
</DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The Unit Test Framework parameters</H1>
<P class="first-line-indented">The Unit Test Framework supports two ways to configure test program execution
at runtime: using command line arguments and setting environment variables. Command line argument
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/log_format.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/log_format.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/log_format.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters > <SPAN class="current_article">Log
format</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'log format' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/log_level.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/log_level.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/log_level.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters > <SPAN class="current_article">Log
level</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'log level' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/no_result_code.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/no_result_code.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/no_result_code.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -10,7 +10,7 @@
<BODY>
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters > <SPAN class="current_article">No result code</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'no result code' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/output_format.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/output_format.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/output_format.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters > <SPAN class="current_article">Output
format</SPAN></DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test reporto">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test reporto">
<H1 class="subtitle">The 'output format' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/random.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/random.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/random.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters > <SPAN class="current_article">The
random seed </SPAN></DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'build info' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/report_format.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/report_format.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/report_format.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters > <SPAN class="current_article">Report
format</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test reporto">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test reporto">
<H1 class="subtitle">The 'report format' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
@@ -53,10 +53,10 @@
<DIV class="footer-body">
<P> © <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy Rozental</A> 2001-2006. <BR>
Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
+ (See accompanying file LICENSE_1_0.txt or copy at
<A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>)</P>
<P>Revised: <!-- #BeginDate format:Sw1 -->28 February, 2006<!-- #EndDate --> </P>
</DIV>
</DIV>
</BODY>
-</HTML>
+</HTML>
\ No newline at end of file
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/report_level.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/report_level.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/report_level.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters > <SPAN class="current_article">Report
level</SPAN> </DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'report level' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/components/utf/parameters/show_progress.html
==============================================================================
--- branches/CMake/release/libs/test/doc/components/utf/parameters/show_progress.html (original)
+++ branches/CMake/release/libs/test/doc/components/utf/parameters/show_progress.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -11,7 +11,7 @@
<DIV class="header"> Boost.Test > Components
> The Unit Test Framework > Parameters
> <SPAN class="current_article">Show progress </SPAN></DIV>
-<DIV class="body"> <IMG src="../../btl1.gif" width="252" height="43" alt="Boost Test logo">
+<DIV class="body"> <IMG src="../../../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The 'build info' parameter</H1>
<TABLE class="parameter-table" cellspacing="0">
<TR>
Modified: branches/CMake/release/libs/test/doc/examples/unit_test_example1.html
==============================================================================
--- branches/CMake/release/libs/test/doc/examples/unit_test_example1.html (original)
+++ branches/CMake/release/libs/test/doc/examples/unit_test_example1.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -37,7 +37,7 @@
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD>unit_test_example1.cpp</TD>
+ <TD>unit_test_example_01.cpp</TD>
</TR>
</TABLE>
</DIV>
@@ -51,4 +51,4 @@
</DIV>
</DIV>
</BODY>
-</HTML>
+</HTML>
\ No newline at end of file
Modified: branches/CMake/release/libs/test/doc/examples/unit_test_example2.html
==============================================================================
--- branches/CMake/release/libs/test/doc/examples/unit_test_example2.html (original)
+++ branches/CMake/release/libs/test/doc/examples/unit_test_example2.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -8,7 +8,7 @@
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<DIV class="header"> Boost.Test > Examples > <SPAN class="current_article">unit_test_example2</SPAN>
+<DIV class="header"> Boost.Test > Examples > <SPAN class="current_article">unit_test_example02</SPAN>
</DIV>
<DIV class="body"> <IMG src="../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The Unit Test Framework example 2</H1>
@@ -40,7 +40,7 @@
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD>unit_test_example2.cpp</TD>
+ <TD>unit_test_example_02.cpp</TD>
</TR>
</TABLE>
</DIV>
@@ -54,4 +54,4 @@
</DIV>
</DIV>
</BODY>
-</HTML>
+</HTML>
\ No newline at end of file
Modified: branches/CMake/release/libs/test/doc/examples/unit_test_example3.html
==============================================================================
--- branches/CMake/release/libs/test/doc/examples/unit_test_example3.html (original)
+++ branches/CMake/release/libs/test/doc/examples/unit_test_example3.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -8,7 +8,7 @@
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<DIV class="header"> Boost.Test > Examples > <SPAN class="current_article">unit_test_example3</SPAN>
+<DIV class="header"> Boost.Test > Examples > <SPAN class="current_article">unit_test_example03</SPAN>
</DIV>
<DIV class="body"> <IMG src="../btl1.gif" width="252" height="43" alt="Boost Test logo">
<H1 class="subtitle">The Unit Test Framework example 3</H1>
@@ -45,7 +45,7 @@
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD>unit_test_example3.cpp</TD>
+ <TD>unit_test_example_03.cpp</TD>
</TR>
</TABLE>
</DIV>
@@ -59,4 +59,4 @@
</DIV>
</DIV>
</BODY>
-</HTML>
+</HTML>
\ No newline at end of file
Modified: branches/CMake/release/libs/test/doc/examples/unit_test_example4.html
==============================================================================
--- branches/CMake/release/libs/test/doc/examples/unit_test_example4.html (original)
+++ branches/CMake/release/libs/test/doc/examples/unit_test_example4.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -34,7 +34,7 @@
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD>unit_test_example4.cpp</TD>
+ <TD>unit_test_example_04.cpp</TD>
</TR>
</TABLE>
</DIV>
@@ -48,4 +48,4 @@
</DIV>
</DIV>
</BODY>
-</HTML>
+</HTML>
\ No newline at end of file
Modified: branches/CMake/release/libs/test/doc/examples/unit_test_example5.html
==============================================================================
--- branches/CMake/release/libs/test/doc/examples/unit_test_example5.html (original)
+++ branches/CMake/release/libs/test/doc/examples/unit_test_example5.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
-<TITLE>Boost Test Library: unit_test_example5 example</TITLE>
+<TITLE>Boost Test Library: unit_test_example 5 example</TITLE>
<LINK rel="stylesheet" type="text/css" href="../style/btl.css" media="screen">
<LINK rel="stylesheet" type="text/css" href="../style/btl-print.css" media="print">
<META http-equiv="Content-Language" content="en-us">
@@ -52,7 +52,7 @@
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD>unit_test_example5.cpp</TD>
+ <TD>unit_test_example_05.cpp</TD>
</TR>
</TABLE>
</DIV>
@@ -66,4 +66,4 @@
</DIV>
</DIV>
</BODY>
-</HTML>
+</HTML>
\ No newline at end of file
Modified: branches/CMake/release/libs/test/doc/tutorials/hello_the_testing_world.html
==============================================================================
--- branches/CMake/release/libs/test/doc/tutorials/hello_the_testing_world.html (original)
+++ branches/CMake/release/libs/test/doc/tutorials/hello_the_testing_world.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -134,7 +134,7 @@
<P> © <A name="Copyright">Copyright</A> <A href='mailto:boost-test at emailaccount dot com (please unobscure)'>Gennadiy
Rozental</A> 2001-2006. <BR>
Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy
+ file LICENSE_1_0.txt or copy
at www.boost.org/LICENSE_1_0.txt)</P>
<P>Revised:
<!-- #BeginDate format:Sw1 -->28 February, 2006<!-- #EndDate -->
@@ -142,4 +142,4 @@
</DIV>
</DIV>
</BODY>
-</HTML>
+</HTML>
\ No newline at end of file
Modified: branches/CMake/release/libs/test/doc/tutorials/new_year_resolution.html
==============================================================================
--- branches/CMake/release/libs/test/doc/tutorials/new_year_resolution.html (original)
+++ branches/CMake/release/libs/test/doc/tutorials/new_year_resolution.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -182,10 +182,10 @@
<DIV class="footer-body">
<P> © <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy Rozental</A> 2001-2006. <BR>
Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
+ (See accompanying file LICENSE_1_0.txt or copy at
<A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>)</P>
<P>Revised: <!-- #BeginDate format:Sw1 -->26 February, 2006<!-- #EndDate --> </P>
</DIV>
</DIV>
</BODY>
-</HTML>
+</HTML>
\ No newline at end of file
Modified: branches/CMake/release/libs/thread/doc/Jamfile.v2
==============================================================================
--- branches/CMake/release/libs/thread/doc/Jamfile.v2 (original)
+++ branches/CMake/release/libs/thread/doc/Jamfile.v2 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,11 +1,55 @@
-# Copyright (C) 2001-2003
-# William E. Kempf
+# (C) Copyright 2008 Anthony Williams
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-import toolset ;
-toolset.using doxygen ;
+path-constant boost-images : ../../../doc/src/images ;
-boostbook thread : thread.xml ;
+xml thread : thread.qbk ;
+
+boostbook standalone
+ :
+ thread
+ :
+ # HTML options first:
+ # Use graphics not text for navigation:
+ <xsl:param>navig.graphics=1
+ # How far down we chunk nested sections, basically all of them:
+ <xsl:param>chunk.section.depth=3
+ # Don't put the first section on the same page as the TOC:
+ <xsl:param>chunk.first.sections=1
+ # How far down sections get TOC's
+ <xsl:param>toc.section.depth=10
+ # Max depth in each TOC:
+ <xsl:param>toc.max.depth=3
+ # How far down we go with TOC's
+ <xsl:param>generate.section.toc.level=10
+ # Path for links to Boost:
+ <xsl:param>boost.root=../../../..
+ # Path for libraries index:
+ <xsl:param>boost.libraries=../../../../libs/libraries.htm
+ # Use the main Boost stylesheet:
+ <xsl:param>html.stylesheet=../../../../doc/html/boostbook.css
+
+ # PDF Options:
+ # TOC Generation: this is needed for FOP-0.9 and later:
+ #<xsl:param>fop1.extensions=1
+ # Or enable this if you're using XEP:
+ <xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+ <xsl:param>fop.extensions=0
+ # No indent on body text:
+ <xsl:param>body.start.indent=0pt
+ # Margin size:
+ <xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <xsl:param>page.margin.outer=0.5in
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set this one for PDF generation *only*:
+ # default pnd graphics are awful in PDF form,
+ # better use SVG's instead:
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+ <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
+ ;
Deleted: branches/CMake/release/libs/thread/doc/acknowledgements.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/acknowledgements.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.acknowledgements"
-last-revision="$Date$">
- <title>Acknowledgements</title>
- <para>William E. Kempf was the architect, designer, and implementor of
- &Boost.Thread;.</para>
- <para>Mac OS Carbon implementation written by Mac Murrett.</para>
- <para>Dave Moore provided initial submissions and further comments on the
- <code>barrier</code>
- ,
- <code>thread_pool</code>
- ,
- <code>read_write_mutex</code>
- ,
- <code>read_write_try_mutex</code>
- and
- <code>read_write_timed_mutex</code>
- classes.</para>
- <para>Important contributions were also made by Jeremy Siek (lots of input
- on the design and on the implementation), Alexander Terekhov (lots of input
- on the Win32 implementation, especially in regards to boost::condition, as
- well as a lot of explanation of POSIX behavior), Greg Colvin (lots of input
- on the design), Paul Mclachlan, Thomas Matelich and Iain Hanson (for help
- in trying to get the build to work on other platforms), and Kevin S. Van
- Horn (for several updates/corrections to the documentation).</para>
- <para>Mike Glassford finished changes to &Boost.Thread; that were begun
- by William Kempf and moved them into the main CVS branch.
- He also addressed a number of issues that were brought up on the Boost
- developer's mailing list and provided some additions and changes to the
- read_write_mutex and related classes.</para>
- <para>The documentation was written by William E. Kempf. Beman Dawes
- provided additional documentation material and editing.
- Mike Glassford finished William Kempf's conversion of the documentation to
- BoostBook format and added a number of new sections.</para>
- <para>Discussions on the boost.org mailing list were essential in the
- development of &Boost.Thread;
- . As of August 1, 2001, participants included Alan Griffiths, Albrecht
- Fritzsche, Aleksey Gurtovoy, Alexander Terekhov, Andrew Green, Andy Sawyer,
- Asger Alstrup Nielsen, Beman Dawes, Bill Klein, Bill Rutiser, Bill Wade,
- Branko èibej, Brent Verner, Craig Henderson, Csaba Szepesvari,
- Dale Peakall, Damian Dixon, Dan Nuffer, Darryl Green, Daryle Walker, David
- Abrahams, David Allan Finch, Dejan Jelovic, Dietmar Kuehl, Douglas Gregor,
- Duncan Harris, Ed Brey, Eric Swanson, Eugene Karpachov, Fabrice Truillot,
- Frank Gerlach, Gary Powell, Gernot Neppert, Geurt Vos, Ghazi Ramadan, Greg
- Colvin, Gregory Seidman, HYS, Iain Hanson, Ian Bruntlett, J Panzer, Jeff
- Garland, Jeff Paquette, Jens Maurer, Jeremy Siek, Jesse Jones, Joe Gottman,
- John (EBo) David, John Bandela, John Maddock, John Max Skaller, John
- Panzer, Jon Jagger , Karl Nelson, Kevlin Henney, KG Chandrasekhar, Levente
- Farkas, Lie-Quan Lee, Lois Goldthwaite, Luis Pedro Coelho, Marc Girod, Mark
- A. Borgerding, Mark Rodgers, Marshall Clow, Matthew Austern, Matthew Hurd,
- Michael D. Crawford, Michael H. Cox , Mike Haller, Miki Jovanovic, Nathan
- Myers, Paul Moore, Pavel Cisler, Peter Dimov, Petr Kocmid, Philip Nash,
- Rainer Deyke, Reid Sweatman, Ross Smith, Scott McCaskill, Shalom Reich,
- Steve Cleary, Steven Kirk, Thomas Holenstein, Thomas Matelich, Trevor
- Perrin, Valentin Bonnard, Vesa Karvonen, Wayne Miller, and William
- Kempf.</para>
- <para>
- As of February 2006 Anthony Williams and Roland Schwarz took over maintainance
- and further development of the library after it has been in an orphaned state
- for a rather long period of time.
- </para>
- <para>Apologies for anyone inadvertently missed.</para>
-</section>
-
Deleted: branches/CMake/release/libs/thread/doc/barrier-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/barrier-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/barrier.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <class name="barrier">
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <purpose>
- <para>An object of class <classname>barrier</classname> is a synchronization
- primitive used to cause a set of threads to wait until they each perform a
- certain function or each reach a particular point in their execution.</para>
- </purpose>
-
- <description>
- <para>When a barrier is created, it is initialized with a thread count N.
- The first N-1 calls to <code>wait()</code> will all cause their threads to be blocked.
- The Nth call to <code>wait()</code> will allow all of the waiting threads, including
- the Nth thread, to be placed in a ready state. The Nth call will also "reset"
- the barrier such that, if an additional N+1th call is made to <code>wait()</code>,
- it will be as though this were the first call to <code>wait()</code>; in other
- words, the N+1th to 2N-1th calls to <code>wait()</code> will cause their
- threads to be blocked, and the 2Nth call to <code>wait()</code> will allow all of
- the waiting threads, including the 2Nth thread, to be placed in a ready state
- and reset the barrier. This functionality allows the same set of N threads to re-use
- a barrier object to synchronize their execution at multiple points during their
- execution.</para>
- <para>See <xref linkend="thread.glossary"/> for definitions of thread
- states <link linkend="thread.glossary.thread-state">blocked</link>
- and <link linkend="thread.glossary.thread-state">ready</link>.
- Note that "waiting" is a synonym for blocked.</para>
- </description>
-
- <constructor>
- <parameter name="count">
- <paramtype>size_t</paramtype>
- </parameter>
-
- <effects><simpara>Constructs a <classname>barrier</classname> object that
- will cause <code>count</code> threads to block on a call to <code>wait()</code>.
- </simpara></effects>
- </constructor>
-
- <destructor>
- <effects><simpara>Destroys <code>*this</code>. If threads are still executing
- their <code>wait()</code> operations, the behavior for these threads is undefined.
- </simpara></effects>
- </destructor>
-
- <method-group name="waiting">
- <method name="wait">
- <type>bool</type>
-
- <effects><simpara>Wait until N threads call <code>wait()</code>, where
- N equals the <code>count</code> provided to the constructor for the
- barrier object.</simpara>
- <simpara><emphasis role="bold">Note</emphasis> that if the barrier is
- destroyed before <code>wait()</code> can return, the behavior is
- undefined.</simpara></effects>
-
- <returns>Exactly one of the N threads will receive a return value
- of <code>true</code>, the others will receive a value of <code>false</code>.
- Precisely which thread receives the return value of <code>true</code> will
- be implementation-defined. Applications can use this value to designate one
- thread as a leader that will take a certain action, and the other threads
- emerging from the barrier can wait for that action to take place.</returns>
- </method>
- </method-group>
- </class>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/bibliography.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/bibliography.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,234 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<bibliography id="thread.bibliography"
-last-revision="$Date$">
- <title>Bibliography</title>
- <biblioentry id="thread.bib.AndrewsSchneider83">
- <abbrev id="thread.bib.AndrewsSchneider83.abbrev">AndrewsSchnieder83</abbrev>
- <biblioset relation="journal">
- <title>ACM Computing Surveys</title>
- <volumenum>Vol. 15</volumenum>
- <issuenum>No. 1</issuenum>
- <date>March, 1983</date>
- </biblioset>
- <biblioset relation="article">
- <authorgroup>
- <author>
- <firstname>Gregory</firstname>
- <othername>R.</othername>
- <surname>Andrews</surname>
- </author>
- <author>
- <firstname>Fred</firstname>
- <othername>B.</othername>
- <surname>Schneider</surname>
- </author>
- </authorgroup>
- <title>
- <ulink
- url="http://www.acm.org/pubs/citations/journals/surveys/1983-15-1/p3-andrews/"
- >Concepts and Notations for Concurrent Programming</ulink>
- </title>
- </biblioset>
- <para>Good general background reading. Includes descriptions of Path
- Expressions, Message Passing, and Remote Procedure Call in addition to the
- basics</para>
- </biblioentry>
- <biblioentry id="thread.bib.Boost">
- <abbrev id="thread.bib.Boost.abbrev">Boost</abbrev>
- <bibliomisc>The <emphasis>Boost</emphasis> world wide web site.
- <ulink url="http:/www.boost.org">http://www.boost.org></bibliomisc>
- <para>&Boost.Thread; is one of many Boost libraries. The Boost web
- site includes a great deal of documentation and general information which
- applies to all Boost libraries. Current copies of the libraries including
- documentation and test programs may be downloaded from the web
- site.</para>
- </biblioentry>
- <biblioentry id="thread.bib.Hansen73">
- <abbrev id="thread.bib.Hansen73.abbrev">Hansen73</abbrev>
- <biblioset relation="journal">
- <title>ACM Computing Surveys</title>
- <volumenum>Vol. 5</volumenum>
- <issuenum>No. 4</issuenum>
- <date>December, 1973</date>
- </biblioset>
- <biblioset relation="article">
- <author>0-201-63392-2
- <firstname>Per Brinch</firstname>
- <lastname>Hansen</lastname>
- </author>
- <title>
- <ulink
- url="http://www.acm.org/pubs/articles/journals/surveys/1973-5-4/p223-hansen/"
- >Concurrent Programming Concepts</ulink>
- </title>
- </biblioset>
- <para>"This paper describes the evolution of language features for
- multiprogramming from event queues and semaphores to critical regions and
- monitors." Includes analysis of why events are considered error-prone. Also
- noteworthy because of an introductory quotation from Christopher Alexander;
- Brinch Hansen was years ahead of others in recognizing pattern concepts
- applied to software, too.</para>
- </biblioentry>
- <biblioentry id="thread.bib.Butenhof97">
- <abbrev id="thread.bib.Butenhof97.abbrev">Butenhof97</abbrev>
- <title>
- <ulink url="http://cseng.aw.com/book/0,3828,0201633922,00.html"
- >Programming with POSIX Threads </ulink>
- </title>
- <author>
- <firstname>David</firstname>
- <othername>R.</othername>
- <surname>Butenhof</surname>
- </author>
- <publisher>Addison-Wesley</publisher>
- <copyright><year>1997</year></copyright>
- <isbn>ISNB: 0-201-63392-2</isbn>
- <para>This is a very readable explanation of threads and how to use
- them. Many of the insights given apply to all multithreaded programming, not
- just POSIX Threads</para>
- </biblioentry>
- <biblioentry id="thread.bib.Hoare74">
- <abbrev id="thread.bib.Hoare74.abbrev">Hoare74</abbrev>
- <biblioset relation="journal">
- <title>Communications of the ACM</title>
- <volumenum>Vol. 17</volumenum>
- <issuenum>No. 10</issuenum>
- <date>October, 1974</date>
- </biblioset>
- <biblioset relation="article">
- <title>
- <ulink url=" http://www.acm.org/classics/feb96/"
- >Monitors: An Operating System Structuring Concept</ulink>
- </title>
- <author>
- <firstname>C.A.R.</firstname>
- <surname>Hoare</surname>
- </author>
- <pagenums>549-557</pagenums>
- </biblioset>
- <para>Hoare and Brinch Hansen's work on Monitors is the basis for reliable
- multithreading patterns. This is one of the most often referenced papers in
- all of computer science, and with good reason.</para>
- </biblioentry>
- <biblioentry id="thread.bib.ISO98">
- <abbrev id="thread.bib.ISO98.abbrev">ISO98</abbrev>
- <title>
- <ulink url="http://www.ansi.org">Programming Language C++</ulink>
- </title>
- <orgname>ISO/IEC</orgname>
- <releaseinfo>14882:1998(E)</releaseinfo>
- <para>This is the official C++ Standards document. Available from the ANSI
- (American National Standards Institute) Electronic Standards Store.</para>
- </biblioentry>
- <biblioentry id="thread.bib.McDowellHelmbold89">
- <abbrev id="thread.bib.McDowellHelmbold89.abbrev">McDowellHelmbold89</abbrev>
- <biblioset relation="journal">
- <title>Communications of the ACM</title>
- <volumenum>Vol. 21</volumenum>
- <issuenum>No. 2</issuenum>
- <date>December, 1989</date>
- </biblioset>
- <biblioset>
- <author>
- <firstname>Charles</firstname>
- <othername>E.</othername>
- <surname>McDowell</surname>
- </author>
- <author>
- <firstname>David</firstname>
- <othername>P.</othername>
- <surname>Helmbold</surname>
- </author>
- <title>
- <ulink
- url="http://www.acm.org/pubs/citations/journals/surveys/1989-21-4/p593-mcdowell/"
- >Debugging Concurrent Programs</ulink>
- </title>
- </biblioset>
- <para>Identifies many of the unique failure modes and debugging difficulties
- associated with concurrent programs.</para>
- </biblioentry>
- <biblioentry id="thread.bib.SchmidtPyarali">
- <abbrev id="thread.bib.SchmidtPyarali.abbrev">SchmidtPyarali</abbrev>
- <title>
- <ulink url="http://www.cs.wustl.edu/~schmidt/win32-cv-1.html8"
- >Strategies for Implementing POSIX Condition Variables on Win32</ulink>
- </title>
- <authorgroup>
- <author>
- <firstname>Douglas</firstname>
- <othername>C.</othername>
- <surname>Schmidt</surname>
- </author>
- <author>
- <firstname>Irfan</firstname>
- <surname>Pyarali</surname>
- </author>
- </authorgroup>
- <orgname>Department of Computer Science, Washington University, St. Louis,
- Missouri</orgname>
- <para>Rationale for understanding &Boost.Thread; condition
- variables. Note that Alexander Terekhov found some bugs in the
- implementation given in this article, so pthreads-win32 and &Boost.Thread;
- are even more complicated yet.</para>
- </biblioentry>
- <biblioentry id="thread.bib.SchmidtStalRohnertBuschmann">
- <abbrev
- id="thread.bib.SchmidtStalRohnertBuschmann.abbrev">SchmidtStalRohnertBuschmann</abbrev>
- <title>
- <ulink
- url="http://www.wiley.com/Corporate/Website/Objects/Products/0,9049,104671,00.html"
- >Pattern-Oriented Architecture Volume 2</ulink>
- </title>
- <subtitle>Patterns for Concurrent and Networked Objects</subtitle>
- <titleabbrev>POSA2</titleabbrev>
- <authorgroup>
- <author>
- <firstname>Douglas</firstname>
- <othername>C.</othername>
- <surname>Schmidt</surname>
- </author>
- <author>
- <firstname>Michael</firstname>
- <lastname>Stal</lastname>
- </author>
- <author>
- <firstname>Hans</firstname>
- <surname>Rohnert</surname>
- </author>
- <author>
- <firstname>Frank</firstname>
- <surname>Buschmann</surname>
- </author>
- </authorgroup>
- <publisher>Wiley</publisher>
- <copyright><year>2000</year></copyright>
- <para>This is a very good explanation of how to apply several patterns
- useful for concurrent programming. Among the patterns documented is the
- Monitor Pattern mentioned frequently in the &Boost.Thread;
- documentation.</para>
- </biblioentry>
- <biblioentry id="thread.bib.Stroustrup">
- <abbrev id="thread.bib.Stroustrup.abbrev">Stroustrup</abbrev>
- <title>
- <ulink url="http://cseng.aw.com/book/0,3828,0201700735,00.html"
- >The C++ Programming Language</ulink>
- </title>
- <edition>Special Edition</edition>
- <publisher>Addison-Wesley</publisher>
- <copyright><year>2000</year></copyright>
- <isbn>ISBN: 0-201-70073-5</isbn>
- <para>The first book a C++ programmer should own. Note that the 3rd edition
- (and subsequent editions like the Special Edition) has been rewritten to
- cover the ISO standard language and library.</para>
- </biblioentry>
-</bibliography>
Deleted: branches/CMake/release/libs/thread/doc/build.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/build.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Copyright (c) 2007 Roland Schwarz
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.build" last-revision="$Date$">
- <title>Build</title>
- <para>
- How you build the &Boost.Thread; libraries, and how you build your own applications
- that use those libraries, are some of the most frequently asked questions. Build
- processes are difficult to deal with in a portable manner. That's one reason
- why &Boost.Thread; makes use of &Boost.Build;.
- In general you should refer to the documentation for &Boost.Build;.
- This document will only supply you with some simple usage examples for how to
- use <emphasis>bjam</emphasis> to build and test &Boost.Thread;. In addition, this document
- will try to explain the build requirements so that users may create their own
- build processes (for instance, create an IDE specific project), both for building
- and testing &Boost.Thread;, as well as for building their own projects using
- &Boost.Thread;.
- </para>
- <section id="thread.build.building">
- <title>Building the &Boost.Thread; Libraries</title>
- <para>
- Building the &Boost.Thread; Library depends on how you intend to use it. You have several options:
- <itemizedlist>
- <listitem>
- Using as a <link linkend="thread.build.precompiled">precompiled</link> library, possibly
- with auto-linking, or for use from within an IDE.
- </listitem>
- <listitem>
- Use from a <link linkend="thread.build.bjam">&Boost.Build;</link> project.
- </listitem>
- <listitem>
- Using in <link linkend="thread.build.source">source</link> form.
- </listitem>
- </itemizedlist>
- </para>
- <section id="thread.build.precompiled">
- <title>Precompiled</title>
- <para>
- Using the &Boost.Thread; library in precompiled form is the way to go if you want to
- install the library to a standard place, from where your linker is able to resolve code
- in binary form. You also will want this option if compile time is a concern. Multiple
- variants are available, for different toolsets and build variants (debug/release).
- The library files are named <emphasis>{lead}boost_thread{build-specific-tags}.{extension}</emphasis>,
- where the build-specific-tags indicate the toolset used to build the library, whether it's
- a debug or release build, what version of &Boost; was used, etc.; and the lead and extension
- are the appropriate extensions for a dynamic link library or static library for the platform
- for which &Boost.Thread; is being built.
- For instance, a debug build of the dynamic library built for Win32 with VC++ 7.1 using Boost 1.34 would
- be named <emphasis>boost_thread-vc71-mt-gd-1_34.dll</emphasis>.
- More information on this should be available from the &Boost.Build; documentation.
- </para>
- <para>
- Building should be possible with the default configuration. If you are running into problems,
- it might be wise to adjust your local settings of &Boost.Build; though. Typically you will
- need to get your user-config.jam file to reflect your environment, i.e. used toolsets. Please
- refer to the &Boost.Build; documentation to learn how to do this.
- </para>
- <para>
- To create the libraries you need to open a command shell and change to the
- <emphasis>boost_root</emphasis> directory. From there you give the command
- <programlisting>bjam --toolset=<emphasis>mytoolset</emphasis> stage --with-thread</programlisting>
- Replace <emphasis>mytoolset</emphasis> with the name of your toolset, e.g. msvc-7.1 .
- This will compile and put the libraries into the <emphasis>stage</emphasis> directory which is just below the
- <emphasis>boost_root</emphasis> directory. &Boost.Build; by default will generate static and
- dynamic variants for debug and release.
- </para>
- <note>
- Invoking the above command without the --with-thread switch &Boost.Build; will build all of
- the Boost distribution, including &Boost.Thread;.
- </note>
- <para>
- The next step is to copy your libraries to a place where your linker is able to pick them up.
- It is also quite possible to leave them in the stage directory and instruct your IDE to take them
- from there.
- </para>
- <para>
- In your IDE you then need to add <emphasis>boost_root</emphasis>/boost to the paths where the compiler
- expects to find files to be included. For toolsets that support <emphasis>auto-linking</emphasis>
- it is not necessary to explicitly specify the name of the library to link against, it is sufficient
- to specify the path of the stage directory. Typically this is true on Windows. For gcc you need
- to specify the exact library name (including all the tags). Please don't forget that threading
- support must be turned on to be able to use the library. You should be able now to build your
- project from the IDE.
- </para>
- </section>
- <section id="thread.build.bjam">
- <title>&Boost.Build; Project</title>
- <para>
- If you have decided to use &Boost.Build; as a build environment for your application, you simply
- need to add a single line to your <emphasis>Jamroot</emphasis> file:
- <programlisting>use-project /boost : {path-to-boost-root} ;</programlisting>
- where <emphasis>{path-to-boost-root}</emphasis> needs to be replaced with the location of
- your copy of the boost tree.
- Later when you specify a component that needs to link against &Boost.Thread; you specify this
- as e.g.:
- <programlisting>exe myapp : {myappsources} /boost//thread ;</programlisting>
- and you are done.
- </para>
- </section>
- <section id="thread.build.source">
- <title>Source Form</title>
- <para>
- Of course it is also possible to use the &Boost.Thread; library in source form.
- First you need to specify the <emphasis>boost_root</emphasis>/boost directory as
- a path where your compiler expects to find files to include. It is not easy
- to isolate the &Boost.Thread; include files from the rest of the boost
- library though. You would also need to isolate every include file that the thread
- library depends on. Next you need to copy the files from
- <emphasis>boost_root</emphasis>/libs/thread/src to your project and instruct your
- build system to compile them together with your project. Please look into the
- <emphasis>Jamfile</emphasis> in <emphasis>boost_root</emphasis>/libs/thread/build
- to find out which compiler options and defines you will need to get a clean compile.
- Using the boost library in this way is the least recommended, and should only be
- considered if avoiding dependency on &Boost.Build; is a requirement. Even if so
- it might be a better option to use the library in it's precompiled form.
- Precompiled downloads are available from the boost consulting web site, or as
- part of most linux distributions.
- </para>
- </section>
- </section>
- <section id="thread.build.testing">
- <title>Testing the &Boost.Thread; Libraries</title>
- <para>
- To test the &Boost.Thread; libraries using &Boost.Build;, simply change to the
- directory <emphasis>boost_root</emphasis>/libs/thread/test and execute the command:
- <programlisting>bjam --toolset=<emphasis>mytoolset</emphasis> test</programlisting>
- </para>
- </section>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/concepts.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/concepts.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,2305 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.concepts" last-revision="$Date$">
- <title>Concepts</title>
-
- <para>&Boost.Thread; currently supports two types of mutex concepts:
- ordinary <link linkend="thread.concepts.mutexes">Mutexes</link>,
- which allow only one thread at a time to access a resource, and
- <link linkend="thread.concepts.read-write-mutexes">Read/Write Mutexes</link>,
- which allow only one thread at a time to access a resource when it is
- being modified (the "Write" part of Read/Write), but allows multiple threads
- to access a resource when it is only being referenced (the "Read" part of
- Read/Write).</para>
- <note> Unfortunately it turned out that the current implementation of Read/Write Mutex has
- some serious problems. So it was decided not to put this implementation into
- release grade code. Also discussions on the mailing list led to the
- conclusion that the current concepts need to be rethought. In particular
- the schedulings <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">
- Inter-Class Scheduling Policies</link> are deemed unnecessary.
- There seems to be common belief that a fair scheme suffices.
- The following documentation has been retained however, to give
- readers of this document the opportunity to study the original design.
- </note>
-
- <section id="thread.concepts.mutexes">
- <title>Mutexes</title>
-
- <note>Certain changes to the mutexes and lock concepts are
- currently under discussion. In particular, the combination of
- the multiple lock concepts into a single lock concept
- is likely, and the combination of the multiple mutex
- concepts into a single mutex concept is also possible.</note>
-
- <para>A mutex (short for mutual-exclusion) object is used to serialize
- access to a resource shared between multiple threads. The
- <link linkend="thread.concepts.Mutex">Mutex</link> concept, with
- <link linkend="thread.concepts.TryMutex">TryMutex</link> and
- <link linkend="thread.concepts.TimedMutex">TimedMutex</link> refinements,
- formalize the requirements. A model that implements Mutex and its
- refinements has two states: <emphasis role="bold">locked</emphasis> and
- <emphasis role="bold">unlocked</emphasis>. Before using a shared resource, a
- thread locks a &Boost.Thread; mutex object
- (an object whose type is a model of
- <link linkend="thread.concepts.Mutex">Mutex</link> or one of it's
- refinements), ensuring
- <link linkend="thread.glossary.thread-safe">thread-safe</link> access to
- the shared resource. When use of the shared resource is complete, the thread
- unlocks the mutex object, allowing another thread to acquire the lock and
- use the shared resource.</para>
- <para>Traditional C thread APIs, like POSIX threads or the Windows thread
- APIs, expose functions to lock and unlock a mutex object. This is dangerous
- since it's easy to forget to unlock a locked mutex. When the flow of control
- is complex, with multiple return points, the likelihood of forgetting to
- unlock a mutex object becomes even greater. When exceptions are thrown,
- it becomes nearly impossible to ensure that the mutex object is unlocked
- properly when using these traditional API's. The result is
- <link linkend="thread.glossary.deadlock">deadlock</link>.</para>
- <para>Many C++ threading libraries use a pattern known as <emphasis>Scoped
- Locking</emphasis> &cite.SchmidtStalRohnertBuschmann; to free the programmer from
- the need to explicitly lock and unlock mutex objects. With this pattern, a
- <link linkend="thread.concepts.lock-concepts">Lock</link> concept is employed where
- the lock object's constructor locks the associated mutex object and the
- destructor automatically does the unlocking. The
- &Boost.Thread; library takes this pattern to
- the extreme in that Lock concepts are the only way to lock and unlock a
- mutex object: lock and unlock functions are not exposed by any
- &Boost.Thread; mutex objects. This helps to
- ensure safe usage patterns, especially when code throws exceptions.</para>
-
- <section id="thread.concepts.locking-strategies">
- <title>Locking Strategies</title>
-
- <para>Every mutex object follows one of several locking strategies. These
- strategies define the semantics for the locking operation when the calling
- thread already owns a lock on the mutex object.</para>
-
- <section id="thread.concepts.recursive-locking-strategy">
- <title>Recursive Locking Strategy</title>
-
- <para>With a recursive locking strategy, when a thread attempts to acquire
- a lock on the mutex object for which it already owns a lock, the operation
- is successful. Note the distinction between a thread, which may have
- multiple locks outstanding on a recursive mutex object, and a lock object,
- which even for a recursive mutex object cannot have any of its lock
- functions called multiple times without first calling unlock.</para>
-
- <para>Internally a lock count is maintained and the owning thread must
- unlock the mutex object the same number of times that it locked it before
- the mutex object's state returns to unlocked. Since mutex objects in
- &Boost.Thread; expose locking
- functionality only through lock concepts, a thread will always unlock a
- mutex object the same number of times that it locked it. This helps to
- eliminate a whole set of errors typically found in traditional C style
- thread APIs.</para>
-
- <para>Classes <classname>boost::recursive_mutex</classname>,
- <classname>boost::recursive_try_mutex</classname> and
- <classname>boost::recursive_timed_mutex</classname> use this locking
- strategy.</para>
- </section>
-
- <section id="thread.concepts.checked-locking-strategy">
- <title>Checked Locking Strategy</title>
-
- <para>With a checked locking strategy, when a thread attempts to acquire a
- lock on the mutex object for which the thread already owns a lock, the
- operation will fail with some sort of error indication. Further, attempts
- by a thread to unlock a mutex object that was not locked by the thread
- will also return some sort of error indication. In
- &Boost.Thread;, an exception of type
- <classname>boost::lock_error</classname>
- would be thrown in these cases.</para>
-
- <para>&Boost.Thread; does not currently
- provide any mutex objects that use this strategy.</para>
- </section>
-
- <section id="thread.concepts.unchecked-locking-strategy">
- <title>Unchecked Locking Strategy</title>
-
- <para>With an unchecked locking strategy, when a thread attempts to acquire
- a lock on a mutex object for which the thread already owns a lock the
- operation will
- <link linkend="thread.glossary.deadlock">deadlock</link>. In general
- this locking strategy is less safe than a checked or recursive strategy,
- but it's also a faster strategy and so is employed by many libraries.</para>
-
- <para>&Boost.Thread; does not currently
- provide any mutex objects that use this strategy.</para>
- </section>
-
- <section id="thread.concepts.unspecified-locking-strategy">
- <title>Unspecified Locking Strategy</title>
-
- <para>With an unspecified locking strategy, when a thread attempts to
- acquire a lock on a mutex object for which the thread already owns a lock
- the operation results in
- <link linkend="thread.glossary.undefined-behavior">undefined behavior</link>.
- </para>
-
- <para>In general a mutex object with an unspecified locking strategy is
- unsafe, and it requires programmer discipline to use the mutex object
- properly. However, this strategy allows an implementation to be as fast as
- possible with no restrictions on its implementation. This is especially
- true for portable implementations that wrap the native threading support
- of a platform. For this reason, the classes
- <classname>boost::mutex</classname>,
- <classname>boost::try_mutex</classname> and
- <classname>boost::timed_mutex</classname> use this locking strategy
- despite the lack of safety.</para>
- </section>
- </section>
-
- <section id="thread.concepts.sheduling-policies">
- <title>Scheduling Policies</title>
-
- <para>Every mutex object follows one of several scheduling policies. These
- policies define the semantics when the mutex object is unlocked and there is
- more than one thread waiting to acquire a lock. In other words, the policy
- defines which waiting thread shall acquire the lock.</para>
-
- <section id="thread.concepts.FIFO-scheduling-policy">
- <title>FIFO Scheduling Policy</title>
-
- <para>With a FIFO ("First In First Out") scheduling policy, threads waiting
- for the lock will acquire it in a first-come-first-served order.
- This can help prevent a high priority thread from starving lower priority
- threads that are also waiting on the mutex object's lock.</para>
- </section>
-
- <section id="thread.concepts.priority-driven-scheduling-policy">
- <title>Priority Driven Policy</title>
-
- <para>With a Priority Driven scheduling policy, the thread with the
- highest priority acquires the lock. Note that this means that low-priority
- threads may never acquire the lock if the mutex object has high contention
- and there is always at least one high-priority thread waiting. This is
- known as thread starvation. When multiple threads of the same priority are
- waiting on the mutex object's lock one of the other scheduling priorities
- will determine which thread shall acquire the lock.</para>
- </section>
-
- <section id="thread.concepts.unspecified-scheduling-policy">
- <title>Unspecified Policy</title>
-
- <para>The mutex object does not specify a scheduling policy. In order to
- ensure portability, all &Boost.Thread;
- mutex objects use an unspecified scheduling policy.</para>
- </section>
- </section>
-
- <section id="thread.concepts.mutex-concepts">
- <title>Mutex Concepts</title>
-
- <section id="thread.concepts.Mutex">
- <title>Mutex Concept</title>
-
- <para>A Mutex object has two states: locked and unlocked. Mutex object
- state can only be determined by a lock object meeting the
- appropriate lock concept requirements
- and constructed for the Mutex object.</para>
-
- <para>A Mutex is
- <ulink url="../../libs/utility/utility.htm#Class%20noncopyable">
- NonCopyable</ulink>.</para>
- <para>For a Mutex type <code>M</code>
- and an object <code>m</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>Mutex Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>M m;</entry>
- <entry><para>Constructs a mutex object m.</para>
- <para>Postcondition: m is unlocked.</para></entry>
- </row>
- <row>
- <entry>(&m)->~M();</entry>
- <entry>Precondition: m is unlocked. Destroys a mutex object
- m.</entry>
- </row>
- <row>
- <entry>M::scoped_lock</entry>
- <entry>A model of
- <link linkend="thread.concepts.ScopedLock">ScopedLock</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.TryMutex">
- <title>TryMutex Concept</title>
-
- <para>A TryMutex is a refinement of
- <link linkend="thread.concepts.Mutex">Mutex</link>.
- For a TryMutex type <code>M</code>
- and an object <code>m</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>TryMutex Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>M::scoped_try_lock</entry>
- <entry>A model of
- <link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.TimedMutex">
- <title>TimedMutex Concept</title>
-
- <para>A TimedMutex is a refinement of
- <link linkend="thread.concepts.TryMutex">TryMutex</link>.
- For a TimedMutex type <code>M</code>
- and an object <code>m</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>TimedMutex Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>M::scoped_timed_lock</entry>
- <entry>A model of
- <link
- linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- </section>
-
- <section id="thread.concepts.mutex-models">
- <title>Mutex Models</title>
-
- <para>&Boost.Thread; currently supplies six models of
- <link linkend="thread.concepts.Mutex">Mutex</link>
- and its refinements.</para>
-
- <table>
- <title>Mutex Models</title>
-
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Concept</entry>
- <entry>Refines</entry>
- <entry>Models</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><link linkend="thread.concepts.Mutex">Mutex</link></entry>
- <entry></entry>
- <entry>
- <para><classname>boost::mutex</classname></para>
- <para><classname>boost::recursive_mutex</classname></para>
- </entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.TryMutex">TryMutex</link></entry>
- <entry><link linkend="thread.concepts.Mutex">Mutex</link></entry>
- <entry>
- <para><classname>boost::try_mutex</classname></para>
- <para><classname>boost::recursive_try_mutex</classname></para>
- </entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.TimedMutex">TimedMutex</link></entry>
- <entry><link linkend="thread.concepts.TryMutex">TryMutex</link></entry>
- <entry>
- <para><classname>boost::timed_mutex</classname></para>
- <para><classname>boost::recursive_timed_mutex</classname></para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.lock-concepts">
- <title>Lock Concepts</title>
-
- <para>A lock object provides a safe means for locking and unlocking a mutex
- object (an object whose type is a model of <link
- linkend="thread.concepts.Mutex">Mutex</link> or one of its refinements). In
- other words they are an implementation of the <emphasis>Scoped
- Locking</emphasis> &cite.SchmidtStalRohnertBuschmann; pattern. The <link
- linkend="thread.concepts.ScopedLock">ScopedLock</link>,
- <link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link>, and
- <link linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link>
- concepts formalize the requirements.</para>
- <para>Lock objects are constructed with a reference to a mutex object and
- typically acquire ownership of the mutex object by setting its state to
- locked. They also ensure ownership is relinquished in the destructor. Lock
- objects also expose functions to query the lock status and to manually lock
- and unlock the mutex object.</para>
- <para>Lock objects are meant to be short lived, expected to be used at block
- scope only. The lock objects are not <link
- linkend="thread.glossary.thread-safe">thread-safe</link>. Lock objects must
- maintain state to indicate whether or not they've been locked and this state
- is not protected by any synchronization concepts. For this reason a lock
- object should never be shared between multiple threads.</para>
-
- <section id="thread.concepts.Lock">
- <title>Lock Concept</title>
-
- <para>For a Lock type <code>L</code>
- and an object <code>lk</code>
- and const object <code>clk</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>Lock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>(&lk)->~L();</code></entry>
- <entry><code>if (locked()) unlock();</code></entry>
- </row>
- <row>
- <entry><code>(&clk)->operator const void*()</code></entry>
- <entry>Returns type void*, non-zero if the associated mutex
- object has been locked by <code>clk</code>, otherwise 0.</entry>
- </row>
- <row>
- <entry><code>clk.locked()</code></entry>
- <entry>Returns a <code>bool</code>, <code>(&clk)->operator
- const void*() != 0</code></entry>
- </row>
- <row>
- <entry><code>lk.lock()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>locked()</code>.</para>
-
- <para>If the associated mutex object is
- already locked by some other thread, places the current thread in the
- <link linkend="thread.glossary.thread-state">Blocked</link> state until
- the associated mutex is unlocked, after which the current thread
- is placed in the <link
- linkend="thread.glossary.thread-state">Ready</link> state,
- eventually to be returned to the <link
- linkend="thread.glossary.thread-state">Running</link> state. If
- the associated mutex object is already locked by the same thread
- the behavior is dependent on the <link
- linkend="thread.concepts.locking-strategies">locking
- strategy</link> of the associated mutex object.</para>
-
- <para>Postcondition: <code>locked() == true</code></para>
- </entry>
- </row>
- <row>
- <entry><code>lk.unlock()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>!locked()</code>.</para>
-
- <para>Unlocks the associated mutex.</para>
-
- <para>Postcondition: <code>!locked()</code></para></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.ScopedLock">
- <title>ScopedLock Concept</title>
-
- <para>A ScopedLock is a refinement of <link
- linkend="thread.concepts.Lock">Lock</link>.
- For a ScopedLock type <code>L</code>
- and an object <code>lk</code> of that type,
- and an object <code>m</code> of a type meeting the
- <link linkend="thread.concepts.Mutex">Mutex</link> requirements,
- and an object <code>b</code> of type <code>bool</code>,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>ScopedLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>L lk(m);</code></entry>
- <entry>Constructs an object <code>lk</code>, and associates mutex
- object <code>m</code> with it, then calls
- <code>lock()</code></entry>
- </row>
- <row>
- <entry><code>L lk(m,b);</code></entry>
- <entry>Constructs an object <code>lk</code>, and associates mutex
- object <code>m</code> with it, then if <code>b</code>, calls
- <code>lock()</code></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.TryLock">
- <title>TryLock Concept</title>
-
- <para>A TryLock is a refinement of <link
- linkend="thread.concepts.Lock">Lock</link>.
- For a TryLock type <code>L</code>
- and an object <code>lk</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>TryLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>lk.try_lock()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if locked().</para>
-
- <para>Makes a
- non-blocking attempt to lock the associated mutex object,
- returning <code>true</code> if the lock attempt is successful,
- otherwise <code>false</code>. If the associated mutex object is
- already locked by the same thread the behavior is dependent on the
- <link linkend="thread.concepts.locking-strategies">locking
- strategy</link> of the associated mutex object.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.ScopedTryLock">
- <title>ScopedTryLock Concept</title>
-
- <para>A ScopedTryLock is a refinement of <link
- linkend="thread.concepts.TryLock">TryLock</link>.
- For a ScopedTryLock type <code>L</code>
- and an object <code>lk</code> of that type,
- and an object <code>m</code> of a type meeting the
- <link linkend="thread.concepts.TryMutex">TryMutex</link> requirements,
- and an object <code>b</code> of type <code>bool</code>,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>ScopedTryLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>L lk(m);</code></entry>
- <entry>Constructs an object <code>lk</code>, and associates mutex
- object <code>m</code> with it, then calls
- <code>try_lock()</code></entry>
- </row>
- <row>
- <entry><code>L lk(m,b);</code></entry>
- <entry>Constructs an object <code>lk</code>, and associates mutex
- object <code>m</code> with it, then if <code>b</code>, calls
- <code>lock()</code></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.TimedLock">
- <title>TimedLock Concept</title>
-
- <para>A TimedLock is a refinement of <link
- linkend="thread.concepts.TryLock">TryLock</link>.
- For a TimedLock type <code>L</code>
- and an object <code>lk</code> of that type,
- and an object <code>t</code> of type <classname>boost::xtime</classname>,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>TimedLock Expressions</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>lk.timed_lock(t)</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if locked().</para>
-
- <para>Makes a blocking attempt
- to lock the associated mutex object, and returns <code>true</code>
- if successful within the specified time <code>t</code>, otherwise
- <code>false</code>. If the associated mutex object is already
- locked by the same thread the behavior is dependent on the <link
- linkend="thread.concepts.locking-strategies">locking
- strategy</link> of the associated mutex object.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.ScopedTimedLock">
- <title>ScopedTimedLock Concept</title>
-
- <para>A ScopedTimedLock is a refinement of <link
- linkend="thread.concepts.TimedLock">TimedLock</link>.
- For a ScopedTimedLock type <code>L</code>
- and an object <code>lk</code> of that type,
- and an object <code>m</code> of a type meeting the
- <link linkend="thread.concepts.TimedMutex">TimedMutex</link> requirements,
- and an object <code>b</code> of type <code>bool</code>,
- and an object <code>t</code> of type <classname>boost::xtime</classname>,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>ScopedTimedLock Expressions</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>L lk(m,t);</code></entry>
- <entry>Constructs an object <code>lk</code>, and associates mutex
- object <code>m</code> with it, then calls
- <code>timed_lock(t)</code></entry>
- </row>
- <row>
- <entry><code>L lk(m,b);</code></entry>
- <entry>Constructs an object <code>lk</code>, and associates mutex
- object <code>m</code> with it, then if <code>b</code>, calls
- <code>lock()</code></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- </section>
-
- <section id="thread.concepts.lock-models">
- <title>Lock Models</title>
-
- <para>&Boost.Thread; currently supplies twelve models of
- <link linkend="thread.concepts.Lock">Lock</link>
- and its refinements.</para>
-
- <table>
- <title>Lock Models</title>
-
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Concept</entry>
- <entry>Refines</entry>
- <entry>Models</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><link linkend="thread.concepts.Lock">Lock</link></entry>
- <entry></entry>
- <entry></entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- <entry><link linkend="thread.concepts.Lock">Lock</link></entry>
- <entry>
- <para><classname>boost::mutex::scoped_lock</classname></para>
- <para><classname>boost::recursive_mutex::scoped_lock</classname></para>
-
- <para><classname>boost::try_mutex::scoped_lock</classname></para>
- <para><classname>boost::recursive_try_mutex::scoped_lock</classname></para>
-
- <para><classname>boost::timed_mutex::scoped_lock</classname></para>
- <para><classname>boost::recursive_timed_mutex::scoped_lock</classname></para>
- </entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.TryLock">TryLock</link></entry>
- <entry><link linkend="thread.concepts.Lock">Lock</link></entry>
- <entry></entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- <entry><link linkend="thread.concepts.TryLock">TryLock</link></entry>
- <entry>
- <para><classname>boost::try_mutex::scoped_try_lock</classname></para>
- <para><classname>boost::recursive_try_mutex::scoped_try_lock</classname></para>
-
- <para><classname>boost::timed_mutex::scoped_try_lock</classname></para>
- <para><classname>boost::recursive_timed_mutex::scoped_try_lock</classname></para>
- </entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.TimedLock">TimedLock</link></entry>
- <entry><link linkend="thread.concepts.TryLock">TryLock</link></entry>
- <entry></entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link></entry>
- <entry><link linkend="thread.concepts.TimedLock">TimedLock</link></entry>
- <entry>
- <para><classname>boost::timed_mutex::scoped_timed_lock</classname></para>
- <para><classname>boost::recursive_timed_mutex::scoped_timed_lock</classname></para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- </section>
-
- <section id="thread.concepts.read-write-mutexes">
- <title>Read/Write Mutexes</title>
- <note> Unfortunately it turned out that the current implementation has
- some serious problems. So it was decided not to put this implementation into
- release grade code. Also discussions on the mailing list led to the
- conclusion that the current concepts need to be rethought. In particular
- the schedulings <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">
- Inter-Class Scheduling Policies</link> are deemed unnecessary.
- There seems to be common belief that a fair scheme suffices.
- The following documentation has been retained however, to give
- readers of this document the opportunity to study the original design.
- </note>
-
- <para>A read/write mutex (short for reader/writer mutual-exclusion) object
- is used to serialize access to a resource shared between multiple
- threads, where multiple "readers" can share simultaneous access, but
- "writers" require exclusive access. The
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link> concept, with
- <link linkend="thread.concepts.TryReadWriteMutex">TryReadWriteMutex</link> and
- <link linkend="thread.concepts.TimedReadWriteMutex"> TimedReadWriteMutex</link>
- refinements formalize the requirements. A model that implements
- ReadWriteMutex and its refinements has three states:
- <emphasis role="bold">read-locked</emphasis>,
- <emphasis role="bold">write-locked</emphasis>, and
- <emphasis role="bold">unlocked</emphasis>.
- Before reading from a shared resource, a thread
- <emphasis role="bold">read-locks</emphasis>
- a &Boost.Thread; read/write mutex object
- (an object whose type is a model of
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link>
- or one of it's refinements), ensuring
- <link linkend="thread.glossary.thread-safe">thread-safe</link>
- access for reading from the shared resource. Before writing
- to a shared resource, a thread
- <emphasis role="bold">write-locks</emphasis> a &Boost.Thread;
- read/write mutex object
- (an object whose type is a model of
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link>
- or one of it's refinements), ensuring
- <link linkend="thread.glossary.thread-safe">thread-safe</link>
- access for altering the shared resource. When use of the shared
- resource is complete, the thread unlocks the mutex object,
- allowing another thread to acquire the lock and use the shared
- resource.</para>
-
- <para>Traditional C thread APIs that provide read/write mutex
- primitives (like POSIX threads) expose functions to lock and unlock a
- mutex object. This is dangerous since it's easy to forget to unlock a
- locked mutex. When the flow of control is complex, with multiple
- return points, the likelihood of forgetting to unlock a mutex object
- becomes even greater. When exceptions are thrown, it becomes nearly
- impossible to ensure that the mutex object is unlocked
- properly when using these traditional API's. The result is
- <link linkend="thread.glossary.deadlock">deadlock</link>.</para>
-
- <para>Many C++ threading libraries use a pattern known as <emphasis>Scoped
- Locking</emphasis> &cite.SchmidtStalRohnertBuschmann; to free the
- programmer from the need to explicitly lock and unlock
- read/write mutex objects. With this pattern, a
- <link linkend="thread.concepts.read-write-lock-concepts">Read/Write Lock</link>
- concept is employed where the lock object's constructor locks
- the associated read/write mutex object
- and the destructor automatically does the unlocking. The
- &Boost.Thread; library takes this pattern to
- the extreme in that
- <link linkend="thread.concepts.read-write-lock-concepts">Read/Write Lock</link>
- concepts are the only way to lock and unlock a read/write mutex
- object: lock and unlock functions are not exposed by any
- &Boost.Thread; read/write mutex objects. This helps to
- ensure safe usage patterns, especially when code throws exceptions.</para>
-
- <section id="thread.concepts.read-write-locking-strategies">
- <title>Locking Strategies</title>
-
- <para>Every read/write mutex object follows one of several locking
- strategies. These strategies define the semantics for the locking
- operation when the calling thread already owns a lock on the
- read/write mutex object.</para>
-
- <section id="thread.concepts.read-write-locking-strategies.recursive">
- <title>Recursive Locking Strategy</title>
-
- <para>With a recursive locking strategy, when a thread attempts
- to acquire a lock on a read/write mutex object
- for which it already owns a lock, the operation is successful,
- except in the case where a thread holding a read-lock
- attempts to obtain a write lock, in which case a
- <classname>boost::lock_error</classname> exception will
- be thrown. Note the distinction between a thread, which may have
- multiple locks outstanding on a recursive read/write mutex object,
- and a lock object, which even for a recursive read/write mutex
- object cannot have any of its lock functions called multiple
- times without first calling unlock.</para>
-
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Lock Type Held</entry>
- <entry>Lock Type Requested</entry>
- <entry>Action</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>read-lock</entry>
- <entry>read-lock</entry>
- <entry>Grant the read-lock immediately</entry>
- </row>
- <row>
- <entry>read-lock</entry>
- <entry>write-lock</entry>
- <entry>If this thread is the only holder of the read-lock,
- grants the write lock immediately. Otherwise throws a
- <classname>boost::lock_error</classname> exception.</entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>read-lock</entry>
- <entry>Grants the (additional) read-lock immediately.</entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>write-lock</entry>
- <entry> Grant the write-lock immediately</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Internally a lock count is maintained and the owning
- thread must unlock the mutex object the same number of times
- that it locked it before the mutex object's state returns
- to unlocked. Since mutex objects in &Boost.Thread; expose
- locking functionality only through lock concepts, a thread
- will always unlock a mutex object the same number of times
- that it locked it. This helps to eliminate a whole set of
- errors typically found in traditional C style thread APIs.
- </para>
-
- <para>&Boost.Thread; does not currently provide any read/write mutex objects
- that use this strategy. A successful implementation of this locking strategy
- may require
- <link linkend="thread.concepts.read-write-locking-strategies.thread-identification">thread identification</link>.
- </para>
- </section>
-
- <section id="thread.concepts.read-write-locking-strategies.checked">
- <title>Checked Locking Strategy</title>
-
- <para>With a checked locking strategy, when a thread attempts
- to acquire a lock on the mutex object for which the thread
- already owns a lock, the operation will fail with some sort of
- error indication, except in the case of multiple read-lock
- acquisition which is a normal operation for ANY ReadWriteMutex.
- Further, attempts by a thread to unlock a mutex that was not
- locked by the thread will also return some sort of error
- indication. In &Boost.Thread;, an exception of type
- <classname>boost::lock_error</classname> would be thrown in
- these cases.</para>
-
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Lock Type Held</entry>
- <entry>Lock Type Requested</entry>
- <entry>Action</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>read-lock</entry>
- <entry>read-lock</entry>
- <entry>Grant the read-lock immediately</entry>
- </row>
- <row>
- <entry>read-lock</entry>
- <entry>write-lock</entry>
- <entry>Throw <classname>boost::lock_error</classname></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>read-lock</entry>
- <entry>Throw <classname>boost::lock_error</classname></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>write-lock</entry>
- <entry> Throw <classname>boost::lock_error</classname></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>&Boost.Thread; does not currently provide any read/write mutex objects
- that use this strategy. A successful implementation of this locking strategy
- may require
- <link linkend="thread.concepts.read-write-locking-strategies.thread-identification">thread identification</link>.
- </para>
- </section>
-
- <section id="thread.concepts.read-write-locking-strategies.unchecked">
- <title>Unchecked Locking Strategy</title>
-
- <para>With an unchecked locking strategy, when a thread
- attempts to acquire a lock on the read/write mutex object
- for which the thread already owns a lock, the operation
- will <link linkend="thread.glossary.deadlock">deadlock</link>.
- In general this locking strategy is less safe than a checked
- or recursive strategy, but it can be a faster strategy and so
- is employed by many libraries.</para>
-
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Lock Type Held</entry>
- <entry>Lock Type Requested</entry>
- <entry>Action</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>read-lock</entry>
- <entry>read-lock</entry>
- <entry>Grant the read-lock immediately</entry>
- </row>
- <row>
- <entry>read-lock</entry>
- <entry>write-lock</entry>
- <entry><link linkend="thread.glossary.deadlock">Deadlock</link></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>read-lock</entry>
- <entry><link linkend="thread.glossary.deadlock">Deadlock</link></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>write-lock</entry>
- <entry><link linkend="thread.glossary.deadlock">Deadlock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>&Boost.Thread; does not currently provide any mutex
- objects that use this strategy. For ReadWriteMutexes on
- platforms that contain natively recursive synchronization
- primitives, implementing a guaranteed-deadlock can actually
- involve extra work, and would likely require
- <link linkend="thread.concepts.read-write-locking-strategies.thread-identification">thread identification</link>.
- </para>
- </section>
-
- <section id="thread.concepts.read-write-locking-strategies.unspecified">
- <title>Unspecified Locking Strategy</title>
-
- <para>With an unspecified locking strategy, when a thread
- attempts to acquire a lock on a read/write mutex object for
- which the thread already owns a lock, the operation results
- in <link linkend="thread.glossary.undefined-behavior">undefined behavior</link>.
- When a read/write mutex object has an unspecified locking
- strategy the programmer must assume that the read/write mutex
- object instead uses an unchecked strategy as the worse case,
- although some platforms may exhibit a mix of unchecked and
- recursive behavior.</para>
-
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Lock Type Held</entry>
- <entry>Lock Type Requested</entry>
- <entry>Action</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>read-lock</entry>
- <entry>read-lock</entry>
- <entry>Grant the read-lock immediately</entry>
- </row>
- <row>
- <entry>read-lock</entry>
- <entry>write-lock</entry>
- <entry>
- <link linkend="thread.glossary.undefined-behavior">Undefined</link>, but generally <link linkend="thread.glossary.deadlock">deadlock</link>
- </entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>read-lock</entry>
- <entry><link linkend="thread.glossary.undefined-behavior">Undefined</link>, but generally <link linkend="thread.glossary.deadlock">deadlock</link></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>write-lock</entry>
- <entry><link linkend="thread.glossary.undefined-behavior">Undefined</link>, but generally <link linkend="thread.glossary.deadlock">deadlock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>In general a read/write mutex object with an unspecified
- locking strategy is unsafe, and it requires programmer discipline
- to use the read/write mutex object properly. However, this strategy
- allows an implementation to be as fast as possible with no restrictions
- on its implementation. This is especially true for portable implementations
- that wrap the native threading support of a platform. For this reason, the
- classes
- <classname>read_write_mutex</classname>,
- <classname>try_read_write_mutex</classname>, and
- <classname>timed_read_write_mutex</classname>
- use this locking strategy despite the lack of safety.</para>
- </section>
-
- <section id="thread.concepts.read-write-locking-strategies.thread-identification">
- <title>Thread Identification</title>
-
- <para>ReadWriteMutexes can support specific Locking Strategies
- (recursive and checked) which help to detect and protect against
- self-deadlock. Self-deadlock can occur when a holder of a locked
- ReadWriteMutex attempts to obtain another lock. Given an
- implemention <emphasis>I</emphasis> which is susceptible to
- self-deadlock but otherwise correct and efficient, a recursive or
- checked implementation <emphasis>Ir</emphasis> or
- <emphasis>Ic</emphasis> can use the same basic implementation,
- but make special checks against self-deadlock by tracking the
- identities of thread(s) currently holding locks. This approach
- makes deadlock detection othrogonal to the basic ReadWriteMutex
- implementaion.</para>
-
- <para>Alternatively, a different basic implementation for
- ReadWriteMutex concepts,
- <emphasis>I'</emphasis> (I-Prime) may exist which uses recursive
- or checked versions of synchronization primitives to produce
- a recursive or checked ReadWriteMutex while still providing
- flexibility in terms of Scheduling Policies. </para>
-
- <para>Please refer to the &Boost.Thread;
- <link linkend="thread.concepts.read-write-mutex-concepts">read/write mutex concept</link>
- documentation for a discussion of locking strategies.
- The read/write mutex supports only the
- <link linkend="thread.concepts.read-write-locking-strategies.unspecified">unspecified</link>
- locking strategy. ReadWriteMutexes are parameterized on a
- Mutex type which they use to control write-locking
- and access to internal state.</para>
- </section>
-
- <section id="thread.concepts.read-write-locking-strategies.promotion">
- <title>Lock Promotion</title>
-
- <para>ReadWriteMutexes can support lock promotion, where a
- mutex which is in the read-locked state transitions to a
- write-locked state without releasing the lock. Lock
- promotion can be tricky to implement; for instance,
- extra care must be taken to ensure that only one thread holding a
- read-lock can block awaiting promotion at any given time. If
- more than one read-lock holder is allowed to enter a blocked
- state while waiting to be promoted, deadlock will result since
- both threads will be waiting for the other to release their read-lock.
- </para>
-
- <para>Currently, &Boost.Thread; supports lock promotion
- through <code>promote()</code>, <code>try_promote()</code>,
- and <code>timed_promote()</code> operations.</para>
- </section>
-
- <section id="thread.concepts.read-write-locking-strategies.demotion">
- <title>Lock Demotion</title>
-
- <para>ReadWriteMutexes can support lock demotion, where a
- mutex which is in the write-locked state transitions to a
- read-locked state without releasing the lock.
- Since by definition only one thread at a time may hold
- a write-lock, the problem with deadlock that can occur
- during lock promotion is not a problem for lock
- demotion.</para>
-
- <para>Currently, &Boost.Thread; supports lock demotion
- through <code>demote()</code>, <code>try_demote()</code>,
- and <code>timed_demote()</code> operations.</para>
- </section>
- </section>
-
- <section id="thread.concepts.read-write-scheduling-policies">
- <title>Scheduling Policies</title>
-
- <para>Every read/write mutex object follows one of several scheduling
- policies. These policies define the semantics when the mutex object
- is unlocked and there is more than one thread waiting to acquire a
- lock. In other words, the policy defines which waiting thread shall
- acquire the lock. For a read/write mutex, it is particularly important
- to define the behavior when threads are requesting both read and
- write access simultaneously. This will be referred to as "inter-class
- scheduling" because it describes the scheduling between two
- classes of threads (those waiting for a read lock and those
- waiting for a write lock).</para>
-
- <para>For some types of inter-class scheduling, an "intra-class"
- scheduling policy can also be defined that will describe the order
- in which waiting threads of the same class (i.e., those
- waiting for the same type of lock) will acquire the thread.
- </para>
-
- <section id="thread.concepts.read-write-scheduling-policies.inter-class">
- <title>Inter-Class Scheduling Policies</title>
-
- <section id="thread.concepts.read-write-scheduling-policies.reader-priority">
- <title>ReaderPriority</title>
-
- <para>With ReaderPriority scheduling, any pending request for
- a read-lock will have priority over a pending request for a
- write-lock, irrespective of the current lock state of the
- read/write mutex, and irrespective of the relative order
- that the pending requests arrive.</para>
-
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Current mutex state</entry>
- <entry>Request Type</entry>
- <entry>Action</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>unlocked</entry>
- <entry>read-lock</entry>
- <entry>Grant the read-lock immediately</entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>read-lock</entry>
- <entry>Grant the additional read-lock immediately.</entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>read-lock</entry>
- <entry>Wait to acquire the lock until the thread
- holding the write-lock releases its lock (or until
- the specified time, if any). A
- read-lock will be granted to all pending readers
- before any other thread can acquire a write-lock.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>unlocked</entry>
- <entry>write-lock</entry>
- <entry>Grant the write-lock immediately, if and
- only if there are no pending read-lock requests.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>write-lock</entry>
- <entry> Wait to acquire the lock until all
- threads holding read-locks release their locks
- <emphasis role="bold">AND</emphasis> no requests
- for read-locks exist. If other write-lock
- requests exist, the lock is granted in accordance
- with the intra-class scheduling policy.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>write-lock</entry>
- <entry>Wait to acquire the lock until the thread
- holding the write-lock releases its lock
- <emphasis role="bold">AND</emphasis> no requests
- for read-locks exist. If other write-lock
- requests exist, the lock is granted in accordance
- with the intra-class scheduling policy.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>promote</entry>
- <entry><para>TODO</para></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>demote</entry>
- <entry><para>TODO</para></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="thread.concepts.read-write-scheduling-policies.writer-priority">
- <title>WriterPriority</title>
-
- <para>With WriterPriority scheduling, any pending request
- for a write-lock will have priority over a pending request
- for a read-lock, irrespective of the current lock state
- of the read/write mutex, and irrespective of the relative
- order that the pending requests arrive.</para>
-
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Current mutex state</entry>
- <entry>Request Type</entry>
- <entry>Action</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>unlocked</entry>
- <entry>read-lock</entry>
- <entry>Grant the read-lock immediately.</entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>read-lock</entry>
- <entry>Grant the additional read-lock immediately,
- <emphasis role="bold">IF</emphasis> no outstanding
- requests for a write-lock exist; otherwise TODO.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>read-lock</entry>
- <entry> Wait to acquire the lock until the
- thread holding the write-lock
- releases its lock. The read lock will be granted
- once no other outstanding write-lock requests
- exist.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>unlocked</entry>
- <entry>write-lock</entry>
- <entry>Grant the write-lock immediately.</entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>write-lock</entry>
- <entry>Wait to acquire the lock until all
- threads holding read-locks release their locks.
- If other write-lock requests exist, the lock
- is granted in accordance with the intra-class
- scheduling policy. This request will be granted
- before any new read-lock requests are granted.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>write-lock</entry>
- <entry>Wait to acquire the lock until the thread
- holding the write-lock releases its lock. If
- other write-lock requests exist, the lock is
- granted in accordance with the intra-class
- scheduling policy. This request will be granted
- before any new read-lock requests are granted.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>promote</entry>
- <entry><para>TODO</para></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>demote</entry>
- <entry><para>TODO</para></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="thread.concepts.read-write-scheduling-policies.alternating-many-reads">
- <title>AlternatingPriority/ManyReads</title>
-
- <para>With AlternatingPriority/ManyReads scheduling, reader
- or writer starvation is avoided by alternatively granting read
- or write access when pending requests exist for both types of
- locks. Outstanding read-lock requests are treated as a group
- when it is the "readers' turn"</para>
-
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Current mutex state</entry>
- <entry>Request Type</entry>
- <entry>Action</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>unlocked</entry>
- <entry>read-lock</entry>
- <entry>Grant the read-lock immediately.</entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>read-lock</entry>
- <entry>Grant the additional read-lock immediately,
- <emphasis role="bold">IF</emphasis> no outstanding
- requests for a write-lock exist. If outstanding
- write-lock requests exist, this lock will not
- be granted until at least one of the
- write-locks is granted and released. If other
- read-lock requests exist, all read-locks will be
- granted as a group.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>read-lock</entry>
- <entry> Wait to acquire the lock until the thread
- holding the write-lock releases its lock. If other
- outstanding write-lock requests exist, they will
- have to wait until all current read-lock requests
- are serviced.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>unlocked</entry>
- <entry>write-lock</entry>
- <entry>Grant the write-lock immediately.</entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>write-lock</entry>
- <entry>
- <para>Wait to acquire the lock until all threads
- holding read-locks release their locks.</para>
-
- <para>If other write-lock requests exist, this
- lock will be granted to one of them in accordance
- with the intra-class scheduling policy.</para>
-
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>write-lock</entry>
- <entry>Wait to acquire the lock until the thread
- holding the write-lock releases its lock. If
- other outstanding read-lock requests exist, this
- lock will not be granted until all of the
- currently waiting read-locks are granted and
- released. If other write-lock requests exist,
- this lock will be granted in accordance with the
- intra-class scheduling policy.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>promote</entry>
- <entry><para>TODO</para></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>demote</entry>
- <entry><para>TODO</para></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="thread.concepts.read-write-scheduling-policies.alternating-single-read">
- <title>AlternatingPriority/SingleRead</title>
-
- <para>With AlternatingPriority/SingleRead scheduling, reader
- or writer starvation is avoided by alternatively granting read
- or write access when pending requests exist for both types of
- locks. Outstanding read-lock requests are services one at a
- time when it is the "readers' turn"</para>
-
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Current mutex state</entry>
- <entry>Request Type</entry>
- <entry>Action</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>unlocked</entry>
- <entry>read-lock</entry>
- <entry>Grant the read-lock immediately.</entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>read-lock</entry>
- <entry>Grant the additional read-lock immediately,
- <emphasis role="bold">IF</emphasis> no outstanding
- requests for a write-lock exist. If outstanding
- write-lock requests exist, this lock will not
- be granted until at least one of the write-locks
- is granted and released.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>read-lock</entry>
- <entry>
- <para>Wait to acquire the lock until the thread
- holding the write-lock releases its lock.</para>
- <para>If other outstanding write-lock requests
- exist, exactly one read-lock request will be
- granted before the next write-lock is granted.
- </para>
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>unlocked</entry>
- <entry>write-lock</entry>
- <entry>Grant the write-lock immediately.</entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>write-lock</entry>
- <entry>
- <para>Wait to acquire the lock until all
- threads holding read-locks release their
- locks.</para>
-
- <para>If other write-lock requests exist,
- this lock will be granted to one of them
- in accordance with the intra-class
- scheduling policy.</para></entry>
-
- <para>TODO: try-lock, timed-lock.</para>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>write-lock</entry>
- <entry>Wait to acquire the lock until the
- thread holding the write-lock releases its
- lock. If other outstanding read-lock requests
- exist, this lock can not be granted until
- exactly one read-lock request is granted and
- released. If other write-lock requests exist,
- this lock will be granted in accordance with
- the intra-class scheduling policy.
- <para>TODO: try-lock, timed-lock.</para>
- </entry>
- </row>
- <row>
- <entry>read-locked</entry>
- <entry>promote</entry>
- <entry><para>TODO</para></entry>
- </row>
- <row>
- <entry>write-locked</entry>
- <entry>demote</entry>
- <entry><para>TODO</para></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- </section>
-
- <section id="thread.concepts.read-write-scheduling-policies.intra-class">
- <title>Intra-Class Scheduling Policies</title>
-
- <para>Please refer to
- <xref linkend="thread.concepts.sheduling-policies" />
- for a discussion of mutex scheduling policies, which are identical to
- read/write mutex intra-class scheduling policies.</para>
-
- <para>For threads waiting to obtain write-locks, the read/write mutex
- supports only the
- <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>
- intra-class scheduling policy. That is, given a set of threads
- waiting for write-locks, the order, relative to one another, in
- which they receive the write-lock is unspecified.</para>
-
- <para>For threads waiting to obtain read-locks, the read/write mutex
- supports only the
- <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>
- intra-class scheduling policy. That is, given a set of threads
- waiting for read-locks, the order, relative to one another, in
- which they receive the read-lock is unspecified.</para>
- </section>
- </section>
-
- <section id="thread.concepts.read-write-mutex-concepts">
- <title>Mutex Concepts</title>
-
- <section id="thread.concepts.ReadWriteMutex">
- <title>ReadWriteMutex Concept</title>
-
- <para>A ReadWriteMutex object has three states: read-locked,
- write-locked, and unlocked. ReadWriteMutex object state can
- only be determined by a lock object meeting the appropriate lock concept
- requirements and constructed for the ReadWriteMutex object.</para>
-
- <para>A ReadWriteMutex is
- <ulink url="../../libs/utility/utility.htm#Class%20noncopyable">NonCopyable</ulink>.
- </para>
-
- <para>For a ReadWriteMutex type <code>M</code>,
- and an object <code>m</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>ReadWriteMutex Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>M m;</code></entry>
- <entry>Constructs a read/write mutex object <code>m</code>.
- Post-condition: <code>m</code> is unlocked.</entry>
- </row>
- <row>
- <entry><code>(&m)->~M();</code></entry>
- <entry>Precondition: <code>m</code> is unlocked.
- Destroys a read/write mutex object <code>m</code>.
- </entry>
- </row>
- <row>
- <entry><code>M::scoped_read_write_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedReadWriteLock">ScopedReadWriteLock</link>
- requirements. </entry>
- </row>
- <row>
- <entry><code>M::scoped_read_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedLock">ScopedLock</link>
- requirements. </entry>
- </row>
- <row>
- <entry><code>M::scoped_write_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedLock">ScopedLock</link>
- requirements. </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.TryReadWriteMutex">
- <title>TryReadWriteMutex Concept</title>
-
- <para>A TryReadWriteMutex is a refinement of
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link>.
- For a TryReadWriteMutex type <code>M</code>
- and an object <code>m</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>TryReadWriteMutex Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>M::scoped_try_read_write_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedTryReadWriteLock">ScopedTryReadWriteLock</link>
- requirements.</entry>
- </row>
- <row>
- <entry><code>M::scoped_try_read_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link>
- requirements.</entry>
- </row>
- <row>
- <entry><code>M::scoped_try_write_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link>
- requirements.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.TimedReadWriteMutex">
- <title>TimedReadWriteMutex Concept</title>
-
- <para>A TimedReadWriteMutex is a refinement of
- <link linkend="thread.concepts.TryReadWriteMutex">TryReadWriteMutex</link>.
- For a TimedReadWriteMutex type <code>M</code>
- and an object <code>m</code> of that type
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>TimedReadWriteMutex Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>M::scoped_timed_read_write_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedTimedReadWriteLock">ScopedTimedReadWriteLock</link>
- requirements.</entry>
- </row>
- <row>
- <entry><code>M::scoped_timed_read_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link>
- requirements.</entry>
- </row>
- <row>
- <entry><code>M::scoped_timed_write_lock</code></entry>
- <entry>A type meeting the
- <link linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link>
- requirements.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- </section>
-
- <section id="thread.concepts.read-write-mutex-models">
- <title>Mutex Models</title>
-
- <para>&Boost.Thread; currently supplies three models of
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link>
- and its refinements.</para>
-
- <table>
- <title>Mutex Models</title>
-
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Concept</entry>
- <entry>Refines</entry>
- <entry>Models</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link></entry>
- <entry></entry>
- <entry><classname>boost::read_write_mutex</classname></entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.TryReadWriteMutex">TryReadWriteMutex</link></entry>
- <entry><link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link></entry>
- <entry><classname>boost::try_read_write_mutex</classname></entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.TimedReadWriteMutex">TimedReadWriteMutex</link></entry>
- <entry><link linkend="thread.concepts.TryReadWriteMutex">TryReadWriteMutex</link></entry>
- <entry><classname>boost::timed_read_write_mutex</classname></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.read-write-lock-concepts">
- <title>Lock Concepts</title>
-
- <para>A read/write lock object provides a safe means for locking
- and unlocking a read/write mutex object (an object whose type is
- a model of
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link>
- or one of its refinements). In other words they are an
- implementation of the <emphasis>Scoped Locking</emphasis>
- &cite.SchmidtStalRohnertBuschmann; pattern. The
- <link linkend="thread.concepts.ScopedReadWriteLock">ScopedReadWriteLock</link>,
- <link linkend="thread.concepts.ScopedTryReadWriteLock">ScopedTryReadWriteLock</link>, and
- <link linkend="thread.concepts.ScopedTimedReadWriteLock">ScopedTimedReadWriteLock</link>
- concepts formalize the requirements.</para>
-
- <para>Read/write lock objects are constructed with a reference to a
- read/write mutex object and typically acquire ownership of the
- read/write mutex object by setting its state to locked. They also
- ensure ownership is relinquished in the destructor. Lock objects
- also expose functions to query the lock status and to manually lock
- and unlock the read/write mutex object.</para>
-
- <para>Read/write lock objects are meant to be short lived, expected
- to be used at block scope only. The read/write lock objects are not
- <link linkend="thread.glossary.thread-safe">thread-safe</link>.
- Read/write lock objects must maintain state to indicate whether or
- not they've been locked and this state is not protected by any
- synchronization concepts. For this reason a read/write lock object
- should never be shared between multiple threads.</para>
-
- <section id="thread.concepts.ReadWriteLock">
- <title>ReadWriteLock Concept</title>
-
- <para>For a read/write lock type <code>L</code>
- and an object <code>lk</code>
- and const object <code>clk</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>ReadWriteLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>(&lk)->~L();</code></entry>
- <entry><code>if (locked()) unlock();</code></entry>
- </row>
- <row>
- <entry><code>(&clk)->operator const void*()</code></entry>
- <entry>Returns type void*, non-zero if the associated read/write
- mutex object has been either read-locked or write-locked by
- <code>clk</code>, otherwise 0.</entry>
- </row>
- <row>
- <entry><code>clk.locked()</code></entry>
- <entry>Returns a <code>bool</code>, <code>(&clk)->operator
- const void*() != 0</code></entry>
- </row>
- <row>
- <entry><code>clk.state()</code></entry>
- <entry>Returns an enumeration constant of type <code>read_write_lock_state</code>:
- <code>read_write_lock_state::read_locked</code> if the associated read/write mutex object has been
- read-locked by <code>clk</code>, <code>read_write_lock_state::write_locked</code> if it
- has been write-locked by <code>clk</code>, and <code>read_write_lock_state::unlocked</code>
- if has not been locked by <code>clk</code>.</entry>
- </row>
- <row>
- <entry><code>clk.read_locked()</code></entry>
- <entry>Returns a <code>bool</code>, <code>(&clk)->state() == read_write_lock_state::read_locked</code>.</entry>
- </row>
- <row>
- <entry><code>clk.write_locked()</code></entry>
- <entry>Returns a <code>bool</code>, <code>(&clk)->state() == read_write_lock_state::write_locked</code>.</entry>
- </row>
- <row>
- <entry><code>lk.read_lock()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>locked()</code>.</para>
-
- <para>If the associated read/write mutex
- object is already read-locked by some other
- thread, the effect depends on the
- <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">inter-class scheduling policy</link>
- of the associated read/write mutex:
- either immediately obtains an additional
- read-lock on the associated read/write
- mutex, or places the current thread in the
- <link linkend="thread.glossary.thread-state">Blocked</link>
- state until the associated read/write mutex
- is unlocked, after which the current thread
- is placed in the
- <link linkend="thread.glossary.thread-state">Ready</link>
- state, eventually to be returned to the
- <link linkend="thread.glossary.thread-state">Running</link>
- state.</para>
-
- <para>If the associated read/write mutex
- object is already write-locked by some other
- thread, places the current thread in the
- <link linkend="thread.glossary.thread-state">Blocked</link>
- state until the associated read/write mutex
- is unlocked, after which the current thread
- is placed in the
- <link linkend="thread.glossary.thread-state">Ready</link>
- state, eventually to be returned to the
- <link linkend="thread.glossary.thread-state">Running</link>
- state.</para>
-
- <para>If the associated read/write mutex
- object is already locked by the same thread
- the behavior is dependent on the
- <link linkend="thread.concepts.read-write-locking-strategies">locking strategy</link>
- of the associated read/write mutex object.
- </para>
-
- <para>Postcondition: <code>state() == read_write_lock_state::read_locked</code></para>
- </entry>
- </row>
- <row>
- <entry><code>lk.write_lock()</code></entry>
-
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>locked()</code>.</para>
-
- <para>If the associated read/write mutex
- object is already locked by some other
- thread, places the current thread in the
- <link linkend="thread.glossary.thread-state">Blocked</link>
- state until the associated read/write mutex
- is unlocked, after which the current thread
- is placed in the
- <link linkend="thread.glossary.thread-state">Ready</link>
- state, eventually to be returned to the
- <link linkend="thread.glossary.thread-state">Running</link>
- state.</para>
-
- <para>If the associated read/write mutex
- object is already locked by the same thread
- the behavior is dependent on the
- <link linkend="thread.concepts.read-write-locking-strategies">locking strategy</link>
- of the associated read/write mutex object.
- </para>
-
- <para>Postcondition: <code>state() == read_write_lock_state::write_locked</code></para>
- </entry>
- </row>
- <row>
- <entry><code>lk.demote()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>state() != read_write_lock_state::write_locked</code>.</para>
-
- <para>Converts the lock held on the associated read/write mutex
- object from a write-lock to a read-lock without releasing
- the lock.</para>
-
- <para>Postcondition: <code>state() == read_write_lock_state::read_locked</code></para>
- </entry>
- </row>
- <row>
- <entry><code>lk.promote()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>state() != read_write_lock_state::read_locked</code>
- or if the lock cannot be promoted because another lock
- on the same mutex is already waiting to be promoted.</para>
-
- <para>Makes a blocking attempt to convert the lock held on the associated
- read/write mutex object from a read-lock to a write-lock without releasing
- the lock.</para>
- </entry>
- </row>
- <row>
- <entry><code>lk.unlock()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>!locked()</code>.</para>
-
- <para>Unlocks the associated read/write mutex.</para>
-
- <para>Postcondition: <code>!locked()</code></para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.ScopedReadWriteLock">
- <title>ScopedReadWriteLock Concept</title>
-
- <para>A ScopedReadWriteLock is a refinement of
- <link linkend="thread.concepts.ReadWriteLock">ReadWriteLock</link>.
- For a ScopedReadWriteLock type <code>L</code>
- and an object <code>lk</code> of that type,
- and an object <code>m</code> of a type meeting the
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link> requirements,
- and an object <code>s</code> of type <code>read_write_lock_state</code>,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>ScopedReadWriteLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>L lk(m,s);</code></entry>
- <entry>Constructs an object <code>lk</code> and associates read/write mutex
- object <code>m</code> with it, then: if <code>s == read_write_lock_state::read_locked</code>, calls
- <code>read_lock()</code>; if <code>s==read_write_lock_state::write_locked</code>,
- calls <code>write_lock()</code>.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.TryReadWriteLock">
- <title>TryReadWriteLock Expressions</title>
-
- <para>A TryReadWriteLock is a refinement of
- <link linkend="thread.concepts.ReadWriteLock">ReadWriteLock</link>.
- For a TryReadWriteLock type <code>L</code>
- and an object <code>lk</code> of that type,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>TryReadWriteLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>lk.try_read_lock()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if locked().</para>
-
- <para>Makes a non-blocking attempt to read-lock the associated read/write
- mutex object, returning <code>true</code> if the attempt is successful,
- otherwise <code>false</code>. If the associated read/write mutex object is
- already locked by the same thread the behavior is dependent on the
- <link linkend="thread.concepts.locking-strategies">locking
- strategy</link> of the associated read/write mutex object.</para>
- </entry>
- </row>
- <row>
- <entry><code>lk.try_write_lock()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if locked().</para>
-
- <para>Makes a non-blocking attempt to write-lock the associated read/write
- mutex object, returning <code>true</code> if the attempt is successful,
- otherwise <code>false</code>. If the associated read/write mutex object is
- already locked by the same thread the behavior is dependent on the
- <link linkend="thread.concepts.locking-strategies">locking
- strategy</link> of the associated read/write mutex object.</para>
- </entry>
- </row>
- <row>
- <entry><code>lk.try_demote()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>state() != read_write_lock_state::write_locked</code>.</para>
-
- <para>Makes a non-blocking attempt to convert the lock held on the associated
- read/write mutex object from a write-lock to a read-lock without releasing
- the lock, returning <code>true</code> if the attempt is successful,
- otherwise <code>false</code>.</para>
- </entry>
- </row>
- <row>
- <entry><code>lk.try_promote()</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>state() != read_write_lock_state::read_locked</code>.</para>
-
- <para>Makes a non-blocking attempt to convert the lock held on the associated
- read/write mutex object from a read-lock to a write-lock without releasing
- the lock, returning <code>true</code> if the attempt is successful,
- otherwise <code>false</code>.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.ScopedTryReadWriteLock">
- <title>ScopedTryReadWriteLock Expressions</title>
-
- <para>A ScopedTryReadWriteLock is a refinement of
- <link linkend="thread.concepts.TryReadWriteLock">TryReadWriteLock</link>.
- For a ScopedTryReadWriteLock type <code>L</code>
- and an object <code>lk</code> of that type,
- and an object <code>m</code> of a type meeting the
- <link linkend="thread.concepts.TryMutex">TryReadWriteMutex</link> requirements,
- and an object <code>s</code> of type <code>read_write_lock_state</code>,
- and an object <code>b</code> of type <code>blocking_mode</code>,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>ScopedTryReadWriteLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>L lk(m,s,b);</code></entry>
- <entry>Constructs an object <code>lk</code> and associates read/write mutex
- object <code>m</code> with it, then: if <code>s == read_write_lock_state::read_locked</code>, calls
- <code>read_lock()</code> if <code>b</code>, otherwise <code>try_read_lock()</code>;
- if <code>s==read_write_lock_state::write_locked</code>, calls <code>write_lock()</code> if <code>b</code>,
- otherwise <code>try_write_lock</code>.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.TimedReadWriteLock">
- <title>TimedReadWriteLock Concept</title>
-
- <para>A TimedReadWriteLock is a refinement of
- <link linkend="thread.concepts.TryReadWriteLock">TryReadWriteLock</link>.
- For a TimedReadWriteLock type <code>L</code>
- and an object <code>lk</code> of that type,
- and an object <code>t</code> of type <classname>boost::xtime</classname>,
- the following expressions must be well-formed
- and have the indicated effects.</para>
-
- <table>
- <title>TimedReadWriteLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>lk.timed_read_lock(t)</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if locked().</para>
-
- <para>Makes a blocking attempt to read-lock the associated read/write mutex object,
- and returns <code>true</code> if successful within the specified time <code>t</code>,
- otherwise <code>false</code>. If the associated read/write mutex object is already
- locked by the same thread the behavior is dependent on the <link
- linkend="thread.concepts.locking-strategies">locking
- strategy</link> of the associated read/write mutex object.</para>
- </entry>
- </row>
- <row>
- <entry><code>lk.timed_write_lock(t)</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if locked().</para>
-
- <para>Makes a blocking attempt to write-lock the associated read/write mutex object,
- and returns <code>true</code> if successful within the specified time <code>t</code>,
- otherwise <code>false</code>. If the associated read/write mutex object is already
- locked by the same thread the behavior is dependent on the <link
- linkend="thread.concepts.locking-strategies">locking
- strategy</link> of the associated read/write mutex object.</para>
- </entry>
- </row>
- <row>
- <entry><code>lk.timed_demote(t)</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>state() != read_write_lock_state::write_locked</code>.</para>
-
- <para>Makes a blocking attempt to convert the lock held on the associated
- read/write mutex object from a write-lock to a read-lock without releasing
- the lock, returning <code>true</code> if the attempt is successful
- in the specified time <code>t</code>, otherwise <code>false</code>.</para>
- </entry>
- </row>
- <row>
- <entry><code>lk.timed_promote(t)</code></entry>
- <entry>
- <para>Throws <classname>boost::lock_error</classname>
- if <code>state() != read_write_lock_state::read_locked</code>.</para>
-
- <para>Makes a blocking attempt to convert the lock held on the associated
- read/write mutex object from a read-lock to a write-lock without releasing
- the lock, returning <code>true</code> if the attempt is successful
- in the specified time <code>t</code>, otherwise <code>false</code>.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-
- <section id="thread.concepts.ScopedTimedReadWriteLock">
- <title>ScopedTimedReadWriteLock Concept</title>
-
- <para>A ScopedTimedReadWriteLock is a refinement of
- <link linkend="thread.concepts.TimedReadWriteLock">TimedReadWriteLock</link>.
- For a ScopedTimedReadWriteLock type <code>L</code>
- and an object <code>lk</code> of that type,
- and an object <code>m</code> of a type meeting the
- <link linkend="thread.concepts.TimedReadWriteMutex">TimedReadWriteMutex</link> requirements,
- and an object <code>s</code> of type <code>read_write_lock_state</code>,
- and an object <code>t</code> of type <classname>boost::xtime</classname>,
- and an object <code>b</code> of type <code>blocking_mode</code>,
- the following expressions must be well-formed and have the
- indicated effects.</para>
-
- <table>
- <title>ScopedTimedReadWriteLock Expressions</title>
-
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Expression</entry>
- <entry>Effects</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><code>L lk(m,s,b);</code></entry>
- <entry>Constructs an object <code>lk</code> and associates read/write mutex
- object <code>m</code> with it, then: if <code>s == read_write_lock_state::read_locked</code>, calls
- <code>read_lock()</code> if <code>b</code>, otherwise <code>try_read_lock()</code>;
- if <code>s==read_write_lock_state::write_locked</code>, calls <code>write_lock()</code> if <code>b</code>,
- otherwise <code>try_write_lock</code>.</entry>
- </row>
- <row>
- <entry><code>L lk(m,s,t);</code></entry>
- <entry>Constructs an object <code>lk</code> and associates read/write mutex
- object <code>m</code> with it, then: if <code>s == read_write_lock_state::read_locked</code>, calls
- <code>timed_read_lock(t)</code>; if <code>s==read_write_lock_state::write_locked</code>,
- calls <code>timed_write_lock(t)</code>.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- </section>
-
- <section id="thread.concepts.read-write-lock-models">
- <title>Lock Models</title>
-
- <para>&Boost.Thread; currently supplies six models of
- <link linkend="thread.concepts.ReadWriteLock">ReadWriteLock</link>
- and its refinements.</para>
-
- <table>
- <title>Lock Models</title>
-
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Concept</entry>
- <entry>Refines</entry>
- <entry>Models</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><link linkend="thread.concepts.ReadWriteLock">ReadWriteLock</link></entry>
- <entry></entry>
- <entry></entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.ScopedReadWriteLock">ScopedReadWriteLock</link></entry>
- <entry><link linkend="thread.concepts.ReadWriteLock">ReadWriteLock</link></entry>
- <entry>
- <para><classname>boost::read_write_mutex::scoped_read_write_lock</classname></para>
- <para><classname>boost::try_read_write_mutex::scoped_read_write_lock</classname></para>
- <para><classname>boost::timed_read_write_mutex::scoped_read_write_lock</classname></para>
- </entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.TryReadWriteLock">TryReadWriteLock</link></entry>
- <entry><link linkend="thread.concepts.ReadWriteLock">ReadWriteLock</link></entry>
- <entry></entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.ScopedTryReadWriteLock">ScopedTryReadWriteLock</link></entry>
- <entry><link linkend="thread.concepts.TryReadWriteLock">TryReadWriteLock</link></entry>
- <entry>
- <para><classname>boost::try_read_write_mutex::scoped_try_read_write_lock</classname></para>
- <para><classname>boost::timed_read_write_mutex::scoped_try_read_write_lock</classname></para>
- </entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.TimedReadWriteLock">TimedReadWriteLock</link></entry>
- <entry><link linkend="thread.concepts.TryReadWriteLock">TryReadWriteLock</link></entry>
- <entry></entry>
- </row>
- <row>
- <entry><link linkend="thread.concepts.ScopedTimedReadWriteLock">ScopedTimedReadWriteLock</link></entry>
- <entry><link linkend="thread.concepts.TimedReadWriteLock">TimedReadWriteLock</link></entry>
- <entry>
- <para><classname>boost::timed_read_write_mutex::scoped_timed_read_write_lock</classname></para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- </section>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/condition-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/condition-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/condition.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <class name="condition">
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <purpose>
- <para>An object of class <classname>condition</classname> is a
- synchronization primitive used to cause a thread to wait until a
- particular shared-data condition (or time) is met.</para>
- </purpose>
-
- <description>
- <para>A <classname>condition</classname> object is always used in
- conjunction with a <link linkend="thread.concepts.mutexes">mutex</link>
- object (an object whose type is a model of a <link
- linkend="thread.concepts.Mutex">Mutex</link> or one of its
- refinements). The mutex object must be locked prior to waiting on the
- condition, which is verified by passing a lock object (an object whose
- type is a model of <link linkend="thread.concepts.Lock">Lock</link> or
- one of its refinements) to the <classname>condition</classname> object's
- wait functions. Upon blocking on the <classname>condition</classname>
- object, the thread unlocks the mutex object. When the thread returns
- from a call to one of the <classname>condition</classname> object's wait
- functions the mutex object is again locked. The tricky unlock/lock
- sequence is performed automatically by the
- <classname>condition</classname> object's wait functions.</para>
- <para>The <classname>condition</classname> type is often used to
- implement the Monitor Object and other important patterns (see
- &cite.SchmidtStalRohnertBuschmann; and &cite.Hoare74;). Monitors are one
- of the most important patterns for creating reliable multithreaded
- programs.</para>
- <para>See <xref linkend="thread.glossary"/> for definitions of <link
- linkend="thread.glossary.thread-state">thread states</link>
- blocked and ready. Note that "waiting" is a synonym for blocked.</para>
- </description>
-
- <constructor>
- <effects><simpara>Constructs a <classname>condition</classname>
- object.</simpara></effects>
- </constructor>
-
- <destructor>
- <effects><simpara>Destroys <code>*this</code>.</simpara></effects>
- </destructor>
-
- <method-group name="notification">
- <method name="notify_one">
- <type>void</type>
- <effects><simpara>If there is a thread waiting on <code>*this</code>,
- change that thread's state to ready. Otherwise there is no
- effect.</simpara></effects>
- <notes><simpara>If more than one thread is waiting on <code>*this</code>,
- it is unspecified which is made ready. After returning to a ready
- state the notified thread must still acquire the mutex again (which
- occurs within the call to one of the <classname>condition</classname>
- object's wait functions.)</simpara></notes>
- </method>
-
- <method name="notify_all">
- <type>void</type>
- <effects><simpara>Change the state of all threads waiting on
- <code>*this</code> to ready. If there are no waiting threads,
- <code>notify_all()</code> has no effect.</simpara></effects>
- </method>
- </method-group>
-
- <method-group name="waiting">
- <method name="wait">
- <template>
- <template-type-parameter name="ScopedLock"/>
- </template>
-
- <type>void</type>
-
- <parameter name="lock">
- <paramtype>ScopedLock&</paramtype>
- </parameter>
-
- <requires><simpara><code>ScopedLock</code> meets the <link
- linkend="thread.concepts.ScopedLock">ScopedLock</link>
- requirements.</simpara></requires>
- <effects><simpara>Releases the lock on the <link
- linkend="thread.concepts.mutexes">mutex object</link>
- associated with <code>lock</code>, blocks the current thread of execution
- until readied by a call to <code>this->notify_one()</code>
- or<code> this->notify_all()</code>, and then reacquires the
- lock.</simpara></effects>
- <throws><simpara><classname>lock_error</classname> if
- <code>!lock.locked()</code></simpara></throws>
- </method>
-
- <method name="wait">
- <template>
- <template-type-parameter name="ScopedLock"/>
- <template-type-parameter name="Pred"/>
- </template>
-
- <type>void</type>
-
- <parameter name="lock">
- <paramtype>ScopedLock&</paramtype>
- </parameter>
-
- <parameter name="pred">
- <paramtype>Pred</paramtype>
- </parameter>
-
- <requires><simpara><code>ScopedLock</code> meets the <link
- linkend="thread.concepts.ScopedLock">ScopedLock</link>
- requirements and the return from <code>pred()</code> is
- convertible to <code>bool</code>.</simpara></requires>
- <effects><simpara>As if: <code>while (!pred())
- wait(lock)</code></simpara></effects>
- <throws><simpara><classname>lock_error</classname> if
- <code>!lock.locked()</code></simpara></throws>
- </method>
-
- <method name="timed_wait">
- <template>
- <template-type-parameter name="ScopedLock"/>
- </template>
-
- <type>bool</type>
-
- <parameter name="lock">
- <paramtype>ScopedLock&</paramtype>
- </parameter>
-
- <parameter name="xt">
- <paramtype>const <classname>boost::xtime</classname>&</paramtype>
- </parameter>
-
- <requires><simpara><code>ScopedLock</code> meets the <link
- linkend="thread.concepts.ScopedLock">ScopedLock</link>
- requirements.</simpara></requires>
- <effects><simpara>Releases the lock on the <link
- linkend="thread.concepts.mutexes">mutex object</link>
- associated with <code>lock</code>, blocks the current thread of execution
- until readied by a call to <code>this->notify_one()</code>
- or<code> this->notify_all()</code>, or until time <code>xt</code>
- is reached, and then reacquires the lock.</simpara></effects>
- <returns><simpara><code>false</code> if time <code>xt</code> is reached,
- otherwise <code>true</code>.</simpara></returns>
- <throws><simpara><classname>lock_error</classname> if
- <code>!lock.locked()</code></simpara></throws>
- </method>
-
- <method name="timed_wait">
- <template>
- <template-type-parameter name="ScopedLock"/>
- <template-type-parameter name="Pred"/>
- </template>
-
- <type>bool</type>
-
- <parameter name="lock">
- <paramtype>ScopedLock&</paramtype>
- </parameter>
-
- <parameter name="xt">
- <paramtype>const <classname>boost::xtime</classname>&</paramtype>
- </parameter>
-
- <parameter name="pred">
- <paramtype>Pred</paramtype>
- </parameter>
-
- <requires><simpara><code>ScopedLock</code> meets the <link
- linkend="thread.concepts.ScopedLock">ScopedLock</link>
- requirements and the return from <code>pred()</code> is
- convertible to <code>bool</code>.</simpara></requires>
- <effects><simpara>As if: <code>while (!pred()) { if (!timed_wait(lock,
- xt)) return false; } return true;</code></simpara></effects>
- <returns><simpara><code>false</code> if <code>xt</code> is reached,
- otherwise <code>true</code>.</simpara></returns>
- <throws><simpara><classname>lock_error</classname> if
- <code>!lock.locked()</code></simpara></throws>
- </method>
- </method-group>
- </class>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/configuration.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/configuration.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.configuration" last-revision="$Date$">
- <title>Configuration</title>
- <para>&Boost.Thread; uses several configuration macros in <boost/config.hpp>,
- as well as configuration macros meant to be supplied by the application. These
- macros are documented here.
- </para>
- <section id="thread.configuration.public">
- <title>Library Defined Public Macros</title>
- <para>
- These macros are defined by &Boost.Thread; but are expected to be used
- by application code.
- </para>
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Macro</entry>
- <entry>Meaning</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>BOOST_HAS_THREADS</entry>
- <entry>
- Indicates that threading support is available. This means both that there
- is a platform specific implementation for &Boost.Thread; and that
- threading support has been enabled in a platform specific manner. For instance,
- on the Win32 platform there's an implementation for &Boost.Thread;
- but unless the program is compiled against one of the multithreading runtimes
- (often determined by the compiler predefining the macro _MT) the BOOST_HAS_THREADS
- macro remains undefined.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- <section id="thread.configuration.implementation">
- <title>Library Defined Implementation Macros</title>
- <para>
- These macros are defined by &Boost.Thread; and are implementation details
- of interest only to implementors.
- </para>
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Macro</entry>
- <entry>Meaning</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>BOOST_HAS_WINTHREADS</entry>
- <entry>
- Indicates that the platform has the Microsoft Win32 threading libraries,
- and that they should be used to implement &Boost.Thread;.
- </entry>
- </row>
- <row>
- <entry>BOOST_HAS_PTHREADS</entry>
- <entry>
- Indicates that the platform has the POSIX pthreads libraries, and that
- they should be used to implement &Boost.Thread;.
- </entry>
- </row>
- <row>
- <entry>BOOST_HAS_FTIME</entry>
- <entry>
- Indicates that the implementation should use GetSystemTimeAsFileTime()
- and the FILETIME type to calculate the current time. This is an implementation
- detail used by boost::detail::getcurtime().
- </entry>
- </row>
- <row>
- <entry>BOOST_HAS_GETTTIMEOFDAY</entry>
- <entry>
- Indicates that the implementation should use gettimeofday() to calculate
- the current time. This is an implementation detail used by boost::detail::getcurtime().
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/design.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/design.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.design" last-revision="$Date$">
- <title>Design</title>
- <para>With client/server and three-tier architectures becoming common place
- in today's world, it's becoming increasingly important for programs to be
- able to handle parallel processing. Modern day operating systems usually
- provide some support for this through native thread APIs. Unfortunately,
- writing portable code that makes use of parallel processing in C++ is made
- very difficult by a lack of a standard interface for these native APIs.
- Further, these APIs are almost universally C APIs and fail to take
- advantage of C++'s strengths, or to address concepts unique to C++, such as
- exceptions.</para>
- <para>The &Boost.Thread; library is an attempt to define a portable interface
- for writing parallel processes in C++.</para>
- <section id="thread.design.goals">
- <title>Goals</title>
- <para>The &Boost.Thread; library has several goals that should help to set
- it apart from other solutions. These goals are listed in order of precedence
- with full descriptions below.
- <variablelist>
- <varlistentry>
- <term>Portability</term>
- <listitem>
- <para>&Boost.Thread; was designed to be highly portable. The goal is
- for the interface to be easily implemented on any platform that
- supports threads, and possibly even on platforms without native thread
- support.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Safety</term>
- <listitem>
- <para>&Boost.Thread; was designed to be as safe as possible. Writing
- <link linkend="thread.glossary.thread-safe">thread-safe</link>
- code is very difficult and successful libraries must strive to
- insulate the programmer from dangerous constructs as much as
- possible. This is accomplished in several ways:
- <itemizedlist>
- <listitem>
- <para>C++ language features are used to make correct usage easy
- (if possible) and error-prone usage impossible or at least more
- difficult. For example, see the <link
- linkend="thread.concepts.Mutex">Mutex</link> and <link
- linkend="thread.concepts.Lock">Lock</link> designs, and note
- how they interact.</para>
- </listitem>
- <listitem>
- <para>Certain traditional concurrent programming features are
- considered so error-prone that they are not provided at all. For
- example, see <xref linkend="thread.rationale.events" />.</para>
- </listitem>
- <listitem>
- <para>Dangerous features, or features which may be misused, are
- identified as such in the documentation to make users aware of
- potential pitfalls.</para>
- </listitem>
- </itemizedlist></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Flexibility</term>
- <listitem>
- <para>&Boost.Thread; was designed to be flexible. This goal is often
- at odds with <emphasis>safety</emphasis>. When functionality might be
- compromised by the desire to keep the interface safe, &Boost.Thread;
- has been designed to provide the functionality, but to make it's use
- prohibitive for general use. In other words, the interfaces have been
- designed such that it's usually obvious when something is unsafe, and
- the documentation is written to explain why.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Efficiency</term>
- <listitem>
- <para>&Boost.Thread; was designed to be as efficient as
- possible. When building a library on top of another library there is
- always a danger that the result will be so much slower than the
- "native" API that programmers are inclined to ignore the higher level
- API. &Boost.Thread; was designed to minimize the chances of this
- occurring. The interfaces have been crafted to allow an implementation
- the greatest chance of being as efficient as possible. This goal is
- often at odds with the goal for <emphasis>safety</emphasis>. Every
- effort was made to ensure efficient implementations, but when in
- conflict <emphasis>safety</emphasis> has always taken
- precedence.</para>
- </listitem>
- </varlistentry>
- </variablelist></para>
- </section>
- <section>
- <title>Iterative Phases</title>
- <para>Another goal of &Boost.Thread; was to take a dynamic, iterative
- approach in its development. The computing industry is still exploring the
- concepts of parallel programming. Most thread libraries supply only simple
- primitive concepts for thread synchronization. These concepts are very
- simple, but it is very difficult to use them safely or to provide formal
- proofs for constructs built on top of them. There has been a lot of research
- into other concepts, such as in "Communicating Sequential Processes."
- &Boost.Thread; was designed in iterative steps, with each step providing
- the building blocks necessary for the next step and giving the researcher
- the tools necessary to explore new concepts in a portable manner.</para>
- <para>Given the goal of following a dynamic, iterative approach
- &Boost.Thread; shall go through several growth cycles. Each phase in its
- development shall be roughly documented here.</para>
- </section>
- <section>
- <title>Phase 1, Synchronization Primitives</title>
- <para>Boost is all about providing high quality libraries with
- implementations for many platforms. Unfortunately, there's a big problem
- faced by developers wishing to supply such high quality libraries, namely
- thread-safety. The C++ standard doesn't address threads at all, but real
- world programs often make use of native threading support. A portable
- library that doesn't address the issue of thread-safety is therefore not
- much help to a programmer who wants to use the library in his multithreaded
- application. So there's a very great need for portable primitives that will
- allow the library developer to create <link
- linkend="thread.glossary.thread-safe">thread-safe</link>
- implementations. This need far out weighs the need for portable methods to
- create and manage threads.</para>
- <para>Because of this need, the first phase of &Boost.Thread; focuses
- solely on providing portable primitive concepts for thread
- synchronization. Types provided in this phase include the
- <classname>boost::mutex</classname>,
- <classname>boost::try_mutex</classname>,
- <classname>boost::timed_mutex</classname>,
- <classname>boost::recursive_mutex</classname>,
- <classname>boost::recursive_try_mutex</classname>,
- <classname>boost::recursive_timed_mutex</classname>, and
- <classname>boost::lock_error</classname>. These are considered the "core"
- synchronization primitives, though there are others that will be added in
- later phases.</para>
- </section>
- <section id="thread.design.phase2">
- <title>Phase 2, Thread Management and Thread Specific Storage</title>
- <para>This phase addresses the creation and management of threads and
- provides a mechanism for thread specific storage (data associated with a
- thread instance). Thread management is a tricky issue in C++, so this
- phase addresses only the basic needs of multithreaded program. Later
- phases are likely to add additional functionality in this area. This
- phase of &Boost.Thread; adds the <classname>boost::thread</classname> and
- <classname>boost::thread_specific_ptr</classname> types. With these
- additions the &Boost.Thread; library can be considered minimal but
- complete.</para>
- </section>
- <section>
- <title>The Next Phase</title>
- <para>The next phase will address more advanced synchronization concepts,
- such as read/write mutexes and barriers.</para>
- </section>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/entities.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/entities.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,31 +0,0 @@
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<!ENTITY Boost "<emphasis role='bold'>Boost</emphasis>">
-<!ENTITY Boost.Thread "<emphasis role='bold'>Boost.Thread</emphasis>">
-<!ENTITY Boost.Build "<emphasis role='bold'>Boost.Build</emphasis>">
-<!ENTITY cite.AndrewsSchneider83 "<citation><xref
-linkend='thread.bib.AndrewsSchneider83'
-endterm='thread.bib.AndrewsSchneider83.abbrev'/></citation>">
-<!ENTITY cite.Boost "<citation><xref linkend='thread.bib.Boost'
-endterm='thread.bib.Boost.abbrev'/></citation>">
-<!ENTITY cite.Hansen73 "<citation><xref linkend='thread.bib.Hansen73'
-endterm='thread.bib.Hansen73.abbrev'/></citation>">
-<!ENTITY cite.Butenhof97 "<citation><xref linkend='thread.bib.Butenhof97'
-endterm='thread.bib.Butenhof97.abbrev'/></citation>">
-<!ENTITY cite.Hoare74 "<citation><xref linkend='thread.bib.Hoare74'
-endterm='thread.bib.Hoare74.abbrev'/></citation>">
-<!ENTITY cite.ISO98 "<citation><xref linkend='thread.bib.ISO98'
-endterm='thread.bib.ISO98.abbrev'/></citation>">
-<!ENTITY cite.McDowellHelmbold89 "<citation><xref
-linkend='thread.bib.McDowellHelmbold89'
-endterm='thread.bib.McDowellHelmbold89.abbrev'/></citation>">
-<!ENTITY cite.SchmidtPyarali "<citation><xref
-linkend='thread.bib.SchmidtPyarali'
-endterm='thread.bib.SchmidtPyarali.abbrev'/></citation>">
-<!ENTITY cite.SchmidtStalRohnertBuschmann "<citation><xref
-linkend='thread.bib.SchmidtStalRohnertBuschmann'
-endterm='thread.bib.SchmidtStalRohnertBuschmann.abbrev'/></citation>">
-<!ENTITY cite.Stroustrup "<citation><xref linkend='thread.bib.Stroustrup'
-endterm='thread.bib.Stroustrup.abbrev'/></citation>">
Deleted: branches/CMake/release/libs/thread/doc/exceptions-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/exceptions-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/exceptions.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <class name="lock_error">
- <purpose>
- <simpara>The lock_error class defines an exception type thrown
- to indicate a locking related error has been detected.</simpara>
- </purpose>
-
- <description>
- <simpara>Examples of errors indicated by a lock_error exception
- include a lock operation which can be determined to result in a
- deadlock, or unlock operations attempted by a thread that does
- not own the lock.</simpara>
- </description>
-
- <inherit access="public">
- <type><classname>std::logical_error</classname></type>
- </inherit>
-
- <constructor>
- <effects><simpara>Constructs a <code>lock_error</code> object.
- </simpara></effects>
- </constructor>
- </class>
-
- <class name="thread_resource_error">
- <purpose>
- <simpara>The <classname>thread_resource_error</classname> class
- defines an exception type that is thrown by constructors in the
- &Boost.Thread; library when thread-related resources can not be
- acquired.</simpara>
- </purpose>
-
- <description>
- <simpara><classname>thread_resource_error</classname> is used
- only when thread-related resources cannot be acquired; memory
- allocation failures are indicated by
- <classname>std::bad_alloc</classname>.</simpara>
- </description>
-
- <inherit access="public">
- <type><classname>std::runtime_error</classname></type>
- </inherit>
-
- <constructor>
- <effects><simpara>Constructs a <code>thread_resource_error</code>
- object.</simpara></effects>
- </constructor>
- </class>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/faq.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/faq.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,235 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.faq" last-revision="$Date$">
- <title>Frequently Asked Questions</title>
- <qandaset>
- <qandaentry>
- <question>
- <para>Are lock objects <link
- linkend="thread.glossary.thread-safe">thread safe</link>?</para>
- </question>
- <answer>
- <para><emphasis role="bold">No!</emphasis> Lock objects are not meant to
- be shared between threads. They are meant to be short-lived objects
- created on automatic storage within a code block. Any other usage is
- just likely to lead to errors and won't really be of actual benefit anyway.
- Share <link linkend="thread.concepts.mutexes">Mutexes</link>, not
- Locks. For more information see the <link
- linkend="thread.rationale.locks">rationale</link> behind the
- design for lock objects.</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Why was &Boost.Thread; modeled after (specific library
- name)?</para>
- </question>
- <answer>
- <para>It wasn't. &Boost.Thread; was designed from scratch. Extensive
- design discussions involved numerous people representing a wide range of
- experience across many platforms. To ensure portability, the initial
- implements were done in parallel using POSIX Threads and the Win32
- threading API. But the &Boost.Thread; design is very much in the spirit
- of C++, and thus doesn't model such C based APIs.</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Why wasn't &Boost.Thread; modeled after (specific library
- name)?</para>
- </question>
- <answer>
- <para>Existing C++ libraries either seemed dangerous (often failing to
- take advantage of prior art to reduce errors) or had excessive
- dependencies on library components unrelated to threading. Existing C
- libraries couldn't meet our C++ requirements, and were also missing
- certain features. For instance, the WIN32 thread API lacks condition
- variables, even though these are critical for the important Monitor
- pattern &cite.SchmidtStalRohnertBuschmann;.</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Why do <link linkend="thread.concepts.mutexes">Mutexes</link>
- have noncopyable semantics?</para>
- </question>
- <answer>
- <para>To ensure that <link
- linkend="thread.glossary.deadlock">deadlocks</link> don't occur. The
- only logical form of copy would be to use some sort of shallow copy
- semantics in which multiple mutex objects could refer to the same mutex
- state. This means that if ObjA has a mutex object as part of its state
- and ObjB is copy constructed from it, then when ObjB::foo() locks the
- mutex it has effectively locked ObjA as well. This behavior can result
- in deadlock. Other copy semantics result in similar problems (if you
- think you can prove this to be wrong then supply us with an alternative
- and we'll reconsider).</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>How can you prevent <link
- linkend="thread.glossary.deadlock">deadlock</link> from occurring when
- a thread must lock multiple mutexes?</para>
- </question>
- <answer>
- <para>Always lock them in the same order. One easy way of doing this is
- to use each mutex's address to determine the order in which they are
- locked. A future &Boost.Thread; concept may wrap this pattern up in a
- reusable class.</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Don't noncopyable <link
- linkend="thread.concepts.mutexes">Mutex</link> semantics mean that a
- class with a mutex member will be noncopyable as well?</para>
- </question>
- <answer>
- <para>No, but what it does mean is that the compiler can't generate a
- copy constructor and assignment operator, so they will have to be coded
- explicitly. This is a <emphasis role="bold">good thing</emphasis>,
- however, since the compiler generated operations would not be <link
- linkend="thread.glossary.thread-safe">thread-safe</link>. The following
- is a simple example of a class with copyable semantics and internal
- synchronization through a mutex member.</para>
-<programlisting>
-class counter
-{
-public:
- // Doesn't need synchronization since there can be no references to *this
- // until after it's constructed!
- explicit counter(int initial_value)
- : m_value(initial_value)
- {
- }
- // We only need to synchronize other for the same reason we don't have to
- // synchronize on construction!
- counter(const counter& other)
- {
- boost::mutex::scoped_lock scoped_lock(other.m_mutex);
- m_value = other.m_value;
- }
- // For assignment we need to synchronize both objects!
- const counter& operator=(const counter& other)
- {
- if (this == &other)
- return *this;
- boost::mutex::scoped_lock lock1(&m_mutex < &other.m_mutex ? m_mutex : other.m_mutex);
- boost::mutex::scoped_lock lock2(&m_mutex > &other.m_mutex ? m_mutex : other.m_mutex);
- m_value = other.m_value;
- return *this;
- }
- int value() const
- {
- boost::mutex::scoped_lock scoped_lock(m_mutex);
- return m_value;
- }
- int increment()
- {
- boost::mutex::scoped_lock scoped_lock(m_mutex);
- return ++m_value;
- }
-private:
- mutable boost::mutex m_mutex;
- int m_value;
-};
-</programlisting>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>How can you lock a <link
- linkend="thread.concepts.mutexes">Mutex</link> member in a const member
- function, in order to implement the Monitor Pattern?</para>
- </question>
- <answer>
- <para>The Monitor Pattern &cite.SchmidtStalRohnertBuschmann; mutex
- should simply be declared as mutable. See the example code above. The
- internal state of mutex types could have been made mutable, with all
- lock calls made via const functions, but this does a poor job of
- documenting the actual semantics (and in fact would be incorrect since
- the logical state of a locked mutex clearly differs from the logical
- state of an unlocked mutex). Declaring a mutex member as mutable clearly
- documents the intended semantics.</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Why supply <classname>boost::condition</classname> variables rather than
- event variables?</para>
- </question>
- <answer>
- <para>Condition variables result in user code much less prone to <link
- linkend="thread.glossary.race-condition">race conditions</link> than
- event variables. See <xref linkend="thread.rationale.events" />
- for analysis. Also see &cite.Hoare74; and &cite.SchmidtStalRohnertBuschmann;.
- </para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Why isn't thread cancellation or termination provided?</para>
- </question>
- <answer>
- <para>There's a valid need for thread termination, so at some point
- &Boost.Thread; probably will include it, but only after we can find a
- truly safe (and portable) mechanism for this concept.</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Is it safe for threads to share automatic storage duration (stack)
- objects via pointers or references?</para>
- </question>
- <answer>
- <para>Only if you can guarantee that the lifetime of the stack object
- will not end while other threads might still access the object. Thus the
- safest practice is to avoid sharing stack objects, particularly in
- designs where threads are created and destroyed dynamically. Restrict
- sharing of stack objects to simple designs with very clear and
- unchanging function and thread lifetimes. (Suggested by Darryl
- Green).</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Why has class semaphore disappeared?</para>
- </question>
- <answer>
- <para>Semaphore was removed as too error prone. The same effect can be
- achieved with greater safety by the combination of a mutex and a
- condition variable.</para>
- </answer>
- </qandaentry>
- <qandaentry>
- <question>
- <para>Why doesn't the thread's ctor take at least a void* to pass any
- information along with the function? All other threading libs support
- that and it makes Boost.Threads inferiour. </para>
- </question>
- <answer>
- <para>There is no need, because Boost.Threads are superiour! First
- thing is that its ctor doesn't take a function but a functor. That
- means that you can pass an object with an overloaded operator() and
- include additional data as members in that object. Beware though that
- this object is copied, use boost::ref to prevent that. Secondly, even
- a boost::function<void (void)> can carry parameters, you only have to
- use boost::bind() to create it from any function and bind its
- parameters.</para>
- <para>That is also why Boost.Threads are superiour, because they
- don't require you to pass a type-unsafe void pointer. Rather, you can
- use the flexible Boost.Functions to create a thread entry out of
- anything that can be called.</para>
- </answer>
- </qandaentry>
- </qandaset>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/glossary.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/glossary.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,304 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<glossary id="thread.glossary" last-revision="$Date$">
- <title>Glossary</title>
- <para>Definitions are given in terms of the C++ Standard
- &cite.ISO98;. References to the standard are in the form [1.2.3/4], which
- represents the section number, with the paragraph number following the
- "/".</para>
- <para>Because the definitions are written in something akin to "standardese",
- they can be difficult to understand. The intent isn't to confuse, but rather
- to clarify the additional requirements &Boost.Thread; places on a C++
- implementation as defined by the C++ Standard.</para>
- <glossentry id="thread.glossary.thread">
- <glossterm>Thread</glossterm>
- <glossdef>
- <para>Thread is short for "thread of execution". A thread of execution is
- an execution environment [1.9/7] within the execution environment of a C++
- program [1.9]. The main() function [3.6.1] of the program is the initial
- function of the initial thread. A program in a multithreading environment
- always has an initial thread even if the program explicitly creates no
- additional threads.</para>
- <para>Unless otherwise specified, each thread shares all aspects of its
- execution environment with other threads in the program. Shared aspects of
- the execution environment include, but are not limited to, the
- following:</para>
- <itemizedlist>
- <listitem><para>Static storage duration (static, extern) objects
- [3.7.1].</para></listitem>
- <listitem><para>Dynamic storage duration (heap) objects [3.7.3]. Thus
- each memory allocation will return a unique addresses, regardless of the
- thread making the allocation request.</para></listitem>
- <listitem><para>Automatic storage duration (stack) objects [3.7.2]
- accessed via pointer or reference from another thread.</para></listitem>
- <listitem><para>Resources provided by the operating system. For example,
- files.</para></listitem>
- <listitem><para>The program itself. In other words, each thread is
- executing some function of the same program, not a totally different
- program.</para></listitem>
- </itemizedlist>
- <para>Each thread has its own:</para>
- <itemizedlist>
- <listitem><para>Registers and current execution sequence (program
- counter) [1.9/5].</para></listitem>
- <listitem><para>Automatic storage duration (stack) objects
- [3.7.2].</para></listitem>
- </itemizedlist>
- </glossdef>
- </glossentry>
- <glossentry id="thread.glossary.thread-safe">
- <glossterm>Thread-safe</glossterm>
- <glossdef>
- <para>A program is thread-safe if it has no <link
- linkend="thread.glossary.race-condition">race conditions</link>, does
- not <link linkend="thread.glossary.deadlock">deadlock</link>, and has
- no <link linkend="thread.glossary.priority-failure">priority
- failures</link>.</para>
- <para>Note that thread-safety does not necessarily imply efficiency, and
- than while some thread-safety violations can be determined statically at
- compile time, many thread-safety errors can only only be detected at
- runtime.</para>
- </glossdef>
- </glossentry>
- <glossentry id="thread.glossary.thread-state">
- <glossterm>Thread State</glossterm>
- <glossdef>
- <para>During the lifetime of a thread, it shall be in one of the following
- states:</para>
- <table>
- <title>Thread States</title>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>State</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Ready</entry>
- <entry>Ready to run, but waiting for a processor.</entry>
- </row>
- <row>
- <entry>Running</entry>
- <entry>Currently executing on a processor. Zero or more threads
- may be running at any time, with a maximum equal to the number of
- processors.</entry>
- </row>
- <row>
- <entry>Blocked</entry>
- <entry>Waiting for some resource other than a processor which is
- not currently available, or for the completion of calls to library
- functions [1.9/6]. The term "waiting" is synonymous with
- "blocked"</entry>
- </row>
- <row>
- <entry>Terminated</entry>
- <entry>Finished execution but not yet detached or joined.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>Thread state transitions shall occur only as specified:</para>
- <table>
- <title>Thread States Transitions</title>
- <tgroup cols="3" align="left">
- <thead>
- <row>
- <entry>From</entry>
- <entry>To</entry>
- <entry>Cause</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>[none]</entry>
- <entry>Ready</entry>
- <entry><para>Thread is created by a call to a library function.
- In the case of the initial thread, creation is implicit and
- occurs during the startup of the main() function [3.6.1].</para></entry>
- </row>
- <row>
- <entry>Ready</entry>
- <entry>Running</entry>
- <entry><para>Processor becomes available.</para></entry>
- </row>
- <row>
- <entry>Running</entry>
- <entry>Ready</entry>
- <entry>Thread preempted.</entry>
- </row>
- <row>
- <entry>Running</entry>
- <entry>Blocked</entry>
- <entry>Thread calls a library function which waits for a resource or
- for the completion of I/O.</entry>
- </row>
- <row>
- <entry>Running</entry>
- <entry>Terminated</entry>
- <entry>Thread returns from its initial function, calls a thread
- termination library function, or is canceled by some other thread
- calling a thread termination library function.</entry>
- </row>
- <row>
- <entry>Blocked</entry>
- <entry>Ready</entry>
- <entry>The resource being waited for becomes available, or the
- blocking library function completes.</entry>
- </row>
- <row>
- <entry>Terminated</entry>
- <entry>[none]</entry>
- <entry>Thread is detached or joined by some other thread calling the
- appropriate library function, or by program termination
- [3.6.3].</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>[Note: if a suspend() function is added to the threading library,
- additional transitions to the blocked state will have to be added to the
- above table.]</para>
- </glossdef>
- </glossentry>
- <glossentry id="thread.glossary.race-condition">
- <glossterm>Race Condition</glossterm>
- <glossdef>
- <para>A race condition is what occurs when multiple threads read from and write
- to the same memory without proper synchronization, resulting in an incorrect
- value being read or written. The result of a race condition may be a bit
- pattern which isn't even a valid value for the data type. A race condition
- results in undefined behavior [1.3.12].</para>
- <para>Race conditions can be prevented by serializing memory access using
- the tools provided by &Boost.Thread;.</para>
- </glossdef>
- </glossentry>
- <glossentry id="thread.glossary.deadlock">
- <glossterm>Deadlock</glossterm>
- <glossdef>
- <para>Deadlock is an execution state where for some set of threads, each
- thread in the set is blocked waiting for some action by one of the other
- threads in the set. Since each is waiting on the others, none will ever
- become ready again.</para>
- </glossdef>
- </glossentry>
- <glossentry id="thread.glossary.starvation">
- <glossterm>Starvation</glossterm>
- <glossdef>
- <para>The condition in which a thread is not making sufficient progress in
- its work during a given time interval.</para>
- </glossdef>
- </glossentry>
- <glossentry id="thread.glossary.priority-failure">
- <glossterm>Priority Failure</glossterm>
- <glossdef>
- <para>A priority failure (such as priority inversion or infinite overtaking)
- occurs when threads are executed in such a sequence that required work is not
- performed in time to be useful.</para>
- </glossdef>
- </glossentry>
- <glossentry id="thread.glossary.undefined-behavior">
- <glossterm>Undefined Behavior</glossterm>
- <glossdef>
- <para>The result of certain operations in &Boost.Thread; is undefined;
- this means that those operations can invoke almost any behavior when
- they are executed.</para>
-
- <para>An operation whose behavior is undefined can work "correctly"
- in some implementations (i.e., do what the programmer thought it
- would do), while in other implementations it may exhibit almost
- any "incorrect" behavior--such as returning an invalid value,
- throwing an exception, generating an access violation, or terminating
- the process.</para>
-
- <para>Executing a statement whose behavior is undefined is a
- programming error.</para>
- </glossdef>
- </glossentry>
- <glossentry id="thread.glossary.memory-visibility">
- <glossterm>Memory Visibility</glossterm>
- <glossdef>
- <para>An address [1.7] shall always point to the same memory byte,
- regardless of the thread or processor dereferencing the address.</para>
- <para>An object [1.8, 1.9] is accessible from multiple threads if it is of
- static storage duration (static, extern) [3.7.1], or if a pointer or
- reference to it is explicitly or implicitly dereferenced in multiple
- threads.</para>
- <para>For an object accessible from multiple threads, the value of the
- object accessed from one thread may be indeterminate or different from the
- value accessed from another thread, except under the conditions specified in
- the following table. For the same row of the table, the value of an object
- accessible at the indicated sequence point in thread A will be determinate
- and the same if accessed at or after the indicated sequence point in thread
- B, provided the object is not otherwise modified. In the table, the
- "sequence point at a call" is the sequence point after the evaluation of all
- function arguments [1.9/17], while the "sequence point after a call" is the
- sequence point after the copying of the returned value... [1.9/17].</para>
- <table>
- <title>Memory Visibility</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Thread A</entry>
- <entry>Thread B</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>The sequence point at a call to a library thread-creation
- function.</entry>
- <entry>The first sequence point of the initial function in the new
- thread created by the Thread A call.</entry>
- </row>
- <row>
- <entry>The sequence point at a call to a library function which
- locks a mutex, directly or by waiting for a condition
- variable.</entry>
- <entry>The sequence point after a call to a library function which
- unlocks the same mutex.</entry>
- </row>
- <row>
- <entry>The last sequence point before thread termination.</entry>
- <entry>The sequence point after a call to a library function which
- joins the terminated thread.</entry>
- </row>
- <row>
- <entry>The sequence point at a call to a library function which
- signals or broadcasts a condition variable.</entry>
- <entry>The sequence point after the call to the library function
- which was waiting on that same condition variable or signal.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>The architecture of the execution environment and the observable
- behavior of the abstract machine [1.9] shall be the same on all
- processors.</para>
- <para>The latitude granted by the C++ standard for an implementation to
- alter the definition of observable behavior of the abstract machine to
- include additional library I/O functions [1.9/6] is extended to include
- threading library functions.</para>
- <para>When an exception is thrown and there is no matching exception handler
- in the same thread, behavior is undefined. The preferred behavior is the
- same as when there is no matching exception handler in a program
- [15.3/9]. That is, terminate() is called, and it is implementation-defined
- whether or not the stack is unwound.</para>
- </glossdef>
- </glossentry>
- <section>
- <title>Acknowledgements</title>
- <para>This document was originally written by Beman Dawes, and then much
- improved by the incorporation of comments from William Kempf, who now
- maintains the contents.</para>
- <para>The visibility rules are based on &cite.Butenhof97;.</para>
- </section>
-</glossary>
Deleted: branches/CMake/release/libs/thread/doc/implementation_notes.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/implementation_notes.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.implementation_notes" last-revision="$Date$">
- <title>Implementation Notes</title>
- <section id="thread.implementation_notes.win32">
- <title>Win32</title>
- <para>
- In the current Win32 implementation, creating a boost::thread object
- during dll initialization will result in deadlock because the thread
- class constructor causes the current thread to wait on the thread that
- is being created until it signals that it has finished its initialization,
- and, as stated in the
- <ulink url="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/dllmain.asp">MSDN Library, "DllMain" article, "Remarks" section</ulink>,
- "Because DLL notifications are serialized, entry-point functions should not
- attempt to communicate with other threads or processes. Deadlocks may occur as a result."
- (Also see <ulink url="http://www.microsoft.com/msj/archive/S220.aspx">"Under the Hood", January 1996</ulink>
- for a more detailed discussion of this issue).
- </para>
- <para>
- The following non-exhaustive list details some of the situations that
- should be avoided until this issue can be addressed:
- <itemizedlist>
- <listitem>Creating a boost::thread object in DllMain() or in any function called by it.</listitem>
- <listitem>Creating a boost::thread object in the constructor of a global static object or in any function called by one.</listitem>
- <listitem>Creating a boost::thread object in MFC's CWinApp::InitInstance() function or in any function called by it.</listitem>
- <listitem>Creating a boost::thread object in the function pointed to by MFC's _pRawDllMain function pointer or in any function called by it.</listitem>
- </itemizedlist>
- </para>
- </section>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/mutex-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/mutex-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,309 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/mutex.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <class name="mutex">
- <purpose>
- <para>The <classname>mutex</classname> class is a model of the
- <link linkend="thread.concepts.Mutex">Mutex</link> concept.</para>
- </purpose>
-
- <description>
- <para>The <classname>mutex</classname> class is a model of the
- <link linkend="thread.concepts.Mutex">Mutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>try_mutex</classname> and <classname>timed_mutex</classname>.</para>
-
- <para>For <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking mechanics, see <classname>recursive_mutex</classname>,
- <classname>recursive_try_mutex</classname>, and <classname>recursive_timed_mutex</classname>.
- </para>
-
- <para>The <classname>mutex</classname> class supplies the following typedef,
- which <link linkend="thread.concepts.lock-models">models</link>
- the specified locking strategy:
-
- <informaltable>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
-
- <para>The <classname>mutex</classname> class uses an
- <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking strategy, so attempts to recursively lock a <classname>mutex</classname>
- object or attempts to unlock one by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.
- This strategy allows implementations to be as efficient as possible
- on any given platform. It is, however, recommended that
- implementations include debugging support to detect misuse when
- <code>NDEBUG</code> is not defined.</para>
-
- <para>Like all
- <link linkend="thread.concepts.mutex-models">mutex models</link>
- in &Boost.Thread;, <classname>mutex</classname> leaves the
- <link linkend="thread.concepts.sheduling-policies">scheduling policy</link>
- as <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>.
- Programmers should make no assumptions about the order in which
- waiting threads acquire a lock.</para>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <typedef name="scoped_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <effects>Constructs a <classname>mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>mutex</classname> object.</effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
-
- <class name="try_mutex">
- <purpose>
- <para>The <classname>try_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TryMutex">TryMutex</link> concept.</para>
- </purpose>
-
- <description>
- <para>The <classname>try_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TryMutex">TryMutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>mutex</classname> and <classname>timed_mutex</classname>.</para>
-
- <para>For <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking mechanics, see <classname>recursive_mutex</classname>,
- <classname>recursive_try_mutex</classname>, and <classname>recursive_timed_mutex</classname>.
- </para>
-
- <para>The <classname>try_mutex</classname> class supplies the following typedefs,
- which <link linkend="thread.concepts.lock-models">model</link>
- the specified locking strategies:
-
- <informaltable>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
-
- <para>The <classname>try_mutex</classname> class uses an
- <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking strategy, so attempts to recursively lock a <classname>try_mutex</classname>
- object or attempts to unlock one by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.
- This strategy allows implementations to be as efficient as possible
- on any given platform. It is, however, recommended that
- implementations include debugging support to detect misuse when
- <code>NDEBUG</code> is not defined.</para>
-
- <para>Like all
- <link linkend="thread.concepts.mutex-models">mutex models</link>
- in &Boost.Thread;, <classname>try_mutex</classname> leaves the
- <link linkend="thread.concepts.sheduling-policies">scheduling policy</link>
- as <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>.
- Programmers should make no assumptions about the order in which
- waiting threads acquire a lock.</para>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <typedef name="scoped_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <effects>Constructs a <classname>try_mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>try_mutex</classname> object.
- </effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
-
- <class name="timed_mutex">
- <purpose>
- <para>The <classname>timed_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TimedMutex">TimedMutex</link> concept.</para>
- </purpose>
-
- <description>
- <para>The <classname>timed_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TimedMutex">TimedMutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>mutex</classname> and <classname>try_mutex</classname>.</para>
-
- <para>For <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking mechanics, see <classname>recursive_mutex</classname>,
- <classname>recursive_try_mutex</classname>, and <classname>recursive_timed_mutex</classname>.
- </para>
-
- <para>The <classname>timed_mutex</classname> class supplies the following typedefs,
- which <link linkend="thread.concepts.lock-models">model</link>
- the specified locking strategies:
-
- <informaltable>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- </row>
- <row>
- <entry>scoped_timed_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
-
- <para>The <classname>timed_mutex</classname> class uses an
- <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking strategy, so attempts to recursively lock a <classname>timed_mutex</classname>
- object or attempts to unlock one by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.
- This strategy allows implementations to be as efficient as possible
- on any given platform. It is, however, recommended that
- implementations include debugging support to detect misuse when
- <code>NDEBUG</code> is not defined.</para>
-
- <para>Like all
- <link linkend="thread.concepts.mutex-models">mutex models</link>
- in &Boost.Thread;, <classname>timed_mutex</classname> leaves the
- <link linkend="thread.concepts.sheduling-policies">scheduling policy</link>
- as <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>.
- Programmers should make no assumptions about the order in which
- waiting threads acquire a lock.</para>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <typedef name="scoped_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_timed_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <effects>Constructs a <classname>timed_mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>timed_mutex</classname> object.</effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/once-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/once-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/once.hpp"
- last-revision="$Date$">
- <macro name="BOOST_ONCE_INIT">
- <purpose>The <functionname>call_once</functionname> function and
- <code>once_flag</code> type (statically initialized to
- <macroname>BOOST_ONCE_INIT</macroname>) can be used to run a
- routine exactly once. This can be used to initialize data in a
- <link linkend="thread.glossary.thread-safe">thread-safe</link>
- manner.</purpose>
-
- <description>The implementation-defined macro
- <macroname>BOOST_ONCE_INIT</macroname> is a constant value used to
- initialize <code>once_flag</code> instances to indicate that the
- logically associated routine has not been run yet. See
- <functionname>call_once</functionname> for more details.</description>
- </macro>
-
- <namespace name="boost">
- <typedef name="once_flag">
- <purpose>The <functionname>call_once</functionname> function and
- <code>once_flag</code> type (statically initialized to
- <macroname>BOOST_ONCE_INIT</macroname>) can be used to run a
- routine exactly once. This can be used to initialize data in a
- <link linkend="thread.glossary.thread-safe">thread-safe</link>
- manner.</purpose>
-
- <description>The implementation-defined type <code>once_flag</code>
- is used as a flag to insure a routine is called only once.
- Instances of this type should be statically initialized to
- <macroname>BOOST_ONCE_INIT</macroname>. See
- <functionname>call_once</functionname> for more details.
- </description>
-
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <function name="call_once">
- <purpose>The <functionname>call_once</functionname> function and
- <code>once_flag</code> type (statically initialized to
- <macroname>BOOST_ONCE_INIT</macroname>) can be used to run a
- routine exactly once. This can be used to initialize data in a
- <link linkend="thread.glossary.thread-safe">thread-safe</link>
- manner.</purpose>
-
- <description>
- <para>Example usage is as follows:</para>
- <para>
-<programlisting>//Example usage:
-boost::once_flag once = BOOST_ONCE_INIT;
-
-void init()
-{
- //...
-}
-
-void thread_proc()
-{
- boost::call_once(once, &init);
-}</programlisting>
- </para></description>
-
- <parameter name="flag">
- <paramtype>once_flag&</paramtype>
- </parameter>
-
- <parameter name="func">
- <paramtype>Function func</paramtype>
- </parameter>
-
- <effects>As if (in an atomic fashion):
- <code>if (flag == BOOST_ONCE_INIT) func();</code>. If <code>func()</code> throws an exception, it shall be as if this
-thread never invoked <code>call_once</code></effects>
-
- <postconditions><code>flag != BOOST_ONCE_INIT</code> unless <code>func()</code> throws an exception.
- </postconditions>
- </function>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/overview.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/overview.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.overview" last-revision="$Date$">
- <title>Overview</title>
- <section id="thread.introduction">
- <title>Introduction</title>
- <para>&Boost.Thread; allows C++ programs to execute as multiple,
- asynchronous, independent threads-of-execution. Each thread has its own
- machine state including program instruction counter and registers. Programs
- which execute as multiple threads are called multithreaded programs to
- distinguish them from traditional single-threaded programs. The <link
- linkend="thread.glossary">glossary</link> gives a more complete description
- of the multithreading execution environment.</para>
- <para>Multithreading provides several advantages:
- <itemizedlist>
- <listitem>
- <para>Programs which would otherwise block waiting for some external
- event can continue to respond if the blocking operation is placed in a
- separate thread. Multithreading is usually an absolute requirement for
- these programs.</para>
- </listitem>
- <listitem>
- <para>Well-designed multithreaded programs may execute faster than
- single-threaded programs, particularly on multiprocessor hardware.
- Note, however, that poorly-designed multithreaded programs are often
- slower than single-threaded programs.</para>
- </listitem>
- <listitem>
- <para>Some program designs may be easier to formulate using a
- multithreaded approach. After all, the real world is
- asynchronous!</para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section>
- <title>Dangers</title>
- <section>
- <title>General considerations</title>
- <para>Beyond the errors which can occur in single-threaded programs,
- multithreaded programs are subject to additional errors:
- <itemizedlist>
- <listitem>
- <para><link linkend="thread.glossary.race-condition">Race
- conditions</link></para>
- </listitem>
- <listitem>
- <para><link linkend="thread.glossary.deadlock">Deadlock</link>
- (sometimes called "deadly embrace")</para>
- </listitem>
- <listitem>
- <para><link linkend="thread.glossary.priority-failure">Priority
- failures</link> (priority inversion, infinite overtaking, starvation,
- etc.)</para>
- </listitem>
- </itemizedlist></para>
- <para>Every multithreaded program must be designed carefully to avoid these
- errors. These aren't rare or exotic failures - they are virtually guaranteed
- to occur unless multithreaded code is designed to avoid them. Priority
- failures are somewhat less common, but are nonetheless serious.</para>
- <para>The <link linkend="thread.design">&Boost.Thread; design</link>
- attempts to minimize these errors, but they will still occur unless the
- programmer proactively designs to avoid them.</para>
- <note>Please also see <xref linkend="thread.implementation_notes"/>
- for additional, implementation-specific considerations.</note>
- </section>
- <section>
- <title>Testing and debugging considerations</title>
- <para>Multithreaded programs are non-deterministic. In other words, the
- same program with the same input data may follow different execution
- paths each time it is invoked. That can make testing and debugging a
- nightmare:
- <itemizedlist>
- <listitem>
- <para>Failures are often not repeatable.</para>
- </listitem>
- <listitem>
- <para>Probe effect causes debuggers to produce very different results
- from non-debug uses.</para>
- </listitem>
- <listitem>
- <para>Debuggers require special support to show thread state.</para>
- </listitem>
- <listitem>
- <para>Tests on a single processor system may give no indication of
- serious errors which would appear on multiprocessor systems, and visa
- versa. Thus test cases should include a varying number of
- processors.</para>
- </listitem>
- <listitem>
- <para>For programs which create a varying number of threads according
- to workload, tests which don't span the full range of possibilities
- may miss serious errors.</para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section>
- <title>Getting a head start</title>
- <para>Although it might appear that multithreaded programs are inherently
- unreliable, many reliable multithreaded programs do exist. Multithreading
- techniques are known which lead to reliable programs.</para>
- <para>Design patterns for reliable multithreaded programs, including the
- important <emphasis>monitor</emphasis> pattern, are presented in
- <emphasis>Pattern-Oriented Software Architecture Volume 2 - Patterns for
- Concurrent and Networked Objects</emphasis>
- &cite.SchmidtStalRohnertBuschmann;. Many important multithreading programming
- considerations (independent of threading library) are discussed in
- <emphasis>Programming with POSIX Threads</emphasis> &cite.Butenhof97;.</para>
- <para>Doing some reading before attempting multithreaded designs will
- give you a head start toward reliable multithreaded programs.</para>
- </section>
- </section>
- <section>
- <title>C++ Standard Library usage in multithreaded programs</title>
- <section>
- <title>Runtime libraries</title>
- <para>
- <emphasis role="bold">Warning:</emphasis> Multithreaded programs such as
- those using &Boost.Thread; must link to <link
- linkend="thread.glossary.thread-safe">thread-safe</link> versions of
- all runtime libraries used by the program, including the runtime library
- for the C++ Standard Library. Failure to do so will cause <link
- linkend="thread.glossary.race-condition">race conditions</link> to occur
- when multiple threads simultaneously execute runtime library functions for
- <code>new</code>, <code>delete</code>, or other language features which
- imply shared state.</para>
- </section>
- <section>
- <title>Potentially non-thread-safe functions</title>
- <para>Certain C++ Standard Library functions inherited from C are
- particular problems because they hold internal state between
- calls:
- <itemizedlist>
- <listitem>
- <para><code>rand</code></para>
- </listitem>
- <listitem>
- <para><code>strtok</code></para>
- </listitem>
- <listitem>
- <para><code>asctime</code></para>
- </listitem>
- <listitem>
- <para><code>ctime</code></para>
- </listitem>
- <listitem>
- <para><code>gmtime</code></para>
- </listitem>
- <listitem>
- <para><code>localtime</code></para>
- </listitem>
- </itemizedlist></para>
- <para>It is possible to write thread-safe implementations of these by
- using thread specific storage (see
- <classname>boost::thread_specific_ptr</classname>), and several C++
- compiler vendors do just that. The technique is well-know and is explained
- in &cite.Butenhof97;.</para>
- <para>But at least one vendor (HP-UX) does not provide thread-safe
- implementations of the above functions in their otherwise thread-safe
- runtime library. Instead they provide replacement functions with
- different names and arguments.</para>
- <para><emphasis role="bold">Recommendation:</emphasis> For the most
- portable, yet thread-safe code, use Boost replacements for the problem
- functions. See the <libraryname>Boost Random Number Library</libraryname>
- and <libraryname>Boost Tokenizer Library</libraryname>.</para>
- </section>
- </section>
- <section>
- <title>Common guarantees for all &Boost.Thread; components</title>
- <section>
- <title>Exceptions</title>
- <para>&Boost.Thread; destructors never
- throw exceptions. Unless otherwise specified, other
- &Boost.Thread; functions that do not have
- an exception-specification may throw implementation-defined
- exceptions.</para>
- <para>In particular, &Boost.Thread;
- reports failure to allocate storage by throwing an exception of type
- <code>std::bad_alloc</code> or a class derived from
- <code>std::bad_alloc</code>, failure to obtain thread resources other than
- memory by throwing an exception of type
- <classname>boost::thread_resource_error</classname>, and certain lock
- related failures by throwing an exception of type
- <classname>boost::lock_error</classname>.</para>
- <para><emphasis role="bold">Rationale:</emphasis> Follows the C++ Standard
- Library practice of allowing all functions except destructors or other
- specified functions to throw exceptions on errors.</para>
- </section>
- <section>
- <title>NonCopyable requirement</title>
- <para>&Boost.Thread; classes documented as
- meeting the NonCopyable requirement disallow copy construction and copy
- assignment. For the sake of exposition, the synopsis of such classes show
- private derivation from <classname>boost::noncopyable</classname>. Users
- should not depend on this derivation, however, as implementations are free
- to meet the NonCopyable requirement in other ways.</para>
- </section>
- </section>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/rationale.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/rationale.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,438 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.rationale" last-revision="$Date$">
- <title>Rationale</title>
- <para>This page explains the rationale behind various design decisions in the
- &Boost.Thread; library. Having the rationale documented here should explain
- how we arrived at the current design as well as prevent future rehashing of
- discussions and thought processes that have already occurred. It can also give
- users a lot of insight into the design process required for this
- library.</para>
- <section id="thread.rationale.Boost.Thread">
- <title>Rationale for the Creation of &Boost.Thread;</title>
- <para>Processes often have a degree of "potential parallelism" and it can
- often be more intuitive to design systems with this in mind. Further, these
- parallel processes can result in more responsive programs. The benefits for
- multithreaded programming are quite well known to most modern programmers,
- yet the C++ language doesn't directly support this concept.</para>
- <para>Many platforms support multithreaded programming despite the fact that
- the language doesn't support it. They do this through external libraries,
- which are, unfortunately, platform specific. POSIX has tried to address this
- problem through the standardization of a "pthread" library. However, this is
- a standard only on POSIX platforms, so its portability is limited.</para>
- <para>Another problem with POSIX and other platform specific thread
- libraries is that they are almost universally C based libraries. This leaves
- several C++ specific issues unresolved, such as what happens when an
- exception is thrown in a thread. Further, there are some C++ concepts, such
- as destructors, that can make usage much easier than what's available in a C
- library.</para>
- <para>What's truly needed is C++ language support for threads. However, the
- C++ standards committee needs existing practice or a good proposal as a
- starting point for adding this to the standard.</para>
- <para>The &Boost.Thread; library was developed to provide a C++ developer
- with a portable interface for writing multithreaded programs on numerous
- platforms. There's a hope that the library can be the basis for a more
- detailed proposal for the C++ standards committee to consider for inclusion
- in the next C++ standard.</para>
- </section>
- <section id="thread.rationale.primitives">
- <title>Rationale for the Low Level Primitives Supported in &Boost.Thread;</title>
- <para>The &Boost.Thread; library supplies a set of low level primitives for
- writing multithreaded programs, such as mutexes and condition variables. In
- fact, the first release of &Boost.Thread; supports only these low level
- primitives. However, computer science research has shown that use of these
- primitives is difficult since it's difficult to mathematically prove that a
- usage pattern is correct, meaning it doesn't result in race conditions or
- deadlocks. There are several algebras (such as CSP, CCS and Join calculus)
- that have been developed to help write provably correct parallel
- processes. In order to prove the correctness these processes must be coded
- using higher level abstractions. So why does &Boost.Thread; support the
- lower level concepts?</para>
- <para>The reason is simple: the higher level concepts need to be implemented
- using at least some of the lower level concepts. So having portable lower
- level concepts makes it easier to develop the higher level concepts and will
- allow researchers to experiment with various techniques.</para>
- <para>Beyond this theoretical application of higher level concepts, however,
- the fact remains that many multithreaded programs are written using only the
- lower level concepts, so they are useful in and of themselves, even if it's
- hard to prove that their usage is correct. Since many users will be familiar
- with these lower level concepts but unfamiliar with any of the higher
- level concepts, supporting the lower level concepts provides
- greater accessibility.</para>
- </section>
- <section id="thread.rationale.locks">
- <title>Rationale for the Lock Design</title>
- <para>Programmers who are used to multithreaded programming issues will
- quickly note that the &Boost.Thread; design for mutex lock concepts is not
- <link linkend="thread.glossary.thread-safe">thread-safe</link> (this is
- clearly documented as well). At first this may seem like a serious design
- flaw. Why have a multithreading primitive that's not thread-safe
- itself?</para>
- <para>A lock object is not a synchronization primitive. A lock object's sole
- responsibility is to ensure that a mutex is both locked and unlocked in a
- manner that won't result in the common error of locking a mutex and then
- forgetting to unlock it. This means that instances of a lock object are only
- going to be created, at least in theory, within block scope and won't be
- shared between threads. Only the mutex objects will be created outside of
- block scope and/or shared between threads. Though it's possible to create a
- lock object outside of block scope and to share it between threads, to do so
- would not be a typical usage (in fact, to do so would likely be an
- error). Nor are there any cases when such usage would be required.</para>
- <para>Lock objects must maintain some state information. In order to allow a
- program to determine if a try_lock or timed_lock was successful the lock
- object must retain state indicating the success or failure of the call made
- in its constructor. If a lock object were to have such state and remain
- thread-safe it would need to synchronize access to the state information
- which would result in roughly doubling the time of most operations. Worse,
- since checking the state can occur only by a call after construction, we'd
- have a race condition if the lock object were shared between threads.</para>
- <para>So, to avoid the overhead of synchronizing access to the state
- information and to avoid the race condition, the &Boost.Thread; library
- simply does nothing to make lock objects thread-safe. Instead, sharing a
- lock object between threads results in undefined behavior. Since the only
- proper usage of lock objects is within block scope this isn't a problem, and
- so long as the lock object is properly used there's no danger of any
- multithreading issues.</para>
- </section>
- <section id="thread.rationale.non-copyable">
- <title>Rationale for NonCopyable Thread Type</title>
- <para>Programmers who are used to C libraries for multithreaded programming
- are likely to wonder why &Boost.Thread; uses a noncopyable design for
- <classname>boost::thread</classname>. After all, the C thread types are
- copyable, and you often have a need for copying them within user
- code. However, careful comparison of C designs to C++ designs shows a flaw
- in this logic.</para>
- <para>All C types are copyable. It is, in fact, not possible to make a
- noncopyable type in C. For this reason types that represent system resources
- in C are often designed to behave very similarly to a pointer to dynamic
- memory. There's an API for acquiring the resource and an API for releasing
- the resource. For memory we have pointers as the type and alloc/free for
- the acquisition and release APIs. For files we have FILE* as the type and
- fopen/fclose for the acquisition and release APIs. You can freely copy
- instances of the types but must manually manage the lifetime of the actual
- resource through the acquisition and release APIs.</para>
- <para>C++ designs recognize that the acquisition and release APIs are error
- prone and try to eliminate possible errors by acquiring the resource in the
- constructor and releasing it in the destructor. The best example of such a
- design is the std::iostream set of classes which can represent the same
- resource as the FILE* type in C. A file is opened in the std::fstream's
- constructor and closed in its destructor. However, if an iostream were
- copyable it could lead to a file being closed twice, an obvious error, so
- the std::iostream types are noncopyable by design. This is the same design
- used by boost::thread, which is a simple and easy to understand design
- that's consistent with other C++ standard types.</para>
- <para>During the design of boost::thread it was pointed out that it would be
- possible to allow it to be a copyable type if some form of "reference
- management" were used, such as ref-counting or ref-lists, and many argued
- for a boost::thread_ref design instead. The reasoning was that copying
- "thread" objects was a typical need in the C libraries, and so presumably
- would be in the C++ libraries as well. It was also thought that
- implementations could provide more efficient reference management than
- wrappers (such as boost::shared_ptr) around a noncopyable thread
- concept. Analysis of whether or not these arguments would hold true doesn't
- appear to bear them out. To illustrate the analysis we'll first provide
- pseudo-code illustrating the six typical usage patterns of a thread
- object.</para>
- <section id="thread.rationale.non-copyable.simple">
- <title>1. Use case: Simple creation of a thread.</title>
- <programlisting>
- void foo()
- {
- create_thread(&bar);
- }
- </programlisting>
- </section>
- <section id="thread.rationale.non-copyable.joined">
- <title>2. Use case: Creation of a thread that's later joined.</title>
- <programlisting>
- void foo()
- {
- thread = create_thread(&bar);
- join(thread);
- }
- </programlisting>
- </section>
- <section id="thread.rationale.non-copyable.loop">
- <title>3. Use case: Simple creation of several threads in a loop.</title>
- <programlisting>
- void foo()
- {
- for (int i=0; i<NUM_THREADS; ++i)
- create_thread(&bar);
- }
- </programlisting>
- </section>
- <section id="thread.rationale.non-copyable.loop-join">
- <title>4. Use case: Creation of several threads in a loop which are later joined.</title>
- <programlisting>
- void foo()
- {
- for (int i=0; i<NUM_THREADS; ++i)
- threads[i] = create_thread(&bar);
- for (int i=0; i<NUM_THREADS; ++i)
- threads[i].join();
- }
- </programlisting>
- </section>
- <section id="thread.rationale.non-copyable.pass">
- <title>5. Use case: Creation of a thread whose ownership is passed to another object/method.</title>
- <programlisting>
- void foo()
- {
- thread = create_thread(&bar);
- manager.owns(thread);
- }
- </programlisting>
- </section>
- <section id="thread.rationale.non-copyable.shared">
- <title>6. Use case: Creation of a thread whose ownership is shared between multiple
- objects.</title>
- <programlisting>
- void foo()
- {
- thread = create_thread(&bar);
- manager1.add(thread);
- manager2.add(thread);
- }
- </programlisting>
- </section>
- <para>Of these usage patterns there's only one that requires reference
- management (number 6). Hopefully it's fairly obvious that this usage pattern
- simply won't occur as often as the other usage patterns. So there really
- isn't a "typical need" for a thread concept, though there is some
- need.</para>
- <para>Since the need isn't typical we must use different criteria for
- deciding on either a thread_ref or thread design. Possible criteria include
- ease of use and performance. So let's analyze both of these
- carefully.</para>
- <para>With ease of use we can look at existing experience. The standard C++
- objects that represent a system resource, such as std::iostream, are
- noncopyable, so we know that C++ programmers must at least be experienced
- with this design. Most C++ developers are also used to smart pointers such
- as boost::shared_ptr, so we know they can at least adapt to a thread_ref
- concept with little effort. So existing experience isn't going to lead us to
- a choice.</para>
- <para>The other thing we can look at is how difficult it is to use both
- types for the six usage patterns above. If we find it overly difficult to
- use a concept for any of the usage patterns there would be a good argument
- for choosing the other design. So we'll code all six usage patterns using
- both designs.</para>
- <section id="thread.rationale_comparison.non-copyable.simple">
- <title>1. Comparison: simple creation of a thread.</title>
- <programlisting>
- void foo()
- {
- thread thrd(&bar);
- }
- void foo()
- {
- thread_ref thrd = create_thread(&bar);
- }
- </programlisting>
- </section>
- <section id="thread.rationale_comparison.non-copyable.joined">
- <title>2. Comparison: creation of a thread that's later joined.</title>
- <programlisting>
- void foo()
- {
- thread thrd(&bar);
- thrd.join();
- }
- void foo()
- {
- thread_ref thrd =
- create_thread(&bar);thrd->join();
- }
- </programlisting>
- </section>
- <section id="thread.rationale_comparison.non-copyable.loop">
- <title>3. Comparison: simple creation of several threads in a loop.</title>
- <programlisting>
- void foo()
- {
- for (int i=0; i<NUM_THREADS; ++i)
- thread thrd(&bar);
- }
- void foo()
- {
- for (int i=0; i<NUM_THREADS; ++i)
- thread_ref thrd = create_thread(&bar);
- }
- </programlisting>
- </section>
- <section id="thread.rationale_comparison.non-copyable.loop-join">
- <title>4. Comparison: creation of several threads in a loop which are later joined.</title>
- <programlisting>
- void foo()
- {
- std::auto_ptr<thread> threads[NUM_THREADS];
- for (int i=0; i<NUM_THREADS; ++i)
- threads[i] = std::auto_ptr<thread>(new thread(&bar));
- for (int i= 0; i<NUM_THREADS;
- ++i)threads[i]->join();
- }
- void foo()
- {
- thread_ref threads[NUM_THREADS];
- for (int i=0; i<NUM_THREADS; ++i)
- threads[i] = create_thread(&bar);
- for (int i= 0; i<NUM_THREADS;
- ++i)threads[i]->join();
- }
- </programlisting>
- </section>
- <section id="thread.rationale_comparison.non-copyable.pass">
- <title>5. Comparison: creation of a thread whose ownership is passed to another object/method.</title>
- <programlisting>
- void foo()
- {
- thread thrd* = new thread(&bar);
- manager.owns(thread);
- }
- void foo()
- {
- thread_ref thrd = create_thread(&bar);
- manager.owns(thrd);
- }
- </programlisting>
- </section>
- <section id="thread.rationale_comparison.non-copyable.shared">
- <title>6. Comparison: creation of a thread whose ownership is shared
- between multiple objects.</title>
- <programlisting>
- void foo()
- {
- boost::shared_ptr<thread> thrd(new thread(&bar));
- manager1.add(thrd);
- manager2.add(thrd);
- }
- void foo()
- {
- thread_ref thrd = create_thread(&bar);
- manager1.add(thrd);
- manager2.add(thrd);
- }
- </programlisting>
- </section>
- <para>This shows the usage patterns being nearly identical in complexity for
- both designs. The only actual added complexity occurs because of the use of
- operator new in
- <link linkend="thread.rationale_comparison.non-copyable.loop-join">(4)</link>,
- <link linkend="thread.rationale_comparison.non-copyable.pass">(5)</link>, and
- <link linkend="thread.rationale_comparison.non-copyable.shared">(6)</link>;
- and the use of std::auto_ptr and boost::shared_ptr in
- <link linkend="thread.rationale_comparison.non-copyable.loop-join">(4)</link> and
- <link linkend="thread.rationale_comparison.non-copyable.shared">(6)</link>
- respectively. However, that's not really
- much added complexity, and C++ programmers are used to using these idioms
- anyway. Some may dislike the presence of operator new in user code, but
- this can be eliminated by proper design of higher level concepts, such as
- the boost::thread_group class that simplifies example
- <link linkend="thread.rationale_comparison.non-copyable.loop-join">(4)</link>
- down to:</para>
- <programlisting>
- void foo()
- {
- thread_group threads;
- for (int i=0; i<NUM_THREADS; ++i)
- threads.create_thread(&bar);
- threads.join_all();
- }
- </programlisting>
- <para>So ease of use is really a wash and not much help in picking a
- design.</para>
- <para>So what about performance? Looking at the above code examples,
- we can analyze the theoretical impact to performance that both designs
- have. For <link linkend="thread.rationale_comparison.non-copyable.simple">(1)</link>
- we can see that platforms that don't have a ref-counted native
- thread type (POSIX, for instance) will be impacted by a thread_ref
- design. Even if the native thread type is ref-counted there may be an impact
- if more state information has to be maintained for concepts foreign to the
- native API, such as clean up stacks for Win32 implementations.
- For <link linkend="thread.rationale_comparison.non-copyable.joined">(2)</link>
- and <link linkend="thread.rationale_comparison.non-copyable.loop">(3)</link>
- the performance impact will be identical to
- <link linkend="thread.rationale_comparison.non-copyable.simple">(1)</link>.
- For <link linkend="thread.rationale_comparison.non-copyable.loop-join">(4)</link>
- things get a little more interesting and we find that theoretically at least
- the thread_ref may perform faster since the thread design requires dynamic
- memory allocation/deallocation. However, in practice there may be dynamic
- allocation for the thread_ref design as well, it will just be hidden from
- the user. As long as the implementation has to do dynamic allocations the
- thread_ref loses again because of the reference management. For
- <link linkend="thread.rationale_comparison.non-copyable.pass">(5)</link> we see
- the same impact as we do for
- <link linkend="thread.rationale_comparison.non-copyable.loop-join">(4)</link>.
- For <link linkend="thread.rationale_comparison.non-copyable.shared">(6)</link>
- we still have a possible impact to
- the thread design because of dynamic allocation but thread_ref no longer
- suffers because of its reference management, and in fact, theoretically at
- least, the thread_ref may do a better job of managing the references. All of
- this indicates that thread wins for
- <link linkend="thread.rationale_comparison.non-copyable.simple">(1)</link>,
- <link linkend="thread.rationale_comparison.non-copyable.joined">(2)</link> and
- <link linkend="thread.rationale_comparison.non-copyable.loop">(3)</link>; with
- <link linkend="thread.rationale_comparison.non-copyable.loop-join">(4)</link>
- and <link linkend="thread.rationale_comparison.non-copyable.pass">(5)</link> the
- winner depending on the implementation and the platform but with the thread design
- probably having a better chance; and with
- <link linkend="thread.rationale_comparison.non-copyable.shared">(6)</link>
- it will again depend on the
- implementation and platform but this time we favor thread_ref
- slightly. Given all of this it's a narrow margin, but the thread design
- prevails.</para>
- <para>Given this analysis, and the fact that noncopyable objects for system
- resources are the normal designs that C++ programmers are used to dealing
- with, the &Boost.Thread; library has gone with a noncopyable design.</para>
- </section>
- <section id="thread.rationale.events">
- <title>Rationale for not providing <emphasis>Event Variables</emphasis></title>
- <para><emphasis>Event variables</emphasis> are simply far too
- error-prone. <classname>boost::condition</classname> variables are a much safer
- alternative. [Note that Graphical User Interface <emphasis>events</emphasis> are
- a different concept, and are not what is being discussed here.]</para>
- <para>Event variables were one of the first synchronization primitives. They
- are still used today, for example, in the native Windows multithreading
- API. Yet both respected computer science researchers and experienced
- multithreading practitioners believe event variables are so inherently
- error-prone that they should never be used, and thus should not be part of a
- multithreading library.</para>
- <para>Per Brinch Hansen &cite.Hansen73; analyzed event variables in some
- detail, pointing out [emphasis his] that "<emphasis>event operations force
- the programmer to be aware of the relative speeds of the sending and
- receiving processes</emphasis>". His summary:</para>
- <blockquote>
- <para>We must therefore conclude that event variables of the previous type
- are impractical for system design. <emphasis>The effect of an interaction
- between two processes must be independent of the speed at which it is
- carried out.</emphasis></para>
- </blockquote>
- <para>Experienced programmers using the Windows platform today report that
- event variables are a continuing source of errors, even after previous bad
- experiences caused them to be very careful in their use of event
- variables. Overt problems can be avoided, for example, by teaming the event
- variable with a mutex, but that may just convert a <link
- linkend="thread.glossary.race-condition">race condition</link> into another
- problem, such as excessive resource use. One of the most distressing aspects
- of the experience reports is the claim that many defects are latent. That
- is, the programs appear to work correctly, but contain hidden timing
- dependencies which will cause them to fail when environmental factors or
- usage patterns change, altering relative thread timings.</para>
- <para>The decision to exclude event variables from &Boost.Thread; has been
- surprising to some Windows programmers. They have written programs which
- work using event variables, and wonder what the problem is. It seems similar
- to the "goto considered harmful" controversy of 30 years ago. It isn't that
- events, like gotos, can't be made to work, but rather that virtually all
- programs using alternatives will be easier to write, debug, read, maintain,
- and will be less likely to contain latent defects.</para>
- <para>[Rationale provided by Beman Dawes]</para>
- </section>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/read_write_mutex-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/read_write_mutex-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,492 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/read_write_mutex.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <namespace name="read_write_scheduling_policy">
- <enum name="read_write_scheduling_policy">
- <enumvalue name="writer_priority" />
- <enumvalue name="reader_priority" />
- <enumvalue name="alternating_many_reads" />
- <enumvalue name="alternating_single_read" />
-
- <purpose>
- <para>Specifies the
- <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">inter-class sheduling policy</link>
- to use when a set of threads try to obtain different types of
- locks simultaneously.</para>
- </purpose>
-
- <description>
- <para>The only clock type supported by &Boost.Thread; is
- <code>TIME_UTC</code>. The epoch for <code>TIME_UTC</code>
- is 1970-01-01 00:00:00.</para>
- </description>
- </enum>
- </namespace>
-
- <class name="read_write_mutex">
- <purpose>
- <para>The <classname>read_write_mutex</classname> class is a model of the
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link> concept.</para>
- <note> Unfortunately it turned out that the current implementation of Read/Write Mutex has
- some serious problems. So it was decided not to put this implementation into
- release grade code. Also discussions on the mailing list led to the
- conclusion that the current concepts need to be rethought. In particular
- the schedulings <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">
- Inter-Class Scheduling Policies</link> are deemed unnecessary.
- There seems to be common belief that a fair scheme suffices.
- The following documentation has been retained however, to give
- readers of this document the opportunity to study the original design.
- </note>
- </purpose>
-
- <description>
- <para>The <classname>read_write_mutex</classname> class is a model of the
- <link linkend="thread.concepts.ReadWriteMutex">ReadWriteMutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.read-write-locking-strategies.unspecified">Unspecified</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>try_read_write_mutex</classname> and <classname>timed_read_write_mutex</classname>.</para>
-
- <para>The <classname>read_write_mutex</classname> class supplies the following typedefs,
- which <link linkend="thread.concepts.read-write-lock-models">model</link>
- the specified locking strategies:
-
- <informaltable>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_read_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedReadWriteLock">ScopedReadWriteLock</link></entry>
- </row>
- <row>
- <entry>scoped_read_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
-
- <para>The <classname>read_write_mutex</classname> class uses an
- <link linkend="thread.concepts.read-write-locking-strategies.unspecified">Unspecified</link>
- locking strategy, so attempts to recursively lock a <classname>read_write_mutex</classname>
- object or attempts to unlock one by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.
- This strategy allows implementations to be as efficient as possible
- on any given platform. It is, however, recommended that
- implementations include debugging support to detect misuse when
- <code>NDEBUG</code> is not defined.</para>
-
- <para>Like all
- <link linkend="thread.concepts.read-write-mutex-models">read/write mutex models</link>
- in &Boost.Thread;, <classname>read_write_mutex</classname> has two types of
- <link linkend="thread.concepts.read-write-scheduling-policies">scheduling policies</link>, an
- <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">inter-class sheduling policy</link>
- between threads trying to obtain different types of locks and an
- <link linkend="thread.concepts.read-write-scheduling-policies.intra-class">intra-class sheduling policy</link>
- between threads trying to obtain the same type of lock.
- The <classname>read_write_mutex</classname> class allows the
- programmer to choose what
- <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">inter-class sheduling policy</link>
- will be used; however, like all read/write mutex models,
- <classname>read_write_mutex</classname> leaves the
- <link linkend="thread.concepts.read-write-scheduling-policies.intra-class">intra-class sheduling policy</link> as
- <link linkend="thread.concepts.read-write-locking-strategies.unspecified">Unspecified</link>.
- </para>
-
- <note>Self-deadlock is virtually guaranteed if a thread tries to
- lock the same <classname>read_write_mutex</classname> multiple times
- unless all locks are read-locks (but see below)</note>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <typedef name="scoped_read_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_read_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <parameter name="count">
- <paramtype>boost::read_write_scheduling_policy</paramtype>
- </parameter>
-
- <effects>Constructs a <classname>read_write_mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>read_write_mutex</classname> object.</effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
-
- <class name="try_read_write_mutex">
- <purpose>
- <para>The <classname>try_read_write_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TryReadWriteMutex">TryReadWriteMutex</link> concept.</para>
- <note> Unfortunately it turned out that the current implementation of Read/Write Mutex has
- some serious problems. So it was decided not to put this implementation into
- release grade code. Also discussions on the mailing list led to the
- conclusion that the current concepts need to be rethought. In particular
- the schedulings <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">
- Inter-Class Scheduling Policies</link> are deemed unnecessary.
- There seems to be common belief that a fair scheme suffices.
- The following documentation has been retained however, to give
- readers of this document the opportunity to study the original design.
- </note>
- </purpose>
-
- <description>
- <para>The <classname>try_read_write_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TryReadWriteMutex">TryReadWriteMutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.read-write-locking-strategies.unspecified">Unspecified</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>read_write_mutex</classname> and <classname>timed_read_write_mutex</classname>.</para>
-
- <para>The <classname>try_read_write_mutex</classname> class supplies the following typedefs,
- which <link linkend="thread.concepts.read-write-lock-models">model</link>
- the specified locking strategies:
-
- <informaltable>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_read_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedReadWriteLock">ScopedReadWriteLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_read_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryReadWriteLock">ScopedTryReadWriteLock</link></entry>
- </row>
- <row>
- <entry>scoped_read_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_read_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- </row>
- <row>
- <entry>scoped_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
-
- <para>The <classname>try_read_write_mutex</classname> class uses an
- <link linkend="thread.concepts.read-write-locking-strategies.unspecified">Unspecified</link>
- locking strategy, so attempts to recursively lock a <classname>try_read_write_mutex</classname>
- object or attempts to unlock one by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.
- This strategy allows implementations to be as efficient as possible
- on any given platform. It is, however, recommended that
- implementations include debugging support to detect misuse when
- <code>NDEBUG</code> is not defined.</para>
-
- <para>Like all
- <link linkend="thread.concepts.read-write-mutex-models">read/write mutex models</link>
- in &Boost.Thread;, <classname>try_read_write_mutex</classname> has two types of
- <link linkend="thread.concepts.read-write-scheduling-policies">scheduling policies</link>, an
- <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">inter-class sheduling policy</link>
- between threads trying to obtain different types of locks and an
- <link linkend="thread.concepts.read-write-scheduling-policies.intra-class">intra-class sheduling policy</link>
- between threads trying to obtain the same type of lock.
- The <classname>try_read_write_mutex</classname> class allows the
- programmer to choose what
- <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">inter-class sheduling policy</link>
- will be used; however, like all read/write mutex models,
- <classname>try_read_write_mutex</classname> leaves the
- <link linkend="thread.concepts.read-write-scheduling-policies.intra-class">intra-class sheduling policy</link> as
- <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>.
- </para>
-
- <note>Self-deadlock is virtually guaranteed if a thread tries to
- lock the same <classname>try_read_write_mutex</classname> multiple times
- unless all locks are read-locks (but see below)</note>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <typedef name="scoped_read_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_read_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_read_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_read_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <parameter name="count">
- <paramtype>boost::read_write_scheduling_policy</paramtype>
- </parameter>
-
- <effects>Constructs a <classname>try_read_write_mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>try_read_write_mutex</classname> object.</effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
-
- <class name="timed_read_write_mutex">
- <purpose>
- <para>The <classname>timed_read_write_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TimedReadWriteMutex">TimedReadWriteMutex</link> concept.</para>
- <note> Unfortunately it turned out that the current implementation of Read/Write Mutex has
- some serious problems. So it was decided not to put this implementation into
- release grade code. Also discussions on the mailing list led to the
- conclusion that the current concepts need to be rethought. In particular
- the schedulings <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">
- Inter-Class Scheduling Policies</link> are deemed unnecessary.
- There seems to be common belief that a fair scheme suffices.
- The following documentation has been retained however, to give
- readers of this document the opportunity to study the original design.
- </note>
- </purpose>
-
- <description>
- <para>The <classname>timed_read_write_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TimedReadWriteMutex">TimedReadWriteMutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.read-write-locking-strategies.unspecified">Unspecified</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>read_write_mutex</classname> and <classname>try_read_write_mutex</classname>.</para>
-
- <para>The <classname>timed_read_write_mutex</classname> class supplies the following typedefs,
- which <link linkend="thread.concepts.read-write-lock-models">model</link>
- the specified locking strategies:
-
- <informaltable>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_read_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedReadWriteLock">ScopedReadWriteLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_read_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryReadWriteLock">ScopedTryReadWriteLock</link></entry>
- </row>
- <row>
- <entry>scoped_timed_read_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTimedReadWriteLock">ScopedTimedReadWriteLock</link></entry>
- </row>
- <row>
- <entry>scoped_read_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_read_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- </row>
- <row>
- <entry>scoped_timed_read_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link></entry>
- </row>
- <row>
- <entry>scoped_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- </row>
- <row>
- <entry>scoped_timed_write_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
-
- <para>The <classname>timed_read_write_mutex</classname> class uses an
- <link linkend="thread.concepts.read-write-locking-strategies.unspecified">Unspecified</link>
- locking strategy, so attempts to recursively lock a <classname>timed_read_write_mutex</classname>
- object or attempts to unlock one by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.
- This strategy allows implementations to be as efficient as possible
- on any given platform. It is, however, recommended that
- implementations include debugging support to detect misuse when
- <code>NDEBUG</code> is not defined.</para>
-
- <para>Like all
- <link linkend="thread.concepts.read-write-mutex-models">read/write mutex models</link>
- in &Boost.Thread;, <classname>timed_read_write_mutex</classname> has two types of
- <link linkend="thread.concepts.read-write-scheduling-policies">scheduling policies</link>, an
- <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">inter-class sheduling policy</link>
- between threads trying to obtain different types of locks and an
- <link linkend="thread.concepts.read-write-scheduling-policies.intra-class">intra-class sheduling policy</link>
- between threads trying to obtain the same type of lock.
- The <classname>timed_read_write_mutex</classname> class allows the
- programmer to choose what
- <link linkend="thread.concepts.read-write-scheduling-policies.inter-class">inter-class sheduling policy</link>
- will be used; however, like all read/write mutex models,
- <classname>timed_read_write_mutex</classname> leaves the
- <link linkend="thread.concepts.read-write-scheduling-policies.intra-class">intra-class sheduling policy</link> as
- <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>.
- </para>
-
- <note>Self-deadlock is virtually guaranteed if a thread tries to
- lock the same <classname>timed_read_write_mutex</classname> multiple times
- unless all locks are read-locks (but see below)</note>
- </description>
-
- <typedef name="scoped_read_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_read_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_timed_read_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_read_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_read_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_timed_read_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_timed_write_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <parameter name="count">
- <paramtype>boost::read_write_scheduling_policy</paramtype>
- </parameter>
-
- <effects>Constructs a <classname>timed_read_write_mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>timed_read_write_mutex</classname> object.</effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/recursive_mutex-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/recursive_mutex-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,306 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/recursive_mutex.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <class name="recursive_mutex">
- <purpose>
- <para>The <classname>recursive_mutex</classname> class is a model of the
- <link linkend="thread.concepts.Mutex">Mutex</link> concept.</para>
- </purpose>
-
- <description>
- <para>The <classname>recursive_mutex</classname> class is a model of the
- <link linkend="thread.concepts.Mutex">Mutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>recursive_try_mutex</classname> and <classname>recursive_timed_mutex</classname>.</para>
-
- <para>For <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking mechanics, see <classname>mutex</classname>,
- <classname>try_mutex</classname>, and <classname>timed_mutex</classname>.
- </para>
-
- <para>The <classname>recursive_mutex</classname> class supplies the following typedef,
- which models the specified locking strategy:
-
- <table>
- <title>Supported Lock Types</title>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
-
- <para>The <classname>recursive_mutex</classname> class uses a
- <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking strategy, so attempts to recursively lock a
- <classname>recursive_mutex</classname> object
- succeed and an internal "lock count" is maintained.
- Attempts to unlock a <classname>recursive_mutex</classname> object
- by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.</para>
-
- <para>Like all
- <link linkend="thread.concepts.mutex-models">mutex models</link>
- in &Boost.Thread;, <classname>recursive_mutex</classname> leaves the
- <link linkend="thread.concepts.sheduling-policies">scheduling policy</link>
- as <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>.
- Programmers should make no assumptions about the order in which
- waiting threads acquire a lock.</para>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <typedef name="scoped_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <effects>Constructs a <classname>recursive_mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>recursive_mutex</classname> object.</effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
-
- <class name="recursive_try_mutex">
- <purpose>
- <para>The <classname>recursive_try_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TryMutex">TryMutex</link> concept.</para>
- </purpose>
-
- <description>
- <para>The <classname>recursive_try_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TryMutex">TryMutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>recursive_mutex</classname> and <classname>recursive_timed_mutex</classname>.</para>
-
- <para>For <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking mechanics, see <classname>mutex</classname>,
- <classname>try_mutex</classname>, and <classname>timed_mutex</classname>.
- </para>
-
- <para>The <classname>recursive_try_mutex</classname> class supplies the following typedefs,
- which model the specified locking strategies:
-
- <table>
- <title>Supported Lock Types</title>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
-
- <para>The <classname>recursive_try_mutex</classname> class uses a
- <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking strategy, so attempts to recursively lock a
- <classname>recursive_try_mutex</classname> object
- succeed and an internal "lock count" is maintained.
- Attempts to unlock a <classname>recursive_mutex</classname> object
- by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.</para>
-
- <para>Like all
- <link linkend="thread.concepts.mutex-models">mutex models</link>
- in &Boost.Thread;, <classname>recursive_try_mutex</classname> leaves the
- <link linkend="thread.concepts.sheduling-policies">scheduling policy</link>
- as <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>.
- Programmers should make no assumptions about the order in which
- waiting threads acquire a lock.</para>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <typedef name="scoped_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <effects>Constructs a <classname>recursive_try_mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>recursive_try_mutex</classname> object.
- </effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
-
- <class name="recursive_timed_mutex">
- <purpose>
- <para>The <classname>recursive_timed_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TimedMutex">TimedMutex</link> concept.</para>
- </purpose>
-
- <description>
- <para>The <classname>recursive_timed_mutex</classname> class is a model of the
- <link linkend="thread.concepts.TimedMutex">TimedMutex</link> concept.
- It should be used to synchronize access to shared resources using
- <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking mechanics.</para>
-
- <para>For classes that model related mutex concepts, see
- <classname>recursive_mutex</classname> and <classname>recursive_try_mutex</classname>.</para>
-
- <para>For <link linkend="thread.concepts.unspecified-locking-strategy">Unspecified</link>
- locking mechanics, see <classname>mutex</classname>,
- <classname>try_mutex</classname>, and <classname>timed_mutex</classname>.
- </para>
-
- <para>The <classname>recursive_timed_mutex</classname> class supplies the following typedefs,
- which model the specified locking strategies:
-
- <table>
- <title>Supported Lock Types</title>
- <tgroup cols="2" align="left">
- <thead>
- <row>
- <entry>Lock Name</entry>
- <entry>Lock Concept</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>scoped_lock</entry>
- <entry><link linkend="thread.concepts.ScopedLock">ScopedLock</link></entry>
- </row>
- <row>
- <entry>scoped_try_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTryLock">ScopedTryLock</link></entry>
- </row>
- <row>
- <entry>scoped_timed_lock</entry>
- <entry><link linkend="thread.concepts.ScopedTimedLock">ScopedTimedLock</link></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
-
- <para>The <classname>recursive_timed_mutex</classname> class uses a
- <link linkend="thread.concepts.recursive-locking-strategy">Recursive</link>
- locking strategy, so attempts to recursively lock a
- <classname>recursive_timed_mutex</classname> object
- succeed and an internal "lock count" is maintained.
- Attempts to unlock a <classname>recursive_mutex</classname> object
- by threads that don't own a lock on it result in
- <emphasis role="bold">undefined behavior</emphasis>.</para>
-
- <para>Like all
- <link linkend="thread.concepts.mutex-models">mutex models</link>
- in &Boost.Thread;, <classname>recursive_timed_mutex</classname> leaves the
- <link linkend="thread.concepts.sheduling-policies">scheduling policy</link>
- as <link linkend="thread.concepts.unspecified-scheduling-policy">Unspecified</link>.
- Programmers should make no assumptions about the order in which
- waiting threads acquire a lock.</para>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <typedef name="scoped_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_try_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <typedef name="scoped_timed_lock">
- <type><emphasis>implementation-defined</emphasis></type>
- </typedef>
-
- <constructor>
- <effects>Constructs a <classname>recursive_timed_mutex</classname> object.
- </effects>
-
- <postconditions><code>*this</code> is in an unlocked state.
- </postconditions>
- </constructor>
-
- <destructor>
- <effects>Destroys a <classname>recursive_timed_mutex</classname> object.</effects>
-
- <requires><code>*this</code> is in an unlocked state.</requires>
-
- <notes><emphasis role="bold">Danger:</emphasis> Destruction of a
- locked mutex is a serious programming error resulting in undefined
- behavior such as a program crash.</notes>
- </destructor>
- </class>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/reference.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/reference.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<library-reference id="thread.reference"
- last-revision="$Date$"
- xmlns:xi="http://www.w3.org/2001/XInclude">
- <xi:include href="barrier-ref.xml"/>
- <xi:include href="condition-ref.xml"/>
- <xi:include href="exceptions-ref.xml"/>
- <xi:include href="mutex-ref.xml"/>
- <xi:include href="once-ref.xml"/>
- <xi:include href="recursive_mutex-ref.xml"/>
-<!--
- The read_write_mutex is held back from release, since the
- implementation suffers from a serious, yet unresolved bug.
- The implementation is likely to appear in a reworked
- form in the next release.
--->
- <xi:include href="read_write_mutex-ref.xml"/>
- <xi:include href="thread-ref.xml"/>
- <xi:include href="tss-ref.xml"/>
- <xi:include href="xtime-ref.xml"/>
-</library-reference>
Deleted: branches/CMake/release/libs/thread/doc/release_notes.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/release_notes.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<section id="thread.release_notes" last-revision="$Date$">
- <title>Release Notes</title>
- <section id="thread.release_notes.boost_1_34_0">
- <title>Boost 1.34.0</title>
-
- <section id="thread.release_notes.boost_1_34_0.change_log.maintainance">
- <title>New team of maintainers</title>
-
- <para>
- Since the original author William E. Kempf no longer is available to
- maintain the &Boost.Thread; library, a new team has been formed
- in an attempt to continue the work on &Boost.Thread;.
- Fortunately William E. Kempf has given
- <ulink url="http://lists.boost.org/Archives/boost/2006/09/110143.php">
- permission </ulink>
- to use his work under the boost license.
- </para>
- <para>
- The team currently consists of
- <itemizedlist>
- <listitem>
- Anthony Williams, for the Win32 platform,
- </listitem>
- <listitem>
- Roland Schwarz, for the linux platform, and various "housekeeping" tasks.
- </listitem>
- </itemizedlist>
- Volunteers for other platforms are welcome!
- </para>
- <para>
- As the &Boost.Thread; was kind of orphaned over the last release, this release
- attempts to fix the known bugs. Upcoming releases will bring in new things.
- </para>
- </section>
-
- <section id="thread.release_notes.boost_1_34_0.change_log.read_write_mutex">
- <title>read_write_mutex still broken</title>
-
- <para>
- <note>
- It has been decided not to release the Read/Write Mutex, since the current
- implementation suffers from a serious bug. The documentation of the concepts
- has been included though, giving the interested reader an opportunity to study the
- original concepts. Please refer to the following links if you are interested
- which problems led to the decision to held back this mutex type.The issue
- has been discovered before 1.33 was released and the code has
- been omitted from that release. A reworked mutex is expected to appear in 1.35.
- Also see:
- <ulink url="http://lists.boost.org/Archives/boost/2005/08/92307.php">
- read_write_mutex bug</ulink>
- and
- <ulink url="http://lists.boost.org/Archives/boost/2005/09/93180.php">
- read_write_mutex fundamentally broken in 1.33</ulink>
- </note>
- </para>
- </section>
-
- </section>
- <section id="thread.release_notes.boost_1_32_0">
- <title>Boost 1.32.0</title>
-
- <section id="thread.release_notes.boost_1_32_0.change_log.documentation">
- <title>Documentation converted to BoostBook</title>
-
- <para>The documentation was converted to BoostBook format,
- and a number of errors and inconsistencies were
- fixed in the process.
- Since this was a fairly large task, there are likely to be
- more errors and inconsistencies remaining. If you find any,
- please report them!</para>
- </section>
-
- <section id="thread.release_notes.boost_1_32_0.change_log.static_link">
- <title>Statically-link build option added</title>
-
- <para>The option to link &Boost.Thread; as a static
- library has been added (with some limitations on Win32 platforms).
- This feature was originally removed from an earlier version
- of Boost because <classname>boost::thread_specific_ptr</classname>
- required that &Boost.Thread; be dynamically linked in order
- for its cleanup functionality to work on Win32 platforms.
- Because this limitation never applied to non-Win32 platforms,
- because significant progress has been made in removing
- the limitation on Win32 platforms (many thanks to
- Aaron LaFramboise and Roland Scwarz!), and because the lack
- of static linking is one of the most common complaints of
- &Boost.Thread; users, this decision was reversed.</para>
-
- <para>On non-Win32 platforms:
- To choose the dynamically linked version of &Boost.Thread;
- using Boost's auto-linking feature, #define BOOST_THREAD_USE_DLL;
- to choose the statically linked version,
- #define BOOST_THREAD_USE_LIB.
- If neither symbols is #defined, the default will be chosen.
- Currently the default is the statically linked version.</para>
-
- <para>On Win32 platforms using VC++:
- Use the same #defines as for non-Win32 platforms
- (BOOST_THREAD_USE_DLL and BOOST_THREAD_USE_LIB).
- If neither is #defined, the default will be chosen.
- Currently the default is the statically linked version
- if the VC++ run-time library is set to
- "Multi-threaded" or "Multi-threaded Debug", and
- the dynamically linked version
- if the VC++ run-time library is set to
- "Multi-threaded DLL" or "Multi-threaded Debug DLL".</para>
-
- <para>On Win32 platforms using compilers other than VC++:
- Use the same #defines as for non-Win32 platforms
- (BOOST_THREAD_USE_DLL and BOOST_THREAD_USE_LIB).
- If neither is #defined, the default will be chosen.
- Currently the default is the dynamically linked version
- because it has not yet been possible to implement automatic
- tss cleanup in the statically linked version for compilers
- other than VC++, although it is hoped that this will be
- possible in a future version of &Boost.Thread;.
-
- Note for advanced users: &Boost.Thread; provides several "hook"
- functions to allow users to experiment with the statically
- linked version on Win32 with compilers other than VC++.
- These functions are on_process_enter(), on_process_exit(),
- on_thread_enter(), and on_thread_exit(), and are defined
- in tls_hooks.cpp. See the comments in that file for more
- information.</para>
- </section>
-
- <section id="thread.release_notes.boost_1_32_0.change_log.barrier">
- <title>Barrier functionality added</title>
-
- <para>A new class, <classname>boost::barrier</classname>, was added.</para>
- </section>
-
- <section id="thread.release_notes.boost_1_32_0.change_log.read_write_mutex">
- <title>Read/write mutex functionality added</title>
-
- <para>New classes,
- <classname>boost::read_write_mutex</classname>,
- <classname>boost::try_read_write_mutex</classname>, and
- <classname>boost::timed_read_write_mutex</classname>
- were added.
-
- <note>Since the read/write mutex and related classes are new,
- both interface and implementation are liable to change
- in future releases of &Boost.Thread;.
- The lock concepts and lock promotion in particular are
- still under discussion and very likely to change.</note>
- </para>
- </section>
-
- <section id="thread.release_notes.boost_1_32_0.change_log.thread_specific_ptr">
- <title>Thread-specific pointer functionality changed</title>
-
- <para>The <classname>boost::thread_specific_ptr</classname>
- constructor now takes an optional pointer to a cleanup function that
- is called to release the thread-specific data that is being pointed
- to by <classname>boost::thread_specific_ptr</classname> objects.</para>
-
- <para>Fixed: the number of available thread-specific storage "slots"
- is too small on some platforms.</para>
-
- <para>Fixed: <functionname>thread_specific_ptr::reset()</functionname>
- doesn't check error returned by <functionname>tss::set()</functionname>
- (the <functionname>tss::set()</functionname> function now throws
- if it fails instead of returning an error code).</para>
-
- <para>Fixed: calling
- <functionname>boost::thread_specific_ptr::reset()</functionname> or
- <functionname>boost::thread_specific_ptr::release()</functionname>
- causes double-delete: once when
- <functionname>boost::thread_specific_ptr::reset()</functionname> or
- <functionname>boost::thread_specific_ptr::release()</functionname>
- is called and once when
- <functionname>boost::thread_specific_ptr::~thread_specific_ptr()</functionname>
- is called.</para>
- </section>
-
- <section id="thread.release_notes.boost_1_32_0.change_log.mutex">
- <title>Mutex implementation changed for Win32</title>
-
- <para>On Win32, <classname>boost::mutex</classname>,
- <classname>boost::try_mutex</classname>, <classname>boost::recursive_mutex</classname>,
- and <classname>boost::recursive_try_mutex</classname> now use a Win32 critical section
- whenever possible; otherwise they use a Win32 mutex. As before,
- <classname>boost::timed_mutex</classname> and
- <classname>boost::recursive_timed_mutex</classname> use a Win32 mutex.</para>
- </section>
-
- <section id="thread.release_notes.boost_1_32_0.change_log.wince">
- <title>Windows CE support improved</title>
-
- <para>Minor changes were made to make Boost.Thread work on Windows CE.</para>
- </section>
- </section>
-</section>
Deleted: branches/CMake/release/libs/thread/doc/thread-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/thread-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,270 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/thread.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <class name="thread">
- <purpose>
- <para>The <classname>thread</classname> class represents threads of
- execution, and provides the functionality to create and manage
- threads within the &Boost.Thread; library. See
- <xref linkend="thread.glossary"/> for a precise description of
- <link linkend="thread.glossary.thread">thread of execution</link>,
- and for definitions of threading-related terms and of thread states such as
- <link linkend="thread.glossary.thread-state">blocked</link>.</para>
- </purpose>
-
- <description>
- <para>A <link linkend="thread.glossary.thread">thread of execution</link>
- has an initial function. For the program's initial thread, the initial
- function is <code>main()</code>. For other threads, the initial
- function is <code>operator()</code> of the function object passed to
- the <classname>thread</classname> object's constructor.</para>
-
- <para>A thread of execution is said to be "finished"
- or to have "finished execution" when its initial function returns or
- is terminated. This includes completion of all thread cleanup
- handlers, and completion of the normal C++ function return behaviors,
- such as destruction of automatic storage (stack) objects and releasing
- any associated implementation resources.</para>
-
- <para>A thread object has an associated state which is either
- "joinable" or "non-joinable".</para>
-
- <para>Except as described below, the policy used by an implementation
- of &Boost.Thread; to schedule transitions between thread states is
- unspecified.</para>
-
- <para><note>Just as the lifetime of a file may be different from the
- lifetime of an <code>iostream</code> object which represents the file, the lifetime
- of a thread of execution may be different from the
- <classname>thread</classname> object which represents the thread of
- execution. In particular, after a call to <code>join()</code>,
- the thread of execution will no longer exist even though the
- <classname>thread</classname> object continues to exist until the
- end of its normal lifetime. The converse is also possible; if
- a <classname>thread</classname> object is destroyed without
- <code>join()</code> first having been called, the thread of execution
- continues until its initial function completes.</note></para>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <constructor>
- <effects>Constructs a <classname>thread</classname> object
- representing the current thread of execution.</effects>
-
- <postconditions><code>*this</code> is non-joinable.</postconditions>
-
- <notes><emphasis role="bold">Danger:</emphasis>
- <code>*this</code> is valid only within the current thread.</notes>
- </constructor>
-
- <constructor specifiers="explicit">
- <parameter name="threadfunc">
- <paramtype>const boost::function0<void>&</paramtype>
- </parameter>
-
- <effects>
- Starts a new thread of execution and constructs a
- <classname>thread</classname> object representing it.
- Copies <code>threadfunc</code> (which in turn copies
- the function object wrapped by <code>threadfunc</code>)
- to an internal location which persists for the lifetime
- of the new thread of execution. Calls <code>operator()</code>
- on the copy of the <code>threadfunc</code> function object
- in the new thread of execution.
- </effects>
-
- <postconditions><code>*this</code> is joinable.</postconditions>
-
- <throws><code>boost::thread_resource_error</code> if a new thread
- of execution cannot be started.</throws>
- </constructor>
-
- <destructor>
- <effects>Destroys <code>*this</code>. The actual thread of
- execution may continue to execute after the
- <classname>thread</classname> object has been destroyed.
- </effects>
-
- <notes>If <code>*this</code> is joinable the actual thread
- of execution becomes "detached". Any resources used
- by the thread will be reclaimed when the thread of execution
- completes. To ensure such a thread of execution runs to completion
- before the <classname>thread</classname> object is destroyed, call
- <code>join()</code>.</notes>
- </destructor>
-
- <method-group name="comparison">
- <method name="operator==" cv="const">
- <type>bool</type>
-
- <parameter name="rhs">
- <type>const thread&</type>
- </parameter>
-
- <requires>The thread is non-terminated or <code>*this</code>
- is joinable.</requires>
-
- <returns><code>true</code> if <code>*this</code> and
- <code>rhs</code> represent the same thread of
- execution.</returns>
- </method>
-
- <method name="operator!=" cv="const">
- <type>bool</type>
-
- <parameter name="rhs">
- <type>const thread&</type>
- </parameter>
-
- <requires>The thread is non-terminated or <code>*this</code>
- is joinable.</requires>
-
- <returns><code>!(*this==rhs)</code>.</returns>
- </method>
- </method-group>
-
- <method-group name="modifier">
- <method name="join">
- <type>void</type>
-
- <requires><code>*this</code> is joinable.</requires>
-
- <effects>The current thread of execution blocks until the
- initial function of the thread of execution represented by
- <code>*this</code> finishes and all resources are
- reclaimed.</effects>
-
- <postcondition><code>*this</code> is non-joinable.</postcondition>
-
- <notes>If <code>*this == thread()</code> the result is
- implementation-defined. If the implementation doesn't
- detect this the result will be
- <link linkend="thread.glossary.deadlock">deadlock</link>.
- </notes>
- </method>
- </method-group>
-
- <method-group name="static">
- <method name="sleep" specifiers="static">
- <type>void</type>
-
- <parameter name="xt">
- <paramtype>const <classname>xtime</classname>&</paramtype>
- </parameter>
-
- <effects>The current thread of execution blocks until
- <code>xt</code> is reached.</effects>
- </method>
-
- <method name="yield" specifiers="static">
- <type>void</type>
-
- <effects>The current thread of execution is placed in the
- <link linkend="thread.glossary.thread-state">ready</link>
- state.</effects>
-
- <notes>
- <simpara>Allow the current thread to give up the rest of its
- time slice (or other scheduling quota) to another thread.
- Particularly useful in non-preemptive implementations.</simpara>
- </notes>
- </method>
- </method-group>
- </class>
-
- <class name="thread_group">
- <purpose>
- The <classname>thread_group</classname> class provides a container
- for easy grouping of threads to simplify several common thread
- creation and management idioms.
- </purpose>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
-
- <constructor>
- <effects>Constructs an empty <classname>thread_group</classname>
- container.</effects>
- </constructor>
-
- <destructor>
- <effects>Destroys each contained thread object. Destroys <code>*this</code>.</effects>
-
- <notes>Behavior is undefined if another thread references
- <code>*this </code> during the execution of the destructor.
- </notes>
- </destructor>
-
- <method-group name="modifier">
- <method name="create_thread">
- <type><classname>thread</classname>*</type>
-
- <parameter name="threadfunc">
- <paramtype>const boost::function0<void>&</paramtype>
- </parameter>
-
- <effects>Creates a new <classname>thread</classname> object
- that executes <code>threadfunc</code> and adds it to the
- <code>thread_group</code> container object's list of managed
- <classname>thread</classname> objects.</effects>
-
- <returns>Pointer to the newly created
- <classname>thread</classname> object.</returns>
- </method>
-
- <method name="add_thread">
- <type>void</type>
-
- <parameter name="thrd">
- <paramtype><classname>thread</classname>*</paramtype>
- </parameter>
-
- <effects>Adds <code>thrd</code> to the
- <classname>thread_group</classname> object's list of managed
- <classname>thread</classname> objects. The <code>thrd</code>
- object must have been allocated via <code>operator new</code> and will
- be deleted when the group is destroyed.</effects>
- </method>
-
- <method name="remove_thread">
- <type>void</type>
-
- <parameter name="thrd">
- <paramtype><classname>thread</classname>*</paramtype>
- </parameter>
-
- <effects>Removes <code>thread</code> from <code>*this</code>'s
- list of managed <classname>thread</classname> objects.</effects>
-
- <throws><emphasis role="bold">???</emphasis> if
- <code>thrd</code> is not in <code>*this</code>'s list
- of managed <classname>thread</classname> objects.</throws>
- </method>
-
- <method name="join_all">
- <type>void</type>
-
- <effects>Calls <code>join()</code> on each of the managed
- <classname>thread</classname> objects.</effects>
- </method>
- </method-group>
- </class>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/thread.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/thread.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<library name="Thread" dirname="thread" id="thread"
-last-revision="$Date$"
-xmlns:xi="http://www.w3.org/2001/XInclude">
- <libraryinfo>
- <author>
- <firstname>William</firstname>
- <othername>E.</othername>
- <surname>Kempf</surname>
- </author>
- <copyright>
- <year>2001</year>
- <year>2002</year>
- <year>2003</year>
- <holder>William E. Kempf</holder>
- </copyright>
- <legalnotice>
- <para>Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)</para>
- </legalnotice>
- <librarypurpose>Portable C++ multi-threading</librarypurpose>
- <librarycategory name="category:concurrent" />
- <title>Boost.Thread</title>
- </libraryinfo>
- <title>Boost.Thread</title>
- <xi:include href="overview.xml"/>
- <xi:include href="design.xml"/>
- <xi:include href="concepts.xml"/>
- <xi:include href="rationale.xml"/>
- <xi:include href="reference.xml"/>
- <xi:include href="faq.xml"/>
- <xi:include href="configuration.xml"/>
- <xi:include href="build.xml"/>
- <xi:include href="implementation_notes.xml"/>
- <xi:include href="release_notes.xml"/>
- <xi:include href="glossary.xml"/>
- <xi:include href="acknowledgements.xml"/>
- <xi:include href="bibliography.xml"/>
-</library>
Deleted: branches/CMake/release/libs/thread/doc/tss-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/tss-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/tss.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <class name="thread_specific_ptr">
- <purpose>
- The <classname>thread_specific_ptr</classname> class defines
- an interface for using thread specific storage.
- </purpose>
-
- <description>
- <para>Thread specific storage is data associated with
- individual threads and is often used to make operations
- that rely on global data
- <link linkend="thread.glossary.thread-safe">thread-safe</link>.
- </para>
-
- <para>Template <classname>thread_specific_ptr</classname>
- stores a pointer to an object obtained on a thread-by-thread
- basis and calls a specified cleanup handler on the contained
- pointer when the thread terminates. The cleanup handlers are
- called in the reverse order of construction of the
- <classname>thread_specific_ptr</classname>s, and for the
- initial thread are called by the destructor, providing the
- same ordering guarantees as for normal declarations. Each
- thread initially stores the null pointer in each
- <classname>thread_specific_ptr</classname> instance.</para>
-
- <para>The template <classname>thread_specific_ptr</classname>
- is useful in the following cases:
- <itemizedlist>
- <listitem>An interface was originally written assuming
- a single thread of control and it is being ported to a
- multithreaded environment.</listitem>
-
- <listitem>Each thread of control invokes sequences of
- methods that share data that are physically unique
- for each thread, but must be logically accessed
- through a globally visible access point instead of
- being explicitly passed.</listitem>
- </itemizedlist>
- </para>
- </description>
-
- <inherit access="private">
- <type><classname>boost::noncopyable</classname></type>
- <purpose>Exposition only</purpose>
- </inherit>
-
- <constructor>
- <requires>The expression <code>delete get()</code> is well
- formed.</requires>
-
- <effects>A thread-specific data key is allocated and visible to
- all threads in the process. Upon creation, the value
- <code>NULL</code> will be associated with the new key in all
- active threads. A cleanup method is registered with the key
- that will call <code>delete</code> on the value associated
- with the key for a thread when it exits. When a thread exits,
- if a key has a registered cleanup method and the thread has a
- non-<code>NULL</code> value associated with that key, the value
- of the key is set to <code>NULL</code> and then the cleanup
- method is called with the previously associated value as its
- sole argument. The order in which registered cleanup methods
- are called when a thread exits is undefined. If after all the
- cleanup methods have been called for all non-<code>NULL</code>
- values, there are still some non-<code>NULL</code> values
- with associated cleanup handlers the result is undefined
- behavior.</effects>
-
- <throws><classname>boost::thread_resource_error</classname> if
- the necessary resources can not be obtained.</throws>
-
- <notes>There may be an implementation specific limit to the
- number of thread specific storage objects that can be created,
- and this limit may be small.</notes>
-
- <rationale>The most common need for cleanup will be to call
- <code>delete</code> on the associated value. If other forms
- of cleanup are required the overloaded constructor should be
- called instead.</rationale>
- </constructor>
-
- <constructor>
- <parameter name="cleanup">
- <paramtype>void (*cleanup)(void*)</paramtype>
- </parameter>
-
- <effects>A thread-specific data key is allocated and visible to
- all threads in the process. Upon creation, the value
- <code>NULL</code> will be associated with the new key in all
- active threads. The <code>cleanup</code> method is registered
- with the key and will be called for a thread with the value
- associated with the key for that thread when it exits. When a
- thread exits, if a key has a registered cleanup method and the
- thread has a non-<code>NULL</code> value associated with that
- key, the value of the key is set to <code>NULL</code> and then
- the cleanup method is called with the previously associated
- value as its sole argument. The order in which registered
- cleanup methods are called when a thread exits is undefined.
- If after all the cleanup methods have been called for all
- non-<code>NULL</code> values, there are still some
- non-<code>NULL</code> values with associated cleanup handlers
- the result is undefined behavior.</effects>
-
- <throws><classname>boost::thread_resource_error</classname> if
- the necessary resources can not be obtained.</throws>
-
- <notes>There may be an implementation specific limit to the
- number of thread specific storage objects that can be created,
- and this limit may be small.</notes>
-
- <rationale>There is the occasional need to register
- specialized cleanup methods, or to register no cleanup method
- at all (done by passing <code>NULL</code> to this constructor.
- </rationale>
- </constructor>
-
- <destructor>
- <effects>Deletes the thread-specific data key allocated by the
- constructor. The thread-specific data values associated with
- the key need not be <code>NULL</code>. It is the responsibility
- of the application to perform any cleanup actions for data
- associated with the key.</effects>
-
- <notes>Does not destroy any data that may be stored in any
- thread's thread specific storage. For this reason you should
- not destroy a <classname>thread_specific_ptr</classname> object
- until you are certain there are no threads running that have
- made use of its thread specific storage.</notes>
-
- <rationale>Associated data is not cleaned up because registered
- cleanup methods need to be run in the thread that allocated the
- associated data to be guarranteed to work correctly. There's no
- safe way to inject the call into another thread's execution
- path, making it impossible to call the cleanup methods safely.
- </rationale>
- </destructor>
-
- <method-group name="modifier functions">
- <method name="release">
- <type>T*</type>
-
- <postconditions><code>*this</code> holds the null pointer
- for the current thread.</postconditions>
-
- <returns><code>this->get()</code> prior to the call.</returns>
-
- <rationale>This method provides a mechanism for the user to
- relinquish control of the data associated with the
- thread-specific key.</rationale>
- </method>
-
- <method name="reset">
- <type>void</type>
-
- <parameter name="p">
- <paramtype>T*</paramtype>
- <default>0</default>
- </parameter>
-
- <effects>If <code>this->get() != p &&
- this->get() != NULL</code> then call the
- associated cleanup function.</effects>
-
- <postconditions><code>*this</code> holds the pointer
- <code>p</code> for the current thread.</postconditions>
- </method>
- </method-group>
-
- <method-group name="observer functions">
- <method name="get" cv="const">
- <type>T*</type>
-
- <returns>The object stored in thread specific storage for
- the current thread for <code>*this</code>.</returns>
-
- <notes>Each thread initially returns 0.</notes>
- </method>
-
- <method name="operator->" cv="const">
- <type>T*</type>
-
- <returns><code>this->get()</code>.</returns>
- </method>
-
- <method name="operator*()" cv="const">
- <type>T&</type>
-
- <requires><code>this->get() != 0</code></requires>
-
- <returns><code>this->get()</code>.</returns>
- </method>
- </method-group>
- </class>
- </namespace>
-</header>
Deleted: branches/CMake/release/libs/thread/doc/xtime-ref.xml
==============================================================================
--- branches/CMake/release/libs/thread/doc/xtime-ref.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [
- <!ENTITY % thread.entities SYSTEM "entities.xml">
- %thread.entities;
-]>
-<!-- Copyright (c) 2002-2003 William E. Kempf, Michael Glassford
- Subject to the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
--->
-<header name="boost/thread/xtime.hpp"
- last-revision="$Date$">
- <namespace name="boost">
- <enum name="xtime_clock_types">
- <enumvalue name="TIME_UTC" />
-
- <purpose>
- <para>Specifies the clock type to use when creating
- an object of type <classname>xtime</classname>.</para>
- </purpose>
-
- <description>
- <para>The only clock type supported by &Boost.Thread; is
- <code>TIME_UTC</code>. The epoch for <code>TIME_UTC</code>
- is 1970-01-01 00:00:00.</para>
- </description>
- </enum>
-
- <struct name="xtime">
- <purpose>
- <simpara>An object of type <classname>xtime</classname>
- defines a time that is used to perform high-resolution time operations.
- This is a temporary solution that will be replaced by a more robust time
- library once available in Boost.</simpara>
- </purpose>
-
- <description>
- <simpara>The <classname>xtime</classname> type is used to represent a point on
- some time scale or a duration in time. This type may be proposed for the C standard by
- Markus Kuhn. &Boost.Thread; provides only a very minimal implementation of this
- proposal; it is expected that a full implementation (or some other time
- library) will be provided in Boost as a separate library, at which time &Boost.Thread;
- will deprecate its own implementation.</simpara>
-
- <simpara><emphasis role="bold">Note</emphasis> that the resolution is
- implementation specific. For many implementations the best resolution
- of time is far more than one nanosecond, and even when the resolution
- is reasonably good, the latency of a call to <code>xtime_get()</code>
- may be significant. For maximum portability, avoid durations of less than
- one second.</simpara>
- </description>
-
- <free-function-group name="creation">
- <function name="xtime_get">
- <type>int</type>
-
- <parameter name="xtp">
- <paramtype><classname>xtime</classname>*</paramtype>
- </parameter>
-
- <parameter name="clock_type">
- <paramtype>int</paramtype>
- </parameter>
-
- <postconditions>
- <simpara><code>xtp</code> represents the current point in
- time as a duration since the epoch specified by
- <code>clock_type</code>.</simpara>
- </postconditions>
-
- <returns>
- <simpara><code>clock_type</code> if successful, otherwise 0.</simpara>
- </returns>
- </function>
- </free-function-group>
-
- <data-member name="sec">
- <type><emphasis>platform-specific-type</emphasis></type>
- </data-member>
- </struct>
- </namespace>
-</header>
Modified: branches/CMake/release/libs/thread/src/pthread/thread.cpp
==============================================================================
--- branches/CMake/release/libs/thread/src/pthread/thread.cpp (original)
+++ branches/CMake/release/libs/thread/src/pthread/thread.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -683,7 +683,7 @@
}
- int thread_group::size() const
+ size_t thread_group::size() const
{
return m_threads.size();
}
Modified: branches/CMake/release/libs/thread/src/win32/tss_pe.cpp
==============================================================================
--- branches/CMake/release/libs/thread/src/win32/tss_pe.cpp (original)
+++ branches/CMake/release/libs/thread/src/win32/tss_pe.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -164,6 +164,10 @@
#endif
#endif
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4189)
+#endif
PVAPI on_tls_prepare(void)
{
//The following line has an important side effect:
@@ -201,6 +205,9 @@
return INIRETSUCCESS;
}
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
PVAPI on_process_init(void)
{
@@ -228,7 +235,7 @@
return INIRETSUCCESS;
}
- void NTAPI on_tls_callback(HINSTANCE h, DWORD dwReason, PVOID pv)
+ void NTAPI on_tls_callback(HINSTANCE /*h*/, DWORD dwReason, PVOID /*pv*/)
{
switch (dwReason)
{
Modified: branches/CMake/release/libs/thread/test/condition_test_common.hpp
==============================================================================
--- branches/CMake/release/libs/thread/test/condition_test_common.hpp (original)
+++ branches/CMake/release/libs/thread/test/condition_test_common.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -34,6 +34,8 @@
{
return flag;
}
+ private:
+ void operator=(check_flag&);
};
Modified: branches/CMake/release/libs/thread/test/shared_mutex_locking_thread.hpp
==============================================================================
--- branches/CMake/release/libs/thread/test/shared_mutex_locking_thread.hpp (original)
+++ branches/CMake/release/libs/thread/test/shared_mutex_locking_thread.hpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,6 +1,12 @@
#ifndef SHARED_MUTEX_LOCKING_THREAD_HPP
#define SHARED_MUTEX_LOCKING_THREAD_HPP
+// (C) Copyright 2008 Anthony Williams
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
#include <boost/thread/mutex.hpp>
#include <boost/thread/condition_variable.hpp>
#include <boost/thread/shared_mutex.hpp>
@@ -56,6 +62,8 @@
--simultaneous_running_count;
}
}
+private:
+ void operator=(locking_thread&);
};
Modified: branches/CMake/release/libs/thread/test/test_condition.cpp
==============================================================================
--- branches/CMake/release/libs/thread/test/test_condition.cpp (original)
+++ branches/CMake/release/libs/thread/test/test_condition.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -43,6 +43,9 @@
int& _var;
int _val;
+private:
+ void operator=(cond_predicate&);
+
};
void condition_test_waits(condition_test_data* data)
Modified: branches/CMake/release/libs/thread/test/test_shared_mutex_part_2.cpp
==============================================================================
--- branches/CMake/release/libs/thread/test/test_shared_mutex_part_2.cpp (original)
+++ branches/CMake/release/libs/thread/test/test_shared_mutex_part_2.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -116,6 +116,8 @@
boost::mutex& unblocked_mutex;
unsigned& unblocked_count;
+ void operator=(simple_writing_thread&);
+
public:
simple_writing_thread(boost::shared_mutex& rwm_,
boost::mutex& finish_mutex_,
@@ -182,6 +184,8 @@
boost::mutex& unblocked_mutex;
unsigned& unblocked_count;
+ void operator=(simple_reading_thread&);
+
public:
simple_reading_thread(boost::shared_mutex& rwm_,
boost::mutex& finish_mutex_,
Modified: branches/CMake/release/libs/thread/test/test_tss.cpp
==============================================================================
--- branches/CMake/release/libs/thread/test/test_tss.cpp (original)
+++ branches/CMake/release/libs/thread/test/test_tss.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -66,7 +66,7 @@
#if defined(BOOST_THREAD_PLATFORM_WIN32)
typedef HANDLE native_thread_t;
- DWORD WINAPI test_tss_thread_native(LPVOID lpParameter)
+ DWORD WINAPI test_tss_thread_native(LPVOID /*lpParameter*/)
{
test_tss_thread();
return 0;
@@ -228,6 +228,41 @@
timed_test(&do_test_tss_with_custom_cleanup, 2);
}
+Dummy* tss_object=new Dummy;
+
+void tss_thread_with_custom_cleanup_and_release()
+{
+ tss_with_cleanup.reset(tss_object);
+ tss_with_cleanup.release();
+}
+
+void do_test_tss_does_no_cleanup_after_release()
+{
+ tss_cleanup_called=false;
+ boost::thread t(tss_thread_with_custom_cleanup_and_release);
+ try
+ {
+ t.join();
+ }
+ catch(...)
+ {
+ t.interrupt();
+ t.join();
+ throw;
+ }
+
+ BOOST_CHECK(!tss_cleanup_called);
+ if(!tss_cleanup_called)
+ {
+ delete tss_object;
+ }
+}
+
+void test_tss_does_no_cleanup_after_release()
+{
+ timed_test(&do_test_tss_does_no_cleanup_after_release, 2);
+}
+
boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])
{
boost::unit_test_framework::test_suite* test =
@@ -235,6 +270,7 @@
test->add(BOOST_TEST_CASE(test_tss));
test->add(BOOST_TEST_CASE(test_tss_with_custom_cleanup));
+ test->add(BOOST_TEST_CASE(test_tss_does_no_cleanup_after_release));
return test;
}
Modified: branches/CMake/release/libs/thread/test/util.inl
==============================================================================
--- branches/CMake/release/libs/thread/test/util.inl (original)
+++ branches/CMake/release/libs/thread/test/util.inl 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -1,6 +1,6 @@
// Copyright (C) 2001-2003
// William E. Kempf
-// Copyright (C) 2007 Anthony Williams
+// Copyright (C) 2007-8 Anthony Williams
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -123,6 +123,7 @@
private:
F func;
execution_monitor& monitor;
+ void operator=(indirect_adapter&);
};
template <typename F>
@@ -165,6 +166,8 @@
void operator()() const { (param.*func)(); }
private:
+ void operator=(thread_member_binder&);
+
R (T::*func)();
T& param;
};
Modified: branches/CMake/release/libs/xpressive/doc/actions.qbk
==============================================================================
--- branches/CMake/release/libs/xpressive/doc/actions.qbk (original)
+++ branches/CMake/release/libs/xpressive/doc/actions.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -66,6 +66,9 @@
one and use it to index into the `results` map, and assign to it the result of
converting sub-match 2 to an integer.
+[note To use semantic actions with your static regexes, you must
+`#include <boost/xpressive/regex_actions.hpp>`]
+
How does this work? Just as the rest of the static regular expression, the part
between brackets is an expression template. It encodes the action and executes
it later. The expression `ref(result)` creates a lazy reference to the `result`
@@ -202,7 +205,7 @@
// OK, use as first(s1) to get the begin iterator
// of the sub-match referred to by s1.
- function<first_impl> const first = {{}};
+ function<first_impl>::type const first = {{}};
[h3 Referring to Local Variables]
Modified: branches/CMake/release/libs/xpressive/doc/history.qbk
==============================================================================
--- branches/CMake/release/libs/xpressive/doc/history.qbk (original)
+++ branches/CMake/release/libs/xpressive/doc/history.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -7,7 +7,7 @@
[section Appendix 1: History]
-[h2 Version 2.0.0, ????]
+[h2 Version 2.0.0, 10/12/2007]
New Features:
Modified: branches/CMake/release/libs/xpressive/doc/installation.qbk
==============================================================================
--- branches/CMake/release/libs/xpressive/doc/installation.qbk (original)
+++ branches/CMake/release/libs/xpressive/doc/installation.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -35,6 +35,9 @@
Likewise, you can include `xpressive_dynamic.hpp` if you only plan on using
dynamic regexes.
+If you would also like to use semantic actions or custom assertions with your
+static regexes, you will need to additionally include `regex_actions.hpp`.
+
[h2 Requirements]
Xpressive requires Boost version 1.34.1 or higher.
Modified: branches/CMake/release/libs/xpressive/doc/introduction.qbk
==============================================================================
--- branches/CMake/release/libs/xpressive/doc/introduction.qbk (original)
+++ branches/CMake/release/libs/xpressive/doc/introduction.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -9,16 +9,18 @@
[h2 What is xpressive?]
-xpressive is an object-oriented regular expression library. Regular expressions
+xpressive is a regular expression template library. Regular expressions
(regexes) can be written as strings that are parsed dynamically at runtime
-(dynamic regexes), or as expression templates that are parsed at compile-time
-(static regexes). Dynamic regexes have the advantage that they can be accepted
-from the user as input at runtime or read from an initialization file. Static
-regexes have several advantages. Since they are C++ expressions instead of
-strings, they can be syntax-checked at compile-time. Also, they can refer to
-other regexes and to themselves, giving static regexes the power
-of context-free grammars. Finally, since they are statically bound,
-the compiler can generate faster code for static regexes.
+(dynamic regexes), or as ['expression templates][footnote See
+[@http://www.osl.iu.edu/~tveldhui/papers/Expression-Templates/exprtmpl.html
+Expression Templates]] that are parsed at compile-time (static regexes).
+Dynamic regexes have the advantage that they can be accepted from the user
+as input at runtime or read from an initialization file. Static regexes
+have several advantages. Since they are C++ expressions instead of
+strings, they can be syntax-checked at compile-time. Also, they can naturally
+refer to code and data elsewhere in your program, giving you the ability to call
+back into your code from within a regex match. Finally, since they are statically
+bound, the compiler can generate faster code for static regexes.
xpressive's dual nature is unique and powerful. Static xpressive is a bit
like the _spirit_fx_. Like _spirit_, you can build grammars with
@@ -28,9 +30,9 @@
xpressive's interface should be familiar to anyone who has used _regexpp_.
xpressive's innovation comes from allowing you to mix and match static and
dynamic regexes in the same program, and even in the same expression! You
-can embed a dynamic regex in a static regex, and the dynamic regex will
-participate fully in the search, back-tracking as needed to make the match
-succeed.
+can embed a dynamic regex in a static regex, or /vice versa/, and the embedded
+regex will participate fully in the search, back-tracking as needed to make
+the match succeed.
[h2 Hello, world!]
Modified: branches/CMake/release/libs/xpressive/doc/matching.qbk
==============================================================================
--- branches/CMake/release/libs/xpressive/doc/matching.qbk (original)
+++ branches/CMake/release/libs/xpressive/doc/matching.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -22,10 +22,11 @@
want to search through the string looking for sub-strings that the regex matches, use the _regex_search_
algorithm.]
-The input can be a `std::string`, a C-style null-terminated string or a pair of iterators. In all cases,
-the type of the iterator used to traverse the input sequence must match the iterator type used to declare
-the regex object. (You can use the table in the [link boost_xpressive.user_s_guide.quick_start.know_your_iterator_type Quick Start] to
-find the correct regex type for your iterator.)
+The input can be a bidirectional range such as `std::string`, a C-style null-terminated string or a pair of
+iterators. In all cases, the type of the iterator used to traverse the input sequence must match the iterator
+type used to declare the regex object. (You can use the table in the
+[link boost_xpressive.user_s_guide.quick_start.know_your_iterator_type Quick Start] to find the correct regex
+type for your iterator.)
cregex cre = +_w; // this regex can match C-style strings
sregex sre = +_w; // this regex can match std::strings
@@ -65,9 +66,9 @@
// should never get here!!!
}
-Click [link boost_xpressive.user_s_guide.examples.see_if_a_whole_string_matches_a_regex here] to see a complete example program that
-shows how to use _regex_match_. And check the _regex_match_ reference to see a complete list of the available
-overloads.
+Click [link boost_xpressive.user_s_guide.examples.see_if_a_whole_string_matches_a_regex here] to see a complete
+example program that shows how to use _regex_match_. And check the _regex_match_ reference to see a complete list
+of the available overloads.
[h2 Searching for Matching Sub-Strings]
@@ -75,14 +76,14 @@
_regex_search_ will try to match the regex at the beginning of the input sequence and scan forward in the
sequence until it either finds a match or exhausts the sequence.
-In all other regards, _regex_search_ behaves like _regex_match_ ['(see above)]. In particular, it can operate on `std::string`,
-C-style null-terminated strings or iterator ranges. The same care must be taken to ensure that the iterator
-type of your regex matches the iterator type of your input sequence. As with _regex_match_, you can optionally
-provide a _match_results_ struct to receive the results of the search, and a _match_flag_type_ bitmask to
-control how the match is evaluated.
-
-Click [link boost_xpressive.user_s_guide.examples.see_if_a_string_contains_a_sub_string_that_matches_a_regex here] to see a complete
-example program that shows how to use _regex_search_. And check the _regex_search_ reference to see a complete
-list of the available overloads.
+In all other regards, _regex_search_ behaves like _regex_match_ ['(see above)]. In particular, it can operate
+on a bidirectional range such as `std::string`, C-style null-terminated strings or iterator ranges. The same
+care must be taken to ensure that the iterator type of your regex matches the iterator type of your input
+sequence. As with _regex_match_, you can optionally provide a _match_results_ struct to receive the results
+of the search, and a _match_flag_type_ bitmask to control how the match is evaluated.
+
+Click [link boost_xpressive.user_s_guide.examples.see_if_a_string_contains_a_sub_string_that_matches_a_regex here]
+to see a complete example program that shows how to use _regex_search_. And check the _regex_search_ reference to
+see a complete list of the available overloads.
[endsect]
Modified: branches/CMake/release/libs/xpressive/doc/static_regexes.qbk
==============================================================================
--- branches/CMake/release/libs/xpressive/doc/static_regexes.qbk (original)
+++ branches/CMake/release/libs/xpressive/doc/static_regexes.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -19,7 +19,7 @@
* are syntax-checked at compile-time; they will never fail at run-time due to
a syntax error.
* can naturally refer to other C++ data and code, including other regexes,
- making it possible to build grammars out of regular expressions and bind
+ making it simple to build grammars out of regular expressions and bind
user-defined actions that execute when parts of your regex match.
* are statically bound for better inlining and optimization. Static regexes
require no state tables, virtual functions, byte-code or calls through
Modified: branches/CMake/release/libs/xpressive/doc/substitutions.qbk
==============================================================================
--- branches/CMake/release/libs/xpressive/doc/substitutions.qbk (original)
+++ branches/CMake/release/libs/xpressive/doc/substitutions.qbk 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -7,8 +7,8 @@
[section String Substitutions]
-Regular expressions are not only good for searching text; they're good at ['manipulating] it. And one of the most
-common text manipulation tasks is search-and-replace. xpressive provides the _regex_replace_ algorithm for
+Regular expressions are not only good for searching text; they're good at ['manipulating] it. And one of the
+most common text manipulation tasks is search-and-replace. xpressive provides the _regex_replace_ algorithm for
searching and replacing.
[h2 regex_replace()]
@@ -40,19 +40,40 @@
Notice that ['all] the occurrences of `"his"` have been replaced with `"her"`.
-Click [link boost_xpressive.user_s_guide.examples.replace_all_sub_strings_that_match_a_regex here] to see a complete
-example program that shows how to use _regex_replace_. And check the _regex_replace_ reference
+Click [link boost_xpressive.user_s_guide.examples.replace_all_sub_strings_that_match_a_regex here] to see
+a complete example program that shows how to use _regex_replace_. And check the _regex_replace_ reference
to see a complete list of the available overloads.
-[h2 The Format String]
+[h2 Replace Options]
-As with Perl, you can refer to sub-matches in the format string. The table below shows the escape sequences
-xpressive recognizes in the format string.
+The _regex_replace_ algorithm takes an optional bitmask parameter to control the formatting. The
+possible values of the bitmask are:
+
+[table Format Flags
+ [[Flag] [Meaning]]
+ [[`format_default`] [Recognize the ECMA-262 format sequences (see below).]]
+ [[`format_first_only`] [Only replace the first match, not all of them.]]
+ [[`format_no_copy`] [Don't copy the parts of the input sequence that didn't match the regex
+ to the output sequence.]]
+ [[`format_literal`] [Treat the format string as a literal; that is, don't recognize any
+ escape sequences.]]
+ [[`format_perl`] [Recognize the Perl format sequences (see below).]]
+ [[`format_sed`] [Recognize the sed format sequences (see below).]]
+ [[`format_all`] [In addition to the Perl format sequences, recognize some
+ Boost-specific format sequences.]]
+]
+
+These flags live in the `regex_constants` namespace.
+
+[h2 The ECMA-262 Format Sequences]
+
+When you haven't specified a substitution string dialect with one of the format flags above,
+you get the dialect defined by ECMA-262, the standard for ECMAScript. The table below shows
+the escape sequences recognized in ECMA-262 mode.
[table Format Escape Sequences
[[Escape Sequence] [Meaning]]
- [[[^$1]] [the first sub-match]]
- [[[^$2]] [the second sub-match (etc.)]]
+ [[[^$1], [^$2], etc.] [the corresponding sub-match]]
[[[^$&]] [the full match]]
[[[^$\`]] [the match prefix]]
[[[^$']] [the match suffix]]
@@ -62,18 +83,71 @@
Any other sequence beginning with `'$'` simply represents itself. For example, if the format string were
`"$a"` then `"$a"` would be inserted into the output sequence.
-[h2 Replace Options]
+[h2 The Sed Format Sequences]
-The _regex_replace_ algorithm takes an optional bitmask parameter to control the formatting. The
-possible values of the bitmask are:
+When specifying the `format_sed` flag to _regex_replace_, the following escape sequences
+are recognized:
-[table Format Flags
- [[Flag] [Meaning]]
- [[`format_first_only`] [Only replace the first match, not all of them.]]
- [[`format_no_copy`] [Don't copy the parts of the input sequence that didn't match the regex to the output sequence.]]
- [[`format_literal`] [Treat the format string as a literal; that is, don't recognize any escape sequences.]]
+[table Sed Format Escape Sequences
+ [[Escape Sequence] [Meaning]]
+ [[[^\\1], [^\\2], etc.] [The corresponding sub-match]]
+ [[[^&]] [the full match]]
+ [[[^\\a]] [A literal `'\a'`]]
+ [[[^\\e]] [A literal `char_type(27)`]]
+ [[[^\\f]] [A literal `'\f'`]]
+ [[[^\\n]] [A literal `'\n'`]]
+ [[[^\\r]] [A literal `'\r'`]]
+ [[[^\\t]] [A literal `'\t'`]]
+ [[[^\\v]] [A literal `'\v'`]]
+ [[[^\\xFF]] [A literal `char_type(0xFF)`, where [^['F]] is any hex digit]]
+ [[[^\\x{FFFF}]] [A literal `char_type(0xFFFF)`, where [^['F]] is any hex digit]]
+ [[[^\\cX]] [The control character [^['X]]]]
]
-These flags live in the `regex_constants` namespace.
+[h2 The Perl Format Sequences]
+
+When specifying the `format_perl` flag to _regex_replace_, the following escape sequences
+are recognized:
+
+[table Perl Format Escape Sequences
+ [[Escape Sequence] [Meaning]]
+ [[[^$1], [^$2], etc.] [the corresponding sub-match]]
+ [[[^$&]] [the full match]]
+ [[[^$\`]] [the match prefix]]
+ [[[^$']] [the match suffix]]
+ [[[^$$]] [a literal `'$'` character]]
+ [[[^\\a]] [A literal `'\a'`]]
+ [[[^\\e]] [A literal `char_type(27)`]]
+ [[[^\\f]] [A literal `'\f'`]]
+ [[[^\\n]] [A literal `'\n'`]]
+ [[[^\\r]] [A literal `'\r'`]]
+ [[[^\\t]] [A literal `'\t'`]]
+ [[[^\\v]] [A literal `'\v'`]]
+ [[[^\\xFF]] [A literal `char_type(0xFF)`, where [^['F]] is any hex digit]]
+ [[[^\\x{FFFF}]] [A literal `char_type(0xFFFF)`, where [^['F]] is any hex digit]]
+ [[[^\\cX]] [The control character [^['X]]]]
+ [[[^\\l]] [Make the next character lowercase]]
+ [[[^\\L]] [Make the rest of the substitution lowercase until the next [^\\E]]]
+ [[[^\\u]] [Make the next character uppercase]]
+ [[[^\\U]] [Make the rest of the substitution uppercase until the next [^\\E]]]
+ [[[^\\E]] [Terminate [^\\L] or [^\\U]]]
+ [[[^\\1], [^\\2], etc.] [The corresponding sub-match]]
+ [[[^\\g<name>]] [The named backref /name/]]
+]
+
+[h2 The Boost-Specific Format Sequences]
+
+When specifying the `format_all` flag to _regex_replace_, the escape sequences
+recognized are the same as those above for `format_perl`. In addition, conditional
+expressions of the following form are recognized:
+
+[pre
+?Ntrue-expression:false-expression
+]
+
+where /N/ is a decimal digit representing a sub-match. If the corresponding sub-match
+participated in the full match, then the substitution is /true-expression/. Otherwise,
+it is /false-expression/. In this mode, you can use parens [^()] for grouping. If you
+want a literal paren, you must escape it as [^\\(].
[endsect]
Modified: branches/CMake/release/more/getting_started/detail/links.rst
==============================================================================
--- branches/CMake/release/more/getting_started/detail/links.rst (original)
+++ branches/CMake/release/more/getting_started/detail/links.rst 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -12,5 +12,5 @@
.. _Boost.Serialization: ../../libs/serialization/index.html
.. _Boost.Signals: ../../libs/signals/index.html
.. _Boost.Test: ../../libs/test/index.html
-.. _Boost.Thread: ../../doc/html/thread/build.html#thread.build
+.. _Boost.Thread: ../../doc/html/thread.html
.. _Boost.Wave: ../../libs/wave/index.html
Modified: branches/CMake/release/more/getting_started/unix-variants.html
==============================================================================
--- branches/CMake/release/more/getting_started/unix-variants.html (original)
+++ branches/CMake/release/more/getting_started/unix-variants.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -187,7 +187,7 @@
<li><a class="reference external" href="../../libs/regex/index.html">Boost.Regex</a></li>
<li><a class="reference external" href="../../libs/serialization/index.html">Boost.Serialization</a></li>
<li><a class="reference external" href="../../libs/signals/index.html">Boost.Signals</a></li>
-<li><a class="reference external" href="../../doc/html/thread/build.html#thread.build">Boost.Thread</a></li>
+<li><a class="reference external" href="../../doc/html/thread.html">Boost.Thread</a></li>
<li><a class="reference external" href="../../libs/wave/index.html">Boost.Wave</a></li>
</ul>
<p>A few libraries have optional separately-compiled binaries:</p>
Modified: branches/CMake/release/more/getting_started/windows.html
==============================================================================
--- branches/CMake/release/more/getting_started/windows.html (original)
+++ branches/CMake/release/more/getting_started/windows.html 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -180,7 +180,7 @@
<li><a class="reference external" href="../../libs/regex/index.html">Boost.Regex</a></li>
<li><a class="reference external" href="../../libs/serialization/index.html">Boost.Serialization</a></li>
<li><a class="reference external" href="../../libs/signals/index.html">Boost.Signals</a></li>
-<li><a class="reference external" href="../../doc/html/thread/build.html#thread.build">Boost.Thread</a></li>
+<li><a class="reference external" href="../../doc/html/thread.html">Boost.Thread</a></li>
<li><a class="reference external" href="../../libs/wave/index.html">Boost.Wave</a></li>
</ul>
<p>A few libraries have optional separately-compiled binaries:</p>
Modified: branches/CMake/release/status/explicit-failures-markup.xml
==============================================================================
--- branches/CMake/release/status/explicit-failures-markup.xml (original)
+++ branches/CMake/release/status/explicit-failures-markup.xml 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -547,6 +547,7 @@
<toolset name="sun-5.8*"/>
<toolset name="sun-5.9*"/>
<toolset name="msvc-8.0*"/>
+ <toolset name="msvc-9.0*"/>
<toolset name="msvc-7.1*"/>
<toolset name="acc"/>
<note author="Alexander Nasonov">
@@ -1499,14 +1500,7 @@
<mark-expected-failures>
<test name="member_ccs"/>
<test name="member_ccs_exact"/>
- <toolset name="acc*"/>
- <toolset name="darwin-4.0.1"/>
- <toolset name="gcc-*"/>
- <toolset name="hp_cxx*"/>
- <toolset name="intel*"/>
- <toolset name="msvc-*_64"/>
- <toolset name="msvc-*wm*"/>
- <toolset name="pathscale-*"/>
+ <toolset name="*"/>
<note author="Tobias Schwinger">
Not all compilers/platforms implement nonstandard calling conventions.
<hr/>
@@ -1517,14 +1511,7 @@
<mark-expected-failures>
<test name="nonmember_ccs"/>
<test name="nonmember_ccs_exact"/>
- <toolset name="acc*"/>
- <toolset name="darwin-4.0.1"/>
- <toolset name="gcc-*"/>
- <toolset name="hp_cxx*"/>
- <toolset name="intel*"/>
- <toolset name="msvc-*_64"/>
- <toolset name="msvc-*wm*"/>
- <toolset name="pathscale-*"/>
+ <toolset name="*"/>
<note author="Tobias Schwinger">
Not all compilers/platforms implement nonstandard calling conventions.
</note>
@@ -1737,6 +1724,9 @@
<mark-expected-failures>
<test name="csr_graph_test"/>
<toolset name="msvc-8.0"/>
+ <toolset name="msvc-8.0_64"/>
+ <toolset name="msvc-8.0_x86_64"/>
+ <toolset name="msvc-9.0"/>
<note author="Doug Gregor">
This failure is due to a problem with partial ordering
of class template partial specializations.
@@ -3998,6 +3988,21 @@
</note>
</mark-unusable>
<mark-expected-failures>
+ <test name="object"/>
+ <toolset name="intel-10.*"/>
+ <note author="David Abrahams">
+
+ This compiler has a bug that causes silent misbehavior at runtime
+ when each of an assignment expression follows one of the following patterns:
+ <em>expr</em><code>.attr(</code><em>name</em><code>)</code>
+ or <em>expr</em><code>[</code><em>item</em><code>]</code>,
+ where <em>expr</em>
+ is-a <code>boost::python::object</code>. We've been
+ unable to find a workaround.
+
+ </note>
+ </mark-expected-failures>
+ <mark-expected-failures>
<test name="args"/>
<test name="auto_ptr"/>
<test name="builtin_convertors"/>
Modified: branches/CMake/release/tools/inspect/link_check.cpp
==============================================================================
--- branches/CMake/release/tools/inspect/link_check.cpp (original)
+++ branches/CMake/release/tools/inspect/link_check.cpp 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
@@ -9,6 +9,7 @@
#include "link_check.hpp"
#include "boost/regex.hpp"
#include "boost/filesystem/operations.hpp"
+#include <cstdlib>
namespace fs = boost::filesystem;
@@ -16,9 +17,47 @@
{
boost::regex url_regex(
"<\\s*[^>]*\\s+(?:HREF|SRC)" // HREF or SRC
- "\\s*=\\s*\"([^\"]*)\"",
+ "\\s*=\\s*(['\"])(.*?)\\1",
boost::regbase::normal | boost::regbase::icase);
+ // Decode percent encoded characters and html escapsed ampersands,
+ // returns an empty string if there's an error.
+ // The urls should really be fully HTML decoded at the beginning.
+ std::string decode_url(std::string const& path) {
+ std::string::size_type pos = 0, next;
+ std::string result;
+ result.reserve(path.length());
+
+ while((next = path.find_first_of("&%", pos)) != std::string::npos) {
+ result.append(path, pos, next - pos);
+ pos = next;
+ switch(path[pos]) {
+ case '%': {
+ if(path.length() - next < 3) return "";
+ char hex[3] = { path[next + 1], path[next + 2], '\0' };
+ char* end_ptr;
+ result += (char) std::strtol(hex, &end_ptr, 16);
+ if(*end_ptr) return "";
+ pos = next + 3;
+ break;
+ }
+ case '&': {
+ if(path.substr(pos, 5) == "&") {
+ result += '&'; pos += 5;
+ }
+ else {
+ result += '&'; pos += 1;
+ }
+ break;
+ }
+ }
+ }
+
+ result.append(path, pos, path.length());
+
+ return result;
+ }
+
} // unnamed namespace
namespace boost
@@ -66,8 +105,8 @@
while( boost::regex_search( start, end, what, url_regex, flags) )
{
// what[0] contains the whole string iterators.
- // what[1] contains the URL iterators.
- do_url( string( what[1].first, what[1].second ),
+ // what[2] contains the URL iterators.
+ do_url( string( what[2].first, what[2].second ),
library_name, full_path, no_link_errors );
start = what[0].second; // update search position
@@ -121,13 +160,22 @@
}
}
+ string decoded_url = decode_url(plain_url);
+ if(decoded_url.empty()) {
+ if(!no_link_errors) {
+ ++m_invalid_errors;
+ error( library_name, source_path, string(name()) + " invalid URL: " + url );
+ }
+ return;
+ }
+
// strip url of references to current dir
- if ( plain_url[0]=='.' && plain_url[1]=='/' ) plain_url.erase( 0, 2 );
+ if ( decoded_url[0]=='.' && decoded_url[1]=='/' ) decoded_url.erase( 0, 2 );
// url is relative source_path.branch()
// convert to target_path, which is_complete()
path target_path;
- try { target_path = source_path.branch_path() /= path( plain_url, fs::no_check ); }
+ try { target_path = source_path.branch_path() /= path( decoded_url, fs::no_check ); }
catch ( const fs::filesystem_error & )
{
if(!no_link_errors) {
Deleted: branches/CMake/release/tools/release/make_tarballs.py
==============================================================================
--- branches/CMake/release/tools/release/make_tarballs.py 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,373 +0,0 @@
-# Copyright (c) MetaCommunications, Inc. 2003-2004
-#
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-import sys
-import os
-import shutil
-import optparse
-
-
-import utils
-
-my_location = os.path.abspath( os.path.dirname( sys.argv[0] ) )
-
-def accept_args( args ):
- #( release_version, cvs_tag, sf_user, temp_dir, start_step ) = accept_args( sys.argv[ 1: ] )
- parser = optparse.OptionParser()
- parser.add_option( "-v", "--release-version", dest="release_version", metavar="release-version", help="release version (e.g. 1.32.0)")
- parser.add_option( "", "--tag", dest="tag", help="CVS tag" )
- parser.add_option( "-r", "--cvs-branch", dest="cvs_branch", metavar="cvs-branch"
- , help = "cvs branch to get the sources from (e.g RC_1_32_0). Important: it is case sensitive" )
- parser.add_option( "-u", "--sf-user", dest="sf_user", metavar="sf-user"
- , help = "SourceForge user name (for CVS)" )
- parser.add_option( "-t", "--toolset", dest="toolset", help="toolset to use to build needed tools" )
- parser.add_option( "-s", "--start-step", dest="start_step" )
- parser.usage = "make_tarballs [options] target_directory \n\n" + \
- "Requirements:\n" + \
- " CVS:\n"+ \
- " cvs - (windows) to export sources with windows newlines \n" + \
- " /usr/bin/cvs - (cygwin) to export sources with posix newlines\n" + \
- " Utilities:\n" + \
- " mv - (cygwin) posix move\n" + \
- " /usr/bin/find - (cygwin) to export sources with posix newlines\n" + \
- " 7z - to create zipball\n" + \
- " BoostBook generation:\n" + \
- " bjam\n" + \
- " user-config.jam - in user directory ($HOME/%HOME%) for BoostBook generation\n" + \
- " java\n" + \
- " doxygen\n"
-
-
-
- ( options, args ) = parser.parse_args( args )
-
- temp_dir = None
- start_step = None
- if ( len( args ) > 0 ): temp_dir = args[0]
-
-
- ( version, tag, user, toolset, start_step ) = ( options.release_version
- , options.cvs_branch
- , options.sf_user
- , options.toolset
- , options.start_step )
-
- if ( start_step is None ): start_step = ""
-
- def required( value, name ):
- if ( value is None ):
- print "%s should be specified." % name
- parser.print_help()
- sys.exit( 1 )
-
- required( version, "version" )
- required( tag, "tag" )
- required( user, "user" )
- required( temp_dir, "temp_dir" )
- required( toolset, "toolset" )
-
- return ( version, tag, user, toolset, temp_dir, start_step )
-
-
-def remove_directory( directory ):
- if os.path.exists( directory ):
- print " Removing directory %s" % directory
- os.system( 'rd /s /q "%s"' % directory )
-
-def clean_directory( directory ):
- remove_directory( directory )
- print " Creating directory %s" % directory
- os.makedirs( directory )
-
-def listdir_recursively( root, path="" ):
- # recursive listdir
- files = []
- try:
- for file in os.listdir(os.path.join(root, path)):
- pathname = os.path.join(path, file)
- if os.path.isdir(os.path.join(root, pathname)):
- files.extend(listdir_recursively(root, pathname))
- else:
- files.append(pathname)
- except OSError:
- pass
- return files
-
-def find_file( root, name ):
- print root
- files = listdir_recursively( root )
- for file in files:
- # print file
- if os.path.basename( file ) == name:
- return os.path.join( root, file )
- return None
-
-start_dir = os.getcwd()
-
-class make_tarballs( utils.step_controller ):
- def __init__( self, release_version, cvs_tag, sf_user, toolset, temp_dir, start_step ):
- utils.step_controller.__init__( self, start_step )
- self.release_version_ = release_version
- self.cvs_tag_ = cvs_tag
- self.sf_user_ = sf_user
- self.toolset_ = toolset
- self.temp_dir_ = temp_dir
-
- def run( self ):
- archives = []
-
- win_build_results = self.build_win( self.release_version_
- , self.cvs_tag_
- , self.sf_user_
- , self.temp_dir_ )
- archives.extend( win_build_results[1] )
-
- archives.extend( self.build_unix( self.release_version_
- , self.cvs_tag_
- , self.sf_user_
- , self.temp_dir_
- , win_build_results[0] ) )
-
-
- # os.chdir( start_dir )
- # for archive in archives:
- # shutil.copy( archive, start_dir )
-
-
- def make_temp_platform( self, temp, platform ):
- temp_platform = os.path.join( temp, platform )
- if not self.is_skipping():
- clean_directory( temp_platform )
- return temp_platform
-
- def cvs_export( self, sf_user, cvs_tag, release_version, shell = "%s" ):
- if not self.is_skipping():
- print " Exporting..."
- cvs_export_template = 'cvs -d:ext:%(user)s_at_[hidden]:/cvsroot/boost -z9 export -r %(branch)s boost'
-
- cmd = cvs_export_template % { "user": sf_user
- , "branch" : cvs_tag }
-
- print cmd
- os.system( shell % cmd )
- os.system( "del /S/F/Q .cvsignore >nul" )
- # have to use mv instead of os.rename - cygwin cvs sets strange directory permssions
- # which Windows rename or Python's os.rename cannot deal with
- os.system( "mv boost boost_%s" % release_version )
- return "boost_%s" % release_version
-
- def build_win( self, release_version, cvs_tag, sf_user, temp_dir ):
-
- if "win.export":
- self.start_step( "win.export", "Exporting windows copy" )
-
- temp_win = self.make_temp_platform( temp_dir, "win" )
- os.chdir( temp_win )
-
- exported_dir = self.cvs_export( sf_user, cvs_tag, release_version )
- self.finish_step( "win.export" )
-
- self.make_docs( os.path.abspath( exported_dir ), temp_dir )
-
- if self.start_step( "win.make_readonly", "Making all files writable" ):
- os.chdir( temp_win )
- utils.checked_system( [ "attrib /S -R *.*" ] )
- self.finish_step( "win.make_readonly" )
-
- zip_name = "boost_%s.zip" % release_version
- os.chdir( temp_win )
-
-
- if self.start_step( "win.zip", " Zipping" ):
- print " Zipping"
- if os.path.exists( zip_name ): os.unlink( zip_name )
-
- utils.checked_system( ["7z a -r -tzip %s %s\* > %s" % ( zip_name, "boost_%s" % release_version, zip_name + ".log" ) ] )
- self.finish_step( "win.zip" )
-
-
- return ( os.path.abspath( exported_dir ), [ os.path.abspath( zip_name ) ] )
-
- def make_docs( self, boost_directory, temp_dir ):
- boostbook_temp = os.path.join( boost_directory, "bin.v2" )
- tools_directory = os.path.join( temp_dir, "tools" )
- if not os.path.exists( tools_directory ):
- os.makedirs( tools_directory )
-
- if self.start_step( "win.make_docs.setup_tools", "Setting up BoostBook tools" ):
- sys.path.append( sys.path[0] + "/../boostbook" )
- print sys.path
- import setup_boostbook
- os.environ[ "BOOST_ROOT" ] = boost_directory
- setup_boostbook.setup_boostbook( os.path.join( temp_dir, "tools" ) )
-
- if self.start_step( "win.make_docs.clean", "Clearing \"bin.v2" ):
- if os.path.exists( boostbook_temp ):
- shutil.rmtree( boostbook_temp )
- self.finish_step( "win.make_docs.clean" )
-
-
- cd = os.getcwd()
- os.chdir( os.path.join( boost_directory, "doc" ) )
-
- if self.start_step( "win.make_docs.correct_permissions", "Making html's writable" ):
- utils.checked_system(
- [
- "cd html"
- , "attrib -R *"
- , "cd .."
- ] )
- self.finish_step( "win.make_docs.correct_permissions" )
-
- def generate( output_format ):
- if self.start_step( "win.make_docs.%s" % output_format, ' Generating %s' % output_format ):
- utils.checked_system( [
- # "set HOME=%s" % my_location
- "%s -d2 --v2 %s " % ( bjam_path(), output_format )
- ] )
- self.finish_step( "win.make_docs.%s" % output_format )
-
- generate( "html" )
- generate( "docbook" )
- generate( "fo" )
-
- if self.start_step( "win.make_docs.copy_docs", "Copying docs into doc directory" ):
- shutil.copy( os.path.join( boostbook_temp, "doc", self.toolset_, "debug", "boost.docbook" ), "boost.docbook" )
- shutil.copy( os.path.join( boostbook_temp, "doc", self.toolset_, "debug", "boost.fo" ), "boost.fo" )
- self.finish_step( "win.make_docs.copy_docs" )
-
-
- if self.start_step( "win.make_docs.clean2", "Copying docs into doc directory" ):
- shutil.rmtree( boostbook_temp )
- shutil.rmtree( "xml" )
- self.finish_step( "win.make_docs.clean2" )
-
- if self.start_step( "win.make_docs.bb_userman", "Creating Boost.Build user manual" ):
- os.chdir( os.path.join( boost_directory, "tools", "build", "v2", "doc" ) )
-
- utils.checked_system( [
-# "set HOME=%s" % my_location
- "%s -d2 --v2 pdf" % bjam_path()
- ] )
-
- for f in [ "userman.pdf" ]:
- shutil.copy( find_file( os.path.join( boostbook_temp ), f ), f )
-
- shutil.rmtree( boostbook_temp )
- self.finish_step( "win.make_docs.bb_userman" )
-
- if self.start_step( "win.make_docs.clean3", boost_directory ):
- for i in os.walk( boost_directory ):
- for f in i[2]:
- full_path = os.path.join( i[0], f )
- if os.path.splitext( f )[1] in [ ".boostbook" ] \
- and os.access( full_path, os.W_OK ):
- os.unlink( full_path )
- self.finish_step( "win.make_docs.clean3" )
-
-
- def correct_executable_permissions( self, path ):
- if not self.is_skipping():
- print " Correcting permissions"
- for i in os.walk( path ):
- for f in i[2]:
- if os.path.splitext( f )[1] in ( ".css", ".hpp", ".cpp",\
- ".html", ".htm", ".rst", \
- ".pdf", ".xml", ".png",\
- ".jpg", ".vcproj", ".pattern2", \
- ".jam", ".bat", ".sty", ".diff" ) \
- or os.path.basename( f ).lower() in ( "jamfile", "todo", "makefile", "jamrules", "gnumakefile" ):
- print os.path.join( i[0], f )
- os.system( "chmod a-x %s" % os.path.join( i[0], f ) )
-
-
- def build_unix( self, release_version, cvs_tag, sf_user, temp_dir, win_build_dir ):
-
- self.start_step( "unix.export", "Exporting unix copy" )
-
- temp_unix = self.make_temp_platform( temp_dir, "unix" )
- os.chdir( temp_unix )
-
- exported_dir = self.cvs_export( sf_user, cvs_tag, release_version, "bash -c \"/usr/bin/%s\"" )
- self.correct_executable_permissions( "." )
- self.finish_step( "unix.export" )
-
- self.copy_docs_to_unix( os.path.abspath( exported_dir )
- , win_build_dir )
-
- if self.start_step( "unix.make_readonly", "Making all files readonly" ):
- utils.checked_system( [ "chmod -R a-w+r,u+w %s" % temp_unix ] )
- utils.checked_system( [ "bash -c /usr/bin/find %s -type d -exec chmod u+w {} ;" % temp_unix ] )
- self.finish_step( "unix.make_readonly" )
-
- gz_archive_name = "boost_%s" % release_version + ".tar.gz"
- if self.start_step( "unix.gz", " Making .gz" ):
- if os.path.exists( gz_archive_name ): os.unlink( gz_archive_name )
- os.system( "tar cfz %s %s" % ( gz_archive_name, "boost_%s" % release_version ) )
- self.finish_step( "unix.gz" )
-
- bz2_archive_name = "boost_%s" % release_version + ".tar.bz2"
- if self.start_step( "unix.bz2", " Making .bz2" ):
- if os.path.exists( bz2_archive_name ): os.unlink( bz2_archive_name )
- os.system( 'bash -c "gunzip -c %s | bzip2 > %s"' % ( gz_archive_name, bz2_archive_name ) )
- self.finish_step( "unix.bz2" )
-
- return [ os.path.abspath( x ) for x in ( gz_archive_name, bz2_archive_name ) ]
-
- def remove_x_permission( self, directory ):
- for i in os.walk( directory ):
- for f in i[1]:
- os.system( "chmod a=xr,u=rwx %s" % os.path.join( i[0], f ) )
- for f in i[2]:
- os.system( "chmod a=r,u=rw %s" % os.path.join( i[0], f ) )
-
- def copy_docs_to_unix( self, unix_boost_directory, win_boost_directory ):
- if self.start_step( "unix.copy_docs", "Copying docs to unix copy" ):
- doc_directory = os.path.join( unix_boost_directory, "doc" )
- doc_html_directory = os.path.join( doc_directory, "html" )
- remove_directory( doc_html_directory )
- utils.checked_system( [
- "cp -R %s %s " % ( os.path.join( win_boost_directory, "doc", "html" )
- , doc_html_directory )
- ] )
- for f in [ "boost.docbook", "boost.fo" ]:
- utils.checked_system( [
- "cp %s %s" % ( os.path.join( win_boost_directory, "doc", f )
- , os.path.join( doc_directory, f ) )
- ] )
-
- self.remove_x_permission( doc_directory )
-
- boost_build_doc_directory = os.path.join( unix_boost_directory, "tools", "build", "v2", "doc" )
- boost_build_doc_html_directory = os.path.join( boost_build_doc_directory, "html" )
-
- remove_directory( boost_build_doc_html_directory )
- utils.checked_system( [
- "cp -R %s %s " % ( os.path.join( win_boost_directory, "tools", "build", "v2", "doc", "html" )
- , boost_build_doc_html_directory ) ] )
-
- for f in [ "userman.pdf" ]:
- utils.checked_system( [
- "cp %s %s " % ( os.path.join( win_boost_directory, "tools", "build", "v2", "doc", f )
- , os.path.join( boost_build_doc_directory, f ) ) ] )
-
- self.remove_x_permission( boost_build_doc_directory )
- self.finish_step( "unix.copy_docs" )
-
-
-def bjam_path():
- if os.path.exists( os.path.join( my_location, "bjam.exe" ) ):
- return os.path.join( my_location, "bjam.exe" )
- else:
- return "bjam.exe"
-
-def main():
- ( release_version, cvs_tag, sf_user, toolset, temp_dir, start_step ) = accept_args( sys.argv[ 1: ] )
-
- make_tarballs( release_version, cvs_tag, sf_user, toolset, temp_dir, start_step ).run()
-
-if __name__ == "__main__":
- main()
Deleted: branches/CMake/release/tools/release/utils.py
==============================================================================
--- branches/CMake/release/tools/release/utils.py 2008-04-02 22:04:05 EDT (Wed, 02 Apr 2008)
+++ (empty file)
@@ -1,52 +0,0 @@
-import string
-
-import os
-
-class failure_exception:
- def __init__( self, rc ):
- self.rc_ = rc
-
- def __str__( self ):
- return "rc: %d" % self.rc_
-
-def system( commands ):
- if os.path.exists( "tmp.cmd" ):
- os.chmod( "tmp.cmd", 0777 )
- os.unlink( "tmp.cmd" )
-
- f = open( "tmp.cmd", "w" )
- f.write( string.join( commands, "\n" ) )
- f.close()
- rc = os.system( "tmp.cmd" )
- os.chmod( "tmp.cmd", 0777 )
- os.unlink( "tmp.cmd" )
- return rc
-
-def checked_system( commands, valid_return_codes = [ 0 ] ):
- rc = system( commands )
- if rc not in [ 0 ] + valid_return_codes: raise failure_exception( rc )
- return rc
-
-class step_controller:
- def __init__( self, start_step ):
- self.current_step_ = None;
- self.skip_to_step_ = start_step
-
- def start_step( self, step_name, start_message ):
- self.current_step_ = step_name
- if self.is_skipping( step_name ):
- print "[%s] Skipping." % step_name
- return 0
- else:
- self.skip_to_step_ = ""
- print "[%s] %s" % ( step_name, start_message )
- return 1
-
- def finish_step( self, step_name ):
- print "[%s] Finished" % step_name
-
- def is_skipping( self, step_name = None ):
- if step_name is None: step_name = self.current_step_
- return self.skip_to_step_ != "" and self.skip_to_step_ != step_name
-
-
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk