|
Boost-Commit : |
From: eric_at_[hidden]
Date: 2008-04-17 17:51:04
Author: eric_niebler
Date: 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
New Revision: 44523
URL: http://svn.boost.org/trac/boost/changeset/44523
Log:
Merged revisions 44452,44472-44484,44486-44493,44495-44497,44499,44506-44507 via svnmerge from
https://svn.boost.org/svn/boost/trunk
................
r44452 | johnmaddock | 2008-04-16 04:57:29 -0700 (Wed, 16 Apr 2008) | 1 line
Reinstated real_cast to that STLPort tests can pass.
................
r44472 | emildotchevski | 2008-04-16 11:24:17 -0700 (Wed, 16 Apr 2008) | 1 line
Added #define NOMINMAX to preserve standard behavior of std::min and std::max. Is including <windows.h> here necessary?
................
r44473 | emildotchevski | 2008-04-16 11:36:30 -0700 (Wed, 16 Apr 2008) | 1 line
Reverting previous change... #define NOMINMAX isn't a good idea either.
................
r44474 | nasonov | 2008-04-16 14:13:25 -0700 (Wed, 16 Apr 2008) | 1 line
Use make_unsigned and get rid of gcc warnings when -DBOOST_LEXICAL_CAST_ASSUME_C_LOCALE
................
r44475 | hkaiser | 2008-04-16 15:50:47 -0700 (Wed, 16 Apr 2008) | 1 line
Spirit V2: started to address regression test failures
................
r44476 | emildotchevski | 2008-04-16 15:55:19 -0700 (Wed, 16 Apr 2008) | 1 line
minor documentation fixes.
................
r44477 | hkaiser | 2008-04-16 15:56:15 -0700 (Wed, 16 Apr 2008) | 1 line
Wave: fixed a newly introduced compilation error specific to certain platforms.
................
r44478 | hkaiser | 2008-04-16 16:17:24 -0700 (Wed, 16 Apr 2008) | 1 line
Spirit V2: Fixed more regression problems.
................
r44479 | hkaiser | 2008-04-16 16:18:18 -0700 (Wed, 16 Apr 2008) | 1 line
Wave: minor edits...
................
r44480 | jurko | 2008-04-16 17:20:33 -0700 (Wed, 16 Apr 2008) | 1 line
Added a workaround for a compilation failure when including some Boost Serialization headers before some Boost Pool headers using MSVC 7.1 or 8.0. Source of the problem is a compiler bug fixed in MSVC 9.0 and workaround consists of referencing some Windows API identifiers using their fully qualified names. Added a related regression test for the Boost Pool library. See the test code comments for more detailed information on the bug.
................
r44481 | jurko | 2008-04-16 17:27:30 -0700 (Wed, 16 Apr 2008) | 1 line
Corrected the documentation related to installing new internal property types.
................
r44482 | hkaiser | 2008-04-16 18:04:19 -0700 (Wed, 16 Apr 2008) | 1 line
Wave: minor edits...
................
r44483 | hkaiser | 2008-04-16 18:56:25 -0700 (Wed, 16 Apr 2008) | 1 line
Wave: Fixed slex test
................
r44484 | hkaiser | 2008-04-16 19:00:20 -0700 (Wed, 16 Apr 2008) | 2 lines
Wave: Fixed slex test
................
r44486 | danieljames | 2008-04-17 00:34:15 -0700 (Thu, 17 Apr 2008) | 35 lines
Movable unordered containers, full support only for compilers with rvalue references.
Merged revisions 44076-44414 via svnmerge from
https://svn.boost.org/svn/boost/branches/unordered/trunk
........
r44076 | danieljames | 2008-04-06 20:41:19 +0100 (Sun, 06 Apr 2008) | 1 line
Move semantics for compilers with rvalue references.
........
r44077 | danieljames | 2008-04-06 20:48:59 +0100 (Sun, 06 Apr 2008) | 1 line
Do move assignment 'properly'.
........
r44085 | danieljames | 2008-04-06 22:46:04 +0100 (Sun, 06 Apr 2008) | 1 line
Use normal references for the move members, reset the source buckets_ pointer to stop the buckets getting deleted, and remove a superflous pointer check.
........
r44109 | danieljames | 2008-04-07 23:49:36 +0100 (Mon, 07 Apr 2008) | 1 line
Add missing tests.
........
r44366 | danieljames | 2008-04-13 12:59:46 +0100 (Sun, 13 Apr 2008) | 1 line
Avoid using rvalue references in the implementation files.
........
r44368 | danieljames | 2008-04-13 15:13:33 +0100 (Sun, 13 Apr 2008) | 6 lines
Use a cut down version of the work in progress move library to implement move
semantics on more compilers. Unfortunately the move constructor with allocator
isn't really practical at the moment, since in the case where the container
can't be moved, and the allocators aren't equal it will copy the container
twice.
........
................
r44487 | danieljames | 2008-04-17 00:39:24 -0700 (Thu, 17 Apr 2008) | 13 lines
Use Boost.Test's minimal test library for unordered & hash. It's closer to
Boster.Test which makes it easier to switch to take advantage of Boost.Test's
extra testing facilities.
Merged revisions 44420 via svnmerge from
https://svn.boost.org/svn/boost/branches/unordered/trunk
........
r44420 | danieljames | 2008-04-14 19:02:03 +0100 (Mon, 14 Apr 2008) | 1 line
Use Boost.Test's minimal test library.
........
................
r44488 | danieljames | 2008-04-17 00:42:47 -0700 (Thu, 17 Apr 2008) | 19 lines
A few tweaks for the unordered tests.
Merged revisions 44461-44462,44466 via svnmerge from
https://svn.boost.org/svn/boost/branches/unordered/trunk
........
r44461 | danieljames | 2008-04-16 18:34:48 +0100 (Wed, 16 Apr 2008) | 2 lines
Try to get some more tests working on Borland.
........
r44462 | danieljames | 2008-04-16 18:34:59 +0100 (Wed, 16 Apr 2008) | 2 lines
Write out the number of copies when the unnecessary copy test fails.
........
r44466 | danieljames | 2008-04-16 18:35:44 +0100 (Wed, 16 Apr 2008) | 2 lines
Add compile test for get_allocator.
........
................
r44489 | danieljames | 2008-04-17 00:45:20 -0700 (Thu, 17 Apr 2008) | 36 lines
Refactor the hash table implementation a little bit. Some of the changes are to
make implementing emplace easier.
Merged revisions 44458-44460,44463-44465 via svnmerge from
https://svn.boost.org/svn/boost/branches/unordered/trunk
........
r44458 | danieljames | 2008-04-16 18:31:35 +0100 (Wed, 16 Apr 2008) | 2 lines
Pull out the buffered functions.
........
r44459 | danieljames | 2008-04-16 18:31:45 +0100 (Wed, 16 Apr 2008) | 4 lines
Inline construct_node and create_node into copy_group - these used to be used
in the implementation of insert but aren't now because of insert's exception
requirements, so keeping them around was just confusing.
........
r44460 | danieljames | 2008-04-16 18:31:54 +0100 (Wed, 16 Apr 2008) | 4 lines
Change link_node so that it takes a node_constructor containing a constructed
node instead of a node - this makes the code a little cleaner and also
simplifies exception safety.
........
r44463 | danieljames | 2008-04-16 18:35:11 +0100 (Wed, 16 Apr 2008) | 2 lines
Explicitly name the different insert overloads.
........
r44464 | danieljames | 2008-04-16 18:35:22 +0100 (Wed, 16 Apr 2008) | 2 lines
Explicitly name the different erase overloads.
........
r44465 | danieljames | 2008-04-16 18:35:33 +0100 (Wed, 16 Apr 2008) | 2 lines
Call the erase methods in hash_table_data directly.
........
................
r44490 | danieljames | 2008-04-17 00:49:45 -0700 (Thu, 17 Apr 2008) | 11 lines
Fix an error on compilers without SFINAE.
Merged revisions 44470 via svnmerge from
https://svn.boost.org/svn/boost/branches/unordered/trunk
........
r44470 | danieljames | 2008-04-16 18:36:26 +0100 (Wed, 16 Apr 2008) | 2 lines
Missing semi-colon.
........
................
r44491 | djowel | 2008-04-17 02:01:51 -0700 (Thu, 17 Apr 2008) | 1 line
char-sets
................
r44492 | djowel | 2008-04-17 02:02:03 -0700 (Thu, 17 Apr 2008) | 1 line
char-sets
................
r44493 | djowel | 2008-04-17 02:44:31 -0700 (Thu, 17 Apr 2008) | 1 line
fixed redundancy in namespace qi::detail::detail
................
r44495 | jurko | 2008-04-17 04:56:16 -0700 (Thu, 17 Apr 2008) | 1 line
Removed an extra unused 'executed' feature attribute.
................
r44496 | hkaiser | 2008-04-17 05:22:33 -0700 (Thu, 17 Apr 2008) | 1 line
Spirit V2: Fixed a gcc complaint
................
r44497 | hkaiser | 2008-04-17 05:29:18 -0700 (Thu, 17 Apr 2008) | 1 line
Spirit V2: Fixed a gcc complaint
................
r44499 | fmhess | 2008-04-17 06:40:44 -0700 (Thu, 17 Apr 2008) | 3 lines
Added another BOOST_ASSERT to enable_shared_from_this::_internal_accept_owner.
................
r44506 | johnmaddock | 2008-04-17 08:49:39 -0700 (Thu, 17 Apr 2008) | 1 line
Change <functional> include so that it still works when Boost.TR1 is in the include path.
................
r44507 | johnmaddock | 2008-04-17 09:21:04 -0700 (Thu, 17 Apr 2008) | 1 line
Try and fix the remaining Intel-Linux failures.
................
Added:
branches/proto/v4/boost/spirit/home/qi/char/detail/basic_chset.hpp
- copied unchanged from r44507, /trunk/boost/spirit/home/qi/char/detail/basic_chset.hpp
branches/proto/v4/boost/unordered/detail/config.hpp
- copied unchanged from r44507, /trunk/boost/unordered/detail/config.hpp
branches/proto/v4/boost/unordered/detail/move.hpp
- copied unchanged from r44507, /trunk/boost/unordered/detail/move.hpp
branches/proto/v4/libs/pool/test/pool_msvc_compiler_bug_test.cpp
- copied unchanged from r44507, /trunk/libs/pool/test/pool_msvc_compiler_bug_test.cpp
branches/proto/v4/libs/unordered/test/unordered/move_tests.cpp
- copied unchanged from r44507, /trunk/libs/unordered/test/unordered/move_tests.cpp
Removed:
branches/proto/v4/libs/exception/doc/adding_data_at_throw.html
branches/proto/v4/libs/exception/doc/adding_data_later.html
branches/proto/v4/libs/exception/doc/clone_exception.html
branches/proto/v4/libs/exception/doc/cloning_and_rethrowing.html
branches/proto/v4/libs/exception/doc/enable_exception_cloning.html
branches/proto/v4/libs/exception/doc/grouping_data.html
branches/proto/v4/libs/exception/doc/using_enable_cloning.html
Properties modified:
branches/proto/v4/ (props changed)
Text files modified:
branches/proto/v4/boost/enable_shared_from_this.hpp | 1
branches/proto/v4/boost/function/detail/prologue.hpp | 2
branches/proto/v4/boost/lexical_cast.hpp | 58 -
branches/proto/v4/boost/math/concepts/real_concept.hpp | 54 +
branches/proto/v4/boost/pool/detail/mutex.hpp | 20
branches/proto/v4/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp | 20
branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp | 2
branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp | 12
branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp | 3
branches/proto/v4/boost/spirit/home/qi/char/char.hpp | 37 +
branches/proto/v4/boost/spirit/home/qi/char/detail/range_run_impl.hpp | 49
branches/proto/v4/boost/spirit/home/qi/char/meta_grammar.hpp | 123 +++
branches/proto/v4/boost/spirit/home/qi/parse.hpp | 6
branches/proto/v4/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp | 4
branches/proto/v4/boost/spirit/home/support/iterators/detail/multi_pass.hpp | 9
branches/proto/v4/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp | 4
branches/proto/v4/boost/unordered/detail/hash_table.hpp | 64 ++
branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp | 390 ++++++------
branches/proto/v4/boost/unordered_map.hpp | 83 ++
branches/proto/v4/boost/unordered_set.hpp | 82 ++
branches/proto/v4/boost/wave/cpp_context.hpp | 18
branches/proto/v4/boost/wave/cpplexer/cpp_lex_iterator.hpp | 8
branches/proto/v4/boost/wave/cpplexer/cpp_lex_token.hpp | 6
branches/proto/v4/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp | 6
branches/proto/v4/boost/wave/util/cpp_iterator.hpp | 89 +-
branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html | 6
branches/proto/v4/libs/exception/doc/boost-exception.html | 10
branches/proto/v4/libs/exception/doc/cloning.html | 6
branches/proto/v4/libs/exception/doc/copy_exception.html | 6
branches/proto/v4/libs/exception/doc/current_exception.html | 6
branches/proto/v4/libs/exception/doc/enable_current_exception.html | 8
branches/proto/v4/libs/exception/doc/enable_error_info.html | 6
branches/proto/v4/libs/exception/doc/error_info.html | 6
branches/proto/v4/libs/exception/doc/exception.html | 6
branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html | 6
branches/proto/v4/libs/exception/doc/exception_constructors.html | 6
branches/proto/v4/libs/exception/doc/exception_destructor.html | 6
branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html | 6
branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html | 6
branches/proto/v4/libs/exception/doc/exception_error_info_group_hpp.html | 6
branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html | 6
branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html | 6
branches/proto/v4/libs/exception/doc/exception_exception_hpp.html | 6
branches/proto/v4/libs/exception/doc/exception_hpp.html | 6
branches/proto/v4/libs/exception/doc/exception_ptr.html | 6
branches/proto/v4/libs/exception/doc/exception_what.html | 6
branches/proto/v4/libs/exception/doc/get_error_info.html | 6
branches/proto/v4/libs/exception/doc/logging.html | 6
branches/proto/v4/libs/exception/doc/name_idx.html | 6
branches/proto/v4/libs/exception/doc/operator_shl_exception.html | 6
branches/proto/v4/libs/exception/doc/rethrow_exception.html | 6
branches/proto/v4/libs/exception/doc/source/boost-exception.reno | 1233 ++++++++++++++++++++-------------------
branches/proto/v4/libs/exception/doc/source/html_prefix.txt | 3
branches/proto/v4/libs/exception/doc/source/html_suffix.txt | 3
branches/proto/v4/libs/exception/doc/throw_exception.html | 6
branches/proto/v4/libs/exception/doc/throw_exception_hpp.html | 6
branches/proto/v4/libs/exception/doc/transporting_data.html | 6
branches/proto/v4/libs/exception/doc/unknown_exception.html | 6
branches/proto/v4/libs/exception/doc/using_enable_error_info.html | 6
branches/proto/v4/libs/functional/hash/test/container_fwd_test.cpp | 2
branches/proto/v4/libs/functional/hash/test/hash_built_in_array_test.cpp | 16
branches/proto/v4/libs/functional/hash/test/hash_complex_test.cpp | 10
branches/proto/v4/libs/functional/hash/test/hash_custom_test.cpp | 16
branches/proto/v4/libs/functional/hash/test/hash_deprecated_headers.cpp | 2
branches/proto/v4/libs/functional/hash/test/hash_deque_test.cpp | 6
branches/proto/v4/libs/functional/hash/test/hash_float_test.cpp | 4
branches/proto/v4/libs/functional/hash/test/hash_float_test.hpp | 76 +-
branches/proto/v4/libs/functional/hash/test/hash_friend_test.cpp | 16
branches/proto/v4/libs/functional/hash/test/hash_function_pointer_test.cpp | 32
branches/proto/v4/libs/functional/hash/test/hash_fwd_test_1.cpp | 18
branches/proto/v4/libs/functional/hash/test/hash_fwd_test_2.cpp | 6
branches/proto/v4/libs/functional/hash/test/hash_global_namespace_test.cpp | 16
branches/proto/v4/libs/functional/hash/test/hash_list_test.cpp | 6
branches/proto/v4/libs/functional/hash/test/hash_long_double_test.cpp | 4
branches/proto/v4/libs/functional/hash/test/hash_map_test.cpp | 6
branches/proto/v4/libs/functional/hash/test/hash_map_test.hpp | 8
branches/proto/v4/libs/functional/hash/test/hash_no_ext_fail_test.cpp | 2
branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_1.cpp | 8
branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_2.cpp | 8
branches/proto/v4/libs/functional/hash/test/hash_number_test.cpp | 62 +-
branches/proto/v4/libs/functional/hash/test/hash_pointer_test.cpp | 18
branches/proto/v4/libs/functional/hash/test/hash_range_test.cpp | 28
branches/proto/v4/libs/functional/hash/test/hash_sequence_test.hpp | 8
branches/proto/v4/libs/functional/hash/test/hash_set_test.cpp | 6
branches/proto/v4/libs/functional/hash/test/hash_set_test.hpp | 8
branches/proto/v4/libs/functional/hash/test/hash_string_test.cpp | 30
branches/proto/v4/libs/functional/hash/test/hash_value_array_test.cpp | 14
branches/proto/v4/libs/functional/hash/test/hash_vector_test.cpp | 6
branches/proto/v4/libs/functional/hash/test/link_ext_test.cpp | 4
branches/proto/v4/libs/functional/hash/test/link_no_ext_test.cpp | 9
branches/proto/v4/libs/functional/hash/test/link_test.cpp | 2
branches/proto/v4/libs/graph/doc/using_adjacency_list.html | 23
branches/proto/v4/libs/math/test/test_nc_beta.cpp | 2
branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp | 2
branches/proto/v4/libs/pool/test/Jamfile.v2 | 1
branches/proto/v4/libs/spirit/doc/what_s_new.qbk | 35 +
branches/proto/v4/libs/spirit/example/karma/Jamfile | 5
branches/proto/v4/libs/spirit/example/karma/basic_facilities.cpp | 7
branches/proto/v4/libs/spirit/example/karma/quick_start1.cpp | 2
branches/proto/v4/libs/spirit/example/lex/Jamfile | 25
branches/proto/v4/libs/spirit/example/lex/static_lexer/Jamfile | 2
branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp | 9
branches/proto/v4/libs/spirit/test/lex/test.hpp | 5
branches/proto/v4/libs/spirit/test/qi/char.cpp | 17
branches/proto/v4/libs/spirit/test/qi/range_run.cpp | 2
branches/proto/v4/libs/spirit/test/qi/real.cpp | 4
branches/proto/v4/libs/spirit/test/qi/tst.cpp | 4
branches/proto/v4/libs/spirit/test/support/hold_any.cpp | 2
branches/proto/v4/libs/unordered/test/exception/erase_exception_tests.cpp | 2
branches/proto/v4/libs/unordered/test/exception/insert_exception_tests.cpp | 14
branches/proto/v4/libs/unordered/test/exception/swap_exception_tests.cpp | 4
branches/proto/v4/libs/unordered/test/helpers/exception_test.hpp | 6
branches/proto/v4/libs/unordered/test/helpers/metafunctions.hpp | 15
branches/proto/v4/libs/unordered/test/helpers/test.hpp | 10
branches/proto/v4/libs/unordered/test/helpers/tracker.hpp | 4
branches/proto/v4/libs/unordered/test/objects/memory.hpp | 18
branches/proto/v4/libs/unordered/test/unordered/Jamfile.v2 | 1
branches/proto/v4/libs/unordered/test/unordered/assign_tests.cpp | 18
branches/proto/v4/libs/unordered/test/unordered/at_tests.cpp | 4
branches/proto/v4/libs/unordered/test/unordered/bucket_tests.cpp | 14
branches/proto/v4/libs/unordered/test/unordered/compile_tests.hpp | 15
branches/proto/v4/libs/unordered/test/unordered/constructor_tests.cpp | 122 +-
branches/proto/v4/libs/unordered/test/unordered/copy_tests.cpp | 36
branches/proto/v4/libs/unordered/test/unordered/erase_equiv_tests.cpp | 12
branches/proto/v4/libs/unordered/test/unordered/erase_tests.cpp | 46
branches/proto/v4/libs/unordered/test/unordered/find_tests.cpp | 20
branches/proto/v4/libs/unordered/test/unordered/insert_stable_tests.cpp | 28
branches/proto/v4/libs/unordered/test/unordered/insert_tests.cpp | 97 +-
branches/proto/v4/libs/unordered/test/unordered/load_factor_tests.cpp | 10
branches/proto/v4/libs/unordered/test/unordered/rehash_tests.cpp | 12
branches/proto/v4/libs/unordered/test/unordered/simple_tests.cpp | 46
branches/proto/v4/libs/unordered/test/unordered/unnecessary_copy_tests.cpp | 9
branches/proto/v4/libs/wave/ChangeLog | 2
branches/proto/v4/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp | 11
branches/proto/v4/libs/wave/samples/cpp_tokens/slex_iterator.hpp | 100 ++
branches/proto/v4/libs/wave/test/testlexers/test_slex_lexer.cpp | 2
branches/proto/v4/tools/build/v2/build/feature.jam | 1
137 files changed, 2265 insertions(+), 1599 deletions(-)
Modified: branches/proto/v4/boost/enable_shared_from_this.hpp
==============================================================================
--- branches/proto/v4/boost/enable_shared_from_this.hpp (original)
+++ branches/proto/v4/boost/enable_shared_from_this.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -101,6 +101,7 @@
_internal_weak_this = shared_ptr<T>(owner, p);
}else
{
+ BOOST_ASSERT(owner.unique()); // no weak_ptrs to owner should exist either, but there's no way to check that
detail::sp_deleter_wrapper * pd = get_deleter<detail::sp_deleter_wrapper>(_internal_shared_this);
BOOST_ASSERT( pd != 0 );
pd->set_deleter(owner);
Modified: branches/proto/v4/boost/function/detail/prologue.hpp
==============================================================================
--- branches/proto/v4/boost/function/detail/prologue.hpp (original)
+++ branches/proto/v4/boost/function/detail/prologue.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -11,7 +11,7 @@
#define BOOST_FUNCTION_PROLOGUE_HPP
# include <cassert>
# include <algorithm>
-# include <functional> // unary_function, binary_function
+# include <boost/config/no_tr1/functional.hpp> // unary_function, binary_function
# include <boost/throw_exception.hpp>
# include <boost/config.hpp>
# include <boost/function/function_base.hpp>
Modified: branches/proto/v4/boost/lexical_cast.hpp
==============================================================================
--- branches/proto/v4/boost/lexical_cast.hpp (original)
+++ branches/proto/v4/boost/lexical_cast.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -25,6 +25,7 @@
#include <boost/mpl/if.hpp>
#include <boost/throw_exception.hpp>
#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
#include <boost/call_traits.hpp>
#include <boost/static_assert.hpp>
#include <boost/detail/lcast_precision.hpp>
@@ -461,36 +462,16 @@
// C4146: unary minus operator applied to unsigned type, result still unsigned
# pragma warning( disable : 4146 )
#endif
-
- inline unsigned int lcast_to_unsigned(int value)
- {
- unsigned int uval = value;
- return value < 0 ? -uval : uval;
- }
-
- inline unsigned long lcast_to_unsigned(long value)
- {
- unsigned long uval = value;
- return value < 0 ? -uval : uval;
- }
-
-#if defined(BOOST_HAS_LONG_LONG)
- inline boost::ulong_long_type lcast_to_unsigned(boost::long_long_type v)
- {
- boost::ulong_long_type uval = v;
- return v < 0 ? -uval : uval;
- }
-#elif defined(BOOST_HAS_MS_INT64)
- inline unsigned __int64 lcast_to_unsigned(__int64 value)
+ template<class T>
+ inline
+ BOOST_DEDUCED_TYPENAME make_unsigned<T>::type lcast_to_unsigned(T value)
{
- unsigned __int64 uval = value;
- return value < 0 ? -uval : uval;
+ typedef BOOST_DEDUCED_TYPENAME make_unsigned<T>::type result_type;
+ result_type uvalue = static_cast<result_type>(value);
+ return value < 0 ? -uvalue : uvalue;
}
-#endif
-
#if (defined _MSC_VER)
-# pragma warning( pop ) // C4146: unary minus operator applied to unsigned type,
- // result still unsigned
+# pragma warning( pop )
#endif
}
@@ -502,22 +483,14 @@
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
#endif
- CharT thousands_sep = 0;
-#ifdef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
- char const* grouping = "";
- std::size_t const grouping_size = 0;
-#else
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
std::locale loc;
typedef std::numpunct<CharT> numpunct;
numpunct const& np = BOOST_USE_FACET(numpunct, loc);
std::string const& grouping = np.grouping();
std::string::size_type const grouping_size = grouping.size();
-
- if(grouping_size)
- thousands_sep = np.thousands_sep();
-#endif
-
+ CharT thousands_sep = grouping_size ? np.thousands_sep() : 0;
std::string::size_type group = 0; // current group number
char last_grp_size = grouping[0] <= 0 ? CHAR_MAX : grouping[0];
// a) Since grouping is const, grouping[grouping.size()] returns 0.
@@ -526,14 +499,17 @@
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
BOOST_STATIC_ASSERT(std::numeric_limits<T>::digits10 < CHAR_MAX);
#endif
+
+ char left = last_grp_size;
+#endif
+
typedef typename Traits::int_type int_type;
CharT const czero = lcast_char_constants<CharT>::zero;
int_type const zero = Traits::to_int_type(czero);
- char left = last_grp_size;
-
do
{
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
if(left == 0)
{
++group;
@@ -549,6 +525,8 @@
}
--left;
+#endif
+
--finish;
int_type const digit = static_cast<int_type>(n % 10U);
Traits::assign(*finish, Traits::to_char_type(zero + digit));
@@ -907,7 +885,7 @@
inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
unsigned short n)
{
- start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
+ start = lcast_put_unsigned<Traits>(n, finish);
return true;
}
Modified: branches/proto/v4/boost/math/concepts/real_concept.hpp
==============================================================================
--- branches/proto/v4/boost/math/concepts/real_concept.hpp (original)
+++ branches/proto/v4/boost/math/concepts/real_concept.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -27,6 +27,9 @@
#include <boost/math/special_functions/modf.hpp>
#include <boost/math/tools/precision.hpp>
#include <boost/math/policies/policy.hpp>
+#if defined(__SGI_STL_PORT)
+# include <boost/math/tools/real_cast.hpp>
+#endif
#include <ostream>
#include <istream>
#include <cmath>
@@ -392,6 +395,57 @@
#endif
+#if defined(__SGI_STL_PORT)
+//
+// We shouldn't really need these type casts any more, but there are some
+// STLport iostream bugs we work around by using them....
+//
+namespace tools
+{
+// real_cast converts from T to integer and narrower floating-point types.
+
+// Convert from T to integer types.
+
+template <>
+inline unsigned int real_cast<unsigned int, concepts::real_concept>(concepts::real_concept r)
+{
+ return static_cast<unsigned int>(r.value());
+}
+
+template <>
+inline int real_cast<int, concepts::real_concept>(concepts::real_concept r)
+{
+ return static_cast<int>(r.value());
+}
+
+template <>
+inline long real_cast<long, concepts::real_concept>(concepts::real_concept r)
+{
+ return static_cast<long>(r.value());
+}
+
+// Converts from T to narrower floating-point types, float, double & long double.
+
+template <>
+inline float real_cast<float, concepts::real_concept>(concepts::real_concept r)
+{
+ return static_cast<float>(r.value());
+}
+template <>
+inline double real_cast<double, concepts::real_concept>(concepts::real_concept r)
+{
+ return static_cast<double>(r.value());
+}
+template <>
+inline long double real_cast<long double, concepts::real_concept>(concepts::real_concept r)
+{
+ return r.value();
+}
+
+} // STLPort
+
+#endif
+
} // namespace math
} // namespace boost
Modified: branches/proto/v4/boost/pool/detail/mutex.hpp
==============================================================================
--- branches/proto/v4/boost/pool/detail/mutex.hpp (original)
+++ branches/proto/v4/boost/pool/detail/mutex.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -64,23 +64,23 @@
class win32_mutex
{
private:
- CRITICAL_SECTION mtx;
+ ::CRITICAL_SECTION mtx;
win32_mutex(const win32_mutex &);
void operator=(const win32_mutex &);
public:
win32_mutex()
- { InitializeCriticalSection(&mtx); }
+ { ::InitializeCriticalSection(&mtx); }
~win32_mutex()
- { DeleteCriticalSection(&mtx); }
+ { ::DeleteCriticalSection(&mtx); }
void lock()
- { EnterCriticalSection(&mtx); }
+ { ::EnterCriticalSection(&mtx); }
void unlock()
- { LeaveCriticalSection(&mtx); }
+ { ::LeaveCriticalSection(&mtx); }
};
#endif // defined(BOOST_WINDOWS)
@@ -90,23 +90,23 @@
class pthread_mutex
{
private:
- pthread_mutex_t mtx;
+ ::pthread_mutex_t mtx;
pthread_mutex(const pthread_mutex &);
void operator=(const pthread_mutex &);
public:
pthread_mutex()
- { pthread_mutex_init(&mtx, 0); }
+ { ::pthread_mutex_init(&mtx, 0); }
~pthread_mutex()
- { pthread_mutex_destroy(&mtx); }
+ { ::pthread_mutex_destroy(&mtx); }
void lock()
- { pthread_mutex_lock(&mtx); }
+ { ::pthread_mutex_lock(&mtx); }
void unlock()
- { pthread_mutex_unlock(&mtx); }
+ { ::pthread_mutex_unlock(&mtx); }
};
#endif // defined(_POSIX_THREADS) || defined(BOOST_HAS_PTHREADS)
Modified: branches/proto/v4/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -530,9 +530,9 @@
///////////////////////////////////////////////////////////////////////
// This is the workhorse behind the real generator
///////////////////////////////////////////////////////////////////////
- template <typename OutputIterator, typename T>
+ template <typename OutputIterator, typename U>
static bool
- call_n (OutputIterator& sink, T n, RealPolicies const& p)
+ call_n (OutputIterator& sink, U n, RealPolicies const& p)
{
// prepare sign and get output format
bool sign_val = false;
@@ -549,21 +549,21 @@
// allow for ADL to find the correct overloads for log10 et.al.
using namespace std;
- T dim = 0;
+ U dim = 0;
if (0 == (p.fixed & flags) && !detail::is_zero(n))
{
dim = log10(n);
if (dim > 0)
- n /= pow(T(10.0), (int)detail::round_to_long::call(dim));
+ n /= pow(U(10.0), (int)detail::round_to_long::call(dim));
else if (n < 1.)
- n *= pow(T(10.0), (int)detail::round_to_long::call(-dim));
+ n *= pow(U(10.0), (int)detail::round_to_long::call(-dim));
}
// prepare numbers (sign, integer and fraction part)
unsigned precision = p.precision(n);
- T integer_part;
- T precexp = std::pow(10.0, (int)precision);
- T fractional_part = modf(n, &integer_part);
+ U integer_part;
+ U precexp = std::pow(10.0, (int)precision);
+ U fractional_part = modf(n, &integer_part);
fractional_part = floor(fractional_part * precexp + 0.5);
if (fractional_part >= precexp)
@@ -574,8 +574,8 @@
// if trailing zeros are to be omitted, normalize the precision and
// fractional part
- T long_int_part = floor(integer_part);
- T long_frac_part = floor(fractional_part);
+ U long_int_part = floor(integer_part);
+ U long_frac_part = floor(fractional_part);
if (!p.trailing_zeros)
{
if (0 != long_frac_part) {
Modified: branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -231,7 +231,7 @@
public:
lexertl_functor()
#if 0 != __DECCXX_VER || BOOST_INTEL_CXX_VERSION > 900 || defined(__PGI)
- , eof()
+ : eof()
#endif // 0 != __DECCXX_VER
{}
Modified: branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,13 +13,13 @@
#include <iosfwd>
#include <boost/spirit/home/support/safe_bool.hpp>
+#include <boost/spirit/home/support/detail/lexer/generator.hpp>
+#include <boost/spirit/home/support/detail/lexer/rules.hpp>
+#include <boost/spirit/home/support/detail/lexer/consts.hpp>
#include <boost/spirit/home/lex/lexer/lexer_fwd.hpp>
#include <boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp>
#include <boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp>
#include <boost/spirit/home/lex/lexer/lexertl/lexertl_iterator.hpp>
-#include <boost/spirit/home/support/detail/lexer/generator.hpp>
-#include <boost/spirit/home/support/detail/lexer/rules.hpp>
-#include <boost/spirit/home/support/detail/lexer/consts.hpp>
#if defined(BOOST_SPIRIT_LEXERTL_DEBUG)
#include <boost/spirit/home/support/detail/lexer/debug.hpp>
#endif
@@ -199,6 +199,9 @@
// tokens.
iterator_type begin(Iterator& first, Iterator const& last) const
{
+ if (!init_dfa())
+ return iterator_type();
+
struct iterator_data_type {
boost::lexer::state_machine const& state_machine_;
boost::lexer::basic_rules<char_type> const& rules_;
@@ -206,8 +209,7 @@
};
iterator_data_type iterator_data = { state_machine, rules, actions };
- return init_dfa() ? iterator_type(iterator_data, first, last)
- : iterator_type();
+ return iterator_type(iterator_data, first, last);
}
// Return the end iterator usable to stop iterating over the generated
Modified: branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -12,6 +12,9 @@
#include <boost/spirit/home/qi/detail/assign_to.hpp>
#include <boost/spirit/home/support/placeholders.hpp>
+#include <boost/spirit/home/support/detail/lexer/generator.hpp>
+#include <boost/spirit/home/support/detail/lexer/rules.hpp>
+#include <boost/spirit/home/support/detail/lexer/consts.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/include/at.hpp>
#include <boost/fusion/include/value_at.hpp>
Modified: branches/proto/v4/boost/spirit/home/qi/char/char.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/char/char.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/char/char.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -51,10 +51,24 @@
typedef unused_type type; // literal parsers have no attribute
};
+ template <typename Char_, typename CharParam>
+ static bool test_impl(Char_ ch, CharParam param)
+ {
+ // tests plain chars
+ return ch == param;
+ }
+
+ template <typename Char_, typename CharParam>
+ static bool test_impl(Char_ const* ch, CharParam param)
+ {
+ // tests single char null terminated strings
+ return *ch == param;
+ }
+
template <typename Component, typename CharParam, typename Context>
static bool test(Component const& component, CharParam ch, Context&)
{
- return fusion::at_c<0>(component.elements) == ch;
+ return test_impl(fusion::at_c<0>(component.elements), ch);
}
template <typename Component>
@@ -62,12 +76,31 @@
{
return std::string("'")
+ spirit::detail::to_narrow_char(
- fusion::at_c<0>(component.elements))
+ fusion::at_c<0>(component.elements))
+ '\'';
}
};
///////////////////////////////////////////////////////////////////////////
+ // parse a character set
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename Char>
+ struct char_set : char_parser<char_set<Char>, Char>
+ {
+ template <typename Component, typename CharParam, typename Context>
+ static bool test(Component const& component, CharParam ch, Context&)
+ {
+ return component.ptr->test(ch);
+ }
+
+ template <typename Component>
+ static std::string what(Component const&)
+ {
+ return "char-set";
+ }
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
// parse a lazy character
///////////////////////////////////////////////////////////////////////////
struct lazy_char : char_parser<lazy_char>
Modified: branches/proto/v4/boost/spirit/home/qi/char/detail/range_run_impl.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/char/detail/range_run_impl.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/char/detail/range_run_impl.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -14,37 +14,34 @@
namespace boost { namespace spirit { namespace qi { namespace detail
{
- namespace detail
+ template <typename Run, typename Iterator, typename Range>
+ inline bool
+ try_merge(Run& run, Iterator iter, Range const& range)
{
- template <typename Run, typename Iterator, typename Range>
- inline bool
- try_merge(Run& run, Iterator iter, Range const& range)
+ // if *iter intersects with, or is adjacent to, 'range'...
+ if (can_merge(*iter, range))
{
- // if *iter intersects with, or is adjacent to, 'range'...
- if (can_merge(*iter, range))
- {
- typedef typename Range::value_type value_type;
- typedef integer_traits<value_type> integer_traits;
+ typedef typename Range::value_type value_type;
+ typedef integer_traits<value_type> integer_traits;
- // merge range and *iter
- merge(*iter, range);
+ // merge range and *iter
+ merge(*iter, range);
- // collapse all subsequent ranges that can merge with *iter
- Iterator i;
- value_type last =
- iter->last == integer_traits::const_max
- ? iter->last : iter->last+1;
+ // collapse all subsequent ranges that can merge with *iter
+ Iterator i;
+ value_type last =
+ iter->last == integer_traits::const_max
+ ? iter->last : iter->last+1;
- for (i = iter+1; i != run.end() && last >= i->first; ++i)
- {
- iter->last = i->last;
- }
- // erase all ranges that were collapsed
- run.erase(iter+1, i);
- return true;
+ for (i = iter+1; i != run.end() && last >= i->first; ++i)
+ {
+ iter->last = i->last;
}
- return false;
+ // erase all ranges that were collapsed
+ run.erase(iter+1, i);
+ return true;
}
+ return false;
}
template <typename Char>
@@ -100,14 +97,14 @@
}
// if *(iter-1) can merge with 'range', merge them and return
- if (detail::try_merge(run, iter-1, range))
+ if (try_merge(run, iter-1, range))
{
return;
}
}
// if *iter can merge with with 'range', merge them
- if (iter == run.end() || !detail::try_merge(run, iter, range))
+ if (iter == run.end() || !try_merge(run, iter, range))
{
// no overlap, insert 'range'
run.insert(iter, range);
Modified: branches/proto/v4/boost/spirit/home/qi/char/meta_grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/char/meta_grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/char/meta_grammar.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -11,8 +11,34 @@
#include <boost/spirit/home/support/placeholders.hpp>
#include <boost/spirit/home/support/meta_grammar.hpp>
#include <boost/spirit/home/support/char_class.hpp>
+#include <boost/spirit/home/qi/char/detail/basic_chset.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_same.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace boost { namespace spirit { namespace qi
+{
+ template <typename Char>
+ struct char_set;
+
+ template <typename Char, typename Elements>
+ struct char_set_component;
+}}}
+
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Char, typename Elements, typename Modifier>
+ struct make_component<qi::domain, qi::char_set<Char>, Elements, Modifier>
+ : mpl::identity<qi::char_set_component<Char, Elements> >
+ {
+ static qi::char_set_component<Char, Elements>
+ call(Elements const& elements)
+ {
+ return qi::char_set_component<Char, Elements>(
+ fusion::at_c<0>(elements));
+ }
+ };
+}}}
namespace boost { namespace spirit { namespace qi
{
@@ -126,6 +152,22 @@
{
};
+
+ // literals: 'x', L'x' and single char strings: "x", L"x"
+ struct single_char_literal_meta_grammar
+ : proto::or_<
+ // plain chars:
+ proto::terminal<char>
+ , proto::terminal<wchar_t>
+ // single char null terminates strings:
+ , proto::terminal<char[2]>
+ , proto::terminal<char(&)[2]>
+ , proto::terminal<wchar_t[2]>
+ , proto::terminal<wchar_t(&)[2]>
+ >
+ {
+ };
+
// literals: 'x', L'x'
struct char_literal_meta_grammar
: proto::or_<
@@ -139,10 +181,73 @@
{
};
- // char_, char_('x'), char_(f), char_('x', 'z'),
+ // literal strings: "hello" (defined in qi/string/meta_grammar.hpp)
+ struct basic_string_literal_meta_grammar;
+
+ // std::string(s) (defined in qi/string/meta_grammar.hpp)
+ struct basic_std_string_meta_grammar;
+
+ template <typename T>
+ struct extract_char; // (defined in qi/string/metagrammar.hpp)
+
+ template <typename Tag, typename T>
+ struct extract_chset_director;
+
+ template <typename T>
+ struct extract_chset_director<tag::char_, T>
+ {
+ typedef typename extract_char<T>::type char_type;
+ typedef char_set<char_type> type;
+ };
+
+ template <typename T>
+ struct extract_chset_director<tag::wchar, T>
+ {
+ typedef typename extract_char<T>::type char_type;
+ typedef char_set<char_type> type;
+ };
+
+ template <typename Char, typename Elements>
+ struct char_set_component
+ {
+ typedef qi::domain domain;
+ typedef char_set<Char> director;
+ typedef Elements elements_type;
+
+ char_set_component(Char const* definition)
+ : ptr(new detail::basic_chset<Char>())
+ {
+ Char ch = *definition++;
+ while (ch)
+ {
+ Char next = *definition++;
+ if (next == '-')
+ {
+ next = *definition++;
+ if (next == 0)
+ {
+ ptr->set(ch);
+ ptr->set('-');
+ break;
+ }
+ ptr->set(ch, next);
+ }
+ else
+ {
+ ptr->set(ch);
+ }
+ ch = next;
+ }
+ }
+
+ boost::shared_ptr<detail::basic_chset<Char> > ptr;
+ };
+
+ // char_, char_('x'), char_("x"), char_(f), char_('x', 'z'),
// char_(L'x'), char_(L'x', L'z'),
- // wchar, wchar('x'), wchar('x', 'z'),
+ // wchar, wchar('x'), wchar("x"), wchar('x', 'z'),
// wchar(L'x'), wchar(L'x', L'z')
+ // char_("a-z"), wchar("a-z")
// [w]lit('x'), [w]lit(L'x')
struct char_meta_grammar1
: proto::or_<
@@ -154,13 +259,13 @@
, qi::domain
, mpl::identity<extract_any_char_director<mpl::_> >
>
- // char_('x'), wchar(L'x') --> literal_char
+ // char_('x'), wchar(L'x'), char_("x"), wchar(L"x")--> literal_char
, meta_grammar::compose_function1_eval<
proto::function<
proto::if_<
is_char_tag<proto::_arg, qi::domain>()
>
- , basic_char_literal_meta_grammar
+ , single_char_literal_meta_grammar
>
, qi::domain
, mpl::identity<extract_literal_char_director<mpl::_, mpl::_> >
@@ -176,6 +281,16 @@
, qi::domain
, mpl::identity<extract_literal_char_director<mpl::_, mpl::_> >
>
+ // char_("a-z"), char_(L"a-z"), wchar(L"a-z") --> char_set
+ , meta_grammar::compose_function1_eval<
+ proto::function<
+ proto::if_<
+ is_char_tag<proto::_arg, qi::domain>()>
+ , proto::or_<basic_string_literal_meta_grammar, basic_std_string_meta_grammar>
+ >
+ , qi::domain
+ , mpl::identity<extract_chset_director<mpl::_, mpl::_> >
+ >
// char_(F()) --> lazy_char
, meta_grammar::function1_rule<
qi::domain
Modified: branches/proto/v4/boost/spirit/home/qi/parse.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/parse.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/parse.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -95,9 +95,9 @@
typedef spirit::traits::skipper_is_compatible<Expr, Skipper>
skipper_is_compatible;
-// BOOST_MPL_ASSERT_MSG(
-// skipper_is_compatible::value,
-// skipper_is_not_compatible_with_parser, (Iterator, Expr, Skipper));
+ BOOST_MPL_ASSERT_MSG(
+ skipper_is_compatible::value,
+ skipper_is_not_compatible_with_parser, (Iterator, Expr, Skipper));
typedef typename result_of::as_component<qi::domain, Expr>::type component;
typedef typename component::director director;
Modified: branches/proto/v4/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -99,14 +99,14 @@
template <typename MultiPass>
static bool equal_to(MultiPass const& mp, MultiPass const& x)
{
- return queuePosition == x.queuePosition;
+ return mp.queuePosition == x.queuePosition;
}
// called by operator<
template <typename MultiPass>
static bool less_than(MultiPass const& mp, MultiPass const& x)
{
- return queuePosition < x.queuePosition;
+ return mp.queuePosition < x.queuePosition;
}
protected:
Modified: branches/proto/v4/boost/spirit/home/support/iterators/detail/multi_pass.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/iterators/detail/multi_pass.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/iterators/detail/multi_pass.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,6 +13,15 @@
#include <iterator>
#include <algorithm>
+///////////////////////////////////////////////////////////////////////////////
+namespace boost { namespace spirit
+{
+ // forward declaration only
+ template <typename T, typename Policies>
+ void swap(multi_pass<T, Policies> &x, multi_pass<T, Policies> &y);
+}}
+
+///////////////////////////////////////////////////////////////////////////////
namespace boost { namespace spirit { namespace detail
{
///////////////////////////////////////////////////////////////////////////
Modified: branches/proto/v4/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -103,7 +103,7 @@
template <typename MultiPass>
static void destroy(MultiPass& mp)
{
- functor_type::destroy(mp.shared);
+ functor_type::destroy(mp);
}
};
@@ -139,7 +139,7 @@
// passing the current token instance as a parameter helps
// generating better code if compared to assigning the
// result of the functor to this instance
- return ftor.get_next(mp, t);
+ return mp.ftor.get_next(mp, t);
}
// test, whether we reached the end of the underlying stream
Modified: branches/proto/v4/boost/unordered/detail/hash_table.hpp
==============================================================================
--- branches/proto/v4/boost/unordered/detail/hash_table.hpp (original)
+++ branches/proto/v4/boost/unordered/detail/hash_table.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -121,6 +121,70 @@
}
#endif
+ struct move_tag {};
+
+ // Both hasher and key_equal's copy/assign can throw so double
+ // buffering is used to copy them.
+
+ template <typename Hash, typename Pred>
+ struct buffered_functions
+ {
+ typedef Hash hasher;
+ typedef Pred key_equal;
+
+ class functions
+ {
+ std::pair<hasher, key_equal> functions_;
+
+ public:
+
+ functions(hasher const& h, key_equal const& k)
+ : functions_(h, k) {}
+
+ hasher const& hash_function() const
+ {
+ return functions_.first;
+ }
+
+ key_equal const& key_eq() const
+ {
+ return functions_.second;
+ }
+ };
+
+ typedef functions buffered_functions::*functions_ptr;
+
+ buffered_functions(hasher const& h, key_equal const& k)
+ : func1_(h, k), func2_(h, k), func_(&buffered_functions::func1_) {}
+
+ // This copies the given function objects into the currently unused
+ // function objects and returns a pointer, that func_ can later be
+ // set to, to commit the change.
+ //
+ // Strong exception safety (since only usued function objects are
+ // changed).
+ functions_ptr buffer(buffered_functions const& x) {
+ functions_ptr ptr = func_ == &buffered_functions::func1_
+ ? &buffered_functions::func2_ : &buffered_functions::func1_;
+ this->*ptr = x.current();
+ return ptr;
+ }
+
+ void set(functions_ptr ptr) {
+ BOOST_ASSERT(ptr != func_);
+ func_ = ptr;
+ }
+
+ functions const& current() const {
+ return this->*func_;
+ }
+
+ private:
+ functions func1_;
+ functions func2_;
+ functions_ptr func_; // The currently active functions.
+ };
+
}
}
Modified: branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp
==============================================================================
--- branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp (original)
+++ branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -323,22 +323,8 @@
buckets_(), bucket_count_(next_prime(n)),
cached_begin_bucket_(), size_(0)
{
- // The array constructor will clean up in the event of an
- // exception.
- allocator_array_constructor<bucket_allocator>
- constructor(allocators_.bucket_alloc_);
-
- // Creates an extra bucket to act as a sentinel.
- constructor.construct(bucket(), bucket_count_ + 1);
-
- cached_begin_bucket_ = constructor.get() + static_cast<difference_type>(bucket_count_);
-
- // Set up the sentinel.
- cached_begin_bucket_->next_ = link_ptr(cached_begin_bucket_);
-
- // Only release the buckets once everything is successfully
- // done.
- buckets_ = constructor.release();
+ BOOST_UNORDERED_MSVC_RESET_PTR(buckets_);
+ create_buckets();
}
BOOST_UNORDERED_TABLE_DATA(BOOST_UNORDERED_TABLE_DATA const& x, size_type n)
@@ -346,6 +332,44 @@
buckets_(), bucket_count_(next_prime(n)),
cached_begin_bucket_(), size_(0)
{
+ BOOST_UNORDERED_MSVC_RESET_PTR(buckets_);
+ create_buckets();
+ }
+
+ BOOST_UNORDERED_TABLE_DATA(BOOST_UNORDERED_TABLE_DATA& x, move_tag)
+ : allocators_(x.allocators_),
+ buckets_(x.buckets_), bucket_count_(x.bucket_count_),
+ cached_begin_bucket_(x.cached_begin_bucket_), size_(x.size_)
+ {
+ unordered_detail::reset(x.buckets_);
+ }
+
+ BOOST_UNORDERED_TABLE_DATA(BOOST_UNORDERED_TABLE_DATA& x,
+ value_allocator const& a, size_type n, move_tag)
+ : allocators_(a), buckets_(), bucket_count_(),
+ cached_begin_bucket_(), size_(0)
+ {
+ if(allocators_ == x.allocators_) {
+ buckets_ = x.buckets_;
+ bucket_count_ = x.bucket_count_;
+ cached_begin_bucket_ = x.cached_begin_bucket_;
+ size_ = x.size_;
+ unordered_detail::reset(x.buckets_);
+ }
+ else {
+ BOOST_UNORDERED_MSVC_RESET_PTR(buckets_);
+ bucket_count_ = next_prime(n);
+ create_buckets();
+ }
+ }
+
+ // no throw
+ ~BOOST_UNORDERED_TABLE_DATA()
+ {
+ delete_buckets();
+ }
+
+ void create_buckets() {
// The array constructor will clean up in the event of an
// exception.
allocator_array_constructor<bucket_allocator>
@@ -356,7 +380,7 @@
cached_begin_bucket_ = constructor.get() + static_cast<difference_type>(bucket_count_);
- // Set up the sentinel
+ // Set up the sentinel.
cached_begin_bucket_->next_ = link_ptr(cached_begin_bucket_);
// Only release the buckets once everything is successfully
@@ -365,7 +389,7 @@
}
// no throw
- ~BOOST_UNORDERED_TABLE_DATA()
+ void delete_buckets()
{
if(buckets_) {
bucket_ptr begin = cached_begin_bucket_;
@@ -400,6 +424,17 @@
std::swap(size_, other.size_);
}
+ // no throw
+ void move(BOOST_UNORDERED_TABLE_DATA& other)
+ {
+ delete_buckets();
+ buckets_ = other.buckets_;
+ unordered_detail::reset(other.buckets_);
+ bucket_count_ = other.bucket_count_;
+ cached_begin_bucket_ = other.cached_begin_bucket_;
+ size_ = other.size_;
+ }
+
// Return the bucket for a hashed value.
//
// no throw
@@ -525,8 +560,11 @@
// no throw
#if BOOST_UNORDERED_EQUIVALENT_KEYS
- void link_node(link_ptr n, link_ptr pos)
+ // If n points to the first node in a group, this adds it to the
+ // end of that group.
+ link_ptr link_node(node_constructor& a, link_ptr pos)
{
+ link_ptr n = a.release();
node& node_ref = get_node(n);
node& pos_ref = get_node(pos);
node_ref.next_ = pos_ref.group_prev_->next_;
@@ -534,16 +572,19 @@
pos_ref.group_prev_->next_ = n;
pos_ref.group_prev_ = n;
++size_;
+ return n;
}
- void link_node_in_bucket(link_ptr n, bucket_ptr base)
+ link_ptr link_node_in_bucket(node_constructor& a, bucket_ptr base)
{
+ link_ptr n = a.release();
node& node_ref = get_node(n);
node_ref.next_ = base->next_;
node_ref.group_prev_ = n;
base->next_ = n;
++size_;
if(base < cached_begin_bucket_) cached_begin_bucket_ = base;
+ return n;
}
void link_group(link_ptr n, bucket_ptr base, size_type count)
@@ -556,7 +597,7 @@
if(base < cached_begin_bucket_) cached_begin_bucket_ = base;
}
#else
- void link_node_in_bucket(link_ptr n, bucket_ptr base)
+ void link_node(link_ptr n, bucket_ptr base)
{
n->next_ = base->next_;
base->next_ = n;
@@ -564,9 +605,16 @@
if(base < cached_begin_bucket_) cached_begin_bucket_ = base;
}
+ link_ptr link_node_in_bucket(node_constructor& a, bucket_ptr base)
+ {
+ link_ptr n = a.release();
+ link_node(n, base);
+ return n;
+ }
+
void link_group(link_ptr n, bucket_ptr base, size_type)
{
- link_node_in_bucket(n, base);
+ link_node(n, base);
}
#endif
@@ -698,69 +746,33 @@
}
#endif
- // throws, strong exception-safety:
- link_ptr construct_node(value_type const& v)
- {
- node_constructor a(allocators_);
- a.construct(v);
- return a.release();
- }
-
- // Create Node
+ // copy_group
//
- // Create a node and add it to the buckets in the given position.
- //
- // strong exception safety.
-
- iterator_base create_node(value_type const& v, bucket_ptr base)
- {
- // throws, strong exception-safety:
- link_ptr n = construct_node(v);
-
- // Rest is no throw
- link_node_in_bucket(n, base);
- return iterator_base(base, n);
- }
+ // Basic exception safety.
+ // If it throws, it only copies some of the nodes in the group.
#if BOOST_UNORDERED_EQUIVALENT_KEYS
- iterator_base create_node(value_type const& v, iterator_base position)
- {
- // throws, strong exception-safety:
- link_ptr n = construct_node(v);
-
- // Rest is no throw
- link_node(n, position.node_);
- return iterator_base(position.bucket_, n);
- }
-
- iterator_base create_node(value_type const& v,
- bucket_ptr base, link_ptr position)
+ void copy_group(link_ptr it, bucket_ptr dst)
{
- // throws, strong exception-safety:
- link_ptr n = construct_node(v);
+ node_constructor a(allocators_);
- // Rest is no throw
- if(BOOST_UNORDERED_BORLAND_BOOL(position))
- link_node(n, position);
- else
- link_node_in_bucket(n, base);
+ link_ptr end = next_group(it);
- return iterator_base(base, n);
- }
-#endif
+ a.construct(get_value(it)); // throws
+ link_ptr n = link_node_in_bucket(a, dst);
-#if BOOST_UNORDERED_EQUIVALENT_KEYS
- void copy_group(link_ptr it, bucket_ptr dst)
- {
- link_ptr end = next_group(it);
- iterator_base pos = create_node(get_value(it), dst);
- for(it = it->next_; it != end; it = it->next_)
- create_node(get_value(it), pos);
+ for(it = it->next_; it != end; it = it->next_) {
+ a.construct(get_value(it)); // throws
+ link_node(a, n);
+ }
}
#else
void copy_group(link_ptr it, bucket_ptr dst)
{
- create_node(get_value(it), dst);
+ node_constructor a(allocators_);
+
+ a.construct(get_value(it)); // throws
+ link_node_in_bucket(a, dst);
}
#endif
@@ -844,7 +856,7 @@
return next;
}
- iterator_base erase(iterator_base r1, iterator_base r2)
+ iterator_base erase_range(iterator_base r1, iterator_base r2)
{
if(r1 != r2)
{
@@ -978,36 +990,12 @@
private:
- class functions
- {
- std::pair<hasher, key_equal> functions_;
-
- public:
-
- functions(hasher const& h, key_equal const& k)
- : functions_(h, k) {}
-
- hasher const& hash_function() const
- {
- return functions_.first;
- }
-
- key_equal const& key_eq() const
- {
- return functions_.second;
- }
- };
- // Both hasher and key_equal's copy/assign can throw so double
- // buffering is used to copy them. func_ points to the currently
- // active function objects.
-
- typedef functions BOOST_UNORDERED_TABLE::*functions_ptr;
-
- functions func1_;
- functions func2_;
- functions_ptr func_;
+ typedef boost::unordered_detail::buffered_functions<Hash, Pred> buffered_functions;
+ typedef BOOST_DEDUCED_TYPENAME buffered_functions::functions functions;
+ typedef BOOST_DEDUCED_TYPENAME buffered_functions::functions_ptr functions_ptr;
+ buffered_functions functions_;
float mlf_;
size_type max_load_;
@@ -1023,9 +1011,7 @@
BOOST_UNORDERED_TABLE(size_type n,
hasher const& hf, key_equal const& eq,
value_allocator const& a)
- : func1_(hf, eq), // throws, cleans itself up
- func2_(hf, eq), // throws, cleans itself up
- func_(&BOOST_UNORDERED_TABLE::func1_), // no throw
+ : functions_(hf, eq), // throws, cleans itself up
mlf_(1.0f), // no throw
data_(n, a) // throws, cleans itself up
{
@@ -1069,54 +1055,74 @@
BOOST_UNORDERED_TABLE(I i, I j, size_type n,
hasher const& hf, key_equal const& eq,
value_allocator const& a)
- : func1_(hf, eq), // throws, cleans itself up
- func2_(hf, eq), // throws, cleans itself up
- func_(&BOOST_UNORDERED_TABLE::func1_), // no throw
- mlf_(1.0f), // no throw
- data_(initial_size(i, j, n), a) // throws, cleans itself up
+ : functions_(hf, eq), // throws, cleans itself up
+ mlf_(1.0f), // no throw
+ data_(initial_size(i, j, n), a) // throws, cleans itself up
{
calculate_max_load(); // no throw
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean up.
- insert(i, j);
+ insert_range(i, j);
}
// Copy Construct
BOOST_UNORDERED_TABLE(BOOST_UNORDERED_TABLE const& x)
- : func1_(x.current_functions()), // throws
- func2_(x.current_functions()), // throws
- func_(&BOOST_UNORDERED_TABLE::func1_), // no throw
- mlf_(x.mlf_), // no throw
- data_(x.data_, x.min_buckets_for_size(x.size())) // throws
+ : functions_(x.functions_), // throws
+ mlf_(x.mlf_), // no throw
+ data_(x.data_, x.min_buckets_for_size(x.size())) // throws
{
calculate_max_load(); // no throw
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
// up.
- copy_buckets(x.data_, data_, current_functions());
+ copy_buckets(x.data_, data_, functions_.current());
}
// Copy Construct with allocator
BOOST_UNORDERED_TABLE(BOOST_UNORDERED_TABLE const& x,
value_allocator const& a)
- : func1_(x.current_functions()), // throws
- func2_(x.current_functions()), // throws
- func_(&BOOST_UNORDERED_TABLE::func1_), // no throw
- mlf_(x.mlf_), // no throw
+ : functions_(x.functions_), // throws
+ mlf_(x.mlf_), // no throw
data_(x.min_buckets_for_size(x.size()), a)
{
calculate_max_load(); // no throw
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
// up.
- copy_buckets(x.data_, data_, current_functions());
+ copy_buckets(x.data_, data_, functions_.current());
+ }
+
+ // Move Construct
+
+ BOOST_UNORDERED_TABLE(BOOST_UNORDERED_TABLE& x, move_tag m)
+ : functions_(x.functions_), // throws
+ mlf_(x.mlf_), // no throw
+ data_(x.data_, m) // throws
+ {
+ calculate_max_load(); // no throw
+ }
+
+ BOOST_UNORDERED_TABLE(BOOST_UNORDERED_TABLE& x,
+ value_allocator const& a, move_tag m)
+ : functions_(x.functions_), // throws
+ mlf_(x.mlf_), // no throw
+ data_(x.data_, a,
+ x.min_buckets_for_size(x.size()), m) // throws
+ {
+ calculate_max_load(); // no throw
+
+ if(x.data_.buckets_) {
+ // This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
+ // up.
+ copy_buckets(x.data_, data_, functions_.current());
+ }
}
// Assign
//
- // basic exception safety, if copy_functions of reserver throws
+ // basic exception safety, if buffered_functions::buffer or reserver throws
// the container is left in a sane, empty state. If copy_buckets
// throws the container is left with whatever was successfully
// copied.
@@ -1126,11 +1132,12 @@
if(this != &x)
{
data_.clear(); // no throw
- func_ = copy_functions(x); // throws, strong
+ functions_.set(functions_.buffer(x.functions_));
+ // throws, strong
mlf_ = x.mlf_; // no throw
calculate_max_load(); // no throw
reserve(x.size()); // throws
- copy_buckets(x.data_, data_, current_functions()); // throws
+ copy_buckets(x.data_, data_, functions_.current()); // throws
}
return *this;
@@ -1152,10 +1159,11 @@
void swap(BOOST_UNORDERED_TABLE& x)
{
- // This only effects the function objects that aren't in use
- // so it is strongly exception safe, via. double buffering.
- functions_ptr new_func_this = copy_functions(x); // throws
- functions_ptr new_func_that = x.copy_functions(*this); // throws
+ // These can throw, but they only affect the function objects
+ // that aren't in use so it is strongly exception safe, via.
+ // double buffering.
+ functions_ptr new_func_this = functions_.buffer(x.functions_);
+ functions_ptr new_func_that = x.functions_.buffer(functions_);
if(data_.allocators_ == x.data_.allocators_) {
data_.swap(x.data_); // no throw
@@ -1165,10 +1173,10 @@
// which will clean up if anything throws an exception.
// (all can throw, but with no effect as these are new objects).
data new_this(data_, x.min_buckets_for_size(x.data_.size_));
- copy_buckets(x.data_, new_this, this->*new_func_this);
+ copy_buckets(x.data_, new_this, functions_.*new_func_this);
data new_that(x.data_, min_buckets_for_size(data_.size_));
- x.copy_buckets(data_, new_that, x.*new_func_that);
+ x.copy_buckets(data_, new_that, x.functions_.*new_func_that);
// Start updating the data here, no throw from now on.
data_.swap(new_this);
@@ -1178,37 +1186,48 @@
// We've made it, the rest is no throw.
std::swap(mlf_, x.mlf_);
- func_ = new_func_this;
- x.func_ = new_func_that;
+ functions_.set(new_func_this);
+ x.functions_.set(new_func_that);
calculate_max_load();
x.calculate_max_load();
}
- private:
+ // Move
+ //
+ // ----------------------------------------------------------------
+ //
+ // Strong exception safety (might change unused function objects)
+ //
+ // Can throw if hash or predicate object's copy constructor throws
+ // or if allocators are unequal.
- functions const& current_functions() const
+ void move(BOOST_UNORDERED_TABLE& x)
{
- return this->*func_;
- }
+ // This can throw, but it only affects the function objects
+ // that aren't in use so it is strongly exception safe, via.
+ // double buffering.
+ functions_ptr new_func_this = functions_.buffer(x.functions_);
- // This copies the given function objects into the currently unused
- // function objects and returns a pointer, that func_ can later be
- // set to, to commit the change.
- //
- // Strong exception safety (since only usued function objects are
- // changed).
- functions_ptr copy_functions(BOOST_UNORDERED_TABLE const& x)
- {
- // no throw:
- functions_ptr ptr = func_ == &BOOST_UNORDERED_TABLE::func1_
- ? &BOOST_UNORDERED_TABLE::func2_ : &BOOST_UNORDERED_TABLE::func1_;
- // throws, functions not in use, so strong
- this->*ptr = x.current_functions();
- return ptr;
- }
+ if(data_.allocators_ == x.data_.allocators_) {
+ data_.move(x.data_); // no throw
+ }
+ else {
+ // Create new buckets in separate HASH_TABLE_DATA objects
+ // which will clean up if anything throws an exception.
+ // (all can throw, but with no effect as these are new objects).
+ data new_this(data_, x.min_buckets_for_size(x.data_.size_));
+ copy_buckets(x.data_, new_this, functions_.*new_func_this);
- public:
+ // Start updating the data here, no throw from now on.
+ data_.move(new_this);
+ }
+
+ // We've made it, the rest is no throw.
+ mlf_ = x.mlf_;
+ functions_.set(new_func_this);
+ calculate_max_load();
+ }
// accessors
@@ -1221,13 +1240,13 @@
// no throw
hasher const& hash_function() const
{
- return current_functions().hash_function();
+ return functions_.current().hash_function();
}
// no throw
key_equal const& key_eq() const
{
- return current_functions().key_eq();
+ return functions_.current().key_eq();
}
// no throw
@@ -1503,25 +1522,20 @@
if(reserve(size() + 1))
bucket = data_.bucket_from_hash(hash_value);
- // Nothing after the point can throw.
-
- link_ptr n = a.release();
-
// I'm relying on link_ptr not being invalidated by
// the rehash here.
- if(BOOST_UNORDERED_BORLAND_BOOL(position))
- data_.link_node(n, position);
- else
- data_.link_node_in_bucket(n, bucket);
-
- return iterator_base(bucket, n);
+ return iterator_base(bucket,
+ (BOOST_UNORDERED_BORLAND_BOOL(position)) ?
+ data_.link_node(a, position) :
+ data_.link_node_in_bucket(a, bucket)
+ );
}
// Insert (equivalent key containers)
// if hash function throws, basic exception safety
// strong otherwise
- iterator_base insert(iterator_base const& it, value_type const& v)
+ iterator_base insert_hint(iterator_base const& it, value_type const& v)
{
// equal can throw, but with no effects
if (it == data_.end() || !equal(extract_key(v), *it)) {
@@ -1549,10 +1563,8 @@
// Nothing after this point can throw
- link_ptr n = a.release();
- data_.link_node(n, start);
-
- return iterator_base(base, n);
+ return iterator_base(base,
+ data_.link_node(a, start));
}
}
@@ -1582,9 +1594,9 @@
link_ptr position = find_iterator(bucket, k);
if(BOOST_UNORDERED_BORLAND_BOOL(position))
- data_.link_node(a.release(), position);
+ data_.link_node(a, position);
else
- data_.link_node_in_bucket(a.release(), bucket);
+ data_.link_node_in_bucket(a, bucket);
}
}
}
@@ -1605,7 +1617,7 @@
// if hash function throws, or inserting > 1 element, basic exception safety
// strong otherwise
template <typename I>
- void insert(I i, I j)
+ void insert_range(I i, I j)
{
BOOST_DEDUCED_TYPENAME boost::iterator_traversal<I>::type
iterator_traversal_tag;
@@ -1642,10 +1654,7 @@
// Nothing after this point can throw.
- link_ptr n = a.release();
- data_.link_node_in_bucket(n, bucket);
-
- return data::get_value(n);
+ return data::get_value(data_.link_node_in_bucket(a, bucket));
}
}
@@ -1682,8 +1691,7 @@
// Nothing after this point can throw.
- link_ptr n = a.release();
- data_.link_node_in_bucket(n, bucket);
+ link_ptr n = data_.link_node_in_bucket(a, bucket);
return std::pair<iterator_base, bool>(
iterator_base(bucket, n), true);
@@ -1694,7 +1702,7 @@
// if hash function throws, basic exception safety
// strong otherwise
- iterator_base insert(iterator_base const& it, value_type const& v)
+ iterator_base insert_hint(iterator_base const& it, value_type const& v)
{
if(it != data_.end() && equal(extract_key(v), *it))
return it;
@@ -1727,7 +1735,7 @@
// if hash function throws, or inserting > 1 element, basic exception safety
// strong otherwise
template <typename InputIterator>
- void insert(InputIterator i, InputIterator j)
+ void insert_range(InputIterator i, InputIterator j)
{
node_constructor a(data_.allocators_);
@@ -1753,23 +1761,17 @@
}
// Nothing after this point can throw.
- data_.link_node_in_bucket(a.release(), bucket);
+ data_.link_node_in_bucket(a, bucket);
}
}
}
#endif
public:
- // erase
-
- // no throw
- iterator_base erase(iterator_base const& r)
- {
- return data_.data::erase(r);
- }
+ // erase_key
// strong exception safety
- size_type erase(key_type const& k)
+ size_type erase_key(key_type const& k)
{
// No side effects in initial section
bucket_ptr bucket = get_bucket(k);
@@ -1779,12 +1781,6 @@
return *it ? data_.erase_group(it, bucket) : 0;
}
- // no throw
- iterator_base erase(iterator_base const& r1, iterator_base const& r2)
- {
- return data_.data::erase(r1, r2);
- }
-
// count
//
// strong exception safety, no side effects
Modified: branches/proto/v4/boost/unordered_map.hpp
==============================================================================
--- branches/proto/v4/boost/unordered_map.hpp (original)
+++ branches/proto/v4/boost/unordered_map.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -21,6 +21,10 @@
#include <boost/unordered/detail/hash_table.hpp>
#include <boost/functional/hash.hpp>
+#if !defined(BOOST_HAS_RVALUE_REFS)
+#include <boost/unordered/detail/move.hpp>
+#endif
+
namespace boost
{
template <class Key,
@@ -100,6 +104,35 @@
{
}
+#if defined(BOOST_HAS_RVALUE_REFS)
+ unordered_map(unordered_map&& other)
+ : base(other.base, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_map(unordered_map&& other, allocator_type const& a)
+ : base(other.base, a, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_map& operator=(unordered_map&& x)
+ {
+ base.move(x.base);
+ return *this;
+ }
+#else
+ unordered_map(boost::unordered_detail::move_from<unordered_map> other)
+ : base(other.base, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_map& operator=(unordered_map x)
+ {
+ base.move(x.base);
+ return *this;
+ }
+#endif
+
private:
BOOST_DEDUCED_TYPENAME implementation::iterator_base const&
@@ -174,28 +207,28 @@
iterator insert(const_iterator hint, const value_type& obj)
{
- return iterator(base.insert(get(hint), obj));
+ return iterator(base.insert_hint(get(hint), obj));
}
template <class InputIterator>
void insert(InputIterator first, InputIterator last)
{
- base.insert(first, last);
+ base.insert_range(first, last);
}
iterator erase(const_iterator position)
{
- return iterator(base.erase(get(position)));
+ return iterator(base.data_.erase(get(position)));
}
size_type erase(const key_type& k)
{
- return base.erase(k);
+ return base.erase_key(k);
}
iterator erase(const_iterator first, const_iterator last)
{
- return iterator(base.erase(get(first), get(last)));
+ return iterator(base.data_.erase_range(get(first), get(last)));
}
void clear()
@@ -424,6 +457,36 @@
{
}
+#if defined(BOOST_HAS_RVALUE_REFS)
+ unordered_multimap(unordered_multimap&& other)
+ : base(other.base, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_multimap(unordered_multimap&& other, allocator_type const& a)
+ : base(other.base, a, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_multimap& operator=(unordered_multimap&& x)
+ {
+ base.move(x.base);
+ return *this;
+ }
+#else
+ unordered_multimap(boost::unordered_detail::move_from<unordered_multimap> other)
+ : base(other.base, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_multimap& operator=(unordered_multimap x)
+ {
+ base.move(x.base);
+ return *this;
+ }
+#endif
+
+
private:
BOOST_DEDUCED_TYPENAME implementation::iterator_base const&
@@ -497,28 +560,28 @@
iterator insert(const_iterator hint, const value_type& obj)
{
- return iterator(base.insert(get(hint), obj));
+ return iterator(base.insert_hint(get(hint), obj));
}
template <class InputIterator>
void insert(InputIterator first, InputIterator last)
{
- base.insert(first, last);
+ base.insert_range(first, last);
}
iterator erase(const_iterator position)
{
- return iterator(base.erase(get(position)));
+ return iterator(base.data_.erase(get(position)));
}
size_type erase(const key_type& k)
{
- return base.erase(k);
+ return base.erase_key(k);
}
iterator erase(const_iterator first, const_iterator last)
{
- return iterator(base.erase(get(first), get(last)));
+ return iterator(base.data_.erase_range(get(first), get(last)));
}
void clear()
Modified: branches/proto/v4/boost/unordered_set.hpp
==============================================================================
--- branches/proto/v4/boost/unordered_set.hpp (original)
+++ branches/proto/v4/boost/unordered_set.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -21,6 +21,10 @@
#include <boost/unordered/detail/hash_table.hpp>
#include <boost/functional/hash.hpp>
+#if !defined(BOOST_HAS_RVALUE_REFS)
+#include <boost/unordered/detail/move.hpp>
+#endif
+
namespace boost
{
template <class Value,
@@ -97,6 +101,35 @@
{
}
+#if defined(BOOST_HAS_RVALUE_REFS)
+ unordered_set(unordered_set&& other)
+ : base(other.base, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_set(unordered_set&& other, allocator_type const& a)
+ : base(other.base, a, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_set& operator=(unordered_set&& x)
+ {
+ base.move(x.base);
+ return *this;
+ }
+#else
+ unordered_set(boost::unordered_detail::move_from<unordered_set> other)
+ : base(other.base, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_set& operator=(unordered_set x)
+ {
+ base.move(x.base);
+ return *this;
+ }
+#endif
+
private:
BOOST_DEDUCED_TYPENAME implementation::iterator_base const&
@@ -171,28 +204,28 @@
iterator insert(const_iterator hint, const value_type& obj)
{
- return iterator(base.insert(get(hint), obj));
+ return iterator(base.insert_hint(get(hint), obj));
}
template <class InputIterator>
void insert(InputIterator first, InputIterator last)
{
- base.insert(first, last);
+ base.insert_range(first, last);
}
iterator erase(const_iterator position)
{
- return iterator(base.erase(get(position)));
+ return iterator(base.data_.erase(get(position)));
}
size_type erase(const key_type& k)
{
- return base.erase(k);
+ return base.erase_key(k);
}
iterator erase(const_iterator first, const_iterator last)
{
- return iterator(base.erase(get(first), get(last)));
+ return iterator(base.data_.erase_range(get(first), get(last)));
}
void clear()
@@ -392,6 +425,35 @@
{
}
+#if defined(BOOST_HAS_RVALUE_REFS)
+ unordered_multiset(unordered_multiset&& other)
+ : base(other.base, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_multiset(unordered_multiset&& other, allocator_type const& a)
+ : base(other.base, a, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_multiset& operator=(unordered_multiset&& x)
+ {
+ base.move(x.base);
+ return *this;
+ }
+#else
+ unordered_multiset(boost::unordered_detail::move_from<unordered_multiset> other)
+ : base(other.base, boost::unordered_detail::move_tag())
+ {
+ }
+
+ unordered_multiset& operator=(unordered_multiset x)
+ {
+ base.move(x.base);
+ return *this;
+ }
+#endif
+
private:
BOOST_DEDUCED_TYPENAME implementation::iterator_base const&
@@ -465,28 +527,28 @@
iterator insert(const_iterator hint, const value_type& obj)
{
- return iterator(base.insert(get(hint), obj));
+ return iterator(base.insert_hint(get(hint), obj));
}
template <class InputIterator>
void insert(InputIterator first, InputIterator last)
{
- base.insert(first, last);
+ base.insert_range(first, last);
}
iterator erase(const_iterator position)
{
- return iterator(base.erase(get(position)));
+ return iterator(base.data_.erase(get(position)));
}
size_type erase(const key_type& k)
{
- return base.erase(k);
+ return base.erase_key(k);
}
iterator erase(const_iterator first, const_iterator last)
{
- return iterator(base.erase(get(first), get(last)));
+ return iterator(base.data_.erase_range(get(first), get(last)));
}
void clear()
Modified: branches/proto/v4/boost/wave/cpp_context.hpp
==============================================================================
--- branches/proto/v4/boost/wave/cpp_context.hpp (original)
+++ branches/proto/v4/boost/wave/cpp_context.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -104,7 +104,7 @@
// public typedefs
typedef typename LexIteratorT::token_type token_type;
typedef typename token_type::string_type string_type;
-
+
typedef IteratorT target_iterator_type;
typedef LexIteratorT lexer_type;
typedef pp_iterator<context> iterator_type;
@@ -220,25 +220,25 @@
}
template <typename StringT>
bool get_macro_definition(StringT const &name,
- bool &has_params, bool &is_predefined, position_type &pos,
- std::vector<token_type> ¶meters,
- token_sequence_type &definition) const
- {
+ bool &has_params, bool &is_predefined, position_type &pos,
+ std::vector<token_type> ¶meters,
+ token_sequence_type &definition) const
+ {
return macros.get_macro(util::to_string<string_type>(name),
has_params, is_predefined, pos, parameters, definition);
- }
+ }
template <typename StringT>
bool remove_macro_definition(StringT const &name,
bool even_predefined = false)
- {
+ {
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- // ensure this gets removed from the list of include guards as well
+ // ensure this gets removed from the list of include guards as well
includes.remove_pragma_once_header(
util::to_string<std::string>(name));
#endif
return macros.remove_macro(util::to_string<string_type>(name),
macros.get_main_pos(), even_predefined);
- }
+ }
void reset_macro_definitions()
{ macros.reset_macromap(); macros.init_predefined_macros(); }
Modified: branches/proto/v4/boost/wave/cpplexer/cpp_lex_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/wave/cpplexer/cpp_lex_iterator.hpp (original)
+++ branches/proto/v4/boost/wave/cpplexer/cpp_lex_iterator.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -58,7 +58,7 @@
public:
lex_iterator_functor_shim()
#if 0 != __DECCXX_VER || BOOST_INTEL_CXX_VERSION > 900 || defined(__PGI)
- , eof()
+ : eof()
#endif
{}
@@ -78,9 +78,9 @@
// this will be called whenever the last reference to a multi_pass will
// be released
template <typename MultiPass>
- static void destroy(MultiPass& mp_shared)
- {
- delete mp_shared->ftor;
+ static void destroy(MultiPass& mp)
+ {
+ delete mp.shared->ftor;
}
template <typename MultiPass>
Modified: branches/proto/v4/boost/wave/cpplexer/cpp_lex_token.hpp
==============================================================================
--- branches/proto/v4/boost/wave/cpplexer/cpp_lex_token.hpp (original)
+++ branches/proto/v4/boost/wave/cpplexer/cpp_lex_token.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -183,7 +183,7 @@
public:
typedef BOOST_WAVE_STRINGTYPE string_type;
typedef PositionT position_type;
-
+
private:
typedef impl::token_data<string_type, position_type> data_type;
@@ -196,7 +196,7 @@
: data(rhs.data)
{
if (0 != data)
- data->addref();
+ data->addref();
}
lex_token(token_id id_, string_type const &value_, PositionT const &pos_)
@@ -218,7 +218,7 @@
data = rhs.data;
if (0 != data)
- data->addref();
+ data->addref();
}
return *this;
}
Modified: branches/proto/v4/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp
==============================================================================
--- branches/proto/v4/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp (original)
+++ branches/proto/v4/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -280,11 +280,11 @@
// std::cerr << boost::wave::get_token_name(id) << ": " << value << std::endl;
// the re2c lexer reports the new line number for newline tokens
-#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
result = token_type(id, value, PositionT(filename, actline, scanner.column));
+
+#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
return guards.detect_guard(result);
#else
- result = token_type(id, value, PositionT(filename, actline, scanner.column));
return result;
#endif
}
@@ -324,7 +324,7 @@
>
{
public:
- typedef typename lexer<IteratorT, PositionT>::token_type token_type;
+ typedef typename lexer<IteratorT, PositionT>::token_type token_type;
lex_functor(IteratorT const &first, IteratorT const &last,
PositionT const &pos, boost::wave::language_support language)
Modified: branches/proto/v4/boost/wave/util/cpp_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/wave/util/cpp_iterator.hpp (original)
+++ branches/proto/v4/boost/wave/util/cpp_iterator.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -913,7 +913,7 @@
call_skipped_token_hook(ctx, *it);
for (++it; it != end; ++it) {
- token_id id = token_id(*it);
+ token_id id = token_id(*it);
if (T_CPPCOMMENT == id || T_NEWLINE == id ||
context_policies::util::ccomment_has_newline(*it))
@@ -984,9 +984,9 @@
}
///////////////////////////////////////////////////////////////////////////////
-template <typename ContextT>
+template <typename ContextT>
template <typename IteratorT>
-inline bool
+inline bool
pp_iterator_functor<ContextT>::ensure_is_last_on_line(IteratorT& it)
{
if (!impl::pp_is_last_on_line(ctx, it, iter_ctx->last, false))
@@ -1057,37 +1057,37 @@
token_id id = token_id(*it);
bool can_exit = true;
if (!ctx.get_if_block_status()) {
- if (IS_EXTCATEGORY(*it, PPConditionalTokenType)) {
- // simulate the if block hierarchy
+ if (IS_EXTCATEGORY(*it, PPConditionalTokenType)) {
+ // simulate the if block hierarchy
switch (static_cast<unsigned int>(id)) {
- case T_PP_IFDEF: // #ifdef
- case T_PP_IFNDEF: // #ifndef
- case T_PP_IF: // #if
- ctx.enter_if_block(false);
- break;
+ case T_PP_IFDEF: // #ifdef
+ case T_PP_IFNDEF: // #ifndef
+ case T_PP_IF: // #if
+ ctx.enter_if_block(false);
+ break;
- case T_PP_ELIF: // #elif
- if (!ctx.get_enclosing_if_block_status()) {
- if (!ctx.enter_elif_block(false)) {
- // #else without matching #if
- BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
- missing_matching_if, "#elif", act_pos);
- return true; // do not analyze this directive any further
+ case T_PP_ELIF: // #elif
+ if (!ctx.get_enclosing_if_block_status()) {
+ if (!ctx.enter_elif_block(false)) {
+ // #else without matching #if
+ BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
+ missing_matching_if, "#elif", act_pos);
+ return true; // do not analyze this directive any further
+ }
}
- }
- else {
- can_exit = false; // #elif is not always safe to skip
- }
- break;
+ else {
+ can_exit = false; // #elif is not always safe to skip
+ }
+ break;
- case T_PP_ELSE: // #else
- case T_PP_ENDIF: // #endif
- {
- // handle this directive
- if (T_PP_ELSE == token_id(*it))
- on_else();
- else
- on_endif();
+ case T_PP_ELSE: // #else
+ case T_PP_ENDIF: // #endif
+ {
+ // handle this directive
+ if (T_PP_ELSE == token_id(*it))
+ on_else();
+ else
+ on_endif();
// make sure, there are no (non-whitespace) tokens left on
// this line
@@ -1098,11 +1098,11 @@
iter_ctx->first = it;
}
return true;
-
+
default: // #something else
on_illformed((*it).get_value());
- break;
- }
+ break;
+ }
}
}
else {
@@ -1144,11 +1144,11 @@
// this line
if (ensure_is_last_on_line(it))
{
- seen_newline = true;
- iter_ctx->first = it;
+ seen_newline = true;
+ iter_ctx->first = it;
on_include (dir, true, include_next);
- }
- return true;
+ }
+ return true;
}
break;
@@ -1165,7 +1165,7 @@
// make sure, there are no (non-whitespace) tokens left on
// this line
ensure_is_last_on_line(it);
-
+
// we skipped to the end of this line already
seen_newline = true;
iter_ctx->first = it;
@@ -1188,7 +1188,7 @@
extract_identifier(it))
{
on_undefine(it);
- }
+ }
break;
case T_PP_IFDEF: // #ifdef
@@ -1196,13 +1196,13 @@
extract_identifier(it))
{
on_ifdef(directive, it);
- }
+ }
break;
case T_PP_IFNDEF: // #ifndef
if (!impl::call_found_directive_hook(ctx, *it) &&
extract_identifier(it))
- {
+ {
on_ifndef(directive, it);
}
break;
@@ -1214,12 +1214,12 @@
// case T_MSEXT_PP_ENDREGION: // #endregion
// break;
#endif
-
+
default:
can_exit = false;
break;
}
- }
+ }
// start over with the next line, if only possible
if (can_exit) {
@@ -1345,7 +1345,7 @@
// call preprocessing hook
if (impl::call_found_directive_hook(ctx, found_directive))
return true; // skip this directive and return newline only
-
+
switch (static_cast<unsigned int>(id)) {
// case T_PP_QHEADER: // #include "..."
// #if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
@@ -1805,7 +1805,6 @@
// make_ref_transform_iterator((*begin).children.end(), get_value),
// std::inserter(toexpand, toexpand.end()));
-
bool is_defined = false;
token_sequence_type directive;
Modified: branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html (original)
+++ branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>BOOST_ERROR_INFO</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/info.hpp</span>></tt></p>
<pre>namespace
@@ -34,6 +37,9 @@
</div><h3>See also:</h3>
<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Deleted: branches/proto/v4/libs/exception/doc/adding_data_at_throw.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/adding_data_at_throw.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
+++ (empty file)
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Adding of Arbitrary Data at the Point of the Throw</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Adding of Arbitrary Data at the Point of the Throw</h3>
-<p>The following example demonstrates how <tt>errno</tt> can be stored in exception objects using Boost Exception:</p>
-<pre>#include <<span class="RenoLink">boost/exception.hpp</span>>
-#include <errno.h>
-#include <iostream>
-
-typedef boost::<span class="RenoLink">error_info</span><struct tag_errno,int> errno_info; //(1)
-
-class my_error: public boost::<span class="RenoLink">exception</span>, public std::exception { }; //(2)
-
-void
-f()
- {
- throw my_error() << errno_info(errno); //(3)
- }
-</pre>
-<p>First, we instantiate the <tt><span class="RenoLink">error_info</span></tt> template using a unique identifier -- <tt>tag_errno</tt>, and the type of the info it identifies -- <tt>int</tt>. This provides compile-time type safety for the various values stored in exception objects.</p>
-<p>Second, we define class <tt>my_error</tt>, which derives from <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
-<p>Finally, (3) illustrates how the <tt>typedef</tt> from (1) can be used with <tt><span class="RenoLink">operator<<</span>()</tt> to store values in exception objects at the point of the throw.</p>
-<p>The stored <tt>errno</tt> value can be recovered at a later time like this:</p>
-<pre>// ...continued
-
-void
-g()
- {
- try
- {
- f();
- }
- catch(
- my_error & x )
- {
- if( boost::shared_ptr<int const> err=boost::<span class="RenoLink">get_error_info</span><errno_info>(x) )
- std::cerr << "Error code: " << *err;
- }
- }</pre>
-<p>The <tt><span class="RenoLink">get_error_info</span>()</tt> function template is instantiated with the <tt>typedef</tt> from (1), and is passed an exception object of any type that derives publicly from <tt>boost::<span class="RenoLink">exception</span></tt>. If the exception object contains the requested value, the returned <tt><span class="RenoLink">shared_ptr</span></tt> will point to it; otherwise an empty <tt><span class="RenoLink">shared_ptr</span></tt> is returned.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="transporting_data.html">Tutorial: Transporting of Arbitrary Data to the Catch Site<br/>
-</a></div>
-<div id="footer">
-<p> </p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>
Deleted: branches/proto/v4/libs/exception/doc/adding_data_later.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/adding_data_later.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
+++ (empty file)
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Adding of Arbitrary Data to Active Exception Objects</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Adding of Arbitrary Data to Active Exception Objects</h3>
-<p>Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Here is an example:</p>
-<pre>#include <stdio.h>
-#include <string>
-
-class
-file_read_error
- {
- public:
-
- explicit
- file_read_error( std::string const & fn ):
- fn_(fn)
- {
- };
-
- std::string const &
- file_name() const
- {
- return fn_;
- }
-
- private:
-
- std::string fn_;
- };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw file_read_error("????");
- }</pre>
-<p>We have defined an exception class <tt>file_read_error</tt> which can store a file name, so that when we catch a <tt>file_read_error</tt> object, we know which file the failure is related to. However, the <tt>file_read</tt> function does not have the file name at the time of the throw; all it has is a <tt>FILE</tt> handle.</p>
-<p>One possible solution is to not use <tt>FILE</tt> handles directly. We could have our own <tt>class file</tt> which stores both a <tt>FILE</tt> handle and a file name, and pass that to <tt>file_read()</tt>. However, this could be problematic if we communicate with 3rd party code that does not use our <tt>class file</tt> (probably because they have their own similar class.)</p>
-<p>A better solution is to make class <tt>file_read_error</tt> derive (possibly indirectly) from <tt>boost::<span class="RenoLink">exception</span></tt>, and free the <tt>file_read()</tt> function from the burden of storing the file name in exceptions it throws:</p>
-<pre>#include <<span class="RenoLink">boost/exception.hpp</span>>
-#include <stdio.h>
-#include <errno.h>
-
-typedef boost::<span class="RenoLink">error_info</span><struct tag_errno,int> errno_info;
-
-class file_read_error: public boost::<span class="RenoLink">exception</span> { };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw file_read_error() << errno_info(errno);
- }</pre>
-<p>If <tt>file_read()</tt> detects a failure, it throws an exception which contains the information that is available at the time, namely the <tt>errno</tt>. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally:</p>
-<pre>#include <<span class="RenoLink">boost/exception.hpp</span>>
-#include <boost/shared_ptr.hpp>
-#include <stdio.h>
-#include <string>
-
-typedef boost::<span class="RenoLink">error_info</span><struct tag_file_name,std::string> file_name_info;
-
-boost::shared_ptr<FILE> file_open( char const * file_name, char const * mode );
-void file_read( FILE * f, void * buffer, size_t size );
-
-void
-parse_file( char const * file_name )
- {
- boost::shared_ptr<FILE> f = file_open(file_name,"rb");
- assert(f);
- try
- {
- char buf[1024];
- file_read( f.get(), buf, sizeof(buf) );
- }
- catch(
- boost::<span class="RenoLink">exception</span> & e )
- {
- e << file_name_info(file_name);
- throw;
- }
- }</pre>
-<p>The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the <tt>try</tt> block, <tt>parse_file()</tt> does not need to do any real work, but it intercepts any <tt>boost::<span class="RenoLink">exception</span></tt> object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any <tt>boost::<span class="RenoLink">exception</span></tt> object is that the file name is relevant to any failure that occurs in <tt>parse_file()</tt>, <i>even if the failure is unrelated to file I/O</i>.</p>
-<p>As usual, the stored data can be retrieved using <tt><span class="RenoLink">get_error_info</span>()</tt>.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="transporting_data.html">Tutorial: Transporting of Arbitrary Data to the Catch Site<br/>
-</a></div>
-<div id="footer">
-<p> </p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>
Modified: branches/proto/v4/libs/exception/doc/boost-exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/boost-exception.html (original)
+++ branches/proto/v4/libs/exception/doc/boost-exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h2>Abstract</h2>
<p>The purpose of Boost Exception is to ease the design of exception class hierarchies and to help write exception handling and error reporting code.</p>
<p>It supports transporting of arbitrary data to the catch site, which is otherwise tricky due to the no-throw requirements (15.5.1) for exception classes. Data can be added to any exception object, either directly in the throw-expression (15.1), or at a later time as the exception object propagates up the call stack.</p>
@@ -333,7 +336,7 @@
....
throw boost::<span class="RenoLink">enable_current_exception</span>(my_exception());</pre>
-<p>Unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is called at the time an exception object is used in a throw-expression, any attempt to copy it using <tt><span class="RenoLink">current_exception</span>()</tt> returns an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</p>
+<p>Unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is called at the time an exception object is used in a throw-expression, an attempt to copy it using <tt><span class="RenoLink">current_exception</span>()</tt> may return an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. See <tt><span class="RenoLink">current_exception</span>()</tt> for details.</p>
<h4>Note:</h4>
<p>Instead of using the <tt>throw</tt> keyword directly, it is preferable to call <tt>boost::<span class="RenoLink">throw_exception</span>()</tt>. This is guaranteed to throw an exception that derives from <tt>boost::<span class="RenoLink">exception</span></tt> and supports cloning.</p>
</div><div class="RenoIncludeDIV"><h3>current_exception()</h3>
@@ -405,7 +408,10 @@
<div><ul><li> If <tt>BOOST_NO_EXCEPTIONS</tt> is not defined, <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw boost::<span class="RenoLink">enable_current_exception</span>(boost::<span class="RenoLink">enable_error_info</span>(e))</tt>, unless <tt>BOOST_EXCEPTION_DISABLE</tt> is defined, in which case <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw e;</tt></li>
<li> If <tt>BOOST_NO_EXCEPTIONS</tt> is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of <tt>throw_exception</tt> are allowed to assume that the function never returns; therefore, if the user-defined <tt>throw_exception</tt> returns, the behavior is undefined.</li>
</ul></div>
-</div><div id="footer">
+</div><!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
+<div id="footer">
<p> </p>
<hr/>
<p>
Deleted: branches/proto/v4/libs/exception/doc/clone_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/clone_exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
+++ (empty file)
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>clone_exception</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>clone_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>></tt></p>
-<pre>namespace
-boost
- {
-<span class="RenoIncludeSPAN"> template <class T>
- <span class="RenoLink">exception_ptr</span> <span class="RenoLink">clone_exception</span>( T const & e );</span>
- }</pre>
-</div><h4>Requirements:</h4>
-<p><tt>T</tt> must be polymorphic.</p>
-<h4>Returns:</h4>
-<div><ul><li> If <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> was not used at the time the exception object was passed to <tt>throw</tt>, the returned <tt><span class="RenoLink">exception_ptr</span></tt> refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. In this case, if the original exception object derives from <tt>boost::<span class="RenoLink">exception</span></tt>, then the <tt>boost::<span class="RenoLink">exception</span></tt> sub-object of the <tt><span class="RenoLink">unknown_exception</span></tt> object is initialized by the <tt>boost::<span class="RenoLink">exception</span></tt> copy constructor;</li>
-<li> Otherwise, if the attempt to clone the exception results in a <tt>std::bad_alloc</tt> exception, the returned <tt><span class="RenoLink">exception_ptr</span></tt> refers to an instance of <tt>std::bad_alloc</tt>;</li>
-<li> Otherwise, the returned <tt><span class="RenoLink">exception_ptr</span></tt> refers to a copy of <tt>e</tt>.</li>
-</ul></div>
-<h4>Note:</h4>
-<p>It is unspecified whether the return values of two successive calls to <tt><span class="RenoLink">clone_exception</span>()</tt> refer to the same exception object.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="enable_exception_cloning.html">enable_exception_cloning<br/>
-</a><a href="unknown_exception.html">unknown_exception<br/>
-</a></div>
-<div id="footer">
-<p> </p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>
Modified: branches/proto/v4/libs/exception/doc/cloning.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/cloning.html (original)
+++ branches/proto/v4/libs/exception/doc/cloning.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h2>Transporting of Exceptions between Threads</h2>
<p>Boost Exception supports transporting of exception objects between threads through cloning. This system is similar to <span class="RenoLink">N2179</span>, but because Boost Exception can not rely on language support, the use of <tt><span class="RenoLink">enable_current_exception</span>()</tt> at the time of the throw is required in order to use cloning.</p>
<h4>Note:</h4>
@@ -81,6 +84,9 @@
<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
</a><a href="unknown_exception.html">unknown_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Deleted: branches/proto/v4/libs/exception/doc/cloning_and_rethrowing.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/cloning_and_rethrowing.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
+++ (empty file)
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Cloning and Re-throwing an Exception</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Cloning and Re-throwing an Exception</h3>
-<p>When you catch a <tt>boost::<span class="RenoLink">exception</span></tt>, you can call <tt><span class="RenoLink">current_exception</span>()</tt> to get an <tt><span class="RenoLink">exception_ptr</span></tt> object:</p>
-<pre>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>>
-#include <boost/thread.hpp>
-#include <boost/bind.hpp>
-
-void do_work(); //throws cloning-enabled boost::<span class="RenoLink">exception</span>s
-
-void
-worker_thread( boost::<span class="RenoLink">exception_ptr</span> & error )
- {
- try
- {
- do_work();
- error = boost::<span class="RenoLink">exception_ptr</span>();
- }
- catch(
- ... )
- {
- error = boost::<span class="RenoLink">current_exception</span>();
- }
- }</pre>
-<p>In the above example, note that <tt><span class="RenoLink">current_exception</span>()</tt> captures the original type of the exception object. The exception can be thrown again using the <tt><span class="RenoLink">rethrow_exception</span>()</tt> function:</p>
-<pre>// ...continued
-
-void
-work()
- {
- boost::<span class="RenoLink">exception_ptr</span> error;
- boost::<span class="RenoLink">thread</span> t( boost::<span class="RenoLink">bind</span>(worker_thread,boost::<span class="RenoLink">ref</span>(error)) );
- t.<span class="RenoLink">join</span>();
- if( error )
- boost::<span class="RenoLink">rethrow_exception</span>(error);
- }</pre>
-<p><tt><span class="RenoLink">current_exception</span>()</tt> could fail to copy the original exception object in the following cases:</p>
-<div><ul><li> if there is not enough memory, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt>std::bad_alloc</tt>, or</li>
-<li> if <tt><span class="RenoLink">enable_current_exception</span>()</tt> was not used in the throw-expression passed to the original <tt>throw</tt> statement and the current implementation does not have the necessary compiler-specific support to copy the exception automatically, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</li>
-</ul></div>
-<p>Regardless, the use of <tt><span class="RenoLink">current_exception</span>()</tt> and <tt><span class="RenoLink">rethrow_exception</span>()</tt> in the above examples is well-formed.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
-</a></div>
-<div id="footer">
-<p> </p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>
Modified: branches/proto/v4/libs/exception/doc/copy_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/copy_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/copy_exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>copy_exception()</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
<pre>namespace
@@ -30,6 +33,9 @@
<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
</a><a href="exception_ptr.html">exception_ptr<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/current_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/current_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/current_exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>current_exception()</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
<pre>namespace
@@ -40,6 +43,9 @@
</a><a href="exception_ptr.html">exception_ptr<br/>
</a><a href="unknown_exception.html">unknown_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/enable_current_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/enable_current_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/enable_current_exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>enable_current_exception()</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>></tt></p>
<pre>namespace
@@ -38,7 +41,7 @@
....
throw boost::<span class="RenoLink">enable_current_exception</span>(my_exception());</pre>
-<p>Unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is called at the time an exception object is used in a throw-expression, any attempt to copy it using <tt><span class="RenoLink">current_exception</span>()</tt> returns an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</p>
+<p>Unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is called at the time an exception object is used in a throw-expression, an attempt to copy it using <tt><span class="RenoLink">current_exception</span>()</tt> may return an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. See <tt><span class="RenoLink">current_exception</span>()</tt> for details.</p>
<h4>Note:</h4>
<p>Instead of using the <tt>throw</tt> keyword directly, it is preferable to call <tt>boost::<span class="RenoLink">throw_exception</span>()</tt>. This is guaranteed to throw an exception that derives from <tt>boost::<span class="RenoLink">exception</span></tt> and supports cloning.</p>
</div><h3>See also:</h3>
@@ -47,6 +50,9 @@
</a><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
</a><a href="throw_exception.html">throw_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/enable_error_info.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/enable_error_info.html (original)
+++ branches/proto/v4/libs/exception/doc/enable_error_info.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>enable_error_info()</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/enable_error_info.hpp</span>></tt></p>
<pre>namespace
@@ -35,6 +38,9 @@
</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
</a><a href="throw_exception.html">throw_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Deleted: branches/proto/v4/libs/exception/doc/enable_exception_cloning.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/enable_exception_cloning.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
+++ (empty file)
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>enable_exception_cloning</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>enable_exception_cloning()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/enable_exception_cloning.hpp</span>></tt></p>
-<pre>namespace
-boost
- {
-<span class="RenoIncludeSPAN"> template <class T>
- ---unspecified--- <span class="RenoLink">enable_exception_cloning</span>( T const & e );</span>
- }</pre>
-</div><h4>Requirements:</h4>
-<p><tt>T</tt> must have an accessible no-throw copy constructor</p>
-<h4>Returns:</h4>
-<p>An object of <i>unspecified</i> type which derives publicly from <tt>T</tt>. That is, the returned object can be intercepted by a <tt>catch(T &)</tt>.</p>
-<h4>Description:</h4>
-<p>This function is designed to be used directly in a throw-expression to enable the cloning support in Boost Exception. For example:</p>
-<pre>class
-my_exception:
- public std::exception
- {
- };
-
-....
-throw boost::<span class="RenoLink">enable_exception_cloning</span>(my_exception());</pre>
-<p>Unless <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> is called at the time an exception object is used in a throw-expression, any attempt to copy it using <tt><span class="RenoLink">clone_exception</span>()</tt> returns an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</p>
-<h4>Note:</h4>
-<p>Instead of using the <tt>throw</tt> keyword directly, it is preferable to call <tt>boost::<span class="RenoLink">throw_exception</span>()</tt>. This is guaranteed to throw an exception that derives from <tt>boost::<span class="RenoLink">exception</span></tt> and supports cloning.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="clone_exception.html">clone_exception<br/>
-</a><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
-</a><a href="throw_exception.html">throw_exception<br/>
-</a><a href="unknown_exception.html">unknown_exception<br/>
-</a></div>
-<div id="footer">
-<p> </p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>
Modified: branches/proto/v4/libs/exception/doc/error_info.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/error_info.html (original)
+++ branches/proto/v4/libs/exception/doc/error_info.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>error_info</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/info.hpp</span>></tt></p>
<pre>namespace
@@ -56,6 +59,9 @@
</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
</a><a href="logging.html">Tutorial: Logging of boost::exception Objects<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception.html (original)
+++ branches/proto/v4/libs/exception/doc/exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h2>exception</h2>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/exception.hpp</span>></tt></p>
<pre>namespace
@@ -79,6 +82,9 @@
</a><a href="transporting_data.html">Tutorial: Transporting of Arbitrary Data to the Catch Site<br/>
</a><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception_ptr.hpp</h3>
<p>This header file contains the following definitions/declarations:</p>
<div class="RenoPageList"><a href="copy_exception.html">copy_exception<br/>
@@ -24,6 +27,9 @@
</a><a href="rethrow_exception.html">rethrow_exception<br/>
</a><a href="unknown_exception.html">unknown_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_constructors.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_constructors.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_constructors.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>exception constructors</h3>
<div class="RenoIncludeDIV"><pre> <span class="RenoLink">exception</span>();
<span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const & x );</pre>
@@ -28,6 +31,9 @@
</div><h3>See also:</h3>
<div class="RenoPageList"><a href="exception.html">exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_destructor.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_destructor.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_destructor.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>exception destructor</h3>
<div class="RenoIncludeDIV"><pre> <span class="RenoLink">~exception</span>();</pre>
</div><h4>Effects:</h4>
@@ -25,6 +28,9 @@
</div><h3>See also:</h3>
<div class="RenoPageList"><a href="exception.html">exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,10 +16,16 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception/enable_error_info.hpp</h3>
<p>This header file contains the following definitions/declarations:</p>
<div class="RenoPageList"><a href="enable_error_info.html">enable_error_info<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,10 +16,16 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception/enable_current_exception.hpp</h3>
<p>This header file contains the following definitions/declarations:</p>
<div class="RenoPageList"><a href="enable_current_exception.html">enable_current_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_error_info_group_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_error_info_group_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_error_info_group_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,10 +16,16 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception/info_tuple.hpp</h3>
<p>This header file contains the following definitions/declarations:</p>
<div class="RenoPageList"><a href="operator_shl_exception.html">operator<</exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception/info.hpp</h3>
<p>This header file contains the following definitions/declarations:</p>
<div class="RenoPageList"><a href="BOOST_ERROR_INFO.html">BOOST_ERROR_INFO<br/>
@@ -23,6 +26,9 @@
</a><a href="get_error_info.html">get_error_info<br/>
</a><a href="operator_shl_exception.html">operator<</exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception/error_info.hpp</h3>
<p>This header file contains the following declaration:</p>
<pre>namespace
@@ -24,6 +27,9 @@
template <class Tag, class T>
class <span class="RenoLink">error_info</span>;
}</pre>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_exception_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_exception_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_exception_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,10 +16,16 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception/exception.hpp</h3>
<p>This header file contains the following definitions/declarations:</p>
<div class="RenoPageList"><a href="exception.html">exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception.hpp</h3>
<p>This header file includes all other header files of Boost Exception:</p>
<div class="RenoPageList"><a href="exception_hpp.html">boost/exception.hpp<br/>
@@ -28,6 +31,9 @@
</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
</a><a href="throw_exception_hpp.html">boost/throw_exception.hpp<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_ptr.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_ptr.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_ptr.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>exception_ptr</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
<pre>namespace
@@ -35,6 +38,9 @@
</a><a href="enable_current_exception.html">enable_current_exception<br/>
</a><a href="rethrow_exception.html">rethrow_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/exception_what.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_what.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_what.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>exception::what()</h3>
<div class="RenoIncludeDIV"><pre> virtual char const * <span class="RenoLink">what</span>() const throw();</pre>
</div><h4>Returns:</h4>
@@ -28,6 +31,9 @@
<div class="RenoPageList"><a href="exception.html">exception<br/>
</a><a href="logging.html">Tutorial: Logging of boost::exception Objects<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/get_error_info.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/get_error_info.html (original)
+++ branches/proto/v4/libs/exception/doc/get_error_info.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>get_error_info()</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/info.hpp</span>></tt></p>
<pre>namespace
@@ -35,6 +38,9 @@
</a><a href="error_info.html">error_info<br/>
</a><a href="exception.html">exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Deleted: branches/proto/v4/libs/exception/doc/grouping_data.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/grouping_data.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
+++ (empty file)
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Adding Grouped Data to Exceptions</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Adding Grouped Data to Exceptions</h3>
-<p>The code snippet below demonstrates how <tt>boost::<span class="RenoLink">tuple</span></tt> can be used to bundle the name of the function that failed, together with the reported <tt>errno</tt> so that they can be added to exception objects more conveniently together:</p>
-<pre>#include <<span class="RenoLink">boost/exception/info_tuple.hpp</span>>
-#include <boost/shared_ptr.hpp>
-#include <stdio.h>
-#include <string>
-#include <errno.h>
-
-typedef boost::<span class="RenoLink">error_info</span><struct tag_file_name,std::string> file_name_info;
-typedef boost::<span class="RenoLink">error_info</span><struct tag_function,char const *> function_info;
-typedef boost::<span class="RenoLink">error_info</span><struct tag_errno,int> errno_info;
-typedef boost::tuple<function_info,errno_info> clib_failure;
-
-class file_open_error: public boost::<span class="RenoLink">exception</span> { };
-
-boost::shared_ptr<FILE>
-file_open( char const * name, char const * mode )
- {
- if( FILE * f=fopen(name,mode) )
- return boost::shared_ptr<FILE>(f,fclose);
- else
- throw file_open_error() <<
- file_name_info(name) <<
- clib_failure("fopen",errno);
- }</pre>
-<p>Note that the members of a <tt>boost::<span class="RenoLink">tuple</span></tt> are stored separately in exception objects; they can only be retrieved individually, using <tt><span class="RenoLink">get_error_info</span>()</tt>.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="transporting_data.html">Tutorial: Transporting of Arbitrary Data to the Catch Site<br/>
-</a></div>
-<div id="footer">
-<p> </p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>
Modified: branches/proto/v4/libs/exception/doc/logging.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/logging.html (original)
+++ branches/proto/v4/libs/exception/doc/logging.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h2>Logging of boost::exception Objects</h2>
<p>Class <tt>boost::<span class="RenoLink">exception</span></tt> provides a virtual member function <tt><span class="RenoLink">what</span>()</tt>, with a signature identical to the familiar <tt>std::exception::what()</tt> function. The default implementation returns a string value that is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example:</p>
<pre>#include <<span class="RenoLink">boost/exception.hpp</span>>
@@ -43,6 +46,9 @@
</div><h3>See also:</h3>
<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/name_idx.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/name_idx.html (original)
+++ branches/proto/v4/libs/exception/doc/name_idx.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h1>Index</h1>
<div class="RenoIndex"><h3>B</h3>
<p>BOOST_ERROR_INFO</p>
@@ -52,6 +55,9 @@
<h3>u</h3>
<p>unknown_exception</p>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/operator_shl_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/operator_shl_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/operator_shl_exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>operator<<()</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/info.hpp</span>></tt><span class="RenoBR"> </span><br/><tt>#include <<span class="RenoLink">boost/exception/info_tuple.hpp</span>></tt></p>
<pre>namespace
@@ -50,6 +53,9 @@
</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
</a><a href="logging.html">Tutorial: Logging of boost::exception Objects<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/rethrow_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/rethrow_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/rethrow_exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>rethrow_exception()</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
<pre>namespace
@@ -30,6 +33,9 @@
</div><h3>See also:</h3>
<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/source/boost-exception.reno
==============================================================================
--- branches/proto/v4/libs/exception/doc/source/boost-exception.reno (original)
+++ branches/proto/v4/libs/exception/doc/source/boost-exception.reno 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -15,7 +15,7 @@
<source>
<path>
<empty>0</empty>
- <string>../../..</string>
+ <string>../../../..</string>
<type>1</type>
<base>0</base>
</path>
@@ -72,7 +72,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/enable_error_info.hpp</string>
+ <string>../../../../boost/exception/enable_error_info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -117,7 +117,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info_tuple.hpp</string>
+ <string>../../../../boost/exception/info_tuple.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -162,7 +162,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/error_info.hpp</string>
+ <string>../../../../boost/exception/error_info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -209,7 +209,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -232,6 +232,19 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:include include:) !!!See also: (:pagelist link="backlink" except_tags="noalso":) </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>9</id>
<type>
<string>reno_context</string>
@@ -252,7 +265,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -301,7 +314,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -350,7 +363,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -399,7 +412,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/enable_current_exception.hpp</string>
+ <string>../../../../boost/exception/enable_current_exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -448,7 +461,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -493,7 +506,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -542,7 +555,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -661,7 +674,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/throw_exception.hpp</string>
+ <string>../../../../boost/throw_exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -736,7 +749,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/enable_error_info.cpp</string>
+ <string>../../example/enable_error_info.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -786,7 +799,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/logging.cpp</string>
+ <string>../../example/logging.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -831,7 +844,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -885,7 +898,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -930,7 +943,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -975,7 +988,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/enable_error_info.hpp</string>
+ <string>../../../../boost/exception/enable_error_info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1065,7 +1078,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1124,7 +1137,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception.hpp</string>
+ <string>../../../../boost/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1165,7 +1178,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1206,7 +1219,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/throw_exception.hpp</string>
+ <string>../../../../boost/throw_exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1247,7 +1260,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/enable_current_exception.hpp</string>
+ <string>../../../../boost/exception/enable_current_exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1324,7 +1337,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1637,7 +1650,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -1650,7 +1663,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-21</id>
+ <id>-19</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -1663,7 +1676,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-20</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -1676,7 +1689,20 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-21</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:include include:) !!!See also: (:pagelist link="backlink" except_tags="noalso":) </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -1793,32 +1819,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:) !!!See also: (:pagelist link="backlink" except_tags="noalso":) </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:) !!!See also: (:pagelist link="backlink" except_tags="noalso":) </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
</weak_ptr>
@@ -1865,7 +1865,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/cloning_1.cpp</string>
+ <string>../../example/cloning_1.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1910,7 +1910,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/error_info_1.cpp</string>
+ <string>../../example/error_info_1.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -1959,7 +1959,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -2046,7 +2046,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -2091,7 +2091,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/info_tuple.cpp</string>
+ <string>../../example/info_tuple.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -2136,7 +2136,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/cloning_2.cpp</string>
+ <string>../../example/cloning_2.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -2181,7 +2181,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/error_info_2.cpp</string>
+ <string>../../example/error_info_2.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -2253,6 +2253,17 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>-9</id>
</shared_ptr>
</weak_ptr>
@@ -2379,7 +2390,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2390,7 +2401,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-21</id>
+ <id>-19</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2401,7 +2412,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-20</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2412,7 +2423,18 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-21</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2519,28 +2541,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
</weak_ptr>
@@ -2698,7 +2698,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-9</id>
+ <id>-8</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2709,7 +2709,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-10</id>
+ <id>-9</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2720,7 +2720,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-11</id>
+ <id>-10</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2731,7 +2731,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-12</id>
+ <id>-11</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2742,7 +2742,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-13</id>
+ <id>-12</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2753,7 +2753,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-14</id>
+ <id>-13</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2764,7 +2764,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-15</id>
+ <id>-14</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2775,7 +2775,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-16</id>
+ <id>-15</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2786,7 +2786,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-17</id>
+ <id>-16</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2797,7 +2797,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-17</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2808,7 +2808,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-21</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2819,7 +2819,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-19</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2830,7 +2830,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-20</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2841,7 +2841,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-23</id>
+ <id>-21</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2852,7 +2852,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-24</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2863,7 +2863,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-25</id>
+ <id>-23</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2874,7 +2874,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-26</id>
+ <id>-24</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2885,7 +2885,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-27</id>
+ <id>-25</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2896,7 +2896,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-28</id>
+ <id>-26</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2907,7 +2907,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-29</id>
+ <id>-27</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2918,7 +2918,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-30</id>
+ <id>-28</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2929,7 +2929,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
+ <id>-29</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -2940,7 +2940,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-19</id>
+ <id>-30</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3108,7 +3108,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-9</id>
+ <id>-8</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3119,7 +3119,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-10</id>
+ <id>-9</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3130,7 +3130,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-11</id>
+ <id>-10</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3141,7 +3141,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-12</id>
+ <id>-11</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3152,7 +3152,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-13</id>
+ <id>-12</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3163,7 +3163,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-14</id>
+ <id>-13</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3174,7 +3174,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-15</id>
+ <id>-14</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3185,7 +3185,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-16</id>
+ <id>-15</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3196,7 +3196,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-17</id>
+ <id>-16</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3207,7 +3207,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-17</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3218,7 +3218,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-21</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3229,7 +3229,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-19</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3240,7 +3240,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-20</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3251,7 +3251,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-23</id>
+ <id>-21</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3262,7 +3262,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-24</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3273,7 +3273,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-25</id>
+ <id>-23</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3284,7 +3284,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-26</id>
+ <id>-24</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3295,7 +3295,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-27</id>
+ <id>-25</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3306,7 +3306,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-28</id>
+ <id>-26</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3317,7 +3317,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-29</id>
+ <id>-27</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3328,7 +3328,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-30</id>
+ <id>-28</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3339,7 +3339,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
+ <id>-29</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3350,7 +3350,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-19</id>
+ <id>-30</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3518,6 +3518,28 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@ template <class Tag,class T> class (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) { public: typedef T value_type; error_info( value_type const & ); private: ---unspecified--- };@] </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>-9</id>
</shared_ptr>
</weak_ptr>
@@ -3728,18 +3750,38 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<container>
- <size>0</size>
+ <size>5</size>
+ <variant>2</variant>
+ <string>[@#ifdef BOOST_NO_EXCEPTIONS void (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)( std::exception const & e ); // user defined #else template <class E> void (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)( E const & e ); #endif@] </string>
</container>
</pair>
<pair>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-21</id>
+ <id>-19</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -3750,12 +3792,34 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-20</id>
</shared_ptr>
</weak_ptr>
<container>
- <size>9</size>
- <variant>2</variant>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-21</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>9</size>
+ <variant>2</variant>
<string>[@ class (:link </string>
<variant>1</variant>
<weak_ptr>
@@ -3799,28 +3863,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
- <variant>2</variant>
- <string>[@ template <class Tag,class T> class (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:) { public: typedef T value_type; error_info( value_type const & ); private: ---unspecified--- };@] </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-23</id>
</shared_ptr>
</weak_ptr>
@@ -3980,48 +4022,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>5</size>
- <variant>2</variant>
- <string>[@#ifdef BOOST_NO_EXCEPTIONS void (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)( std::exception const & e ); // user defined #else template <class E> void (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)( E const & e ); #endif@] </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
</weak_ptr>
@@ -4230,6 +4230,109 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>21</size>
+ <variant>2</variant>
+ <string>!!!error_info (:include synopsis:) !!!!Requirements: @@T@@ must have accessible copy constructor and must not be a reference. !!!!Description: This class template is used to associate a @@Tag@@ type with a value type @@T@@. Objects of type @@(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)<Tag,T>@@ can be passed to @@(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>|operator<<:)()@@ to be stored in objects of type @@boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)@@. !!!!Note: The header @@<(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-7</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)>@@ provides a declaration of the @@(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)@@ template, which is sufficient for the purpose of @@typedef@@ing an instance for specific @@Tag@@ and @@T@@, like this: [@#include <(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-7</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)> typedef boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)<struct tag_errno,int> errno_info;@] Of course, to actually add an @@errno_info@@ object to exceptions using @@(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>|operator<<:)()@@, or to retrieve it using @@(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-24</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)()@@, you must first @@#include <(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-14</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)>@@. </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>-9</id>
</shared_ptr>
</weak_ptr>
@@ -4372,7 +4475,7 @@
</shared_ptr>
</weak_ptr>
<container>
- <size>15</size>
+ <size>17</size>
<variant>2</variant>
<string>!!!enable_current_exception() (:include synopsis:) !!!!Requirements: @@T@@ must have an accessible no-throw copy constructor !!!!Returns: An object of ''unspecified'' type which derives publicly from @@T@@. That is, the returned object can be intercepted by a @@catch(T &)@@. !!!!Description: This function is designed to be used directly in a throw-expression to enable the cloning support in Boost Exception. For example: [@class my_exception: public std::exception { }; .... throw boost::(:link </string>
<variant>1</variant>
@@ -4392,7 +4495,7 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)()@@ is called at the time an exception object is used in a throw-expression, any attempt to copy it using @@(:link </string>
+ <string>:)()@@ is called at the time an exception object is used in a throw-expression, an attempt to copy it using @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -4401,7 +4504,7 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)()@@ returns an @@(:link </string>
+ <string>:)()@@ may return an @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -4419,7 +4522,16 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@. !!!!Note: Instead of using the @@throw@@ keyword directly, it is preferable to call @@boost::(:link </string>
+ <string>:)@@. See @@(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-13</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)()@@ for details. !!!!Note: Instead of using the @@throw@@ keyword directly, it is preferable to call @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -4694,94 +4806,120 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<container>
- <size>27</size>
+ <size>9</size>
<variant>2</variant>
- <string>!!Integrating Boost Exception in Existing Exception Class Hierarchies Some exception hierarchies can not be modified to make @@boost::(:link </string>
+ <string>!!!throw_exception() (:include synopsis:) !!!!Effects: * If @@BOOST_NO_EXCEPTIONS@@ is not defined, @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ a base type. For this case, the @@(:link </string>
+ <string>:)(e)@@ is equivalent to @@throw boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-25</id>
+ <id>-12</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)()@@ function template can be used to make exception objects derive from @@boost::(:link </string>
+ <string>:)(boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-25</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ anyway. Here is an example: [@#include <(:link </string>
+ <string>:)(e))@@, unless @@BOOST_EXCEPTION_DISABLE@@ is defined, in which case @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-27</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)> #include <stdexcept> typedef boost::(:link </string>
+ <string>:)(e)@@ is equivalent to @@throw e;@@ * If @@BOOST_NO_EXCEPTIONS@@ is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of @@throw_exception@@ are allowed to assume that the function never returns; therefore, if the user-defined @@throw_exception@@ returns, the behavior is undefined. </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-19</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>11</size>
+ <variant>2</variant>
+ <string>!!Transporting of Arbitrary Data to the Catch Site All exception types that derive from @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)<struct tag_std_range_min,size_t> std_range_min; typedef boost::(:link </string>
+ <string>:)@@ can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception classes. Data can be added to a @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)<struct tag_std_range_max,size_t> std_range_max; typedef boost::(:link </string>
+ <string>:)@@ at the time of the throw, or at a later time. (:include </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-34</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)<struct tag_std_range_index,size_t> std_range_index; template <class T> class my_container { public: size_t size() const; T const & operator[]( size_t i ) const { if( i > size() ) throw boost::(:link </string>
+ <string>:) (:include </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-25</id>
+ <id>-40</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)(std::range_error("Index out of range")) << std_range_min(0) << std_range_max(size()) << std_range_index(i); //.... } }; @] @@(:link </string>
+ <string>:) (:include </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-25</id>
+ <id>-38</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>|Enable_error_info:)<T>@@ returns an object of ''unspecified type'' which is guaranteed to derive from both @@boost::(:link </string>
+ <string>:) </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-20</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>27</size>
+ <variant>2</variant>
+ <string>!!Integrating Boost Exception in Existing Exception Class Hierarchies Some exception hierarchies can not be modified to make @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -4790,16 +4928,16 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ and @@T@@. This makes it possible to use @@(:link </string>
+ <string>:)@@ a base type. For this case, the @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-23</id>
+ <id>-25</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>|operator<<:)()@@ to store additional information in the exception object. The exception can be intercepted as @@T &@@, therefore existing exception handling will not break. It can also be intercepted as @@boost::(:link </string>
+ <string>:)()@@ function template can be used to make exception objects derive from @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -4808,132 +4946,110 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:) &@@, so that (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>|more information can be added to the exception at a later time:). </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>21</size>
- <variant>2</variant>
- <string>!!Logging of boost::exception Objects Class @@boost::(:link </string>
+ <string>:)@@ anyway. Here is an example: [@#include <(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-27</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ provides a virtual member function @@(:link </string>
+ <string>:)> #include <stdexcept> typedef boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-35</id>
+ <id>-8</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:::)()@@, with a signature identical to the familiar @@std::exception::what()@@ function. The default implementation returns a string value that is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example: [@#include <(:link </string>
+ <string>:)<struct tag_std_range_min,size_t> std_range_min; typedef boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-27</id>
+ <id>-8</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)> #include <iostream> void f(); //throws unknown types that derive from boost::(:link </string>
+ <string>:)<struct tag_std_range_max,size_t> std_range_max; typedef boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-8</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:). void g() { try { f(); } catch( boost::(:link </string>
+ <string>:)<struct tag_std_range_index,size_t> std_range_index; template <class T> class my_container { public: size_t size() const; T const & operator[]( size_t i ) const { if( i > size() ) throw boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-25</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:) & e ) { std::cerr << e.(:link </string>
+ <string>:)(std::range_error("Index out of range")) << std_range_min(0) << std_range_max(size()) << std_range_index(i); //.... } }; @] @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-35</id>
+ <id>-25</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:::)(); } }@] The @@(:link </string>
+ <string>|Enable_error_info:)<T>@@ returns an object of ''unspecified type'' which is guaranteed to derive from both @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-35</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:::)()@@ member function iterates over all data objects stored in the @@boost::(:link </string>
+ <string>:)@@ and @@T@@. This makes it possible to use @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-23</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ through @@(:link </string>
+ <string>|operator<<:)()@@ to store additional information in the exception object. The exception can be intercepted as @@T &@@, therefore existing exception handling will not break. It can also be intercepted as @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-23</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>|operator<<:)()@@. The returned string is constructed by converting each data object to string and then concatenating these strings together. When the @@(:link </string>
+ <string>:) &@@, so that (:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-19</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)<Tag,T>@@ template is instantiated, the system attempts overload resolution for an unqualified call to @@to_string(x)@@, where @@x@@ is of type @@T@@. If this is successful, the @@to_string()@@ overload is used to convert objects of type @@T@@ to string. Otherwise, the system attempts overload resolution for @@s << x@@, where @@s@@ is a @@std::ostringstream@@ and @@x@@ is of type @@T@@. If this is successful, the @@operator<<@@ overload is used to convert objects of type @@T@@ to string. Otherwise the system is unable to convert objects of type @@T@@ to string, and an unspecified stub string value is used without issuing a compile error. </string>
+ <string>|more information can be added to the exception at a later time:). </string>
</container>
</pair>
<pair>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-21</id>
</shared_ptr>
</weak_ptr>
<container>
- <size>13</size>
+ <size>21</size>
<variant>2</variant>
- <string>!!exception (:include synopsis:) Class @@boost::(:link </string>
+ <string>!!Logging of boost::exception Objects Class @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -4942,34 +5058,34 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ is designed to be used as a universal base for user-defined exception types. An object of any type deriving from @@boost::(:link </string>
+ <string>:)@@ provides a virtual member function @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-35</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ can store data of arbitrary types, using the @@</string>
+ <string>:::)()@@, with a signature identical to the familiar @@std::exception::what()@@ function. The default implementation returns a string value that is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example: [@#include <(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-27</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>@@ wrapper and @@(:link </string>
+ <string>:)> #include <iostream> void f(); //throws unknown types that derive from boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-23</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>|operator<<:)()@@. To retrieve data from a @@boost::(:link </string>
+ <string>:). void g() { try { f(); } catch( boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -4978,83 +5094,83 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ object, use the @@(:link </string>
+ <string>:) & e ) { std::cerr << e.(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-24</id>
+ <id>-35</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)()@@ function template. (:include members:) </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>21</size>
- <variant>2</variant>
- <string>!!!error_info (:include synopsis:) !!!!Requirements: @@T@@ must have accessible copy constructor and must not be a reference. !!!!Description: This class template is used to associate a @@Tag@@ type with a value type @@T@@. Objects of type @@(:link </string>
+ <string>:::)(); } }@] The @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-35</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)<Tag,T>@@ can be passed to @@(:link </string>
+ <string>:::)()@@ member function iterates over all data objects stored in the @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-23</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>|operator<<:)()@@ to be stored in objects of type @@boost::(:link </string>
+ <string>:)@@ through @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-23</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@. !!!!Note: The header @@<(:link </string>
+ <string>|operator<<:)()@@. The returned string is constructed by converting each data object to string and then concatenating these strings together. When the @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-7</id>
+ <id>-8</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)>@@ provides a declaration of the @@(:link </string>
+ <string>:)<Tag,T>@@ template is instantiated, the system attempts overload resolution for an unqualified call to @@to_string(x)@@, where @@x@@ is of type @@T@@. If this is successful, the @@to_string()@@ overload is used to convert objects of type @@T@@ to string. Otherwise, the system attempts overload resolution for @@s << x@@, where @@s@@ is a @@std::ostringstream@@ and @@x@@ is of type @@T@@. If this is successful, the @@operator<<@@ overload is used to convert objects of type @@T@@ to string. Otherwise the system is unable to convert objects of type @@T@@ to string, and an unspecified stub string value is used without issuing a compile error. </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>13</size>
+ <variant>2</variant>
+ <string>!!exception (:include synopsis:) Class @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)@@ template, which is sufficient for the purpose of @@typedef@@ing an instance for specific @@Tag@@ and @@T@@, like this: [@#include <(:link </string>
+ <string>:)@@ is designed to be used as a universal base for user-defined exception types. An object of any type deriving from @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-7</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)> typedef boost::(:link </string>
+ <string>:)@@ can store data of arbitrary types, using the @@</string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -5063,7 +5179,7 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)<struct tag_errno,int> errno_info;@] Of course, to actually add an @@errno_info@@ object to exceptions using @@(:link </string>
+ <string>@@ wrapper and @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
@@ -5072,25 +5188,25 @@
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>|operator<<:)()@@, or to retrieve it using @@(:link </string>
+ <string>|operator<<:)()@@. To retrieve data from a @@boost::(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-24</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)()@@, you must first @@#include <(:link </string>
+ <string>:)@@ object, use the @@(:link </string>
<variant>1</variant>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-14</id>
+ <id>-24</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
- <string>:)>@@. </string>
+ <string>:)()@@ function template. (:include members:) </string>
</container>
</pair>
<pair>
@@ -5274,113 +5390,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>9</size>
- <variant>2</variant>
- <string>!!!throw_exception() (:include synopsis:) !!!!Effects: * If @@BOOST_NO_EXCEPTIONS@@ is not defined, @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)(e)@@ is equivalent to @@throw boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-12</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)(boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-25</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)(e))@@, unless @@BOOST_EXCEPTION_DISABLE@@ is defined, in which case @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)(e)@@ is equivalent to @@throw e;@@ * If @@BOOST_NO_EXCEPTIONS@@ is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of @@throw_exception@@ are allowed to assume that the function never returns; therefore, if the user-defined @@throw_exception@@ returns, the behavior is undefined. </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>11</size>
- <variant>2</variant>
- <string>!!Transporting of Arbitrary Data to the Catch Site All exception types that derive from @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@ can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception classes. Data can be added to a @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@ at the time of the throw, or at a later time. (:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-34</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:) (:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-40</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:) (:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-38</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:) </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
</weak_ptr>
@@ -6049,6 +6058,28 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
+ <variant>2</variant>
+ <string>!!!!Throws: @@std::bad_alloc@@, or any other exception resulting from copying any of the arguments of @@(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)()@@. </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>-9</id>
</shared_ptr>
</weak_ptr>
@@ -6148,7 +6179,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -6159,7 +6190,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-21</id>
+ <id>-19</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -6170,7 +6201,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-20</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -6181,22 +6212,22 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-21</id>
</shared_ptr>
</weak_ptr>
<container>
- <size>3</size>
- <variant>2</variant>
- <string>!!!!Throws: @@std::bad_alloc@@, or any other exception resulting from copying any of the arguments of @@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@. </string>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
</container>
</pair>
<pair>
@@ -6293,28 +6324,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
</weak_ptr>
@@ -6472,6 +6481,17 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>-9</id>
</shared_ptr>
</weak_ptr>
@@ -6571,6 +6591,28 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-19</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>-20</id>
</shared_ptr>
</weak_ptr>
@@ -6633,17 +6675,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-23</id>
</shared_ptr>
</weak_ptr>
@@ -6732,28 +6763,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
</weak_ptr>
@@ -6911,6 +6920,28 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
+ <variant>2</variant>
+ <string>@@#include <(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-14</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)>@@ [@namespace boost { (:include decl:) }@] </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>-9</id>
</shared_ptr>
</weak_ptr>
@@ -7076,7 +7107,29 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
+ <variant>2</variant>
+ <string>@@#include <(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-29</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)>@@ [@namespace boost { (:include decl:) }@] </string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-19</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -7087,7 +7140,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-21</id>
+ <id>-20</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -7098,29 +7151,18 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-21</id>
</shared_ptr>
</weak_ptr>
<container>
- <size>3</size>
- <variant>2</variant>
- <string>@@#include <(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-31</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)>@@ [@namespace boost { (:include decl:) }@] </string>
+ <size>0</size>
</container>
</pair>
<pair>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
<container>
@@ -7131,7 +7173,7 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-14</id>
+ <id>-31</id>
</shared_ptr>
</weak_ptr>
<variant>2</variant>
@@ -7283,39 +7325,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
- <variant>2</variant>
- <string>@@#include <(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)>@@ [@namespace boost { (:include decl:) }@] </string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
</weak_ptr>
@@ -7450,6 +7459,9 @@
<id>-7</id>
</shared_ptr>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ <shared_ptr>
<id>-9</id>
</shared_ptr>
<shared_ptr>
@@ -7477,6 +7489,12 @@
<id>-17</id>
</shared_ptr>
<shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ <shared_ptr>
+ <id>-19</id>
+ </shared_ptr>
+ <shared_ptr>
<id>-20</id>
</shared_ptr>
<shared_ptr>
@@ -7486,9 +7504,6 @@
<id>-22</id>
</shared_ptr>
<shared_ptr>
- <id>-8</id>
- </shared_ptr>
- <shared_ptr>
<id>-23</id>
</shared_ptr>
<shared_ptr>
@@ -7513,12 +7528,6 @@
<id>-30</id>
</shared_ptr>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
<shared_ptr>
@@ -7653,7 +7662,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/cloning_2.cpp</string>
+ <string>../../example/cloning_2.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7681,7 +7690,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7709,7 +7718,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7737,7 +7746,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7761,7 +7770,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception.hpp</string>
+ <string>../../../../boost/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7785,7 +7794,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/enable_error_info.hpp</string>
+ <string>../../../../boost/exception/enable_error_info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7809,7 +7818,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/enable_error_info.cpp</string>
+ <string>../../example/enable_error_info.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7833,7 +7842,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/cloning_1.cpp</string>
+ <string>../../example/cloning_1.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7857,7 +7866,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/throw_exception.hpp</string>
+ <string>../../../../boost/throw_exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7885,7 +7894,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/throw_exception.hpp</string>
+ <string>../../../../boost/throw_exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7909,7 +7918,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7933,7 +7942,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/enable_current_exception.hpp</string>
+ <string>../../../../boost/exception/enable_current_exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7961,7 +7970,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/enable_current_exception.hpp</string>
+ <string>../../../../boost/exception/enable_current_exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -7985,7 +7994,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8009,7 +8018,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8033,7 +8042,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8057,7 +8066,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info_tuple.hpp</string>
+ <string>../../../../boost/exception/info_tuple.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8081,7 +8090,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/error_info.hpp</string>
+ <string>../../../../boost/exception/error_info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8109,7 +8118,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/enable_error_info.hpp</string>
+ <string>../../../../boost/exception/enable_error_info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8133,7 +8142,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/error_info_2.cpp</string>
+ <string>../../example/error_info_2.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8161,7 +8170,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8189,7 +8198,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8217,7 +8226,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8245,7 +8254,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8273,7 +8282,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8301,7 +8310,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8329,7 +8338,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8357,7 +8366,7 @@
<file>
<path>
<empty>0</empty>
- <string>../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8381,7 +8390,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/error_info_1.cpp</string>
+ <string>../../example/error_info_1.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8405,7 +8414,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/info_tuple.cpp</string>
+ <string>../../example/info_tuple.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8429,7 +8438,7 @@
<file>
<path>
<empty>0</empty>
- <string>../example/logging.cpp</string>
+ <string>../../example/logging.cpp</string>
<type>0</type>
<base>0</base>
</path>
@@ -8490,6 +8499,15 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <string>error_info,exception,free,function,template</string>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
<id>-9</id>
</shared_ptr>
</weak_ptr>
@@ -8571,16 +8589,25 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-20</id>
+ <id>-18</id>
</shared_ptr>
</weak_ptr>
- <string>noindex,tutorial</string>
+ <string>cloning,exception,free,function,template,throw_exception</string>
</pair>
<pair>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-21</id>
+ <id>-19</id>
+ </shared_ptr>
+ </weak_ptr>
+ <string>error_info,exception,noindex,tutorial</string>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-20</id>
</shared_ptr>
</weak_ptr>
<string>noindex,tutorial</string>
@@ -8589,19 +8616,19 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-22</id>
+ <id>-21</id>
</shared_ptr>
</weak_ptr>
- <string>exception,type</string>
+ <string>noindex,tutorial</string>
</pair>
<pair>
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-8</id>
+ <id>-22</id>
</shared_ptr>
</weak_ptr>
- <string>error_info,exception,free,function,template</string>
+ <string>exception,type</string>
</pair>
<pair>
<weak_ptr>
@@ -8679,24 +8706,6 @@
<weak_ptr>
<expired>0</expired>
<shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <string>cloning,exception,free,function,template,throw_exception</string>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <string>error_info,exception,noindex,tutorial</string>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
<id>-31</id>
</shared_ptr>
</weak_ptr>
Modified: branches/proto/v4/libs/exception/doc/source/html_prefix.txt
==============================================================================
--- branches/proto/v4/libs/exception/doc/source/html_prefix.txt (original)
+++ branches/proto/v4/libs/exception/doc/source/html_prefix.txt 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,3 +16,6 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
Modified: branches/proto/v4/libs/exception/doc/source/html_suffix.txt
==============================================================================
--- branches/proto/v4/libs/exception/doc/source/html_suffix.txt (original)
+++ branches/proto/v4/libs/exception/doc/source/html_suffix.txt 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -1,3 +1,6 @@
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/throw_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/throw_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/throw_exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>throw_exception()</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/throw_exception.hpp</span>></tt></p>
<pre>namespace
@@ -37,6 +40,9 @@
</a><a href="enable_current_exception.html">enable_current_exception<br/>
</a><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/throw_exception_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/throw_exception_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/throw_exception_hpp.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,10 +16,16 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<h3>boost/exception/throw_exception.hpp</h3>
<p>This header file contains the following definitions/declarations:</p>
<div class="RenoPageList"><a href="throw_exception.html">throw_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/transporting_data.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/transporting_data.html (original)
+++ branches/proto/v4/libs/exception/doc/transporting_data.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h2>Transporting of Arbitrary Data to the Catch Site</h2>
<p>All exception types that derive from <tt>boost::<span class="RenoLink">exception</span></tt> can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception classes. Data can be added to a <tt>boost::<span class="RenoLink">exception</span></tt> at the time of the throw, or at a later time.</p>
<div class="RenoIncludeDIV"><h3>Adding of Arbitrary Data at the Point of the Throw</h3>
@@ -165,6 +168,9 @@
<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/exception/doc/unknown_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/unknown_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/unknown_exception.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h3>unknown_exception</h3>
<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
<pre>namespace
@@ -35,6 +38,9 @@
</a><a href="current_exception.html">current_exception<br/>
</a><a href="enable_current_exception.html">enable_current_exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Deleted: branches/proto/v4/libs/exception/doc/using_enable_cloning.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/using_enable_cloning.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
+++ (empty file)
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Using enable_current_exception() at the Time of the Throw</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Using enable_current_exception() at the Time of the Throw</h3>
-<p>Here is how cloning can be enabled in a throw-expression (15.1):</p>
-<pre>#include <<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>>
-#include <<span class="RenoLink">boost/exception/info.hpp</span>>
-#include <stdio.h>
-#include <errno.h>
-
-typedef boost::error_info<struct tag_errno,int> errno_info;
-
-class file_read_error: public boost::<span class="RenoLink">exception</span> { };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw boost::<span class="RenoLink">enable_current_exception</span>(file_read_error()) <<
- errno_info(errno);
- }</pre>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
-</a></div>
-<div id="footer">
-<p> </p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>
Modified: branches/proto/v4/libs/exception/doc/using_enable_error_info.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/using_enable_error_info.html (original)
+++ branches/proto/v4/libs/exception/doc/using_enable_error_info.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,6 +16,9 @@
</div>
<h1>Boost Exception</h1>
</div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div class="RenoIncludeDIV"><h2>Integrating Boost Exception in Existing Exception Class Hierarchies</h2>
<p>Some exception hierarchies can not be modified to make <tt>boost::<span class="RenoLink">exception</span></tt> a base type. For this case, the <tt><span class="RenoLink">enable_error_info</span>()</tt> function template can be used to make exception objects derive from <tt>boost::<span class="RenoLink">exception</span></tt> anyway. Here is an example:</p>
<pre>#include <<span class="RenoLink">boost/exception.hpp</span>>
@@ -49,6 +52,9 @@
</div><h3>See also:</h3>
<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
</a></div>
+<!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
+<!-- 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) -->
<div id="footer">
<p> </p>
<hr/>
Modified: branches/proto/v4/libs/functional/hash/test/container_fwd_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/container_fwd_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/container_fwd_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -77,7 +77,7 @@
#include <complex>
#include <utility>
-int main()
+int main(int, char**)
{
std::deque<int> x1;
std::list<std::string> x2;
Modified: branches/proto/v4/libs/functional/hash/test/hash_built_in_array_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_built_in_array_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_built_in_array_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,7 +13,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -37,11 +37,11 @@
int array3[2] = {2, 3};
HASH_NAMESPACE::hash<int[2]> hasher3;
- BOOST_TEST(hasher1(array1)
+ BOOST_CHECK(hasher1(array1)
== HASH_NAMESPACE::hash_range(array1, array1 + length1));
- BOOST_TEST(hasher2(array2)
+ BOOST_CHECK(hasher2(array2)
== HASH_NAMESPACE::hash_range(array2, array2 + length2));
- BOOST_TEST(hasher3(array3)
+ BOOST_CHECK(hasher3(array3)
== HASH_NAMESPACE::hash_range(array3, array3 + length3));
}
@@ -59,17 +59,17 @@
HASH_NAMESPACE::hash_combine(seed1, seed2);
}
- BOOST_TEST(hasher(array) == seed1);
- BOOST_TEST(hasher(array) == HASH_NAMESPACE::hash_range(array, array + 3));
+ BOOST_CHECK(hasher(array) == seed1);
+ BOOST_CHECK(hasher(array) == HASH_NAMESPACE::hash_range(array, array + 3));
}
#endif // TEST_EXTENSIONS
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
array_int_test();
two_dimensional_array_test();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_complex_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_complex_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_complex_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,7 +13,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -41,13 +41,13 @@
{
HASH_NAMESPACE::hash<std::complex<T> > complex_hasher;
- BOOST_TEST(complex_hasher(v) == complex_hasher(v));
+ BOOST_CHECK(complex_hasher(v) == complex_hasher(v));
HASH_NAMESPACE::hash<T> real_hasher;
T real = v.real();
T imag = v.imag();
- BOOST_TEST(real_hasher(real) == complex_hasher(std::complex<T>(real)));
+ BOOST_CHECK(real_hasher(real) == complex_hasher(std::complex<T>(real)));
if(imag != 0 && real_hasher(real) == complex_hasher(v)) {
std::ostringstream os;
@@ -90,7 +90,7 @@
}
}
-int main()
+int test_main(int, char**)
{
complex_float_tests((float*) 0);
complex_float_tests((double*) 0);
@@ -102,7 +102,7 @@
complex_integral_tests((unsigned int*) 0);
complex_integral_tests((unsigned long*) 0);
- return boost::report_errors();
+ return 0;
}
#endif
Modified: branches/proto/v4/libs/functional/hash/test/hash_custom_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_custom_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_custom_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -48,7 +48,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -59,13 +59,13 @@
void custom_tests()
{
HASH_NAMESPACE::hash<test::custom> custom_hasher;
- BOOST_TEST(custom_hasher(10) == 100u);
+ BOOST_CHECK(custom_hasher(10) == 100u);
test::custom x(55);
- BOOST_TEST(custom_hasher(x) == 550u);
+ BOOST_CHECK(custom_hasher(x) == 550u);
{
using namespace HASH_NAMESPACE;
- BOOST_TEST(custom_hasher(x) == hash_value(x));
+ BOOST_CHECK(custom_hasher(x) == hash_value(x));
}
std::vector<test::custom> custom_vector;
@@ -83,17 +83,17 @@
HASH_NAMESPACE::hash_combine(seed2, 250u);
HASH_NAMESPACE::hash_combine(seed2, 350u);
- BOOST_TEST(seed ==
+ BOOST_CHECK(seed ==
HASH_NAMESPACE::hash_range(custom_vector.begin(), custom_vector.end()));
- BOOST_TEST(seed == seed2);
+ BOOST_CHECK(seed == seed2);
}
#endif // TEST_EXTENSIONS
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
custom_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_deprecated_headers.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_deprecated_headers.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_deprecated_headers.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -19,7 +19,7 @@
#include <vector>
-int main() {
+int main(int, char**) {
std::vector<int> v;
boost::hash<std::vector<int> > x;
x(v);
Modified: branches/proto/v4/libs/functional/hash/test/hash_deque_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_deque_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_deque_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,7 +13,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -25,11 +25,11 @@
#endif // TEST_EXTENSIONS
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
deque_tests::deque_hash_integer_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_float_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_float_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_float_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -5,7 +5,7 @@
#include "hash_float_test.hpp"
-int main()
+int test_main(int, char**)
{
std::cerr<<"Compiler: "<<BOOST_COMPILER<<"\n";
std::cerr<<"Platform: "<<BOOST_PLATFORM<<"\n";
@@ -14,5 +14,5 @@
float_tests("float", (float*) 0);
float_tests("double", (double*) 0);
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_float_test.hpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_float_test.hpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_float_test.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -11,7 +11,7 @@
# include <boost/functional/hash.hpp>
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <cmath>
#include <boost/limits.hpp>
@@ -43,11 +43,11 @@
T zero = 0;
T minus_zero = (T) -1 * zero;
- BOOST_TEST(zero == minus_zero);
- BOOST_TEST(x1(zero) == x1(minus_zero));
+ BOOST_CHECK(zero == minus_zero);
+ BOOST_CHECK(x1(zero) == x1(minus_zero));
- BOOST_TEST(x1(zero) == HASH_NAMESPACE::hash_value(zero));
- BOOST_TEST(x1(minus_zero) == HASH_NAMESPACE::hash_value(minus_zero));
+ BOOST_CHECK(x1(zero) == HASH_NAMESPACE::hash_value(zero));
+ BOOST_CHECK(x1(minus_zero) == HASH_NAMESPACE::hash_value(minus_zero));
using namespace std;
@@ -65,23 +65,23 @@
T minus_infinity2 = (T) -1. / zero;
T minus_infinity3 = (T) 1. / minus_zero;
- BOOST_TEST(x1(infinity) == HASH_NAMESPACE::hash_value(infinity));
- BOOST_TEST(x1(minus_infinity)
+ BOOST_CHECK(x1(infinity) == HASH_NAMESPACE::hash_value(infinity));
+ BOOST_CHECK(x1(minus_infinity)
== HASH_NAMESPACE::hash_value(minus_infinity));
if(infinity == infinity2)
- BOOST_TEST(x1(infinity) == x1(infinity2));
+ BOOST_CHECK(x1(infinity) == x1(infinity2));
if(infinity == infinity3)
- BOOST_TEST(x1(infinity) == x1(infinity3));
+ BOOST_CHECK(x1(infinity) == x1(infinity3));
if(infinity == infinity4)
- BOOST_TEST(x1(infinity) == x1(infinity4));
+ BOOST_CHECK(x1(infinity) == x1(infinity4));
if(minus_infinity == minus_infinity2)
- BOOST_TEST(x1(minus_infinity) == x1(minus_infinity2));
+ BOOST_CHECK(x1(minus_infinity) == x1(minus_infinity2));
if(minus_infinity == minus_infinity3)
- BOOST_TEST(x1(minus_infinity) == x1(minus_infinity3));
+ BOOST_CHECK(x1(minus_infinity) == x1(minus_infinity3));
- BOOST_TEST(infinity != minus_infinity);
+ BOOST_CHECK(infinity != minus_infinity);
if(x1(infinity) == x1(minus_infinity)) {
std::cerr<<"x1(infinity) == x1(-infinity) == "<<x1(infinity)<<"\n";
@@ -113,22 +113,22 @@
T quarter_max = max / 4;
T three_quarter_max = max - quarter_max;
- BOOST_TEST(x1(max) == HASH_NAMESPACE::hash_value(max));
- BOOST_TEST(x1(half_max) == HASH_NAMESPACE::hash_value(half_max));
- BOOST_TEST(x1(quarter_max) == HASH_NAMESPACE::hash_value(quarter_max));
- BOOST_TEST(x1(three_quarter_max) == HASH_NAMESPACE::hash_value(three_quarter_max));
+ BOOST_CHECK(x1(max) == HASH_NAMESPACE::hash_value(max));
+ BOOST_CHECK(x1(half_max) == HASH_NAMESPACE::hash_value(half_max));
+ BOOST_CHECK(x1(quarter_max) == HASH_NAMESPACE::hash_value(quarter_max));
+ BOOST_CHECK(x1(three_quarter_max) == HASH_NAMESPACE::hash_value(three_quarter_max));
// The '!=' tests could legitimately fail, but with my hash it indicates a bug.
- BOOST_TEST(x1(max) == x1(max));
- BOOST_TEST(x1(max) != x1(quarter_max));
- BOOST_TEST(x1(max) != x1(half_max));
- BOOST_TEST(x1(max) != x1(three_quarter_max));
- BOOST_TEST(x1(quarter_max) == x1(quarter_max));
- BOOST_TEST(x1(quarter_max) != x1(half_max));
- BOOST_TEST(x1(quarter_max) != x1(three_quarter_max));
- BOOST_TEST(x1(half_max) == x1(half_max));
- BOOST_TEST(x1(half_max) != x1(three_quarter_max));
- BOOST_TEST(x1(three_quarter_max) == x1(three_quarter_max));
+ BOOST_CHECK(x1(max) == x1(max));
+ BOOST_CHECK(x1(max) != x1(quarter_max));
+ BOOST_CHECK(x1(max) != x1(half_max));
+ BOOST_CHECK(x1(max) != x1(three_quarter_max));
+ BOOST_CHECK(x1(quarter_max) == x1(quarter_max));
+ BOOST_CHECK(x1(quarter_max) != x1(half_max));
+ BOOST_CHECK(x1(quarter_max) != x1(three_quarter_max));
+ BOOST_CHECK(x1(half_max) == x1(half_max));
+ BOOST_CHECK(x1(half_max) != x1(three_quarter_max));
+ BOOST_CHECK(x1(three_quarter_max) == x1(three_quarter_max));
// Intel with gcc stdlib sometimes segfaults on calls to asin and acos.
#if !((defined(__INTEL_COMPILER) || defined(__ICL) || \
@@ -137,35 +137,35 @@
T v1 = asin((T) 1);
T v2 = acos((T) 0);
if(v1 == v2)
- BOOST_TEST(x1(v1) == x1(v2));
- BOOST_TEST(x1(v1) == HASH_NAMESPACE::hash_value(v1));
- BOOST_TEST(x1(v2) == HASH_NAMESPACE::hash_value(v2));
+ BOOST_CHECK(x1(v1) == x1(v2));
+ BOOST_CHECK(x1(v1) == HASH_NAMESPACE::hash_value(v1));
+ BOOST_CHECK(x1(v2) == HASH_NAMESPACE::hash_value(v2));
#endif
- BOOST_TEST(x1(boost::hash_detail::limits<T>::epsilon()) ==
+ BOOST_CHECK(x1(boost::hash_detail::limits<T>::epsilon()) ==
HASH_NAMESPACE::hash_value(boost::hash_detail::limits<T>::epsilon()));
- BOOST_TEST(boost::hash_detail::limits<T>::epsilon() != (T) 0);
+ BOOST_CHECK(boost::hash_detail::limits<T>::epsilon() != (T) 0);
if(x1(boost::hash_detail::limits<T>::epsilon()) == x1((T) 0))
std::cerr<<"x1(epsilon) == x1(0) == "<<x1((T) 0)<<"\n";
- BOOST_TEST(-boost::hash_detail::limits<T>::epsilon() != (T) 0);
+ BOOST_CHECK(-boost::hash_detail::limits<T>::epsilon() != (T) 0);
if(x1(-boost::hash_detail::limits<T>::epsilon()) == x1((T) 0))
std::cerr<<"x1(-epsilon) == x1(0) == "<<x1((T) 0)<<"\n";
- BOOST_TEST((T) 1 + boost::hash_detail::limits<T>::epsilon() != (T) 1);
+ BOOST_CHECK((T) 1 + boost::hash_detail::limits<T>::epsilon() != (T) 1);
if(x1((T) 1 + boost::hash_detail::limits<T>::epsilon()) == x1((T) 1))
std::cerr<<"x1(1 + epsilon) == x1(1) == "<<x1((T) 1)<<"\n";
- BOOST_TEST((T) 1 - boost::hash_detail::limits<T>::epsilon() != (T) 1);
+ BOOST_CHECK((T) 1 - boost::hash_detail::limits<T>::epsilon() != (T) 1);
if(x1((T) 1 - boost::hash_detail::limits<T>::epsilon()) == x1((T) 1))
std::cerr<<"x1(1 - epsilon) == x1(1) == "<<x1((T) 1)<<"\n";
- BOOST_TEST((T) -1 + boost::hash_detail::limits<T>::epsilon() != (T) -1);
+ BOOST_CHECK((T) -1 + boost::hash_detail::limits<T>::epsilon() != (T) -1);
if(x1((T) -1 + boost::hash_detail::limits<T>::epsilon()) == x1((T) -1))
std::cerr<<"x1(-1 + epsilon) == x1(-1) == "<<x1((T) -1)<<"\n";
- BOOST_TEST((T) -1 - boost::hash_detail::limits<T>::epsilon() != (T) -1);
+ BOOST_CHECK((T) -1 - boost::hash_detail::limits<T>::epsilon() != (T) -1);
if(x1((T) -1 - boost::hash_detail::limits<T>::epsilon()) == x1((T) -1))
std::cerr<<"x1(-1 - epsilon) == x1(-1) == "<<x1((T) -1)<<"\n";
@@ -197,7 +197,7 @@
if(x1(boost::hash_detail::limits<T>::quiet_NaN()) == x1(1.0)) {
std::cerr<<"x1(quiet_NaN) == x1(1.0) == "<<x1(1.0)<<"\n";
}
- BOOST_TEST(x1(boost::hash_detail::limits<T>::quiet_NaN()) ==
+ BOOST_CHECK(x1(boost::hash_detail::limits<T>::quiet_NaN()) ==
HASH_NAMESPACE::hash_value(boost::hash_detail::limits<T>::quiet_NaN()));
}
#endif
Modified: branches/proto/v4/libs/functional/hash/test/hash_friend_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_friend_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_friend_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -50,7 +50,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -61,13 +61,13 @@
void custom_tests()
{
HASH_NAMESPACE::hash<test::custom<int> > custom_hasher;
- BOOST_TEST(custom_hasher(10) == 100u);
+ BOOST_CHECK(custom_hasher(10) == 100u);
test::custom<int> x(55);
- BOOST_TEST(custom_hasher(x) == 550u);
+ BOOST_CHECK(custom_hasher(x) == 550u);
{
using namespace HASH_NAMESPACE;
- BOOST_TEST(custom_hasher(x) == hash_value(x));
+ BOOST_CHECK(custom_hasher(x) == hash_value(x));
}
std::vector<test::custom<int> > custom_vector;
@@ -85,17 +85,17 @@
HASH_NAMESPACE::hash_combine(seed2, 250u);
HASH_NAMESPACE::hash_combine(seed2, 350u);
- BOOST_TEST(seed ==
+ BOOST_CHECK(seed ==
HASH_NAMESPACE::hash_range(custom_vector.begin(), custom_vector.end()));
- BOOST_TEST(seed == seed2);
+ BOOST_CHECK(seed == seed2);
}
#endif // TEST_EXTENSIONS
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
custom_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_function_pointer_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_function_pointer_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_function_pointer_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -11,7 +11,7 @@
# include <boost/functional/hash.hpp>
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <boost/limits.hpp>
#include <boost/mpl/assert.hpp>
@@ -32,31 +32,31 @@
HASH_NAMESPACE::hash<void(*)()> hasher_void;
HASH_NAMESPACE::hash<int(*)(int)> hasher_int;
- BOOST_TEST(&void_func1 != &void_func2);
- BOOST_TEST(&int_func1 != &int_func2);
+ BOOST_CHECK(&void_func1 != &void_func2);
+ BOOST_CHECK(&int_func1 != &int_func2);
- BOOST_TEST(hasher_void(0) == hasher_void(0));
- BOOST_TEST(hasher_void(&void_func1) == hasher_void(&void_func1));
- BOOST_TEST(hasher_void(&void_func1) != hasher_void(&void_func2));
- BOOST_TEST(hasher_void(&void_func1) != hasher_void(0));
- BOOST_TEST(hasher_int(0) == hasher_int(0));
- BOOST_TEST(hasher_int(&int_func1) == hasher_int(&int_func1));
- BOOST_TEST(hasher_int(&int_func1) != hasher_int(&int_func2));
- BOOST_TEST(hasher_int(&int_func1) != hasher_int(0));
+ BOOST_CHECK(hasher_void(0) == hasher_void(0));
+ BOOST_CHECK(hasher_void(&void_func1) == hasher_void(&void_func1));
+ BOOST_CHECK(hasher_void(&void_func1) != hasher_void(&void_func2));
+ BOOST_CHECK(hasher_void(&void_func1) != hasher_void(0));
+ BOOST_CHECK(hasher_int(0) == hasher_int(0));
+ BOOST_CHECK(hasher_int(&int_func1) == hasher_int(&int_func1));
+ BOOST_CHECK(hasher_int(&int_func1) != hasher_int(&int_func2));
+ BOOST_CHECK(hasher_int(&int_func1) != hasher_int(0));
#if defined(TEST_EXTENSIONS)
- BOOST_TEST(hasher_void(&void_func1)
+ BOOST_CHECK(hasher_void(&void_func1)
== HASH_NAMESPACE::hash_value(&void_func1));
- BOOST_TEST(hasher_int(&int_func1)
+ BOOST_CHECK(hasher_int(&int_func1)
== HASH_NAMESPACE::hash_value(&int_func1));
// This isn't specified in Peter's proposal:
- BOOST_TEST(hasher_void(0) == 0);
+ BOOST_CHECK(hasher_void(0) == 0);
#endif
}
-int main()
+int test_main(int, char**)
{
function_pointer_tests();
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_fwd_test_1.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_fwd_test_1.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_fwd_test_1.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -7,7 +7,7 @@
#include "./hash_fwd_test.hpp"
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#if defined(TEST_EXTENSIONS) && !defined(TEST_STD_INCLUDES)
@@ -24,8 +24,8 @@
HASH_NAMESPACE::hash<test::test_type1<int> > hasher_test_int;
HASH_NAMESPACE::hash<test::test_type1<std::string> > hasher_test_string;
- BOOST_TEST(hasher_int(5) == hasher_test_int(x));
- BOOST_TEST(hasher_string("Test") == hasher_test_string(y));
+ BOOST_CHECK(hasher_int(5) == hasher_test_int(x));
+ BOOST_CHECK(hasher_string("Test") == hasher_test_string(y));
}
void fwd_test2()
@@ -44,8 +44,8 @@
HASH_NAMESPACE::hash<test::test_type2<int> > hasher_test_int;
HASH_NAMESPACE::hash<test::test_type2<std::string> > hasher_test_string;
- BOOST_TEST(seed1 == hasher_test_int(x));
- BOOST_TEST(seed2 == hasher_test_string(y));
+ BOOST_CHECK(seed1 == hasher_test_int(x));
+ BOOST_CHECK(seed2 == hasher_test_string(y));
}
void fwd_test3()
@@ -75,19 +75,19 @@
HASH_NAMESPACE::hash<test::test_type3<int> > hasher_test_int;
HASH_NAMESPACE::hash<test::test_type3<std::string> > hasher_test_string;
- BOOST_TEST(seed1 == hasher_test_int(x));
- BOOST_TEST(seed2 == hasher_test_string(y));
+ BOOST_CHECK(seed1 == hasher_test_int(x));
+ BOOST_CHECK(seed2 == hasher_test_string(y));
}
#endif
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
fwd_test1();
fwd_test2();
fwd_test3();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_fwd_test_2.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_fwd_test_2.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_fwd_test_2.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -8,7 +8,7 @@
#include "./hash_fwd_test.hpp"
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
template <class T> void unused(T const&) {}
@@ -31,9 +31,9 @@
}
-int main()
+int test_main(int, char**)
{
fwd_test();
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_global_namespace_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_global_namespace_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_global_namespace_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -48,7 +48,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -59,13 +59,13 @@
void custom_tests()
{
HASH_NAMESPACE::hash<custom> custom_hasher;
- BOOST_TEST(custom_hasher(10) == 100u);
+ BOOST_CHECK(custom_hasher(10) == 100u);
custom x(55);
- BOOST_TEST(custom_hasher(x) == 550u);
+ BOOST_CHECK(custom_hasher(x) == 550u);
{
using namespace HASH_NAMESPACE;
- BOOST_TEST(custom_hasher(x) == hash_value(x));
+ BOOST_CHECK(custom_hasher(x) == hash_value(x));
}
std::vector<custom> custom_vector;
@@ -83,19 +83,19 @@
HASH_NAMESPACE::hash_combine(seed2, 250u);
HASH_NAMESPACE::hash_combine(seed2, 350u);
- BOOST_TEST(seed ==
+ BOOST_CHECK(seed ==
HASH_NAMESPACE::hash_range(custom_vector.begin(), custom_vector.end()));
- BOOST_TEST(seed == seed2);
+ BOOST_CHECK(seed == seed2);
}
#endif // TEST_EXTENSIONS
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
custom_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_list_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_list_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_list_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,7 +13,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -25,11 +25,11 @@
#endif // TEST_EXTENSIONS
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
list_tests::list_hash_integer_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_long_double_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_long_double_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_long_double_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -5,7 +5,7 @@
#include "hash_float_test.hpp"
-int main()
+int test_main(int, char**)
{
std::cerr<<"Compiler: "<<BOOST_COMPILER<<"\n";
std::cerr<<"Platform: "<<BOOST_PLATFORM<<"\n";
@@ -13,5 +13,5 @@
float_tests("long double", (long double*) 0);
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_map_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_map_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_map_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,7 +13,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <map>
@@ -29,12 +29,12 @@
#endif // TEST_EXTENSTIONS
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
map_tests::map_hash_integer_tests();
multimap_tests::multimap_hash_integer_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_map_test.hpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_map_test.hpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_map_test.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -38,17 +38,17 @@
HASH_NAMESPACE::hash<T> hasher;
for(int i2 = 0; i2 < number_of_containers; ++i2) {
- BOOST_TEST(hasher(containers[i2]) == hasher(containers[i2]));
+ BOOST_CHECK(hasher(containers[i2]) == hasher(containers[i2]));
- BOOST_TEST(hasher(containers[i2]) ==
+ BOOST_CHECK(hasher(containers[i2]) ==
HASH_NAMESPACE::hash_value(containers[i2]));
- BOOST_TEST(hasher(containers[i2])
+ BOOST_CHECK(hasher(containers[i2])
== HASH_NAMESPACE::hash_range(
containers[i2].begin(), containers[i2].end()));
for(int j2 = i2 + 1; j2 < number_of_containers; ++j2) {
- BOOST_TEST(
+ BOOST_CHECK(
(containers[i2] == containers[j2]) ==
(hasher(containers[i2]) == hasher(containers[j2]))
);
Modified: branches/proto/v4/libs/functional/hash/test/hash_no_ext_fail_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_no_ext_fail_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_no_ext_fail_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -12,7 +12,7 @@
#include <boost/functional/hash.hpp>
#include <boost/functional/hash.hpp>
-int main()
+int test_main(int, char**)
{
HASH_NAMESPACE::hash< int[10] > hasher;
return 0;
Modified: branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_1.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_1.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_1.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -7,11 +7,11 @@
#include <boost/functional/hash.hpp>
#define BOOST_HASH_NO_EXTENSIONS
#include <boost/functional/hash.hpp>
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <deque>
#include <cassert>
-int main()
+int test_main(int, char**)
{
std::deque<int> x;
@@ -19,7 +19,7 @@
x.push_back(2);
HASH_NAMESPACE::hash<std::deque<int> > hasher;
- BOOST_TEST(hasher(x) == HASH_NAMESPACE::hash_value(x));
+ BOOST_CHECK(hasher(x) == HASH_NAMESPACE::hash_value(x));
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_2.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_2.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_2.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -8,10 +8,10 @@
#include <boost/functional/hash.hpp>
#undef BOOST_HASH_NO_EXTENSIONS
#include <boost/functional/hash.hpp>
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <map>
-int main()
+int test_main(int, char**)
{
std::map<int, int> x;
@@ -19,7 +19,7 @@
x.insert(std::map<int, int>::value_type(14, -75));
HASH_NAMESPACE::hash<std::map<int, int> > hasher;
- BOOST_TEST(hasher(x) == HASH_NAMESPACE::hash_value(x));
+ BOOST_CHECK(hasher(x) == HASH_NAMESPACE::hash_value(x));
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_number_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_number_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_number_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -12,7 +12,7 @@
#endif
#include <iostream>
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/limits.hpp>
@@ -39,27 +39,27 @@
HASH_NAMESPACE::hash<T> x2;
T v1 = (T) -5;
- BOOST_TEST(x1(v1) == x2(v1));
- BOOST_TEST(x1(T(-5)) == x2(T(-5)));
- BOOST_TEST(x1(T(0)) == x2(T(0)));
- BOOST_TEST(x1(T(10)) == x2(T(10)));
- BOOST_TEST(x1(T(25)) == x2(T(25)));
- BOOST_TEST(x1(T(5) - T(5)) == x2(T(0)));
- BOOST_TEST(x1(T(6) + T(4)) == x2(T(10)));
+ BOOST_CHECK(x1(v1) == x2(v1));
+ BOOST_CHECK(x1(T(-5)) == x2(T(-5)));
+ BOOST_CHECK(x1(T(0)) == x2(T(0)));
+ BOOST_CHECK(x1(T(10)) == x2(T(10)));
+ BOOST_CHECK(x1(T(25)) == x2(T(25)));
+ BOOST_CHECK(x1(T(5) - T(5)) == x2(T(0)));
+ BOOST_CHECK(x1(T(6) + T(4)) == x2(T(10)));
#if defined(TEST_EXTENSIONS)
- BOOST_TEST(x1(T(-5)) == HASH_NAMESPACE::hash_value(T(-5)));
- BOOST_TEST(x1(T(0)) == HASH_NAMESPACE::hash_value(T(0)));
- BOOST_TEST(x1(T(10)) == HASH_NAMESPACE::hash_value(T(10)));
- BOOST_TEST(x1(T(25)) == HASH_NAMESPACE::hash_value(T(25)));
+ BOOST_CHECK(x1(T(-5)) == HASH_NAMESPACE::hash_value(T(-5)));
+ BOOST_CHECK(x1(T(0)) == HASH_NAMESPACE::hash_value(T(0)));
+ BOOST_CHECK(x1(T(10)) == HASH_NAMESPACE::hash_value(T(10)));
+ BOOST_CHECK(x1(T(25)) == HASH_NAMESPACE::hash_value(T(25)));
if (limits::is_integer)
{
if(limits::is_signed || limits::digits <= boost::hash_detail::limits<std::size_t>::digits)
- BOOST_TEST(HASH_NAMESPACE::hash_value(T(-5)) == (std::size_t)T(-5));
- BOOST_TEST(HASH_NAMESPACE::hash_value(T(0)) == (std::size_t)T(0u));
- BOOST_TEST(HASH_NAMESPACE::hash_value(T(10)) == (std::size_t)T(10u));
- BOOST_TEST(HASH_NAMESPACE::hash_value(T(25)) == (std::size_t)T(25u));
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(T(-5)) == (std::size_t)T(-5));
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(T(0)) == (std::size_t)T(0u));
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(T(10)) == (std::size_t)T(10u));
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(T(25)) == (std::size_t)T(25u));
}
#endif
}
@@ -77,18 +77,18 @@
T min_value = (limits::min)();
T max_value = (limits::max)();
- BOOST_TEST(x1(min_value) == x2((limits::min)()));
- BOOST_TEST(x1(max_value) == x2((limits::max)()));
+ BOOST_CHECK(x1(min_value) == x2((limits::min)()));
+ BOOST_CHECK(x1(max_value) == x2((limits::max)()));
#if defined(TEST_EXTENSIONS)
- BOOST_TEST(x1(min_value) == HASH_NAMESPACE::hash_value(min_value));
- BOOST_TEST(x1(max_value) == HASH_NAMESPACE::hash_value(max_value));
+ BOOST_CHECK(x1(min_value) == HASH_NAMESPACE::hash_value(min_value));
+ BOOST_CHECK(x1(max_value) == HASH_NAMESPACE::hash_value(max_value));
if (limits::is_integer)
{
- BOOST_TEST(HASH_NAMESPACE::hash_value(min_value)
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(min_value)
== std::size_t(min_value));
- BOOST_TEST(HASH_NAMESPACE::hash_value(max_value)
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(max_value)
== std::size_t(max_value));
}
#endif
@@ -106,11 +106,11 @@
// A hash function can legally fail these tests, but it'll not be a good
// sign.
if(T(1) != T(-1))
- BOOST_TEST(x1(T(1)) != x2(T(-1)));
+ BOOST_CHECK(x1(T(1)) != x2(T(-1)));
if(T(1) != T(2))
- BOOST_TEST(x1(T(1)) != x2(T(2)));
+ BOOST_CHECK(x1(T(1)) != x2(T(2)));
if((limits::max)() != (limits::max)() - 1)
- BOOST_TEST(x1((limits::max)()) != x2((limits::max)() - 1));
+ BOOST_CHECK(x1((limits::max)()) != x2((limits::max)() - 1));
}
void bool_test()
@@ -118,10 +118,10 @@
HASH_NAMESPACE::hash<bool> x1;
HASH_NAMESPACE::hash<bool> x2;
- BOOST_TEST(x1(true) == x2(true));
- BOOST_TEST(x1(false) == x2(false));
- BOOST_TEST(x1(true) != x2(false));
- BOOST_TEST(x1(false) != x2(true));
+ BOOST_CHECK(x1(true) == x2(true));
+ BOOST_CHECK(x1(false) == x2(false));
+ BOOST_CHECK(x1(true) != x2(false));
+ BOOST_CHECK(x1(false) != x2(true));
}
#define NUMERIC_TEST(type, name) \
@@ -134,7 +134,7 @@
numeric_test((type*) 0); \
poor_quality_tests((type*) 0);
-int main()
+int test_main(int, char**)
{
NUMERIC_TEST(char, char)
NUMERIC_TEST(signed char, schar)
@@ -159,7 +159,7 @@
bool_test();
- return boost::report_errors();
+ return 0;
}
#if defined(BOOST_MSVC)
Modified: branches/proto/v4/libs/functional/hash/test/hash_pointer_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_pointer_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_pointer_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -11,7 +11,7 @@
# include <boost/functional/hash.hpp>
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <boost/limits.hpp>
#include <boost/mpl/assert.hpp>
@@ -30,20 +30,20 @@
int int1;
int int2;
- BOOST_TEST(x1(0) == x2(0));
- BOOST_TEST(x1(&int1) == x2(&int1));
- BOOST_TEST(x1(&int2) == x2(&int2));
+ BOOST_CHECK(x1(0) == x2(0));
+ BOOST_CHECK(x1(&int1) == x2(&int1));
+ BOOST_CHECK(x1(&int2) == x2(&int2));
#if defined(TEST_EXTENSIONS)
- BOOST_TEST(x1(&int1) == HASH_NAMESPACE::hash_value(&int1));
- BOOST_TEST(x1(&int2) == HASH_NAMESPACE::hash_value(&int2));
+ BOOST_CHECK(x1(&int1) == HASH_NAMESPACE::hash_value(&int1));
+ BOOST_CHECK(x1(&int2) == HASH_NAMESPACE::hash_value(&int2));
// This isn't specified in Peter's proposal:
- BOOST_TEST(x1(0) == 0);
+ BOOST_CHECK(x1(0) == 0);
#endif
}
-int main()
+int test_main(int, char**)
{
pointer_tests();
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_range_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_range_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_range_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,7 +13,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -41,45 +41,45 @@
std::vector<int> x;
std::size_t x_seed = 0;
- BOOST_TEST(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
+ BOOST_CHECK(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
+ BOOST_CHECK(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
== HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
+ BOOST_CHECK(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
!= HASH_NAMESPACE::hash_range(values1.begin(), values1.end()));
x.push_back(10);
HASH_NAMESPACE::hash_combine(x_seed, 10);
- BOOST_TEST(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
+ BOOST_CHECK(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
+ BOOST_CHECK(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
!= HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_range(values2.begin(), values2.end())
+ BOOST_CHECK(HASH_NAMESPACE::hash_range(values2.begin(), values2.end())
== HASH_NAMESPACE::hash_range(x.begin(), x.end()));
x.push_back(20);
HASH_NAMESPACE::hash_combine(x_seed, 20);
- BOOST_TEST(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
+ BOOST_CHECK(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
+ BOOST_CHECK(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
!= HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_range(values2.begin(), values2.end())
+ BOOST_CHECK(HASH_NAMESPACE::hash_range(values2.begin(), values2.end())
!= HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_range(values3.begin(), values3.end())
+ BOOST_CHECK(HASH_NAMESPACE::hash_range(values3.begin(), values3.end())
== HASH_NAMESPACE::hash_range(x.begin(), x.end()));
std::size_t seed = HASH_NAMESPACE::hash_range(values3.begin(), values3.end());
HASH_NAMESPACE::hash_range(seed, values4.begin(), values4.end());
HASH_NAMESPACE::hash_range(seed, x.begin(), x.end());
- BOOST_TEST(seed == HASH_NAMESPACE::hash_range(values5.begin(), values5.end()));
+ BOOST_CHECK(seed == HASH_NAMESPACE::hash_range(values5.begin(), values5.end()));
}
#endif
-int main()
+int test_main(int, char**)
{
hash_range_tests();
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_sequence_test.hpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_sequence_test.hpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_sequence_test.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -41,17 +41,17 @@
HASH_NAMESPACE::hash<T> hasher;
for(int i2 = 0; i2 < number_of_containers; ++i2) {
- BOOST_TEST(hasher(containers[i2]) == hasher(containers[i2]));
+ BOOST_CHECK(hasher(containers[i2]) == hasher(containers[i2]));
- BOOST_TEST(hasher(containers[i2]) ==
+ BOOST_CHECK(hasher(containers[i2]) ==
HASH_NAMESPACE::hash_value(containers[i2]));
- BOOST_TEST(hasher(containers[i2])
+ BOOST_CHECK(hasher(containers[i2])
== HASH_NAMESPACE::hash_range(
containers[i2].begin(), containers[i2].end()));
for(int j2 = i2 + 1; j2 < number_of_containers; ++j2) {
- BOOST_TEST(
+ BOOST_CHECK(
(containers[i2] == containers[j2]) ==
(hasher(containers[i2]) == hasher(containers[j2]))
);
Modified: branches/proto/v4/libs/functional/hash/test/hash_set_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_set_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_set_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,7 +13,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -29,12 +29,12 @@
#endif
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
set_tests::set_hash_integer_tests();
multiset_tests::multiset_hash_integer_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_set_test.hpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_set_test.hpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_set_test.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -44,17 +44,17 @@
HASH_NAMESPACE::hash<T> hasher;
for(int i2 = 0; i2 < number_of_containers; ++i2) {
- BOOST_TEST(hasher(containers[i2]) == hasher(containers[i2]));
+ BOOST_CHECK(hasher(containers[i2]) == hasher(containers[i2]));
- BOOST_TEST(hasher(containers[i2]) ==
+ BOOST_CHECK(hasher(containers[i2]) ==
HASH_NAMESPACE::hash_value(containers[i2]));
- BOOST_TEST(hasher(containers[i2])
+ BOOST_CHECK(hasher(containers[i2])
== HASH_NAMESPACE::hash_range(
containers[i2].begin(), containers[i2].end()));
for(int j2 = i2 + 1; j2 < number_of_containers; ++j2) {
- BOOST_TEST(
+ BOOST_CHECK(
(containers[i2] == containers[j2]) ==
(hasher(containers[i2]) == hasher(containers[j2]))
);
Modified: branches/proto/v4/libs/functional/hash/test/hash_string_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_string_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_string_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -11,7 +11,7 @@
# include <boost/functional/hash.hpp>
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <boost/limits.hpp>
#include <boost/mpl/assert.hpp>
@@ -27,18 +27,18 @@
HASH_NAMESPACE::hash<std::string> x1;
HASH_NAMESPACE::hash<std::string> x2;
- BOOST_TEST(x1("Hello") == x2(std::string("Hel") + "lo"));
- BOOST_TEST(x1("") == x2(std::string()));
+ BOOST_CHECK(x1("Hello") == x2(std::string("Hel") + "lo"));
+ BOOST_CHECK(x1("") == x2(std::string()));
#if defined(TEST_EXTENSIONS)
std::string value1;
std::string value2("Hello");
- BOOST_TEST(x1(value1) == HASH_NAMESPACE::hash_value(value1));
- BOOST_TEST(x1(value2) == HASH_NAMESPACE::hash_value(value2));
- BOOST_TEST(HASH_NAMESPACE::hash_value(value1) ==
+ BOOST_CHECK(x1(value1) == HASH_NAMESPACE::hash_value(value1));
+ BOOST_CHECK(x1(value2) == HASH_NAMESPACE::hash_value(value2));
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(value1) ==
HASH_NAMESPACE::hash_range(value1.begin(), value1.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_value(value2) ==
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(value2) ==
HASH_NAMESPACE::hash_range(value2.begin(), value2.end()));
#endif
}
@@ -51,28 +51,28 @@
HASH_NAMESPACE::hash<std::wstring> x1;
HASH_NAMESPACE::hash<std::wstring> x2;
- BOOST_TEST(x1(L"Hello") == x2(std::wstring(L"Hel") + L"lo"));
- BOOST_TEST(x1(L"") == x2(std::wstring()));
+ BOOST_CHECK(x1(L"Hello") == x2(std::wstring(L"Hel") + L"lo"));
+ BOOST_CHECK(x1(L"") == x2(std::wstring()));
#if defined(TEST_EXTENSIONS)
std::wstring value1;
std::wstring value2(L"Hello");
- BOOST_TEST(x1(value1) == HASH_NAMESPACE::hash_value(value1));
- BOOST_TEST(x1(value2) == HASH_NAMESPACE::hash_value(value2));
- BOOST_TEST(HASH_NAMESPACE::hash_value(value1) ==
+ BOOST_CHECK(x1(value1) == HASH_NAMESPACE::hash_value(value1));
+ BOOST_CHECK(x1(value2) == HASH_NAMESPACE::hash_value(value2));
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(value1) ==
HASH_NAMESPACE::hash_range(value1.begin(), value1.end()));
- BOOST_TEST(HASH_NAMESPACE::hash_value(value2) ==
+ BOOST_CHECK(HASH_NAMESPACE::hash_value(value2) ==
HASH_NAMESPACE::hash_range(value2.begin(), value2.end()));
#endif
}
#endif
-int main()
+int test_main(int, char**)
{
string_tests();
#if !defined(BOOST_NO_STD_WSTRING)
wstring_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_value_array_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_value_array_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_value_array_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,7 +16,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -37,9 +37,9 @@
int array3[2] = {2, 3};
HASH_NAMESPACE::hash<int[2]> hasher3;
- BOOST_TEST(hasher1(array1) == HASH_NAMESPACE::hash_value(array1));
- BOOST_TEST(hasher2(array2) == HASH_NAMESPACE::hash_value(array2));
- BOOST_TEST(hasher3(array3) == HASH_NAMESPACE::hash_value(array3));
+ BOOST_CHECK(hasher1(array1) == HASH_NAMESPACE::hash_value(array1));
+ BOOST_CHECK(hasher2(array2) == HASH_NAMESPACE::hash_value(array2));
+ BOOST_CHECK(hasher3(array3) == HASH_NAMESPACE::hash_value(array3));
}
void two_dimensional_array_test()
@@ -47,18 +47,18 @@
int array[3][2] = {{-5, 6}, {7, -3}, {26, 1}};
HASH_NAMESPACE::hash<int[3][2]> hasher;
- BOOST_TEST(hasher(array) == HASH_NAMESPACE::hash_value(array));
+ BOOST_CHECK(hasher(array) == HASH_NAMESPACE::hash_value(array));
}
#endif
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
array_int_test();
two_dimensional_array_test();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/hash_vector_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_vector_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_vector_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -13,7 +13,7 @@
# endif
#endif
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#ifdef TEST_EXTENSIONS
@@ -25,11 +25,11 @@
#endif // TEST_EXTENSIONS
-int main()
+int test_main(int, char**)
{
#ifdef TEST_EXTENSIONS
vector_tests::vector_hash_integer_tests();
#endif
- return boost::report_errors();
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/link_ext_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/link_ext_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/link_ext_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -5,13 +5,13 @@
#define HASH_NAMESPACE boost
#include <boost/functional/hash.hpp>
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <vector>
int f(std::size_t hash1, int* x1) {
// Check that HASH_NAMESPACE::hash<int*> works in both files.
HASH_NAMESPACE::hash<int*> ptr_hasher;
- BOOST_TEST(hash1 == ptr_hasher(x1));
+ BOOST_CHECK(hash1 == ptr_hasher(x1));
// Check that std::vector<std::size_t> is avaiable in this file.
std::vector<std::size_t> x;
Modified: branches/proto/v4/libs/functional/hash/test/link_no_ext_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/link_no_ext_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/link_no_ext_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -6,13 +6,14 @@
#define HASH_NAMESPACE boost
#define BOOST_HASH_NO_EXTENSIONS
#include <boost/functional/hash.hpp>
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/assert.hpp>
extern int f(std::size_t, int*);
-int main() {
+int test_main(int, char**) {
HASH_NAMESPACE::hash<int*> ptr_hasher;
int x = 55;
- BOOST_TEST(!f(ptr_hasher(&x), &x));
- return boost::report_errors();
+
+ BOOST_ASSERT(!f(ptr_hasher(&x), &x));
+ return 0;
}
Modified: branches/proto/v4/libs/functional/hash/test/link_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/link_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/link_test.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -6,4 +6,4 @@
#include <boost/functional/hash.hpp>
extern int f();
-int main() { return f(); }
+int main(int, char**) { return f(); }
Modified: branches/proto/v4/libs/graph/doc/using_adjacency_list.html
==============================================================================
--- branches/proto/v4/libs/graph/doc/using_adjacency_list.html (original)
+++ branches/proto/v4/libs/graph/doc/using_adjacency_list.html 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -470,27 +470,26 @@
</PRE>
<p>
-You can also use enum's instead of struct's to create tag types.
-Create an enum type for each property. The first part of the name of
-the enum type must be <tt>edge</tt>, <tt>vertex</tt>, or
-<tt>graph</tt> followed by an underscore, the new property name, and
-a <tt>_t</tt> at the
-end. Inside the enum, define a value with the same name minus the
-<tt>_t</tt>. Then invoke the <tt>BOOST_INSTALL_PROPERTY</tt> macro.
+You can also use enum's instead of struct's to create tag types. Create an enum
+type for each property inside the boost namespace. The first part of the name of
+the enum type must be <tt>edge</tt>, <tt>vertex</tt>, or <tt>graph</tt> followed
+by an underscore, the new property name, and a <tt>_t</tt> at the end. Inside
+the enum, define a value with the same name minus the <tt>_t</tt>. Then invoke
+the <tt>BOOST_INSTALL_PROPERTY</tt> macro.
<pre>
-enum edge_flow_t { edge_flow };
-enum edge_capacity_t { edge_capacity };
-
namespace boost {
+ enum edge_flow_t { edge_flow };
+ enum edge_capacity_t { edge_capacity };
+
BOOST_INSTALL_PROPERTY(edge, flow);
BOOST_INSTALL_PROPERTY(edge, capacity);
}
</pre>
<P>
-Now you can use your new property tag in the definition of properties
-just as you would one of the builtin tags.
+Now you can use your new property tag in the definition of properties just as
+you would one of the builtin tags.
<P>
<PRE>
Modified: branches/proto/v4/libs/math/test/test_nc_beta.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_nc_beta.cpp (original)
+++ branches/proto/v4/libs/math/test/test_nc_beta.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -80,6 +80,7 @@
largest_type = "(long\\s+)?double|real_concept";
#endif
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
if(boost::math::tools::digits<long double>() == 64)
{
//
@@ -111,6 +112,7 @@
"[^|]*large[^|]*", // test data group
"[^|]*", 40000, 5500); // test function
}
+#endif
//
// Catch all cases come last:
//
Modified: branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp (original)
+++ branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -319,7 +319,7 @@
// mode:
BOOST_CHECK_CLOSE(
mode(dist)
- , static_cast<RealType>(17.184201184730857030170788677340294070728990862663L), sqrt(tolerance * 10));
+ , static_cast<RealType>(17.184201184730857030170788677340294070728990862663L), sqrt(tolerance * 20));
BOOST_CHECK_CLOSE(
median(dist),
quantile(
Modified: branches/proto/v4/libs/pool/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/pool/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/pool/test/Jamfile.v2 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -11,4 +11,5 @@
test-suite pool :
[ run test_pool_alloc.cpp ]
+ [ run pool_msvc_compiler_bug_test.cpp ]
;
Modified: branches/proto/v4/libs/spirit/doc/what_s_new.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/what_s_new.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/what_s_new.qbk 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -7,4 +7,39 @@
===============================================================================/]
[section What's New]
+
+[heading Spirit Classic]
+
+The Spirit V1.8.x code base has been integrated with Spirit V2. It is now called
+*Spirit Classic*. Even if the directory structure has changed (the Spirit Classic
+headers are now moved to the '$BOOST_ROOT/boost/spirit/home/classic' directory),
+we created forwarding headers allowing to compile existing applications without
+any change. These forwarding headers are deprecated, though, which will result
+in corresponding warnings generated for each of the headers. The forwarding
+headers are expected to be removed in the future.
+
+The recommended way of using Spirit Classic now is to include header files from
+the directory '$BOOST_ROOT/boost/spirit/include'. All files of Spirit Classic
+in this directory have a 'classic_' prefixed to their name. For example the
+include
+
+ #include <boost/spirit/core/core.hpp>
+
+now should be written as:
+
+ #include <boost/spirit/include/classic_core.hpp>
+
+To avoid namespace conflicts with the new Spirit V2 library we moved Spirit Classic
+into the namespace `boost::spirit::classic`. All references to the former
+namespace `boost::spirit` need to be adjusted as soon as the header names are
+corrected as described above. As an alternative you can define the preprocessor
+constant `BOOST_SPIRIT_USE_OLD_NAMESPACE`, which will force the Spirit Classic
+code to be in the namespace `boost::spirit` as before. This is not recommended,
+though, as it maz result in naming clashs
+
+The change of the namespace will be automatically deactivated whenever the
+deprecated include files are being used. This ensures full backwards
+compatibility for existing applications.
+
+
[endsect]
Modified: branches/proto/v4/libs/spirit/example/karma/Jamfile
==============================================================================
--- branches/proto/v4/libs/spirit/example/karma/Jamfile (original)
+++ branches/proto/v4/libs/spirit/example/karma/Jamfile 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -1,12 +1,13 @@
#==============================================================================
-# Copyright (c) 2001-2007 Joel de Guzman
-# Copyright (c) 2001-2007 Hartmut Kaiser
+# Copyright (c) 2001-2008 Joel de Guzman
+# Copyright (c) 2001-2008 Hartmut Kaiser
#
# 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)
#==============================================================================
project spirit-karma-example ;
+exe quick_start1 : quick_start1.cpp ;
exe basic_facilities : basic_facilities.cpp ;
exe functor_facilities : functor_facilities.cpp ;
Modified: branches/proto/v4/libs/spirit/example/karma/basic_facilities.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/karma/basic_facilities.cpp (original)
+++ branches/proto/v4/libs/spirit/example/karma/basic_facilities.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -166,13 +166,6 @@
std::cout << "std::vector<boost::date>" << std::endl;
output_container(std::cout, dates);
- ///////////////////////////////////////////////////////////////////////////
- // fusion tuples
- // this will work in the future
-// boost::fusion::vector<int, char, double> fv(42, 'a', 45.8);
-//
-// std::cout << "boost::fusion::vector<int, char, double>" << std::endl;
-// output_container(std::cout, fv);
return 0;
}
Modified: branches/proto/v4/libs/spirit/example/karma/quick_start1.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/karma/quick_start1.cpp (original)
+++ branches/proto/v4/libs/spirit/example/karma/quick_start1.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -37,7 +37,7 @@
) << std::endl << std::endl;
// output the container as a space separated sequence
- std::cout << "...as space delited list" << std::endl;
+ std::cout << "...as space delimited list" << std::endl;
std::cout <<
karma::format_delimited(
*int_, // format description
Modified: branches/proto/v4/libs/spirit/example/lex/Jamfile
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/Jamfile (original)
+++ branches/proto/v4/libs/spirit/example/lex/Jamfile 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -1,5 +1,5 @@
#==============================================================================
-# Copyright (c) 2001-2007 Joel de Guzman
+# Copyright (c) 2001-2008 Joel de Guzman
# Copyright (c) 2001-2008 Hartmut Kaiser
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -8,15 +8,16 @@
project spirit-lexer-example ;
-exe example1 : example1.cpp ;
-exe example2 : example2.cpp ;
-exe example3 : example3.cpp ;
-exe example4 : example4.cpp ;
-exe example5 : example5.cpp ;
-exe example6 : example6.cpp ;
-exe print_numbers : print_numbers.cpp ;
-exe word_count : word_count.cpp ;
-exe word_count_functor : word_count_functor.cpp ;
-exe word_count_lexer : word_count_lexer.cpp ;
-exe strip_comments : strip_comments.cpp ;
+exe example1 : example1.cpp ;
+exe example2 : example2.cpp ;
+exe example3 : example3.cpp ;
+exe example4 : example4.cpp ;
+exe example5 : example5.cpp ;
+exe example6 : example6.cpp ;
+exe print_numbers : print_numbers.cpp ;
+exe word_count : word_count.cpp ;
+exe word_count_functor : word_count_functor.cpp ;
+exe word_count_lexer : word_count_lexer.cpp ;
+exe strip_comments : strip_comments.cpp ;
+exe strip_comments_lexer : strip_comments_lexer.cpp ;
Modified: branches/proto/v4/libs/spirit/example/lex/static_lexer/Jamfile
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/static_lexer/Jamfile (original)
+++ branches/proto/v4/libs/spirit/example/lex/static_lexer/Jamfile 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -8,6 +8,6 @@
project spirit-static-lexer-example ;
-exe generate_tables : generate_tables.cpp ;
+exe word_count_generate : word_count_generate.cpp ;
exe word_count_static : word_count_static.cpp ;
Modified: branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -65,15 +65,6 @@
};
///////////////////////////////////////////////////////////////////////////////
-// this is a workaround for the missing lround for the real_concept type
-long lround(boost::math::concepts::real_concept n)
-{
- if (n >= 0)
- return boost::math::tools::real_cast<long>(n + 0.5);
- return boost::math::tools::real_cast<long>(n - 0.5);
-}
-
-///////////////////////////////////////////////////////////////////////////////
// We need to specialize is_real_lit_tag to allow to use a real_concept as a
// literal below
namespace boost { namespace spirit
Modified: branches/proto/v4/libs/spirit/test/lex/test.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/lex/test.hpp (original)
+++ branches/proto/v4/libs/spirit/test/lex/test.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -6,6 +6,9 @@
#if !defined(BOOST_SPIRIT_LEX_TEST_MAR_23_2007_0721PM)
#define BOOST_SPIRIT_LEX_TEST_MAR_23_2007_0721PM
+#include <boost/variant.hpp>
+#include <boost/range/iterator_range.hpp>
+
namespace spirit_test
{
///////////////////////////////////////////////////////////////////////////
@@ -39,7 +42,7 @@
inline boost::iterator_range<Iterator> const&
get_iterpair(boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> const& v)
{
- return get<boost::iterator_range<Iterator> >(v);
+ return boost::get<boost::iterator_range<Iterator> >(v);
}
///////////////////////////////////////////////////////////////////////////
Modified: branches/proto/v4/libs/spirit/test/qi/char.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/qi/char.cpp (original)
+++ branches/proto/v4/libs/spirit/test/qi/char.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -91,6 +91,23 @@
BOOST_TEST(!test(L"z", ~~wchar('b', 'y')));
}
+
+ { // single char strings as argument to char_
+ BOOST_TEST(test("x", char_("x"), space));
+ BOOST_TEST(test("x", wchar(L"x"), space));
+ }
+
+ {
+ // chsets
+ BOOST_TEST(test("x", char_("a-z")));
+ BOOST_TEST(!test("1", char_("a-z")));
+ BOOST_TEST(test("1", char_("a-z0-9")));
+
+ BOOST_TEST(test("x", char_(L"a-z")));
+ BOOST_TEST(!test("1", char_(L"a-z")));
+ BOOST_TEST(test("1", char_(L"a-z0-9")));
+ }
+
{ // lazy chars
using namespace boost::phoenix;
Modified: branches/proto/v4/libs/spirit/test/qi/range_run.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/qi/range_run.cpp (original)
+++ branches/proto/v4/libs/spirit/test/qi/range_run.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -7,7 +7,7 @@
#include <iostream>
#include <cctype>
#include <boost/detail/lightweight_test.hpp>
-#include <boost/spirit/qi/char/detail/range_run.hpp>
+#include <boost/spirit/home/qi/char/detail/range_run.hpp>
#include <boost/random.hpp>
#include <boost/dynamic_bitset.hpp>
#include <boost/integer_traits.hpp>
Modified: branches/proto/v4/libs/spirit/test/qi/real.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/qi/real.cpp (original)
+++ branches/proto/v4/libs/spirit/test/qi/real.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -12,8 +12,8 @@
#include <boost/spirit/include/qi_char.hpp>
#include <boost/spirit/include/qi_numeric.hpp>
#include <boost/spirit/include/qi_operator.hpp>
-#include <boost/spirit/support/detail/math/fpclassify.hpp>
-#include <boost/spirit/support/detail/math/signbit.hpp>
+#include <boost/spirit/home/support/detail/math/fpclassify.hpp>
+#include <boost/spirit/home/support/detail/math/signbit.hpp>
#include "test.hpp"
using namespace spirit_test;
Modified: branches/proto/v4/libs/spirit/test/qi/tst.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/qi/tst.cpp (original)
+++ branches/proto/v4/libs/spirit/test/qi/tst.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -5,8 +5,8 @@
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
#include <boost/detail/lightweight_test.hpp>
-#include <boost/spirit/qi/string/tst.hpp>
-#include <boost/spirit/qi/string/tst_map.hpp>
+#include <boost/spirit/home/qi/string/tst.hpp>
+#include <boost/spirit/home/qi/string/tst_map.hpp>
#include <string>
#include <cctype>
Modified: branches/proto/v4/libs/spirit/test/support/hold_any.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/support/hold_any.cpp (original)
+++ branches/proto/v4/libs/spirit/test/support/hold_any.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -15,7 +15,7 @@
#include <string>
#include <boost/detail/lightweight_test.hpp>
-#include <boost/spirit/support/detail/hold_any.hpp>
+#include <boost/spirit/home/support/detail/hold_any.hpp>
using namespace std;
using namespace boost::spirit;
Modified: branches/proto/v4/libs/unordered/test/exception/erase_exception_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/exception/erase_exception_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/exception/erase_exception_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -25,7 +25,7 @@
void check(T const& x) const {
std::string scope(test::scope);
- UNORDERED_CHECK(scope.find("hash::") != std::string::npos ||
+ BOOST_CHECK(scope.find("hash::") != std::string::npos ||
scope.find("equal_to::") != std::string::npos ||
scope == "operator==(object, object)");
Modified: branches/proto/v4/libs/unordered/test/exception/insert_exception_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/exception/insert_exception_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/exception/insert_exception_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -109,10 +109,10 @@
size_type bucket_count = x.bucket_count();
size_type initial_elements = static_cast<size_type>(
ceil(bucket_count * (double) x.max_load_factor()) - 1);
- UNORDERED_REQUIRE(initial_elements < this->values.size());
+ BOOST_REQUIRE(initial_elements < this->values.size());
x.insert(this->values.begin(),
boost::next(this->values.begin(), initial_elements));
- UNORDERED_REQUIRE(bucket_count == x.bucket_count());
+ BOOST_REQUIRE(bucket_count == x.bucket_count());
return x;
}
@@ -131,7 +131,7 @@
// This isn't actually a failure, but it means the test isn't doing its
// job.
- UNORDERED_REQUIRE(x.bucket_count() != bucket_count);
+ BOOST_REQUIRE(x.bucket_count() != bucket_count);
}
};
@@ -154,7 +154,7 @@
// This isn't actually a failure, but it means the test isn't doing its
// job.
- UNORDERED_REQUIRE(x.bucket_count() != bucket_count);
+ BOOST_REQUIRE(x.bucket_count() != bucket_count);
}
};
@@ -178,10 +178,10 @@
size_type initial_elements = rehash_bucket_count - 5;
- UNORDERED_REQUIRE(initial_elements < this->values.size());
+ BOOST_REQUIRE(initial_elements < this->values.size());
x.insert(this->values.begin(),
boost::next(this->values.begin(), initial_elements));
- UNORDERED_REQUIRE(original_bucket_count == x.bucket_count());
+ BOOST_REQUIRE(original_bucket_count == x.bucket_count());
return x;
}
@@ -193,7 +193,7 @@
// This isn't actually a failure, but it means the test isn't doing its
// job.
- UNORDERED_REQUIRE(x.bucket_count() != bucket_count);
+ BOOST_REQUIRE(x.bucket_count() != bucket_count);
}
void check(T const& x) const {
Modified: branches/proto/v4/libs/unordered/test/exception/swap_exception_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/exception/swap_exception_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/exception/swap_exception_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -22,7 +22,7 @@
std::string scope(test::scope);
#if BOOST_UNORDERED_SWAP_METHOD != 2
- UNORDERED_CHECK(
+ BOOST_CHECK(
scope == "hash::operator(hash)" ||
scope == "hash::operator=(hash)" ||
scope == "equal_to::operator(equal_to)" ||
@@ -77,7 +77,7 @@
std::string scope(test::scope);
#if BOOST_UNORDERED_SWAP_METHOD != 2
- UNORDERED_CHECK(
+ BOOST_CHECK(
scope == "hash::operator(hash)" ||
scope == "hash::operator=(hash)" ||
scope == "equal_to::operator(equal_to)" ||
Modified: branches/proto/v4/libs/unordered/test/helpers/exception_test.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/helpers/exception_test.hpp (original)
+++ branches/proto/v4/libs/unordered/test/helpers/exception_test.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -8,7 +8,7 @@
#include "./test.hpp"
-#if defined(BOOST_UNORDERED_USE_TEST)
+#if defined(BOOST_UNORDERED_FULL_TEST)
# define BOOST_TEST_MAIN
# include <boost/test/exception_safety.hpp>
# include <boost/test/unit_test.hpp>
@@ -18,7 +18,7 @@
#include <boost/preprocessor/seq/elem.hpp>
#include <boost/preprocessor/cat.hpp>
-#if defined(BOOST_UNORDERED_USE_TEST)
+#if defined(BOOST_UNORDERED_FULL_TEST)
# define UNORDERED_EXCEPTION_TEST_CASE(name, test_func, type) \
UNORDERED_AUTO_TEST(name) \
{ \
@@ -181,7 +181,7 @@
-#if defined(BOOST_UNORDERED_USE_TEST)
+#if defined(BOOST_UNORDERED_FULL_TEST)
template <class Test>
void exception_safety(Test const& f, char const* name) {
test_runner<Test> runner(f);
Modified: branches/proto/v4/libs/unordered/test/helpers/metafunctions.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/helpers/metafunctions.hpp (original)
+++ branches/proto/v4/libs/unordered/test/helpers/metafunctions.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -8,11 +8,7 @@
#include <boost/config.hpp>
#include <boost/type_traits/is_same.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/identity.hpp>
#include <boost/mpl/not.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/apply.hpp>
#include <boost/unordered_set.hpp>
#include <boost/unordered_map.hpp>
@@ -82,7 +78,8 @@
// Non Const Value Type
- struct map_non_const_value_type
+ template <bool IsMap>
+ struct non_const_value_type_impl
{
template <class Container>
struct apply {
@@ -92,7 +89,8 @@
};
};
- struct set_non_const_value_type
+ template<>
+ struct non_const_value_type_impl<false>
{
template <class Container>
struct apply {
@@ -102,9 +100,8 @@
template <class Container>
struct non_const_value_type
- : boost::mpl::apply1<
- BOOST_DEDUCED_TYPENAME boost::mpl::if_<is_map<Container>, map_non_const_value_type, set_non_const_value_type>::type,
- Container>
+ : non_const_value_type_impl< ::test::is_map<Container>::value>::
+ BOOST_NESTED_TEMPLATE apply<Container>
{
};
}
Modified: branches/proto/v4/libs/unordered/test/helpers/test.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/helpers/test.hpp (original)
+++ branches/proto/v4/libs/unordered/test/helpers/test.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -6,21 +6,17 @@
#if !defined(BOOST_UNORDERED_TEST_TEST_HEADER)
#define BOOST_UNORDERED_TEST_TEST_HEADER
-#if defined(BOOST_UNORDERED_USE_TEST)
+#if defined(BOOST_UNORDERED_FULL_TEST)
#include <boost/test/test_tools.hpp>
-#define UNORDERED_CHECK(x) BOOST_CHECK(x)
-#define UNORDERED_REQUIRE(x) BOOST_REQUIRE(x)
#define UNORDERED_AUTO_TEST(x) BOOST_AUTO_TEST_CASE(x)
#define RUN_TESTS()
#else
-#include <boost/detail/lightweight_test.hpp>
+#include <boost/test/minimal.hpp>
#include <boost/preprocessor/cat.hpp>
-#define UNORDERED_CHECK(x) BOOST_TEST(x)
-#define UNORDERED_REQUIRE(x) if(!(x)) { BOOST_ERROR(BOOST_STRINGIZE(x)); throw ::test::lightweight::test_failure(); }
#define UNORDERED_AUTO_TEST(x) \
struct BOOST_PP_CAT(x, _type) : public ::test::registered_test_base { \
BOOST_PP_CAT(x, _type)() { \
@@ -30,7 +26,7 @@
}; \
BOOST_PP_CAT(x, _type) x; \
void BOOST_PP_CAT(x, _type)::run()
-#define RUN_TESTS() int main() { ::test::test_list::run_tests(); return boost::report_errors(); }
+#define RUN_TESTS() int test_main(int, char**) { ::test::test_list::run_tests(); return 0; }
namespace test {
struct registered_test_base {
Modified: branches/proto/v4/libs/unordered/test/helpers/tracker.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/helpers/tracker.hpp (original)
+++ branches/proto/v4/libs/unordered/test/helpers/tracker.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -51,7 +51,7 @@
std::copy(x2.begin(), x2.end(), std::back_inserter(values2));
std::sort(values1.begin(), values1.end());
std::sort(values2.begin(), values2.end());
- BOOST_TEST(values1.size() == values2.size() &&
+ BOOST_CHECK(values1.size() == values2.size() &&
std::equal(values1.begin(), values1.end(), values2.begin(), test::equivalent));
}
@@ -65,7 +65,7 @@
std::copy(x2.first, x2.second, std::back_inserter(values2));
std::sort(values1.begin(), values1.end());
std::sort(values2.begin(), values2.end());
- BOOST_TEST(values1.size() == values2.size() &&
+ BOOST_CHECK(values1.size() == values2.size() &&
std::equal(values1.begin(), values1.end(), values2.begin(), test::equivalent));
}
Modified: branches/proto/v4/libs/unordered/test/objects/memory.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/objects/memory.hpp (original)
+++ branches/proto/v4/libs/unordered/test/objects/memory.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -103,7 +103,7 @@
void allocator_unref()
{
- UNORDERED_CHECK(count_allocators > 0);
+ BOOST_CHECK(count_allocators > 0);
if(count_allocators > 0) {
--count_allocators;
if(count_allocators == 0) {
@@ -116,9 +116,9 @@
count_constructions = 0;
allocated_memory.clear();
- UNORDERED_CHECK(no_allocations_left);
- UNORDERED_CHECK(no_constructions_left);
- UNORDERED_CHECK(allocated_memory_empty);
+ BOOST_CHECK(no_allocations_left);
+ BOOST_CHECK(no_constructions_left);
+ BOOST_CHECK(allocated_memory_empty);
}
}
}
@@ -144,12 +144,12 @@
if(pos == allocated_memory.end()) {
BOOST_ERROR("Deallocating unknown pointer.");
} else {
- UNORDERED_CHECK(pos->first.start == ptr);
- UNORDERED_CHECK(pos->first.end == (char*) ptr + n * size);
- UNORDERED_CHECK(pos->second.tag_ == tag);
+ BOOST_CHECK(pos->first.start == ptr);
+ BOOST_CHECK(pos->first.end == (char*) ptr + n * size);
+ BOOST_CHECK(pos->second.tag_ == tag);
allocated_memory.erase(pos);
}
- UNORDERED_CHECK(count_allocations > 0);
+ BOOST_CHECK(count_allocations > 0);
if(count_allocations > 0) --count_allocations;
}
@@ -160,7 +160,7 @@
void track_destroy(void* ptr, std::size_t /*size*/, int tag)
{
- UNORDERED_CHECK(count_constructions > 0);
+ BOOST_CHECK(count_constructions > 0);
if(count_constructions > 0) --count_constructions;
}
};
Modified: branches/proto/v4/libs/unordered/test/unordered/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/Jamfile.v2 (original)
+++ branches/proto/v4/libs/unordered/test/unordered/Jamfile.v2 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -21,6 +21,7 @@
[ run equivalent_keys_tests.cpp ]
[ run constructor_tests.cpp ]
[ run copy_tests.cpp ]
+ [ run move_tests.cpp ]
[ run assign_tests.cpp ]
[ run insert_tests.cpp ]
[ run insert_stable_tests.cpp ]
Modified: branches/proto/v4/libs/unordered/test/unordered/assign_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/assign_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/assign_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -27,9 +27,9 @@
{
T x;
x = x;
- BOOST_TEST(x.empty());
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
}
std::cerr<<"assign_tests1.2\n";
@@ -47,7 +47,7 @@
y.max_load_factor(x.max_load_factor() / 20);
y = x;
tracker.compare(y);
- BOOST_TEST(x.max_load_factor() == y.max_load_factor());
+ BOOST_CHECK(x.max_load_factor() == y.max_load_factor());
}
}
@@ -67,8 +67,8 @@
T x1(v.begin(), v.end(), 0, hf1, eq1);
T x2(0, hf2, eq2);
x2 = x1;
- BOOST_TEST(test::equivalent(x2.hash_function(), hf1));
- BOOST_TEST(test::equivalent(x2.key_eq(), eq1));
+ BOOST_CHECK(test::equivalent(x2.hash_function(), hf1));
+ BOOST_CHECK(test::equivalent(x2.key_eq(), eq1));
test::check_container(x2, v);
}
@@ -78,9 +78,9 @@
T x1(v1.begin(), v1.end(), 0, hf1, eq1, al1);
T x2(v2.begin(), v2.end(), 0, hf2, eq2, al2);
x2 = x1;
- BOOST_TEST(test::equivalent(x2.hash_function(), hf1));
- BOOST_TEST(test::equivalent(x2.key_eq(), eq1));
- BOOST_TEST(test::equivalent(x2.get_allocator(), al2));
+ BOOST_CHECK(test::equivalent(x2.hash_function(), hf1));
+ BOOST_CHECK(test::equivalent(x2.key_eq(), eq1));
+ BOOST_CHECK(test::equivalent(x2.get_allocator(), al2));
test::check_container(x2, v1);
}
}
Modified: branches/proto/v4/libs/unordered/test/unordered/at_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/at_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/at_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -16,8 +16,8 @@
x["one"] = 1;
x["two"] = 2;
- BOOST_TEST(x.at("one") == 1);
- BOOST_TEST(x.at("two") == 2);
+ BOOST_CHECK(x.at("one") == 1);
+ BOOST_CHECK(x.at("two") == 2);
try {
x.at("three");
Modified: branches/proto/v4/libs/unordered/test/unordered/bucket_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/bucket_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/bucket_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -24,7 +24,7 @@
X x(v.begin(), v.end());
- BOOST_TEST(x.bucket_count() < x.max_bucket_count());
+ BOOST_CHECK(x.bucket_count() < x.max_bucket_count());
std::cerr<<x.bucket_count()<<"<"<<x.max_bucket_count()<<"\n";
for(BOOST_DEDUCED_TYPENAME test::random_values<X>::const_iterator
@@ -32,21 +32,21 @@
{
size_type bucket = x.bucket(test::get_key<X>(*it));
- BOOST_TEST(bucket < x.bucket_count());
+ BOOST_CHECK(bucket < x.bucket_count());
if(bucket < x.max_bucket_count()) {
// lit? lend?? I need a new naming scheme.
const_local_iterator lit = x.begin(bucket), lend = x.end(bucket);
while(lit != lend && test::get_key<X>(*it) != test::get_key<X>(*lit)) ++lit;
- BOOST_TEST(lit != lend);
+ BOOST_CHECK(lit != lend);
}
}
for(size_type i = 0; i < x.bucket_count(); ++i) {
- BOOST_TEST(x.bucket_size(i) == (size_type) std::distance(x.begin(i), x.end(i)));
- BOOST_TEST(x.bucket_size(i) == (size_type) std::distance(x.cbegin(i), x.cend(i)));
+ BOOST_CHECK(x.bucket_size(i) == (size_type) std::distance(x.begin(i), x.end(i)));
+ BOOST_CHECK(x.bucket_size(i) == (size_type) std::distance(x.cbegin(i), x.cend(i)));
X const& x_ref = x;
- BOOST_TEST(x.bucket_size(i) == (size_type) std::distance(x_ref.begin(i), x_ref.end(i)));
- BOOST_TEST(x.bucket_size(i) == (size_type) std::distance(x_ref.cbegin(i), x_ref.cend(i)));
+ BOOST_CHECK(x.bucket_size(i) == (size_type) std::distance(x_ref.begin(i), x_ref.end(i)));
+ BOOST_CHECK(x.bucket_size(i) == (size_type) std::distance(x_ref.cbegin(i), x_ref.cend(i)));
}
}
Modified: branches/proto/v4/libs/unordered/test/unordered/compile_tests.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/compile_tests.hpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/compile_tests.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -86,10 +86,10 @@
// I'm not sure about either of these tests...
size_type max_diff((std::numeric_limits<difference_type>::max)());
difference_type converted_diff(max_diff);
- BOOST_TEST((std::numeric_limits<difference_type>::max)()
+ BOOST_CHECK((std::numeric_limits<difference_type>::max)()
== converted_diff);
- BOOST_TEST(
+ BOOST_CHECK(
static_cast<comparison_type>(
(std::numeric_limits<size_type>::max)()) >
static_cast<comparison_type>(
@@ -97,8 +97,8 @@
// I don't test the runtime post-conditions here.
X u;
- BOOST_TEST(u.size() == 0);
- BOOST_TEST(X().size() == 0);
+ BOOST_CHECK(u.size() == 0);
+ BOOST_CHECK(X().size() == 0);
X a,b;
@@ -127,6 +127,11 @@
test::check_return_type<size_type>::equals(a.size());
test::check_return_type<size_type>::equals(a.max_size());
test::check_return_type<bool>::convertible(a.empty());
+
+ // Allocator
+
+ typedef BOOST_DEDUCED_TYPENAME X::allocator_type allocator_type;
+ test::check_return_type<allocator_type>::equals(a_const.get_allocator());
}
template <class X, class Key>
@@ -263,7 +268,7 @@
a.insert(i, j);
test::check_return_type<size_type>::equals(a.erase(k));
- BOOST_TEST(a.empty());
+ BOOST_CHECK(a.empty());
if(a.empty()) {
a.insert(t);
q = a.cbegin();
Modified: branches/proto/v4/libs/unordered/test/unordered/constructor_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/constructor_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/constructor_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -29,42 +29,42 @@
std::cerr<<"Construct 1\n";
{
T x(0, hf, eq);
- BOOST_TEST(x.empty());
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_equivalent_keys(x);
}
std::cerr<<"Construct 2\n";
{
T x(100, hf);
- BOOST_TEST(x.empty());
- BOOST_TEST(x.bucket_count() >= 100);
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(x.bucket_count() >= 100);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_equivalent_keys(x);
}
std::cerr<<"Construct 3\n";
{
T x(2000);
- BOOST_TEST(x.empty());
- BOOST_TEST(x.bucket_count() >= 2000);
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(x.bucket_count() >= 2000);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_equivalent_keys(x);
}
std::cerr<<"Construct 4\n";
{
T x;
- BOOST_TEST(x.empty());
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_equivalent_keys(x);
}
@@ -72,10 +72,10 @@
{
test::random_values<T> v(1000, generator);
T x(v.begin(), v.end(), 10000, hf, eq);
- BOOST_TEST(x.bucket_count() >= 10000);
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.bucket_count() >= 10000);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_container(x, v);
test::check_equivalent_keys(x);
}
@@ -84,10 +84,10 @@
{
test::random_values<T> v(10, generator);
T x(v.begin(), v.end(), 10000, hf);
- BOOST_TEST(x.bucket_count() >= 10000);
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.bucket_count() >= 10000);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_container(x, v);
test::check_equivalent_keys(x);
}
@@ -96,10 +96,10 @@
{
test::random_values<T> v(100, generator);
T x(v.begin(), v.end(), 100);
- BOOST_TEST(x.bucket_count() >= 100);
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.bucket_count() >= 100);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_container(x, v);
test::check_equivalent_keys(x);
}
@@ -108,9 +108,9 @@
{
test::random_values<T> v(1, generator);
T x(v.begin(), v.end());
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_container(x, v);
test::check_equivalent_keys(x);
}
@@ -118,10 +118,10 @@
std::cerr<<"Construct 9\n";
{
T x(0, hf, eq, al);
- BOOST_TEST(x.empty());
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_equivalent_keys(x);
}
@@ -129,10 +129,10 @@
{
test::random_values<T> v(1000, generator);
T x(v.begin(), v.end(), 10000, hf, eq, al);
- BOOST_TEST(x.bucket_count() >= 10000);
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.bucket_count() >= 10000);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_container(x, v);
test::check_equivalent_keys(x);
}
@@ -141,10 +141,10 @@
{
test::random_values<T> v(1000, generator);
T x(al);
- BOOST_TEST(x.empty());
- BOOST_TEST(test::equivalent(x.hash_function(), hf));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_equivalent_keys(x);
}
}
@@ -165,21 +165,21 @@
std::cerr<<"Construct 1\n";
{
T x(10000, hf1, eq1);
- BOOST_TEST(x.bucket_count() >= 10000);
- BOOST_TEST(test::equivalent(x.hash_function(), hf1));
- BOOST_TEST(test::equivalent(x.key_eq(), eq1));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.bucket_count() >= 10000);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf1));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq1));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_equivalent_keys(x);
}
std::cerr<<"Construct 2\n";
{
T x(100, hf1);
- BOOST_TEST(x.empty());
- BOOST_TEST(x.bucket_count() >= 100);
- BOOST_TEST(test::equivalent(x.hash_function(), hf1));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(x.bucket_count() >= 100);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf1));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_equivalent_keys(x);
}
@@ -187,9 +187,9 @@
{
test::random_values<T> v(100, generator);
T x(v.begin(), v.end(), 0, hf1, eq1);
- BOOST_TEST(test::equivalent(x.hash_function(), hf1));
- BOOST_TEST(test::equivalent(x.key_eq(), eq1));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf1));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq1));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_container(x, v);
test::check_equivalent_keys(x);
}
@@ -198,10 +198,10 @@
{
test::random_values<T> v(5, generator);
T x(v.begin(), v.end(), 1000, hf1);
- BOOST_TEST(x.bucket_count() >= 1000);
- BOOST_TEST(test::equivalent(x.hash_function(), hf1));
- BOOST_TEST(test::equivalent(x.key_eq(), eq));
- BOOST_TEST(test::equivalent(x.get_allocator(), al));
+ BOOST_CHECK(x.bucket_count() >= 1000);
+ BOOST_CHECK(test::equivalent(x.hash_function(), hf1));
+ BOOST_CHECK(test::equivalent(x.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(x.get_allocator(), al));
test::check_container(x, v);
test::check_equivalent_keys(x);
}
Modified: branches/proto/v4/libs/unordered/test/unordered/copy_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/copy_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/copy_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -27,11 +27,11 @@
{
T x;
T y(x);
- BOOST_TEST(y.empty());
- BOOST_TEST(test::equivalent(y.hash_function(), hf));
- BOOST_TEST(test::equivalent(y.key_eq(), eq));
- BOOST_TEST(test::equivalent(y.get_allocator(), al));
- BOOST_TEST(x.max_load_factor() == y.max_load_factor());
+ BOOST_CHECK(y.empty());
+ BOOST_CHECK(test::equivalent(y.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(y.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(y.get_allocator(), al));
+ BOOST_CHECK(x.max_load_factor() == y.max_load_factor());
test::check_equivalent_keys(y);
}
@@ -57,7 +57,7 @@
test::unordered_equivalence_tester<T> equivalent(x);
equivalent(y);
// This isn't guaranteed:
- BOOST_TEST(y.load_factor() < y.max_load_factor());
+ BOOST_CHECK(y.load_factor() < y.max_load_factor());
test::check_equivalent_keys(y);
}
}
@@ -75,22 +75,22 @@
{
T x(10000, hf, eq, al);
T y(x);
- BOOST_TEST(y.empty());
- BOOST_TEST(test::equivalent(y.hash_function(), hf));
- BOOST_TEST(test::equivalent(y.key_eq(), eq));
- BOOST_TEST(test::equivalent(y.get_allocator(), al));
- BOOST_TEST(x.max_load_factor() == y.max_load_factor());
+ BOOST_CHECK(y.empty());
+ BOOST_CHECK(test::equivalent(y.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(y.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(y.get_allocator(), al));
+ BOOST_CHECK(x.max_load_factor() == y.max_load_factor());
test::check_equivalent_keys(y);
}
{
T x(1000, hf, eq, al);
T y(x, al2);
- BOOST_TEST(y.empty());
- BOOST_TEST(test::equivalent(y.hash_function(), hf));
- BOOST_TEST(test::equivalent(y.key_eq(), eq));
- BOOST_TEST(test::equivalent(y.get_allocator(), al2));
- BOOST_TEST(x.max_load_factor() == y.max_load_factor());
+ BOOST_CHECK(y.empty());
+ BOOST_CHECK(test::equivalent(y.hash_function(), hf));
+ BOOST_CHECK(test::equivalent(y.key_eq(), eq));
+ BOOST_CHECK(test::equivalent(y.get_allocator(), al2));
+ BOOST_CHECK(x.max_load_factor() == y.max_load_factor());
test::check_equivalent_keys(y);
}
@@ -102,7 +102,7 @@
test::unordered_equivalence_tester<T> equivalent(x);
equivalent(y);
test::check_equivalent_keys(y);
- BOOST_TEST(test::equivalent(y.get_allocator(), al));
+ BOOST_CHECK(test::equivalent(y.get_allocator(), al));
}
{
@@ -113,7 +113,7 @@
test::unordered_equivalence_tester<T> equivalent(x);
equivalent(y);
test::check_equivalent_keys(y);
- BOOST_TEST(test::equivalent(y.get_allocator(), al2));
+ BOOST_CHECK(test::equivalent(y.get_allocator(), al2));
}
}
Modified: branches/proto/v4/libs/unordered/test/unordered/erase_equiv_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/erase_equiv_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/erase_equiv_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -67,11 +67,11 @@
collide_map x(init.begin(), init.end());
x.erase(x.begin(), x.begin());
- BOOST_TEST(x.count(1) == 1 && x.size() == 1);
+ BOOST_CHECK(x.count(1) == 1 && x.size() == 1);
x.erase(x.end(), x.end());
- BOOST_TEST(x.count(1) == 1 && x.size() == 1);
+ BOOST_CHECK(x.count(1) == 1 && x.size() == 1);
x.erase(x.begin(), x.end());
- BOOST_TEST(x.count(1) == 0 && x.size() == 0);
+ BOOST_CHECK(x.count(1) == 0 && x.size() == 0);
}
UNORDERED_AUTO_TEST(two_equivalent_item_tests)
@@ -83,14 +83,14 @@
{
collide_map x(init.begin(), init.end());
x.erase(x.begin(), x.end());
- BOOST_TEST(x.count(1) == 0 && x.size() == 0);
+ BOOST_CHECK(x.count(1) == 0 && x.size() == 0);
}
{
collide_map x(init.begin(), init.end());
int value = boost::next(x.begin())->second;
x.erase(x.begin(), boost::next(x.begin()));
- BOOST_TEST(x.count(1) == 1 && x.size() == 1 &&
+ BOOST_CHECK(x.count(1) == 1 && x.size() == 1 &&
x.begin()->first == 1 && x.begin()->second == value);
}
@@ -98,7 +98,7 @@
collide_map x(init.begin(), init.end());
int value = x.begin()->second;
x.erase(boost::next(x.begin()), x.end());
- BOOST_TEST(x.count(1) == 1 && x.size() == 1 &&
+ BOOST_CHECK(x.count(1) == 1 && x.size() == 1 &&
x.begin()->first == 1 && x.begin()->second == value);
}
}
Modified: branches/proto/v4/libs/unordered/test/unordered/erase_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/erase_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/erase_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -32,10 +32,10 @@
{
std::size_t count = x.count(test::get_key<Container>(*it));
std::size_t old_size = x.size();
- BOOST_TEST(count == x.erase(test::get_key<Container>(*it)));
- BOOST_TEST(x.size() == old_size - count);
- BOOST_TEST(x.count(test::get_key<Container>(*it)) == 0);
- BOOST_TEST(x.find(test::get_key<Container>(*it)) == x.end());
+ BOOST_CHECK(count == x.erase(test::get_key<Container>(*it)));
+ BOOST_CHECK(x.size() == old_size - count);
+ BOOST_CHECK(x.count(test::get_key<Container>(*it)) == 0);
+ BOOST_CHECK(x.find(test::get_key<Container>(*it)) == x.end());
}
}
@@ -50,11 +50,11 @@
std::size_t count = x.count(key);
BOOST_DEDUCED_TYPENAME Container::iterator pos = x.erase(x.begin());
--size;
- BOOST_TEST(pos == x.begin());
- BOOST_TEST(x.count(key) == count - 1);
- BOOST_TEST(x.size() == size);
+ BOOST_CHECK(pos == x.begin());
+ BOOST_CHECK(x.count(key) == count - 1);
+ BOOST_CHECK(x.size() == size);
}
- BOOST_TEST(x.empty());
+ BOOST_CHECK(x.empty());
}
std::cerr<<"erase(random position).\n";
@@ -77,15 +77,15 @@
next = boost::next(pos);
BOOST_DEDUCED_TYPENAME Container::key_type key = test::get_key<Container>(*pos);
std::size_t count = x.count(key);
- BOOST_TEST(next == x.erase(pos));
+ BOOST_CHECK(next == x.erase(pos));
--size;
if(size > 0)
- BOOST_TEST(index == 0 ? next == x.begin() :
+ BOOST_CHECK(index == 0 ? next == x.begin() :
next == boost::next(prev));
- BOOST_TEST(x.count(key) == count - 1);
- BOOST_TEST(x.size() == size);
+ BOOST_CHECK(x.count(key) == count - 1);
+ BOOST_CHECK(x.size() == size);
}
- BOOST_TEST(x.empty());
+ BOOST_CHECK(x.empty());
}
std::cerr<<"erase(ranges).\n";
@@ -99,15 +99,15 @@
// returns 'the iterator immediately following the erase elements'
// and if nothing is erased, then there's nothing to follow. But I
// think this is the only sensible option...
- BOOST_TEST(x.erase(x.end(), x.end()) == x.end());
- BOOST_TEST(x.erase(x.begin(), x.begin()) == x.begin());
- BOOST_TEST(x.size() == size);
-
- BOOST_TEST(x.erase(x.begin(), x.end()) == x.end());
- BOOST_TEST(x.empty());
- BOOST_TEST(x.begin() == x.end());
+ BOOST_CHECK(x.erase(x.end(), x.end()) == x.end());
+ BOOST_CHECK(x.erase(x.begin(), x.begin()) == x.begin());
+ BOOST_CHECK(x.size() == size);
+
+ BOOST_CHECK(x.erase(x.begin(), x.end()) == x.end());
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(x.begin() == x.end());
- BOOST_TEST(x.erase(x.begin(), x.end()) == x.begin());
+ BOOST_CHECK(x.erase(x.begin(), x.end()) == x.begin());
}
std::cerr<<"clear().\n";
@@ -115,8 +115,8 @@
test::random_values<Container> v(500, generator);
Container x(v.begin(), v.end());
x.clear();
- BOOST_TEST(x.empty());
- BOOST_TEST(x.begin() == x.end());
+ BOOST_CHECK(x.empty());
+ BOOST_CHECK(x.begin() == x.end());
}
std::cerr<<"\n";
Modified: branches/proto/v4/libs/unordered/test/unordered/find_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/find_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/find_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -34,12 +34,12 @@
BOOST_DEDUCED_TYPENAME X::key_type key = test::get_key<X>(*it1);
iterator pos = x.find(key);
BOOST_DEDUCED_TYPENAME X::const_iterator const_pos = x_const.find(key);
- BOOST_TEST(pos != x.end() &&
+ BOOST_CHECK(pos != x.end() &&
x.key_eq()(key, test::get_key<X>(*pos)));
- BOOST_TEST(const_pos != x_const.end() &&
+ BOOST_CHECK(const_pos != x_const.end() &&
x_const.key_eq()(key, test::get_key<X>(*const_pos)));
- BOOST_TEST(x.count(key) == tracker.count(key));
+ BOOST_CHECK(x.count(key) == tracker.count(key));
test::compare_pairs(x.equal_range(key),
tracker.equal_range(key),
@@ -56,11 +56,11 @@
BOOST_DEDUCED_TYPENAME X::key_type key = test::get_key<X>(*it2);
if(tracker.find(test::get_key<X>(key)) == tracker.end())
{
- BOOST_TEST(x.find(key) == x.end());
- BOOST_TEST(x_const.find(key) == x_const.end());
- BOOST_TEST(x.count(key) == 0);
+ BOOST_CHECK(x.find(key) == x.end());
+ BOOST_CHECK(x_const.find(key) == x_const.end());
+ BOOST_CHECK(x.count(key) == 0);
std::pair<iterator, iterator> range = x.equal_range(key);
- BOOST_TEST(range.first == range.second);
+ BOOST_CHECK(range.first == range.second);
}
}
}
@@ -73,10 +73,10 @@
v2.begin(); it3 != v2.end(); ++it3)
{
BOOST_DEDUCED_TYPENAME X::key_type key = test::get_key<X>(*it3);
- BOOST_TEST(x.find(key) == x.end());
- BOOST_TEST(x.count(key) == 0);
+ BOOST_CHECK(x.find(key) == x.end());
+ BOOST_CHECK(x.count(key) == 0);
std::pair<iterator, iterator> range = x.equal_range(key);
- BOOST_TEST(range.first == range.second);
+ BOOST_CHECK(range.first == range.second);
}
}
}
Modified: branches/proto/v4/libs/unordered/test/unordered/insert_stable_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/insert_stable_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/insert_stable_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -47,13 +47,13 @@
x.insert(insert_stable::member(1,3));
boost::unordered_multiset<insert_stable::member>::const_iterator it = x.begin(), end = x.end();
- BOOST_TEST(it != end);
- if(it != end) { BOOST_TEST(it->tag2_ == 1); ++it; }
- BOOST_TEST(it != end);
- if(it != end) { BOOST_TEST(it->tag2_ == 2); ++it; }
- BOOST_TEST(it != end);
- if(it != end) { BOOST_TEST(it->tag2_ == 3); ++it; }
- BOOST_TEST(it == end);
+ BOOST_CHECK(it != end);
+ if(it != end) { BOOST_CHECK(it->tag2_ == 1); ++it; }
+ BOOST_CHECK(it != end);
+ if(it != end) { BOOST_CHECK(it->tag2_ == 2); ++it; }
+ BOOST_CHECK(it != end);
+ if(it != end) { BOOST_CHECK(it->tag2_ == 3); ++it; }
+ BOOST_CHECK(it == end);
}
UNORDERED_AUTO_TEST(stable_insert_test2) {
@@ -66,13 +66,13 @@
it = x.begin();
iterator end = x.end();
- BOOST_TEST(it != end);
- if(it != end) { BOOST_TEST(it->first.tag2_ == 1 && it->second == 1); ++it; }
- BOOST_TEST(it != end);
- if(it != end) { BOOST_TEST(it->first.tag2_ == 2 && it->second == 2); ++it; }
- BOOST_TEST(it != end);
- if(it != end) { BOOST_TEST(it->first.tag2_ == 3 && it->second == 3); ++it; }
- BOOST_TEST(it == end);
+ BOOST_CHECK(it != end);
+ if(it != end) { BOOST_CHECK(it->first.tag2_ == 1 && it->second == 1); ++it; }
+ BOOST_CHECK(it != end);
+ if(it != end) { BOOST_CHECK(it->first.tag2_ == 2 && it->second == 2); ++it; }
+ BOOST_CHECK(it != end);
+ if(it != end) { BOOST_CHECK(it->first.tag2_ == 3 && it->second == 3); ++it; }
+ BOOST_CHECK(it == end);
}
RUN_TESTS()
Modified: branches/proto/v4/libs/unordered/test/unordered/insert_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/insert_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/insert_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -15,6 +15,8 @@
#include "../helpers/input_iterator.hpp"
#include <iostream>
+
+namespace insert_tests {
test::seed_t seed(243432);
@@ -41,13 +43,13 @@
std::pair<iterator, bool> r1 = x.insert(*it);
std::pair<BOOST_DEDUCED_TYPENAME ordered::iterator, bool> r2 = tracker.insert(*it);
- BOOST_TEST(r1.second == r2.second);
- BOOST_TEST(*r1.first == *r2.first);
+ BOOST_CHECK(r1.second == r2.second);
+ BOOST_CHECK(*r1.first == *r2.first);
tracker.compare_key(x, *it);
if(x.size() < b * old_bucket_count)
- BOOST_TEST(x.bucket_count() == old_bucket_count);
+ BOOST_CHECK(x.bucket_count() == old_bucket_count);
}
test::check_equivalent_keys(x);
@@ -71,12 +73,12 @@
BOOST_DEDUCED_TYPENAME X::iterator r1 = x.insert(*it);
BOOST_DEDUCED_TYPENAME test::ordered<X>::iterator r2 = tracker.insert(*it);
- BOOST_TEST(*r1 == *r2);
+ BOOST_CHECK(*r1 == *r2);
tracker.compare_key(x, *it);
if(x.size() < b * old_bucket_count)
- BOOST_TEST(x.bucket_count() == old_bucket_count);
+ BOOST_CHECK(x.bucket_count() == old_bucket_count);
}
test::check_equivalent_keys(x);
@@ -105,11 +107,11 @@
iterator r1 = x.insert(x.begin(), *it);
tracker_iterator r2 = tracker.insert(tracker.begin(), *it);
- BOOST_TEST(*r1 == *r2);
+ BOOST_CHECK(*r1 == *r2);
tracker.compare_key(x, *it);
if(x.size() < b * old_bucket_count)
- BOOST_TEST(x.bucket_count() == old_bucket_count);
+ BOOST_CHECK(x.bucket_count() == old_bucket_count);
}
test::check_equivalent_keys(x);
@@ -131,11 +133,11 @@
const_iterator r1 = x.insert(x_const.end(), *it);
tracker_iterator r2 = tracker.insert(tracker.end(), *it);
- BOOST_TEST(*r1 == *r2);
+ BOOST_CHECK(*r1 == *r2);
tracker.compare_key(x, *it);
if(x.size() < b * old_bucket_count)
- BOOST_TEST(x.bucket_count() == old_bucket_count);
+ BOOST_CHECK(x.bucket_count() == old_bucket_count);
}
test::check_equivalent_keys(x);
@@ -157,11 +159,11 @@
pos = x.insert(pos, *it);
tracker_iterator r2 = tracker.insert(tracker.begin(), *it);
- BOOST_TEST(*pos == *r2);
+ BOOST_CHECK(*pos == *r2);
tracker.compare_key(x, *it);
if(x.size() < b * old_bucket_count)
- BOOST_TEST(x.bucket_count() == old_bucket_count);
+ BOOST_CHECK(x.bucket_count() == old_bucket_count);
}
test::check_equivalent_keys(x);
@@ -185,7 +187,7 @@
tracker.compare_key(x, *it);
if(x.size() < b * old_bucket_count)
- BOOST_TEST(x.bucket_count() == old_bucket_count);
+ BOOST_CHECK(x.bucket_count() == old_bucket_count);
}
test::check_equivalent_keys(x);
@@ -237,7 +239,7 @@
tracker.compare_key(x, *it);
if(x.size() < b * old_bucket_count)
- BOOST_TEST(x.bucket_count() == old_bucket_count);
+ BOOST_CHECK(x.bucket_count() == old_bucket_count);
}
test::check_equivalent_keys(x);
@@ -258,40 +260,39 @@
test::check_equivalent_keys(x);
}
-int main()
-{
- boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
- boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
- boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
- boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
-
- unique_insert_tests1(test_set);
- equivalent_insert_tests1(test_multiset);
- unique_insert_tests1(test_map);
- equivalent_insert_tests1(test_multimap);
-
- unique_insert_tests1(test_set, test::generate_collisions);
- equivalent_insert_tests1(test_multiset, test::generate_collisions);
- unique_insert_tests1(test_map, test::generate_collisions);
- equivalent_insert_tests1(test_multimap, test::generate_collisions);
-
- insert_tests2(test_set);
- insert_tests2(test_multiset);
- insert_tests2(test_map);
- insert_tests2(test_multimap);
-
- insert_tests2(test_set, test::generate_collisions);
- insert_tests2(test_multiset, test::generate_collisions);
- insert_tests2(test_map, test::generate_collisions);
- insert_tests2(test_multimap, test::generate_collisions);
-
- map_tests(test_map);
- map_tests(test_map, test::generate_collisions);
-
- associative_insert_range_test(test_map);
- associative_insert_range_test(test_map, test::generate_collisions);
- associative_insert_range_test(test_multimap);
- associative_insert_range_test(test_multimap, test::generate_collisions);
+boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
+boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
+boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
+boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
+
+using test::default_generator;
+using test::generate_collisions;
+
+UNORDERED_TEST(unique_insert_tests1,
+ ((test_set)(test_map))
+ ((default_generator)(generate_collisions))
+)
+
+UNORDERED_TEST(equivalent_insert_tests1,
+ ((test_multiset)(test_multimap))
+ ((default_generator)(generate_collisions))
+)
+
+UNORDERED_TEST(insert_tests2,
+ ((test_set)(test_multiset)(test_map)(test_multimap))
+ ((default_generator)(generate_collisions))
+)
+
+UNORDERED_TEST(map_tests,
+ ((test_map))
+ ((default_generator)(generate_collisions))
+)
+
+UNORDERED_TEST(associative_insert_range_test,
+ ((test_map)(test_multimap))
+ ((default_generator)(generate_collisions))
+)
- return boost::report_errors();
}
+
+RUN_TESTS()
Modified: branches/proto/v4/libs/unordered/test/unordered/load_factor_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/load_factor_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/load_factor_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -24,13 +24,13 @@
{
X x;
- BOOST_TEST(x.max_load_factor() == 1.0);
- BOOST_TEST(x.load_factor() == 0);
+ BOOST_CHECK(x.max_load_factor() == 1.0);
+ BOOST_CHECK(x.load_factor() == 0);
// A valid implementation could fail these tests, but I think they're
// reasonable.
- x.max_load_factor(2.0); BOOST_TEST(x.max_load_factor() == 2.0);
- x.max_load_factor(0.5); BOOST_TEST(x.max_load_factor() == 0.5);
+ x.max_load_factor(2.0); BOOST_CHECK(x.max_load_factor() == 2.0);
+ x.max_load_factor(0.5); BOOST_CHECK(x.max_load_factor() == 0.5);
}
template <class X>
@@ -49,7 +49,7 @@
old_bucket_count = x.bucket_count();
x.insert(*it);
if(old_size + 1 < b * old_bucket_count)
- BOOST_TEST(x.bucket_count() == old_bucket_count);
+ BOOST_CHECK(x.bucket_count() == old_bucket_count);
}
}
Modified: branches/proto/v4/libs/unordered/test/unordered/rehash_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/rehash_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/rehash_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -26,10 +26,10 @@
X x;
x.rehash(10000);
- BOOST_TEST(postcondition(x, 10000));
+ BOOST_CHECK(postcondition(x, 10000));
x.rehash(0);
- BOOST_TEST(postcondition(x, 0));
+ BOOST_CHECK(postcondition(x, 0));
}
template <class X>
@@ -40,18 +40,18 @@
tracker.insert_range(v.begin(), v.end());
X x(v.begin(), v.end());
- x.rehash(0); BOOST_TEST(postcondition(x, 0));
+ x.rehash(0); BOOST_CHECK(postcondition(x, 0));
tracker.compare(x);
x.max_load_factor(0.25);
- x.rehash(0); BOOST_TEST(postcondition(x, 0));
+ x.rehash(0); BOOST_CHECK(postcondition(x, 0));
tracker.compare(x);
x.max_load_factor(50.0);
- x.rehash(0); BOOST_TEST(postcondition(x, 0));
+ x.rehash(0); BOOST_CHECK(postcondition(x, 0));
tracker.compare(x);
- x.rehash(1000); BOOST_TEST(postcondition(x, 1000));
+ x.rehash(1000); BOOST_CHECK(postcondition(x, 1000));
tracker.compare(x);
}
Modified: branches/proto/v4/libs/unordered/test/unordered/simple_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/simple_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/simple_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -19,67 +19,67 @@
{
X u;
- BOOST_TEST(u.size() == 0);
- BOOST_TEST(X().size() == 0);
+ BOOST_CHECK(u.size() == 0);
+ BOOST_CHECK(X().size() == 0);
}
{
- BOOST_TEST(equivalent(X(a)));
+ BOOST_CHECK(equivalent(X(a)));
}
{
X u(a);
- BOOST_TEST(equivalent(u));
+ BOOST_CHECK(equivalent(u));
}
{
X u = a;
- BOOST_TEST(equivalent(u));
+ BOOST_CHECK(equivalent(u));
}
{
X b(a);
- BOOST_TEST(b.begin() == const_cast<X const&>(b).cbegin());
- BOOST_TEST(b.end() == const_cast<X const&>(b).cend());
+ BOOST_CHECK(b.begin() == const_cast<X const&>(b).cbegin());
+ BOOST_CHECK(b.end() == const_cast<X const&>(b).cend());
}
{
X b(a);
X c;
- BOOST_TEST(equivalent(b));
- BOOST_TEST(c.empty());
+ BOOST_CHECK(equivalent(b));
+ BOOST_CHECK(c.empty());
b.swap(c);
- BOOST_TEST(b.empty());
- BOOST_TEST(equivalent(c));
+ BOOST_CHECK(b.empty());
+ BOOST_CHECK(equivalent(c));
b.swap(c);
- BOOST_TEST(c.empty());
- BOOST_TEST(equivalent(b));
+ BOOST_CHECK(c.empty());
+ BOOST_CHECK(equivalent(b));
}
{
X u;
X& r = u;
- BOOST_TEST(&(r = r) == &r);
- BOOST_TEST(r.empty());
- BOOST_TEST(&(r = a) == &r);
- BOOST_TEST(equivalent(r));
- BOOST_TEST(&(r = r) == &r);
- BOOST_TEST(equivalent(r));
+ BOOST_CHECK(&(r = r) == &r);
+ BOOST_CHECK(r.empty());
+ BOOST_CHECK(&(r = a) == &r);
+ BOOST_CHECK(equivalent(r));
+ BOOST_CHECK(&(r = r) == &r);
+ BOOST_CHECK(equivalent(r));
}
{
- BOOST_TEST(a.size() ==
+ BOOST_CHECK(a.size() ==
(BOOST_DEDUCED_TYPENAME X::size_type) std::distance(a.begin(), a.end()));
}
{
- BOOST_TEST(a.empty() == (a.size() == 0));
+ BOOST_CHECK(a.empty() == (a.size() == 0));
}
{
- BOOST_TEST(a.empty() == (a.begin() == a.end()));
+ BOOST_CHECK(a.empty() == (a.begin() == a.end()));
X u;
- BOOST_TEST(u.begin() == u.end());
+ BOOST_CHECK(u.begin() == u.end());
}
}
Modified: branches/proto/v4/libs/unordered/test/unordered/unnecessary_copy_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/unnecessary_copy_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/unnecessary_copy_tests.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -44,9 +44,14 @@
count_copies::count = 0;
T x;
BOOST_DEDUCED_TYPENAME T::value_type a;
- BOOST_TEST(count_copies::count == 1);
+ BOOST_CHECK(count_copies::count == 1);
+ if(count_copies::count != 1)
+ std::cerr<<count_copies::count<<" copies.\n";
+
x.insert(a);
- BOOST_TEST(count_copies::count == 2);
+ BOOST_CHECK(count_copies::count == 2);
+ if(count_copies::count != 1)
+ std::cerr<<count_copies::count<<" copies.\n";
}
boost::unordered_set<count_copies>* set;
Modified: branches/proto/v4/libs/wave/ChangeLog
==============================================================================
--- branches/proto/v4/libs/wave/ChangeLog (original)
+++ branches/proto/v4/libs/wave/ChangeLog 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -47,7 +47,7 @@
preprocessing two consecutive tokens.
- Adjusted Spirit header includes to point to conform to the new directory
structure, removed support for Spirit versions earlier than V1.7.
-
+
Boost V1.35.0
- Wave Version 1.3
- Changed the return value of the 'evaluated_conditional_expression()' pp hook
Modified: branches/proto/v4/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp
==============================================================================
--- branches/proto/v4/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp (original)
+++ branches/proto/v4/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -578,10 +578,8 @@
virtual ~slex_functor() {}
// get the next token from the input stream
- token_type get()
+ token_type& get(token_type& result)
{
- token_type token;
-
if (!at_eof) {
do {
// generate and return the next token
@@ -673,17 +671,18 @@
break;
}
+ result = token_type(id, token_val, pos);
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- return guards.detect_guard(token_type(id, token_val, pos));
+ return guards.detect_guard(result);
#else
- return token_type(id, token_val, pos);
+ return result;
#endif
}
// skip the T_CONTLINE token
} while (true);
}
- return token; // return T_EOI
+ return result = token_type(); // return T_EOI
}
void set_position(PositionT const &pos)
Modified: branches/proto/v4/libs/wave/samples/cpp_tokens/slex_iterator.hpp
==============================================================================
--- branches/proto/v4/libs/wave/samples/cpp_tokens/slex_iterator.hpp (original)
+++ branches/proto/v4/libs/wave/samples/cpp_tokens/slex_iterator.hpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -18,7 +18,7 @@
#include <boost/assert.hpp>
#include <boost/shared_ptr.hpp>
-#include <boost/spirit/include/classic_multi_pass.hpp>
+#include <boost/spirit/include/support_multi_pass.hpp>
#include <boost/wave/language_support.hpp>
#include <boost/wave/util/file_position.hpp>
@@ -26,7 +26,7 @@
#include "slex_interface.hpp"
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
#define BOOST_WAVE_EOF_PREFIX static
#else
#define BOOST_WAVE_EOF_PREFIX
@@ -48,39 +48,48 @@
template <typename TokenT>
class slex_iterator_functor_shim
{
+ typedef typename TokenT::position_type position_type;
+
public:
- template <typename IteratorT>
- slex_iterator_functor_shim(IteratorT const &first, IteratorT const &last,
- typename TokenT::position_type const &pos,
- boost::wave::language_support language)
- : functor_ptr(slex_input_interface<TokenT>
- ::new_lexer(first, last, pos, language))
+ slex_iterator_functor_shim()
#if 0 != __DECCXX_VER || BOOST_INTEL_CXX_VERSION > 900 || defined(__PGI)
- , eof()
+ : eof()
#endif // 0 != __DECCXX_VER
{}
// interface to the boost::spirit::classic::multi_pass_policies::functor_input
// policy
typedef TokenT result_type;
+ typedef slex_iterator_functor_shim unique;
+ typedef lex_input_interface<TokenT>* shared;
BOOST_WAVE_EOF_PREFIX result_type const eof;
- result_type operator()()
+ template <typename MultiPass>
+ static result_type& get_next(MultiPass& mp, result_type& result)
{
- BOOST_ASSERT(0 != functor_ptr.get());
- return functor_ptr->get();
+ return mp.shared->ftor->get(result);
}
- void set_position(typename TokenT::position_type const &pos)
+
+ // this will be called whenever the last reference to a multi_pass will
+ // be released
+ template <typename MultiPass>
+ static void destroy(MultiPass& mp)
+ {
+ delete mp.shared->ftor;
+ }
+
+ template <typename MultiPass>
+ static void set_position(MultiPass& mp, position_type const &pos)
{
- BOOST_ASSERT(0 != functor_ptr.get());
- functor_ptr->set_position(pos);
+ mp.shared->ftor->set_position(pos);
}
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- bool has_include_guards(std::string& guard_name) const
+ template <typename MultiPass>
+ static bool has_include_guards(MultiPass& mp, std::string& guard_name)
{
- return functor_ptr->has_include_guards(guard_name);
+ return mp.shared->ftor->has_include_guards(guard_name);
}
#endif
@@ -88,7 +97,7 @@
boost::shared_ptr<lex_input_interface<TokenT> > functor_ptr;
};
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
///////////////////////////////////////////////////////////////////////////////
// eof token
template <typename TokenT>
@@ -121,18 +130,45 @@
//
///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+// Divide the given functor type into its components (unique and shared)
+// and build a std::pair from these parts
+template <typename FunctorData>
+struct make_multi_pass
+{
+ typedef
+ std::pair<typename FunctorData::unique, typename FunctorData::shared>
+ functor_data_type;
+ typedef typename FunctorData::result_type result_type;
+
+ typedef boost::spirit::multi_pass_policies::split_functor_input input_policy;
+ typedef boost::spirit::multi_pass_policies::ref_counted ownership_policy;
+#if defined(BOOST_WAVE_DEBUG)
+ typedef boost::spirit::multi_pass_policies::buf_id_check check_policy;
+#else
+ typedef boost::spirit::multi_pass_policies::no_check check_policy;
+#endif
+ typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy;
+
+ typedef boost::spirit::multi_pass_policies::default_policy<
+ input_policy, ownership_policy, check_policy, storage_policy>
+ policy_type;
+ typedef boost::spirit::multi_pass<functor_data_type, policy_type> type;
+};
+
+///////////////////////////////////////////////////////////////////////////////
template <typename TokenT>
class slex_iterator
-: public boost::spirit::classic::multi_pass<
- impl::slex_iterator_functor_shim<TokenT>,
- boost::wave::util::functor_input
- >
+: public make_multi_pass<impl::slex_iterator_functor_shim<TokenT> >::type
{
typedef impl::slex_iterator_functor_shim<TokenT> input_policy_type;
- typedef
- boost::spirit::classic::multi_pass<input_policy_type,
- boost::wave::util::functor_input>
- base_type;
+
+ typedef typename make_multi_pass<input_policy_type>::type base_type;
+ typedef typename make_multi_pass<input_policy_type>::functor_data_type
+ functor_data_type;
+
+ typedef typename input_policy_type::unique unique_functor_type;
+ typedef typename input_policy_type::shared shared_functor_type;
public:
typedef TokenT token_type;
@@ -144,7 +180,13 @@
slex_iterator(IteratorT const &first, IteratorT const &last,
typename TokenT::position_type const &pos,
boost::wave::language_support language)
- : base_type(input_policy_type(first, last, pos, language))
+ : base_type(
+ functor_data_type(
+ unique_functor_type(),
+ slex_input_interface<TokenT>
+ ::new_lexer(first, last, pos, language)
+ )
+ )
{}
void set_position(typename TokenT::position_type const &pos)
@@ -165,7 +207,7 @@
{
currpos.set_line(pos.get_line() + 1);
}
- base_type::get_functor().set_position(currpos);
+ unique_functor_type::get_functor().set_position(currpos);
}
#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
@@ -174,7 +216,7 @@
// completely
bool has_include_guards(std::string& guard_name) const
{
- return base_type::get_functor().has_include_guards(guard_name);
+ return unique_functor_type::has_include_guards(guard_name);
}
#endif
};
Modified: branches/proto/v4/libs/wave/test/testlexers/test_slex_lexer.cpp
==============================================================================
--- branches/proto/v4/libs/wave/test/testlexers/test_slex_lexer.cpp (original)
+++ branches/proto/v4/libs/wave/test/testlexers/test_slex_lexer.cpp 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -57,7 +57,7 @@
boost::wave::support_option_long_long);
lexer_type end = lexer_type();
- // verify the correct outcome of the tokenisation
+ // verify the correct outcome of the tokenization
#if defined(TESTLEXERS_VERBOSE)
std::cerr << boost::wave::get_token_name(data->id) << std::endl;
#endif
Modified: branches/proto/v4/tools/build/v2/build/feature.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/feature.jam (original)
+++ branches/proto/v4/tools/build/v2/build/feature.jam 2008-04-17 17:50:51 EDT (Thu, 17 Apr 2008)
@@ -19,7 +19,6 @@
{
.all-attributes =
implicit
- executed
composite
optional
symmetric
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