Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r72314 - in sandbox/contract/libs/contract/doc/html: . contract contract__ doc doc/html doc/html/images doc/src doc/src/images doc/src/images/callouts example example/Crowl2006 example/Crowl2006/block example/Crowl2006/circle example/Crowl2006/factorial example/Crowl2006/operator_equal example/Crowl2006/sqrt example/Crowl2006/sum example/Crowl2006/vector example/Meyer1997 example/Meyer1997/gcd example/Meyer1997/maxarray example/Meyer1997/stack3 example/Meyer1997/stack4 example/Mitchell2002 example/Mitchell2002/counter example/Mitchell2002/courier example/Mitchell2002/customer_manager example/Mitchell2002/dictionary example/Mitchell2002/name_list example/Mitchell2002/observe example/Mitchell2002/simple_queue example/Mitchell2002/stack example/Stroustrup1997 example/Stroustrup1997/string example/commas example/cv example/exspecs example/extern example/friend example/inline example/myvector example/storage example/struct example/throw images images/callouts
From: lorcaminiti_at_[hidden]
Date: 2011-05-31 14:35:36


Author: lcaminiti
Date: 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
New Revision: 72314
URL: http://svn.boost.org/trac/boost/changeset/72314

Log:
Adding some temp doc.
Added:
   sandbox/contract/libs/contract/doc/html/
   sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_BLOCK_INVARIANT.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_LOOP_VARIANT.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_LOOP_VARIANT_MSG.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_MSG.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_BODY.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_BLOCK_INVARIANT.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_CLASS_INVARIANT.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_POSTCONDITION.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_PRECONDITION.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_CONSTRUCTOR.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_CONSTRUCTOR_BODY.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_DESTRUCTOR.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_DESTRUCTOR_BODY.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_FUNCTION.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_INIT_LOOP_VARIANT.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_INVARIANT.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_OLDOF.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/CONTRACT_WRAP_TYPE.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/
   sandbox/contract/libs/contract/doc/html/contract/block_invariant_failed.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/class_invariant_failed.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/constructor.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/contract_failed_handler.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/copy.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/copyable.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/destructor.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/failure.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/from.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/loop_variant_type.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/nonmember_function.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/nonstatic_member_function.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/postcondition_failed.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/precondition_failed.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/set_block_invariant_failed.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/set_class_invariant_failed.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/set_postcondition_failed.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/set_precondition_failed.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/state.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/static_member_function.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id2358596.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436550.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436560.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436562.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436565.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436578.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436755.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436782.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437043.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437088.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437104.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437106.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437311.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437382.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437642.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id439377.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id439703.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/
   sandbox/contract/libs/contract/doc/html/contract__/Rationale.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/bibliography.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/contract_programming.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/examples.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/getting_started.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/grammar.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/license.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/release_history.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/throw_on_failure.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/todo.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/tutorial.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/contract__/without_the_macros.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/
   sandbox/contract/libs/contract/doc/html/doc/html/
   sandbox/contract/libs/contract/doc/html/doc/html/boostbook.css (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/
   sandbox/contract/libs/contract/doc/html/doc/html/images/alert.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/blank.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/caution.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/draft.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/home.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/important.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/next.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/next_disabled.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/note.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/prev.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/prev_disabled.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/smiley.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/tip.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/toc-blank.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/toc-minus.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/toc-plus.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/up.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/up_disabled.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/html/images/warning.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/
   sandbox/contract/libs/contract/doc/html/doc/src/images/
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/1.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/10.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/11.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/12.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/13.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/14.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/15.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/2.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/3.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/4.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/5.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/6.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/7.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/8.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/doc/src/images/callouts/9.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/block/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/block/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/circle/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/circle/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/factorial/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/factorial/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/operator_equal/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/operator_equal/equal.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/operator_equal/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/operator_equal/not_equal.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/sqrt/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/sqrt/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/sum/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/sum/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/sum/sum.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/sum/sum.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/vector/
   sandbox/contract/libs/contract/doc/html/example/Crowl2006/vector/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Makefile (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/gcd/
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/gcd/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/maxarray/
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/maxarray/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/stack3/
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/stack3/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/stack3/stack3.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/stack4/
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/stack4/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Meyer1997/stack4/stack4.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/counter/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/counter/counter.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/counter/decrement_button.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/counter/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/counter/push_button.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/counter/view_of_counter.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/courier/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/courier/couriers.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/courier/couriers.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/courier/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/customer_manager/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/customer_manager/customer_manager.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/customer_manager/customer_manager.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/customer_manager/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/dictionary/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/dictionary/dictionary.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/dictionary/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/name_list/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/name_list/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/name_list/names.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/name_list/names.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/observe/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/observe/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/observe/observe.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/simple_queue/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/simple_queue/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/simple_queue/simple_queue.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/stack/
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/stack/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Mitchell2002/stack/stack.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Stroustrup1997/
   sandbox/contract/libs/contract/doc/html/example/Stroustrup1997/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Stroustrup1997/string/
   sandbox/contract/libs/contract/doc/html/example/Stroustrup1997/string/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Stroustrup1997/string/string.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/Stroustrup1997/string/string.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/commas/
   sandbox/contract/libs/contract/doc/html/example/commas/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/commas/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/cv/
   sandbox/contract/libs/contract/doc/html/example/cv/REAME.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/cv/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/exspecs/
   sandbox/contract/libs/contract/doc/html/example/exspecs/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/exspecs/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/extern/
   sandbox/contract/libs/contract/doc/html/example/extern/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/extern/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/friend/
   sandbox/contract/libs/contract/doc/html/example/friend/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/friend/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/inline/
   sandbox/contract/libs/contract/doc/html/example/inline/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/inline/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/
   sandbox/contract/libs/contract/doc/html/example/myvector/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/basic_begin.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/boundable.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/main_nomacros.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/myvector.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/myvector_nomacros.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/push_back.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/myvector/pushable.hpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/storage/
   sandbox/contract/libs/contract/doc/html/example/storage/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/storage/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/struct/
   sandbox/contract/libs/contract/doc/html/example/struct/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/struct/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/throw/
   sandbox/contract/libs/contract/doc/html/example/throw/README.txt (contents, props changed)
   sandbox/contract/libs/contract/doc/html/example/throw/main.cpp (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/
   sandbox/contract/libs/contract/doc/html/images/alert.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/blank.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/
   sandbox/contract/libs/contract/doc/html/images/callouts/1.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/10.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/11.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/12.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/13.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/14.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/15.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/2.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/3.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/4.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/5.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/6.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/7.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/8.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/callouts/9.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/caution.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/draft.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/home.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/important.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/next.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/next_disabled.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/note.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/prev.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/prev_disabled.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/smiley.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/tip.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/toc-blank.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/toc-minus.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/toc-plus.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/up.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/up_disabled.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/images/warning.png (contents, props changed)
   sandbox/contract/libs/contract/doc/html/index.html (contents, props changed)
   sandbox/contract/libs/contract/doc/html/reference.html (contents, props changed)

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_ASSERT</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="contract/postcondition_failed.html" title="Function postcondition_failed">
+<link rel="next" href="CONTRACT_ASSERT_MSG.html" title="Macro CONTRACT_ASSERT_MSG">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/postcondition_failed.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_ASSERT_MSG.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_ASSERT"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_ASSERT</span></h2>
+<p>CONTRACT_ASSERT</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>CONTRACT_ASSERT(boolean_condition)</pre></div>
+<div class="refsect1">
+<a name="id960732"></a><h2>Description</h2>
+<p>Macro used to assert contract conditions for class invariants, preconditions, and postconditions.</p>
+<p>Whenever possible, it is recommended to use this macro instead of throwing <code class="computeroutput"><a class="link" href="contract/failure.html" title="Class failure">contract::failure</a></code> directly. For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="identifier">CONTRACT_ASSERT</span><span class="special">(</span> <span class="keyword">true</span> <span class="special">)</span><span class="special">;</span>
+</pre>
+<p>The code asserting the specified boolean condition is used as the description of the assertion (otherwise use <code class="computeroutput">CONTRACT_ASSERT_MSG()</code>).</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">boolean_condition</code></strong></span></td>
+<td>The boolean contract condition being asserted. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code equivalent to the following (see the Without the Macros section): </p>
+<pre class="programlisting"> <span class="keyword">if</span> <span class="special">(</span><span class="special">!</span><span class="special">(</span><span class="identifier">boolean_condition</span><span class="special">)</span><span class="special">)</span>
+ <span class="keyword">throw</span> <a class="link" href="contract/failure.html" title="Class failure">contract::failure</a><span class="special">(</span><span class="identifier">__FILE__</span><span class="special">,</span> <span class="identifier">__LINE__</span><span class="special">,</span> <span class="special">#</span> <span class="identifier">boolean_condition</span><span class="special">)</span><span class="special">;</span>
+</pre>
+<p> Note how <code class="computeroutput">__FILE__</code> and <code class="computeroutput">__LINE__</code> are automatically used by the macro to improve error reporting. (The preprocessor operator <code class="computeroutput">#</code> makes a string from the specified token.)</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_ASSERT_MSG()</code>, <code class="computeroutput"><a class="link" href="contract/failure.html" title="Class failure">contract::failure</a></code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/postcondition_failed.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_ASSERT_MSG.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_BLOCK_INVARIANT.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_BLOCK_INVARIANT.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_ASSERT_BLOCK_INVARIANT</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">
+<link rel="prev" href="contract/loop_variant_type.html" title="Type definition loop_variant_type">
+<link rel="next" href="CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html" title="Macro CONTRACT_ASSERT_BLOCK_INVARIANT_MSG">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/loop_variant_type.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_ASSERT_BLOCK_INVARIANT"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_ASSERT_BLOCK_INVARIANT</span></h2>
+<p>CONTRACT_ASSERT_BLOCK_INVARIANT</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp</a>&gt;
+
+</span>CONTRACT_ASSERT_BLOCK_INVARIANT(boolen_condition)</pre></div>
+<div class="refsect1">
+<a name="id961814"></a><h2>Description</h2>
+<p>Macro used to assert invariant contract conditions from within a code block.</p>
+<p>To assert class invariants, preconditions, and postcondition use <code class="computeroutput">CONTRACT_ASSERT()</code> instead.</p>
+<p>The code asserting the boolean condition is also used as the description of the condition. For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="special">...</span>
+ <span class="special">{</span> <span class="comment">// From within this code block.</span>
+ <span class="keyword">int</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">CONTRACT_ASSERT_BLOCK_INVARIANT</span><span class="special">(</span> <span class="identifier">x</span> <span class="special">==</span> <span class="number">0</span> <span class="special">)</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">...</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">boolean_condition</code></strong></span></td>
+<td>The boolean contract condition being asserted. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code that will automatically invoke <code class="computeroutput">contract::block_invariant_failed()</code> if the specified condition is evaluated to be <code class="computeroutput">false</code>. The macro expands to code equivalent to the following: </p>
+<pre class="programlisting"> <span class="keyword">try</span> <span class="special">{</span>
+ <span class="identifier">CONTRACT_ASSERT</span><span class="special">(</span> <span class="identifier">boolean_condition</span> <span class="special">)</span><span class="special">;</span>
+ <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(</span><span class="special">...</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">contract</span><span class="special">::</span><span class="identifier">block_invariant_failed</span><span class="special">(</span><span class="identifier">contract</span><span class="special">::</span><span class="identifier">FROM_BLOCK</span><span class="special">)</span><span class="special">;</span>
+ <span class="special">}</span>
+</pre>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_ASSERT_BLOCK_INVARIANT_MSG()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/loop_variant_type.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,82 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_ASSERT_BLOCK_INVARIANT_MSG</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">
+<link rel="prev" href="CONTRACT_ASSERT_BLOCK_INVARIANT.html" title="Macro CONTRACT_ASSERT_BLOCK_INVARIANT">
+<link rel="next" href="CONTRACT_ASSERT_LOOP_VARIANT.html" title="Macro CONTRACT_ASSERT_LOOP_VARIANT">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT_BLOCK_INVARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_ASSERT_LOOP_VARIANT.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_ASSERT_BLOCK_INVARIANT_MSG"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_ASSERT_BLOCK_INVARIANT_MSG</span></h2>
+<p>CONTRACT_ASSERT_BLOCK_INVARIANT_MSG</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp</a>&gt;
+
+</span>CONTRACT_ASSERT_BLOCK_INVARIANT_MSG(boolean_condition, string_description)</pre></div>
+<div class="refsect1">
+<a name="id962189"></a><h2>Description</h2>
+<p>Macro used to assert invariant contract conditions from within a code block specifying also a human readable message.</p>
+<p>To assert class invariants, preconditions, and postcondition use <code class="computeroutput">CONTRACT_ASSERT_MSG()</code> instead.</p>
+<p>For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="special">...</span>
+ <span class="special">{</span> <span class="comment">// From within this code block.</span>
+ <span class="keyword">int</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">CONTRACT_ASSERT_BLOCK_INVARIANT_MSG</span><span class="special">(</span> <span class="identifier">x</span> <span class="special">==</span> <span class="number">0</span><span class="special">,</span> <span class="string">"x is zero"</span> <span class="special">)</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">...</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">boolean_condition</code></strong></span></td>
+<td>The boolean contract condition being asserted. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">string_description</code></strong></span></td>
+<td>A string providing a human readable description of the condition being asserted. (used for error reporting). </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code that will automatically invoke <code class="computeroutput">contract::block_invariant_failed()</code> if the specified condition is evaluated to be <code class="computeroutput">false</code>. The macro expands to code equivalent to the following: </p>
+<pre class="programlisting"> <span class="keyword">try</span> <span class="special">{</span>
+ <span class="identifier">CONTRACT_ASSERT_MSG</span><span class="special">(</span> <span class="identifier">boolean_condition</span><span class="special">,</span> <span class="identifier">string_description</span> <span class="special">)</span><span class="special">;</span>
+ <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(</span><span class="special">...</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">contract</span><span class="special">::</span><span class="identifier">block_invariant_failed</span><span class="special">(</span><span class="identifier">contract</span><span class="special">::</span><span class="identifier">FROM_BLOCK</span><span class="special">)</span><span class="special">;</span>
+ <span class="special">}</span>
+</pre>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_ASSERT_BLOCK_INVARIANT()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT_BLOCK_INVARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_ASSERT_LOOP_VARIANT.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_LOOP_VARIANT.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_LOOP_VARIANT.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_ASSERT_LOOP_VARIANT</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">
+<link rel="prev" href="CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html" title="Macro CONTRACT_ASSERT_BLOCK_INVARIANT_MSG">
+<link rel="next" href="CONTRACT_ASSERT_LOOP_VARIANT_MSG.html" title="Macro CONTRACT_ASSERT_LOOP_VARIANT_MSG">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_ASSERT_LOOP_VARIANT_MSG.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_ASSERT_LOOP_VARIANT"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_ASSERT_LOOP_VARIANT</span></h2>
+<p>CONTRACT_ASSERT_LOOP_VARIANT</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp</a>&gt;
+
+</span>CONTRACT_ASSERT_LOOP_VARIANT(integer_expression)</pre></div>
+<div class="refsect1">
+<a name="id962603"></a><h2>Description</h2>
+<p>Macro used to assert loop variant.</p>
+<p>At each loop iteration, the value of the specified loop variant expression is automatically evaluated and asserted to be positive (<code class="computeroutput">&gt; 0</code>) and to decrease (<code class="computeroutput">&lt;</code>) from the variant value at previous loop iteration. A loop can only have one variant.</p>
+<p><span class="bold"><strong>Note:</strong></span> Loop variants can be used to check <span class="bold"><strong>loop correctness</strong></span> (see the Tutorial section and related references): Because the loop variant decreases monotonically at each loop iteration and it cannot be zero or smaller than zero, it is possible to guarantee loop termination.</p>
+<p>The macro <code class="computeroutput">CONTRACT_INIT_LOOP_VARIANT</code> must be used (once and only once) before asserting the loop variant and within the same or higher scope of the block containing <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT()</code>.</p>
+<p>Loops are code blocks that repeat themselves in iteration. Therefore, it is possible to use <code class="computeroutput">CONTRACT_ASSERT_BLOCK_INVARIANT()</code> (or <code class="computeroutput">CONTRACT_ASSERT_BLOCK_INVARIANT_MSG()</code>) to assert loop invariants together with loop variants. A loop can have multiple invariants.</p>
+<p>For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="special">...</span>
+ <span class="special">{</span>
+ <span class="identifier">CONTRACT_INIT_LOOP_VARIANT</span><span class="special">;</span> <span class="comment">// Declare variant within scope.</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">size</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// Loop invariants.</span>
+ <span class="identifier">CONTRACT_ASSERT_BLOCK_INVARIANT</span><span class="special">(</span> <span class="identifier">i</span> <span class="special">&gt;=</span> <span class="number">0</span> <span class="special">)</span><span class="special">;</span>
+ <span class="identifier">CONTRACT_ASSERT_BLOCK_INVARIANT</span><span class="special">(</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">size</span><span class="special">(</span><span class="special">)</span> <span class="special">)</span><span class="special">;</span>
+ <span class="comment">// Loop variant (assert always positive and decreasing).</span>
+ <span class="identifier">CONTRACT_ASSERT_LOOP_VARIANT</span><span class="special">(</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">size</span><span class="special">(</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">i</span> <span class="special">)</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">...</span>
+</pre>
+<p>The variant expression code is used as a human readable description of the variant (see <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT_MSG()</code>).</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">integer_expression</code></strong></span></td>
+<td>The integer expression which is evaluated at each loop iteration and asserted to be positive and decreasing from one iteration to the next one. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code that will automatically invoke <code class="computeroutput">contract::block_invariant_failed()</code> if the specified variant is not positive or it does not decrease.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_INIT_LOOP_VARIANT</code>, <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT_MSG()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT_BLOCK_INVARIANT_MSG.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_ASSERT_LOOP_VARIANT_MSG.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_LOOP_VARIANT_MSG.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_LOOP_VARIANT_MSG.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_ASSERT_LOOP_VARIANT_MSG</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">
+<link rel="prev" href="CONTRACT_ASSERT_LOOP_VARIANT.html" title="Macro CONTRACT_ASSERT_LOOP_VARIANT">
+<link rel="next" href="CONTRACT_INIT_LOOP_VARIANT.html" title="Macro CONTRACT_INIT_LOOP_VARIANT">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT_LOOP_VARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_INIT_LOOP_VARIANT.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_ASSERT_LOOP_VARIANT_MSG"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_ASSERT_LOOP_VARIANT_MSG</span></h2>
+<p>CONTRACT_ASSERT_LOOP_VARIANT_MSG</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp</a>&gt;
+
+</span>CONTRACT_ASSERT_LOOP_VARIANT_MSG(integer_expression, string_description)</pre></div>
+<div class="refsect1">
+<a name="id963208"></a><h2>Description</h2>
+<p>Macro used to assert loop variant specifying also a human readable description.</p>
+<p>See <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT()</code> explanations and examples.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">integer_expression</code></strong></span></td>
+<td>The integer expression which is evaluated at each loop iteration and asserted to be positive and decreasing from one iteration to the next one. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">string_description</code></strong></span></td>
+<td>A human readable description of the loop variant expression (used for error reporting). </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code that will automatically invoke <code class="computeroutput">contract::block_invariant_failed()</code> if the specified variant is not positive or it does not decrease.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_INIT_LOOP_VARIANT()</code>, <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT_LOOP_VARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_INIT_LOOP_VARIANT.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_MSG.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_ASSERT_MSG.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,74 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_ASSERT_MSG</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="CONTRACT_ASSERT.html" title="Macro CONTRACT_ASSERT">
+<link rel="next" href="contract/loop_variant_type.html" title="Type definition loop_variant_type">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/loop_variant_type.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_ASSERT_MSG"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_ASSERT_MSG</span></h2>
+<p>CONTRACT_ASSERT_MSG</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>CONTRACT_ASSERT_MSG(boolean_condition, string_description)</pre></div>
+<div class="refsect1">
+<a name="id961039"></a><h2>Description</h2>
+<p>Macro used to assert contract conditions for class invariants, preconditions, and postconditions specifying also a human readable message.</p>
+<p>When possible, it is recommended to use this macro instead of throwing <code class="computeroutput"><a class="link" href="contract/failure.html" title="Class failure">contract::failure</a></code> directly. For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="identifier">CONTRACT_ASSERT_MSG</span><span class="special">(</span> <span class="keyword">true</span><span class="special">,</span> <span class="string">"always true"</span> <span class="special">)</span><span class="special">;</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">boolean_condition</code></strong></span></td>
+<td>The boolean contract condition being asserted. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">string_description</code></strong></span></td>
+<td>A string providing a human readable description of the condition being (used for error reporting). </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code equivalent to the following (see the Without the Macros section): </p>
+<pre class="programlisting"> <span class="keyword">if</span> <span class="special">(</span><span class="special">!</span><span class="special">(</span><span class="identifier">boolean_condition</span><span class="special">)</span><span class="special">)</span>
+ <span class="keyword">throw</span> <a class="link" href="contract/failure.html" title="Class failure">contract::failure</a><span class="special">(</span><span class="identifier">__FILE__</span><span class="special">,</span> <span class="identifier">__LINE__</span><span class="special">,</span> <span class="identifier">string_description</span><span class="special">)</span><span class="special">;</span>
+</pre>
+<p> Note how <code class="computeroutput">__FILE__</code> and <code class="computeroutput">__LINE__</code> are automatically used by the macro to improve error reporting.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_ASSERT()</code>, <code class="computeroutput"><a class="link" href="contract/failure.html" title="Class failure">contract::failure</a></code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/loop_variant_type.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_BODY.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_BODY.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_BODY</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp&gt;">
+<link rel="prev" href="CONTRACT_DESTRUCTOR_BODY.html" title="Macro CONTRACT_DESTRUCTOR_BODY">
+<link rel="next" href="CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html" title="Macro CONTRACT_CONFIG_MAX_FUNCTION_ARITY">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_DESTRUCTOR_BODY.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_BODY"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_BODY</span></h2>
+<p>CONTRACT_BODY</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp</a>&gt;
+
+</span>CONTRACT_BODY(function_name)</pre></div>
+<div class="refsect1">
+<a name="id964997"></a><h2>Description</h2>
+<p>Macro used to name the function body when separating the function definition from its declaration.</p>
+<p>This macro is used when the function is defined separately from its declaration (for example in a separate ".cpp" file) to name the body function: </p>
+<pre class="programlisting"> <span class="special">...</span> <span class="comment">// Function return type, class-type:: prefix, etc.</span>
+ <span class="identifier">CONTRACT_BODY</span><span class="special">(</span><span class="identifier">function_name</span><span class="special">)</span>
+ <span class="special">(</span><span class="special">...</span><span class="special">)</span> <span class="special">{</span> <span class="comment">// Function arguments.</span>
+ <span class="special">...</span> <span class="comment">// Function implementation.</span>
+ <span class="special">}</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">function_name</code></strong></span></td>
+<td>The name of the function. For operators the name must be <code class="computeroutput">operator(</code><span class="emphasis"><em>symbol, word</em></span><code class="computeroutput">)</code> where <span class="emphasis"><em>word</em></span> must contain no special operator symbol and it must match what specified in the contract declaration (see the Tutorial section). </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code equivalent to the following: </p>
+<pre class="programlisting"> <span class="special">...</span> <span class="comment">// Function return type, class-type:: prefix, etc.</span>
+ <span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_CLASS_INVARIANT</span> <span class="special">||</span> \
+ <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_PRECONDITION</span> <span class="special">||</span> \
+ <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_POSTCONDITION</span>
+ <span class="identifier">contract_body_</span> <span class="special">##</span> <span class="identifier">function_name</span> <span class="special">##</span> <span class="identifier">_</span> <span class="comment">// Body function name.</span>
+ <span class="preprocessor">#else</span>
+ <span class="identifier">function_name</span> <span class="comment">// Function name (contracts off).</span>
+ <span class="preprocessor">#endif</span>
+ <span class="special">(</span><span class="special">...</span><span class="special">)</span> <span class="special">{</span> <span class="comment">// Function arguments.</span>
+ <span class="special">...</span> <span class="comment">// Function implementation.</span>
+ <span class="special">}</span>
+</pre>
+<p> (The preprocessor operator <code class="computeroutput">##</code> concatenates the specified tokens.)</p>
+<p><span class="bold"><strong>See:</strong></span> Tutorial section, <code class="computeroutput">CONTRACT_FUNCTION()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_DESTRUCTOR_BODY.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_BLOCK_INVARIANT.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_BLOCK_INVARIANT.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_CHECK_BLOCK_INVARIANT</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp&gt;">
+<link rel="prev" href="contract/constructor.html" title="Class template constructor">
+<link rel="next" href="CONTRACT_CHECK_CLASS_INVARIANT.html" title="Macro CONTRACT_CHECK_CLASS_INVARIANT">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/constructor.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CHECK_CLASS_INVARIANT.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_CHECK_BLOCK_INVARIANT"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_CHECK_BLOCK_INVARIANT</span></h2>
+<p>CONTRACT_CHECK_BLOCK_INVARIANT</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp</a>&gt;
+
+</span>CONTRACT_CHECK_BLOCK_INVARIANT</pre></div>
+<div class="refsect1">
+<a name="id967490"></a><h2>Description</h2>
+<p>Block invariants (and therefore also loop variants) are compiled and checked at run-time <span class="bold"><strong>only</strong></span> when this macro is #defined (#undefined by default).</p>
+<p>When this macro is #undefined, block invariants (and loop variants) are not compiled in the object code and no block invariant (and loop variants) contract overhead is added.</p>
+<p><span class="bold"><strong>See:</strong></span> Getting Started section for more information. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/constructor.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CHECK_CLASS_INVARIANT.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_CLASS_INVARIANT.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_CLASS_INVARIANT.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_CHECK_CLASS_INVARIANT</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp&gt;">
+<link rel="prev" href="CONTRACT_CHECK_BLOCK_INVARIANT.html" title="Macro CONTRACT_CHECK_BLOCK_INVARIANT">
+<link rel="next" href="CONTRACT_CHECK_PRECONDITION.html" title="Macro CONTRACT_CHECK_PRECONDITION">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CHECK_BLOCK_INVARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CHECK_PRECONDITION.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_CHECK_CLASS_INVARIANT"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_CHECK_CLASS_INVARIANT</span></h2>
+<p>CONTRACT_CHECK_CLASS_INVARIANT</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp</a>&gt;
+
+</span>CONTRACT_CHECK_CLASS_INVARIANT</pre></div>
+<div class="refsect1">
+<a name="id967561"></a><h2>Description</h2>
+<p>Class invariants are compiled and checked at run-time <span class="bold"><strong>only</strong></span> when this macro is #defined (#undefined by default).</p>
+<p>When this macro is #undefined, class invariants are not compiled in the object code and no class invariant contract overhead is added.</p>
+<p><span class="bold"><strong>See:</strong></span> Getting Started section for more information. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CHECK_BLOCK_INVARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CHECK_PRECONDITION.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_POSTCONDITION.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_POSTCONDITION.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_CHECK_POSTCONDITION</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp&gt;">
+<link rel="prev" href="CONTRACT_CHECK_PRECONDITION.html" title="Macro CONTRACT_CHECK_PRECONDITION">
+<link rel="next" href="contract/destructor.html" title="Class template destructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CHECK_PRECONDITION.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/destructor.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_CHECK_POSTCONDITION"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_CHECK_POSTCONDITION</span></h2>
+<p>CONTRACT_CHECK_POSTCONDITION</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp</a>&gt;
+
+</span>CONTRACT_CHECK_POSTCONDITION</pre></div>
+<div class="refsect1">
+<a name="id967700"></a><h2>Description</h2>
+<p>Postconditions are compiled and checked at run-time <span class="bold"><strong>only</strong></span> when this macro is #defined (#undefined by default).</p>
+<p>When this macro is #undefined, postconditions are not compiled in the object code and no postcondition contract overhead is added.</p>
+<p><span class="bold"><strong>See:</strong></span> Getting Started section for more information. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CHECK_PRECONDITION.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/destructor.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_PRECONDITION.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_CHECK_PRECONDITION.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_CHECK_PRECONDITION</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp&gt;">
+<link rel="prev" href="CONTRACT_CHECK_CLASS_INVARIANT.html" title="Macro CONTRACT_CHECK_CLASS_INVARIANT">
+<link rel="next" href="CONTRACT_CHECK_POSTCONDITION.html" title="Macro CONTRACT_CHECK_POSTCONDITION">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CHECK_CLASS_INVARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CHECK_POSTCONDITION.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_CHECK_PRECONDITION"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_CHECK_PRECONDITION</span></h2>
+<p>CONTRACT_CHECK_PRECONDITION</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract.hpp</a>&gt;
+
+</span>CONTRACT_CHECK_PRECONDITION</pre></div>
+<div class="refsect1">
+<a name="id967631"></a><h2>Description</h2>
+<p>Preconditions are compiled and checked at run-time <span class="bold"><strong>only</strong></span> when this macro is #defined (#undefined by default).</p>
+<p>When this macro is #undefined, preconditions are not compiled in the object code and no precondition contract overhead is added.</p>
+<p><span class="bold"><strong>See:</strong></span> Getting Started section for more information. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CHECK_CLASS_INVARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CHECK_POSTCONDITION.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_CONFIG_MAX_FUNCTION_ARITY</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.config_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/config.hpp&gt;">
+<link rel="prev" href="CONTRACT_BODY.html" title="Macro CONTRACT_BODY">
+<link rel="next" href="CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html" title="Macro CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_BODY.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_CONFIG_MAX_FUNCTION_ARITY"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_CONFIG_MAX_FUNCTION_ARITY</span></h2>
+<p>CONTRACT_CONFIG_MAX_FUNCTION_ARITY</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.config_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/config.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/config.hpp</a>&gt;
+
+</span>CONTRACT_CONFIG_MAX_FUNCTION_ARITY</pre></div>
+<div class="refsect1">
+<a name="id965542"></a><h2>Description</h2>
+<p>The maximum number of function arguments supported by this library.</p>
+<p><span class="bold"><strong>Warning:</strong></span> Increasing this number can <span class="bold"><strong>significantly</strong></span> increase compilation time. If possible, do not increase this number.</p>
+<p>If you need to write a contract for a function with a number of arguments larger than the one specified by this macro default value, consider alternatives like wrapping the arguments within a <code class="computeroutput">struct</code>. For example, consider the function: </p>
+<pre class="programlisting"> <span class="comment">// Many arguments thus need to increase configuration macro value.</span>
+ <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">i1</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i2</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i3</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i4</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i5</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i6</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i7</span><span class="special">)</span><span class="special">;</span>
+</pre>
+<p> However, this function could be rewritten as a single argument function using a <code class="computeroutput">struct:</code> </p>
+<pre class="programlisting"> <span class="keyword">struct</span> <span class="identifier">ints</span> <span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">i1</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">i2</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">i3</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">i4</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">i5</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">i6</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">i7</span><span class="special">;</span>
+ <span class="special">}</span><span class="special">;</span>
+
+ <span class="comment">// Just one argument and default macro value suffice. </span>
+ <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">ints</span> <span class="identifier">i</span><span class="special">)</span><span class="special">;</span>
+</pre>
+<p> Now the contract for <code class="computeroutput">f</code> only requires one argument and this macro value does not need to be increased. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_BODY.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.config_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/config.hpp&gt;">
+<link rel="prev" href="CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html" title="Macro CONTRACT_CONFIG_MAX_FUNCTION_ARITY">
+<link rel="next" href="contract/constructor.html" title="Class template constructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/constructor.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE</span></h2>
+<p>CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.config_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/config.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/config.hpp</a>&gt;
+
+</span>CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE</pre></div>
+<div class="refsect1">
+<a name="id965992"></a><h2>Description</h2>
+<p>The maximum number of base classes supported when subcontracting with multiple inheritance.</p>
+<p><span class="bold"><strong>Warning:</strong></span> Increasing this number can <span class="bold"><strong>significantly</strong></span> increase compilation time. If possible, do not increase this number. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CONFIG_MAX_FUNCTION_ARITY.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/constructor.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_CONSTRUCTOR.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_CONSTRUCTOR.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_CONSTRUCTOR</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp&gt;">
+<link rel="prev" href="CONTRACT_INVARIANT.html" title="Macro CONTRACT_INVARIANT">
+<link rel="next" href="CONTRACT_DESTRUCTOR.html" title="Macro CONTRACT_DESTRUCTOR">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_INVARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_DESTRUCTOR.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_CONSTRUCTOR"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_CONSTRUCTOR</span></h2>
+<p>CONTRACT_CONSTRUCTOR</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp</a>&gt;
+
+</span>CONTRACT_CONSTRUCTOR(sequence)</pre></div>
+<div class="refsect1">
+<a name="id969697"></a><h2>Description</h2>
+<p>Macro used to write contracts for constructors.</p>
+<p>This macro must be used right after the constructor declaration -- and after the member initialization list if such a list is specified. There is no need for a trailing <code class="computeroutput">";"</code> after the macro closing parenthesis <code class="computeroutput">")"</code>.</p>
+<p>For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">myvector</span> <span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Invariants.</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">myvector</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">count</span><span class="special">)</span> <span class="comment">// Constructor declaration.</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">count</span><span class="special">)</span> <span class="comment">// Member initialization list.</span>
+ <span class="identifier">CONTRACT_COSTRUCTOR</span><span class="special">(</span> <span class="special">(</span><span class="keyword">class</span><span class="special">)</span> <span class="special">(</span><span class="identifier">myvector</span><span class="special">)</span>
+ <span class="special">(</span><span class="keyword">public</span><span class="special">)</span> <span class="special">(</span><span class="identifier">myvector</span><span class="special">)</span><span class="special">(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span><span class="special">(</span><span class="identifier">count</span><span class="special">)</span> <span class="special">)</span>
+ <span class="special">(</span><span class="identifier">precondition</span><span class="special">)</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Assert constructor preconditions.</span>
+ <span class="special">}</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">postcondition</span><span class="special">)</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Assert constructor postconditions.</span>
+ <span class="special">}</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">body</span><span class="special">)</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Actual constructor implementation.</span>
+ <span class="special">}</span><span class="special">)</span> <span class="special">)</span> <span class="comment">// No need for ";" after macro closing parenthesis ")".</span>
+
+ <span class="special">...</span> <span class="comment">// Rest of the class.</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">sequence</code></strong></span></td>
+<td>A Boost.Preprocessor sequence of tokens <code class="computeroutput">(<span class="emphasis"><em>1st-token</em></span>)(<span class="emphasis"><em>2nd-token</em></span>)<span class="emphasis"><em>...</em></span>(<span class="emphasis"><em>last-token</em></span>)</code> that repeats the constructor signature syntactic elements and specifies the contract.<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The signature tokens are needed by the library to generate the contract code with the function name, the argument types and names, etc as discussed in the Without the Macros section (e.g., the argument names are needed to actually name the precondition and postcondition function arguments).</p></li>
+<li class="listitem"><p>The extra parenthesis <code class="computeroutput">()</code> around the tokens are mandatory (they are the ones making the preprocessor sequence).</p></li>
+<li class="listitem"><p>It is recommended to use <code class="computeroutput">CONTRACT_ASSERT()</code> to assert preconditions and postconditions within the relative code blocks.</p></li>
+<li class="listitem"><p>Within the postcondition code block, <code class="computeroutput">CONTRACT_OLDOF(</code><span class="emphasis"><em>argument-name</em></span><code class="computeroutput">)</code> is a constant reference to the related old argument value (as the value was before body execution) but only if the <span class="emphasis"><em>argument-type</em></span> was tagged <code class="computeroutput">(copyable)</code> in <code class="computeroutput">sequence</code>.</p></li>
+<li class="listitem"><p>For the body block, <code class="computeroutput">";"</code> can be used to separate the constructor definition from its declaration (see <code class="computeroutput">CONTRACT_CONSTRUCTOR_BODY()</code>).</p></li>
+<li class="listitem"><p>As explained in the Tutorial section, the tokens in <code class="computeroutput">sequence</code> appear in the exact same order as they appear in the constructor declaration followed by the optional preconditions, optional postconditions, and mandatory body.</p></li>
+<li class="listitem"><p>The constructor <code class="computeroutput">sequence</code> syntax is as follows (<span class="emphasis"><em>[]</em></span> for optional tokens, <span class="emphasis"><em>{}</em></span> tokens resulting from parenthesis contents evaluation, <span class="emphasis"><em>||</em></span> one token or the other, <span class="emphasis"><em>+</em></span> tokens repeated 1 or more times):</p></li>
+</ul></div>
+<code class="computeroutput"> <span class="emphasis"><em>[</em></span>(class)<span class="emphasis"><em>]</em></span> (<span class="emphasis"><em>class-type</em></span>) <span class="emphasis"><em>{</em></span>(public) <span class="emphasis"><em>||</em></span> (protected) <span class="emphasis"><em>||</em></span> (private)<span class="emphasis"><em>}</em></span> <span class="emphasis"><em>[</em></span>(template)( <span class="emphasis"><em>{</em></span>(<span class="emphasis"><em>function-template-parameter-type</em></span>)(<span class="emphasis"><em>function-template-parameter-name</em></span>)<span class="emphasis"><em>}+</em></span> )<span class="emphasis"><em>]</em></span> (<span class="emphasis"><em>class-name</em></span>)( <span class="emphasis"><em>{</em></span>(void) <span class="emphasis"><em>||</em></span> <span class="emphasis"><em>{[</em></span>(copyable)<span class="emphasis"><em>]</em></span>(<span class="emphasis"><em>argument-type</em></span>)(<span class="emphasis"><em>argument-name</em></
span>)<span class="emphasis"><em>}+}</em></span> ) <span class="emphasis"><em>[</em></span>(precondition) ({ ... })<span class="emphasis"><em>]</em></span> <span class="emphasis"><em>[</em></span>(postcondition) ({ ... })<span class="emphasis"><em>]</em></span> (body) ({ ... }) </code> </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> See the Without the Macro section for examples of the code generated by this macro expansion. </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>If contract compilation is turned on, this macro expands to the constructor contract. </p></li>
+<li class="listitem"><p>Otherwise, if contract compilation is turned off, this macro expands to just the constructor function body using the given body code block (and no contract overhead is added).</p></li>
+</ul></div>
+<p>
+<span class="bold"><strong>Note:</strong></span> For functions with no argument <code class="computeroutput">(<span class="emphasis"><em>class-name</em></span>)( (void) )</code>, and not just <code class="computeroutput">(<span class="emphasis"><em>class-name</em></span>)( )</code>, must be used to specify the empty argument list within <code class="computeroutput">sequence</code>. This is because ISO standard C++ does not allow for empty macro parameters (this library also supports <code class="computeroutput">(<span class="emphasis"><em>class-name</em></span>)( )</code> but this will only compile on C99 so its use is not recommended -- see the Tutorial section for more information).</p>
+<p><span class="bold"><strong>Note:</strong></span> In comparing the <code class="computeroutput">sequence</code> syntax of constructors with the one of member functions from <code class="computeroutput">CONTRACT_FUNCTION()</code>, note the following differences (see also the Constructor Call Semantics in the Tutorial section): There is no <code class="computeroutput">(copyable)</code> before <span class="emphasis"><em>class-type</em></span> because there is no object before construction body execution; There is no <code class="computeroutput">(inherit)</code> because constructors cannot directly subcontract; There is no <code class="computeroutput">(static)</code> or <code class="computeroutput">(virtual)</code> because constructors cannot be static or virtual; There is no <code class="computeroutput">(<span class="emphasis"><em>result-type</em></span>)</code> because constructors have no return value; The <span class="emphasis"><em>function-name</em></span> must be the <span class="emphasis"><em>class-nam
e</em></span> as always for constructors; There is no trailing <code class="computeroutput">(const)</code> because constructor cannot be constant members.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_ASSERT()</code>, <code class="computeroutput">CONTRACT_INVARIANT()</code>, <code class="computeroutput">CONTRACT_DESTRUCTOR()</code>, <code class="computeroutput">CONTRACT_FUNCTION()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_INVARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_DESTRUCTOR.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_CONSTRUCTOR_BODY.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_CONSTRUCTOR_BODY.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,140 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_CONSTRUCTOR_BODY</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp&gt;">
+<link rel="prev" href="CONTRACT_INIT_LOOP_VARIANT.html" title="Macro CONTRACT_INIT_LOOP_VARIANT">
+<link rel="next" href="CONTRACT_DESTRUCTOR_BODY.html" title="Macro CONTRACT_DESTRUCTOR_BODY">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_INIT_LOOP_VARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_DESTRUCTOR_BODY.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_CONSTRUCTOR_BODY"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_CONSTRUCTOR_BODY</span></h2>
+<p>CONTRACT_CONSTRUCTOR_BODY</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp</a>&gt;
+
+</span>CONTRACT_CONSTRUCTOR_BODY(class_type, class_name)</pre></div>
+<div class="refsect1">
+<a name="id963741"></a><h2>Description</h2>
+<p>Macro used to name the constructor body when separating constructor definition from its declaration.</p>
+<p>This macro is used when the constructor is defined outside the class declaration (for example in a separate ".cpp" file) to name the constructor body function: </p>
+<pre class="programlisting"> <span class="identifier">BOOST_CONTRACT_CONSTRUCTOR_BODY</span><span class="special">(</span><span class="identifier">class_type</span><span class="special">,</span> <span class="identifier">class_name</span><span class="special">)</span>
+ <span class="special">(</span><span class="special">...</span><span class="special">)</span> <span class="special">{</span> <span class="comment">// Constructor arguments.</span>
+ <span class="special">...</span> <span class="comment">// Constructor implementation.</span>
+ <span class="special">}</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">class_type</code></strong></span></td>
+<td>The type of the class. For class templates this must also list the template parameters. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">class_name</code></strong></span></td>
+<td>The constructor name which is the class type name. For class templates this shall not list the template parameters. </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code equivalent to the following: </p>
+<pre class="programlisting"> <span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_CLASS_INVARIANT</span> <span class="special">||</span> \
+ <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_PRECONDITION</span> <span class="special">||</span> \
+ <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_POSTCONDITION</span>
+ <span class="keyword">void</span> <span class="identifier">class_type</span><span class="special">::</span><span class="identifier">contract_body_constructor_</span> <span class="comment">// Constructor body function name.</span>
+ <span class="preprocessor">#else</span>
+ <span class="identifier">class_type</span><span class="special">::</span><span class="identifier">class_name</span> <span class="comment">// Constructor function (contracts off).</span>
+ <span class="preprocessor">#endif</span>
+ <span class="special">(</span><span class="special">...</span><span class="special">)</span> <span class="special">{</span> <span class="comment">// Constructor arguments.</span>
+ <span class="special">...</span> <span class="comment">// Constructor implementation.</span>
+ <span class="special">}</span>
+</pre>
+<p><span class="bold"><strong>Member Initialization List</strong></span></p>
+<p>A limitation of this mechanism is that it does not directly support constructor member initialization list. If a member initialization list is specified then the constructor definition must be provided together with its declaration (for example in the header file). (This library could overcome this limitation in the future if upcoming C++ standard revisions were to support delegating constructors.)</p>
+<p>If the constructor implementation must be separated from its declaration, a possible workaround is to:</p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><p>Delegate the construction job to a special initialization function which must be named "constructor" (and it should be private to avoid other code from messing with the object construction).</p></li>
+<li class="listitem"><p>Program the real constructor to just invoke the initialization function.</p></li>
+<li class="listitem"><p>Write the contract for the initialization function instead that for the real constructor (but using CONTRACT_CONSTRUCTOR() instead of CONTRACT_FUNCTION()).</p></li>
+</ol></div>
+<p>
+</p>
+<p>If this is done then both the constructor and the initialization function body definitions can be separated from the contract declaration. For example: </p>
+<pre class="programlisting"> <span class="comment">// Declaration.</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">myvector</span> <span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Invariants.</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="special">::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="special">::</span><span class="identifier">const_reference</span> <span class="identifier">const_reference</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">myvector</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">count</span><span class="special">)</span><span class="special">;</span> <span class="comment">// Separated definition.</span>
+
+ <span class="special">...</span> <span class="comment">// Rest of the class.</span>
+
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="comment">// The initialization function is private and must be named "constructor</span>
+<span class="string">".
+ void constructor(size_type count)
+ // Specify the contract for the initialization function instead of the real constructor.
+ CONTRACT_CONSTRUCTOR( (class) (myvector)
+ (private) (myvector)( (size_type)(count) ), {
+ // Constructor preconditions (none in this case).
+ }, {
+ // Constructor postconditions.
+ CONTRACT_ASSERT(self.now.size() == count.now,
+ "</span><span class="identifier">size</span> <span class="identifier">set</span> <span class="identifier">to</span> <span class="identifier">count</span><span class="string">");
+ }, ;) // Now we can separate the body definition using "</span><span class="special">;</span><span class="string">".
+
+ std::vector&lt;T&gt; vector_;
+ };
+
+ // Separated definition (possibly in a different file).
+
+ template&lt;typename T&gt;
+ myvector&lt;T&gt;::myvector(size_type count):
+ vector_(count) { // Member initialization list.
+ constructor(count); // Just invoke the initialization function.
+ }
+
+ template&lt;typename T&gt;
+ void myvector&lt;T&gt;::CONTRACT_BODY(constructor)(size_type count) {
+ // Actual constructor implementation (do nothing in this case).
+ }
+</span></pre>
+<p>To allow for this workaround, the <code class="computeroutput">CONTRACT_CONSTRUCTOR()</code> macro can follow a member function but <span class="bold"><strong>only</strong></span> when the member function is named "constructor", it has a <code class="computeroutput">void</code> return type, and it is not <code class="computeroutput">const</code> (essentially, only when its signature matches the one of a constructor). Be aware that for this special "constructor" member function, class invariants will <span class="bold"><strong>not</strong></span> be checked before body execution (because the <code class="computeroutput">CONTRACT_CONSTRUCTOR()</code> macro implements the Constructor Call Semantics and not the Member Function Call Semantics as explained in the Tutorial section).</p>
+<p><span class="bold"><strong>See:</strong></span> Tutorial section, <code class="computeroutput">CONTRACT_CONSTRUCTOR()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_INIT_LOOP_VARIANT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_DESTRUCTOR_BODY.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_DESTRUCTOR.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_DESTRUCTOR.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_DESTRUCTOR</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp&gt;">
+<link rel="prev" href="CONTRACT_CONSTRUCTOR.html" title="Macro CONTRACT_CONSTRUCTOR">
+<link rel="next" href="CONTRACT_FUNCTION.html" title="Macro CONTRACT_FUNCTION">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CONSTRUCTOR.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_FUNCTION.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_DESTRUCTOR"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_DESTRUCTOR</span></h2>
+<p>CONTRACT_DESTRUCTOR</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp</a>&gt;
+
+</span>CONTRACT_DESTRUCTOR(sequence)</pre></div>
+<div class="refsect1">
+<a name="id970709"></a><h2>Description</h2>
+<p>Macro used to write contracts for destructors.</p>
+<p>This macro must be used right after the destructor declaration. There is no need for a trailing <code class="computeroutput">";"</code> after the macro closing parenthesis <code class="computeroutput">")"</code>.</p>
+<p>For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">myvector</span> <span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Invariants.</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">myvector</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="comment">// Destructor declaration.</span>
+ <span class="identifier">BOOST_CONTRACT_DESTRUCTOR</span><span class="special">(</span> <span class="special">(</span><span class="keyword">class</span><span class="special">)</span> <span class="special">(</span><span class="identifier">myvector</span><span class="special">)</span>
+ <span class="special">(</span><span class="keyword">public</span><span class="special">)</span> <span class="special">(</span><span class="keyword">virtual</span><span class="special">)</span> <span class="special">(</span><span class="identifier">myvector</span><span class="special">)</span><span class="special">(</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">)</span>
+ <span class="comment">// Never preconditions or postconditions for destructors.</span>
+ <span class="special">(</span><span class="identifier">body</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Actual destructor implementation.</span>
+ <span class="special">}</span><span class="special">)</span> <span class="special">)</span> <span class="comment">// No need for ";" after macro closing parenthesis ")".</span>
+
+ <span class="special">...</span> <span class="comment">// Rest of the class.</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">signature_sequence</code></strong></span></td>
+<td>A Boost.Preprocessor sequence of tokens <code class="computeroutput">(<span class="emphasis"><em>1st-token</em></span>)(<span class="emphasis"><em>2nd-token</em></span>)<span class="emphasis"><em>...</em></span>(<span class="emphasis"><em>last-token</em></span>)</code> that repeats the destructor signature syntactic elements.<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The signature tokens are needed by the library to generate the contract code with the function name, the argument types and names, etc as discussed in the Without the Macros section.</p></li>
+<li class="listitem"><p>The extra parenthesis <code class="computeroutput">()</code> around the tokens are mandatory (they are the ones making the preprocessor sequence).</p></li>
+<li class="listitem"><p>For the body code block, <code class="computeroutput">";"</code> can be specified to separate the destructor definition from its declaration (see <code class="computeroutput">CONTRACT_DESTRUCTOR_BODY()</code>).</p></li>
+<li class="listitem"><p>As explained in the Tutorial section, the tokens in <code class="computeroutput">sequence</code> appear in the exact same order as they appear in the destructor declaration followed by the mandatory body code block.</p></li>
+<li class="listitem"><p>The destructor <code class="computeroutput">sequence</code> syntax is as follows (<span class="emphasis"><em>[]</em></span> for optional tokens, <span class="emphasis"><em>{}</em></span> tokens resulting from parenthesis contents evaluation, <span class="emphasis"><em>||</em></span> one token or the other):</p></li>
+</ul></div>
+<code class="computeroutput"> <span class="emphasis"><em>[</em></span>(template)<span class="emphasis"><em>]</em></span> (<span class="emphasis"><em>class-type</em></span>) <span class="emphasis"><em>{</em></span>(public) <span class="emphasis"><em>||</em></span> (protected) <span class="emphasis"><em>||</em></span> (private)<span class="emphasis"><em>}</em></span> [(virtual)] (<span class="emphasis"><em>class-name</em></span>)( (void) ) (body) ({ ... }) </code> </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> See the Without the Macro section for examples of the code generated by this macro expansion. </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>If contract compilation is turned on, this macro expands to the destructor contract. </p></li>
+<li class="listitem"><p>Otherwise, if contract compilation is turned off, this macro expands to just the destructor function body using body code block (and no contract overhead is added).</p></li>
+</ul></div>
+<p>
+<span class="bold"><strong>Note:</strong></span> Destructor have no argument so <code class="computeroutput">(void)</code> must always be used in <code class="computeroutput">(<span class="emphasis"><em>class-name</em></span>)( (void) )</code> to specify the empty argument list within <code class="computeroutput">sequence</code>. This is because ISO standard C++ does not allow for empty macro parameters (this library also supports <code class="computeroutput">(<span class="emphasis"><em>class-name</em></span>)( )</code> but this will only compile on C99 so its use is not recommended -- see the Tutorial section for more information).</p>
+<p><span class="bold"><strong>Note:</strong></span> In comparing the <code class="computeroutput">sequence</code> syntax of destructors with the one of member functions from <code class="computeroutput">CONTRACT_FUNCTION()</code>, note the following differences (see also the Destructor Call Semantics in the Tutorial section): There is no <code class="computeroutput">(copyable)</code> before <span class="emphasis"><em>class-type</em></span> because there are no postconditions; There is no <code class="computeroutput">(inherit)</code> because destructors cannot directly subcontract; There is no function template keyword and arguments because destructors cannot be template functions; There is no <code class="computeroutput">(static)</code> because destructors cannot be static; There is no <code class="computeroutput">(<span class="emphasis"><em>result-type</em></span>)</code> because destructors have no return value; The <span class="emphasis"><em>function-name</em></span> must be the <span class="emphasis"><e
m>class-name</em></span> as always for destructors; The function argument list must be <code class="computeroutput">(void)</code> because destructors take no argument; There is no trailing <code class="computeroutput">(const)</code> because constructor cannot be constant members.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_ASSERT()</code>, <code class="computeroutput">CONTRACT_INVARIANT()</code>, <code class="computeroutput">CONTRACT_CONSTRUCTOR()</code>, <code class="computeroutput">CONTRACT_FUNCTION()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CONSTRUCTOR.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_FUNCTION.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_DESTRUCTOR_BODY.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_DESTRUCTOR_BODY.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_DESTRUCTOR_BODY</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp&gt;">
+<link rel="prev" href="CONTRACT_CONSTRUCTOR_BODY.html" title="Macro CONTRACT_CONSTRUCTOR_BODY">
+<link rel="next" href="CONTRACT_BODY.html" title="Macro CONTRACT_BODY">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CONSTRUCTOR_BODY.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_BODY.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_DESTRUCTOR_BODY"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_DESTRUCTOR_BODY</span></h2>
+<p>CONTRACT_DESTRUCTOR_BODY</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/body.hpp</a>&gt;
+
+</span>CONTRACT_DESTRUCTOR_BODY(class_type, class_name)</pre></div>
+<div class="refsect1">
+<a name="id964594"></a><h2>Description</h2>
+<p>Macro used to name the destructor body when separating destructor definition from its declaration.</p>
+<p>This macro is used when the destructor is defined outside the class declaration (for example in a separate ".cpp" file) to name the destructor body function: </p>
+<pre class="programlisting"> <span class="identifier">CONTRACT_DESTRUCTOR_BODY</span><span class="special">(</span><span class="identifier">class_type</span><span class="special">,</span> <span class="identifier">class_name</span><span class="special">)</span>
+ <span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span> <span class="comment">// Destructors have no argument.</span>
+ <span class="special">...</span> <span class="comment">// Destructor implementation.</span>
+ <span class="special">}</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">class_type</code></strong></span></td>
+<td>The type of the class. For class templates this must also list the template parameters. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">class_name</code></strong></span></td>
+<td>The constructor name which is the class type name -- do <span class="bold"><strong>not</strong></span> prefixed the class name with "~" (this is the class name and not the destructor name). For class templates this shall not list the template parameters. </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code equivalent to the following: </p>
+<pre class="programlisting"> <span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_CLASS_INVARIANT</span> <span class="special">||</span> \
+ <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_PRECONDITION</span> <span class="special">||</span> \
+ <span class="identifier">defined</span> <span class="identifier">CONTRACT_CHECK_POSTCONDITION</span>
+ <span class="keyword">void</span> <span class="identifier">class_type</span><span class="special">::</span><span class="identifier">contract_body_destructor_</span> <span class="comment">// Destructor body function name.</span>
+ <span class="preprocessor">#else</span>
+ <span class="identifier">class_type</span><span class="special">::</span><span class="special">~</span><span class="identifier">class_name</span> <span class="comment">// Destructor function (contracts off).</span>
+ <span class="preprocessor">#endif</span>
+ <span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span> <span class="comment">// Destructor have no argument.</span>
+ <span class="special">...</span> <span class="comment">// Destructor implementation.</span>
+ <span class="special">}</span>
+</pre>
+<p><span class="bold"><strong>See:</strong></span> Tutorial section, <code class="computeroutput">CONTRACT_DESTRUCTOR()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_CONSTRUCTOR_BODY.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.body_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_BODY.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_FUNCTION.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_FUNCTION.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,104 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_FUNCTION</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp&gt;">
+<link rel="prev" href="CONTRACT_DESTRUCTOR.html" title="Macro CONTRACT_DESTRUCTOR">
+<link rel="next" href="contract/nonmember_function.html" title="Class template nonmember_function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_DESTRUCTOR.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/nonmember_function.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_FUNCTION"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_FUNCTION</span></h2>
+<p>CONTRACT_FUNCTION</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp</a>&gt;
+
+</span>CONTRACT_FUNCTION(sequence)</pre></div>
+<div class="refsect1">
+<a name="id971466"></a><h2>Description</h2>
+<p>Macro used to write contracts for functions (non-static members, static members, and non-members but not for constructors and destructors).</p>
+<p>This macro must be used right after the member function declaration. There is no need for a trailing <code class="computeroutput">";"</code> after the macro closing parenthesis <code class="computeroutput">")"</code>.</p>
+<p>For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">myvector</span> <span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Invariants.</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">void</span> <span class="identifier">push_back</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">element</span><span class="special">)</span> <span class="comment">// Function declaration.</span>
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span> <span class="special">(</span><span class="keyword">class</span><span class="special">)</span> <span class="special">(</span><span class="identifier">copyable</span><span class="special">)</span><span class="special">(</span><span class="identifier">myvector</span><span class="special">)</span>
+ <span class="special">(</span><span class="keyword">public</span><span class="special">)</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">(</span><span class="identifier">push_back</span><span class="special">)</span><span class="special">(</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span><span class="special">)</span><span class="special">(</span><span class="identifier">element</span><span class="special">)</span> <span class="special">)</span>
+ <span class="special">(</span><span class="identifier">precondition</span><span class="special">)</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Assert function preconditions.</span>
+ <span class="special">}</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">postcondition</span><span class="special">)</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Assert function postconditions.</span>
+ <span class="special">}</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">body</span><span class="special">)</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Actual function implementation.</span>
+ <span class="special">}</span><span class="special">)</span> <span class="special">)</span> <span class="comment">// No need for ";" after macro closing parenthesis ")".</span>
+
+ <span class="special">...</span> <span class="comment">// Rest of the class.</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">sequence</code></strong></span></td>
+<td>A Boost.Preprocessor sequence of tokens <code class="computeroutput">(<span class="emphasis"><em>1st-token</em></span>)(<span class="emphasis"><em>2nd-token</em></span>)<span class="emphasis"><em>...</em></span>(<span class="emphasis"><em>last-token</em></span>)</code> that repeats the function signature syntactic elements and specifies the contract.<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The signature tokens are needed by the library to generate the contract code with the function name, the argument types and names, etc as explained in the the Without the Macros section (e.g., the argument names are needed to actually name the arguments for the precondition and postcondition functions).</p></li>
+<li class="listitem"><p>The extra parenthesis <code class="computeroutput">()</code> around the tokens are mandatory (they are the ones making the preprocessor sequence).</p></li>
+<li class="listitem"><p>It is recommended to use <code class="computeroutput">CONTRACT_ASSERT()</code> to assert preconditions and postconditions within the relative code blocks.</p></li>
+<li class="listitem"><p>Within the postcondition code block, <code class="computeroutput">CONTRACT_OLDOF(this)</code> is a constant pointer to the object old value (as it was before body execution) but only if <span class="emphasis"><em>class-type</em></span> was tagged <code class="computeroutput">(copyable)</code> in <code class="computeroutput">sequence</code>. Similarly, <code class="computeroutput">CONTRACT_OLDOF(</code><span class="emphasis"><em>argument-name</em></span><code class="computeroutput">)</code> is a constant reference to the related old argument value (as is was before body execution) but only if the <span class="emphasis"><em>argument-type</em></span> was tagged <code class="computeroutput">(copyable)</code> in <code class="computeroutput">sequence</code>.</p></li>
+<li class="listitem"><p>Within the postcondition code block, <span class="emphasis"><em>result-name</em></span> (with the actual name specified in <code class="computeroutput">sequence</code>) is a constant reference to the value being returned but only when <span class="emphasis"><em>result-type</em></span> is specified different from <code class="computeroutput">void</code> in <code class="computeroutput">sequence</code>.</p></li>
+<li class="listitem"><p>For the body block, <code class="computeroutput">";"</code> can be used to separate the constructor definition from its declaration (see <code class="computeroutput">CONTRACT_CONSTRUCTOR_BODY()</code>). Also, <code class="computeroutput">"= 0;"</code> can be specified when writing contracts for pure virtual member functions.</p></li>
+<li class="listitem"><p>As explained in the Tutorial section, the tokens in <code class="computeroutput">sequence</code> appear in the exact same order as they appear in the member function declaration followed by the optional preconditions, optional postconditions, and mandatory body.</p></li>
+<li class="listitem"><p>The function <code class="computeroutput">sequence</code> syntax is as follows (<span class="emphasis"><em>[]</em></span> for optional tokens, <span class="emphasis"><em>{}</em></span> tokens resulting from parenthesis contents evaluation, <span class="emphasis"><em>||</em></span> one token or the other, <span class="emphasis"><em>*</em></span> tokens repeated 0 or more times, <span class="emphasis"><em>+</em></span> tokens repeated 1 or more times, <span class="emphasis"><em>{}::</em></span> tokens specified only for member functions, <span class="emphasis"><em>{}?</em></span> tokens specified only for non-void functions):</p></li>
+</ul></div>
+<code class="computeroutput"> <span class="emphasis"><em>{[</em></span>(template)<span class="emphasis"><em>]</em></span> <span class="emphasis"><em>[</em></span>(copyable)<span class="emphasis"><em>]</em></span>(<span class="emphasis"><em>class-type</em></span>) <span class="emphasis"><em>{</em></span>(inherit)(<span class="emphasis"><em>base-class-type</em></span>)<span class="emphasis"><em>}*</em></span> <span class="emphasis"><em>{</em></span>(public) <span class="emphasis"><em>||</em></span> (protected) <span class="emphasis"><em>||</em></span> (private)<span class="emphasis"><em>}}::</em></span> <span class="emphasis"><em>[</em></span>(template)( <span class="emphasis"><em>{</em></span>(<span class="emphasis"><em>function-template-parameter-type</em></span>)(<span class="emphasis"><em>function-template-parameter-name</em></span>)<span class="emphasis"><em>}+</em></span> )<span class="emphasis"><em>]</em></span> <span class="emphasis"><em>[{</em></span>(static) <span class="emphasis"><em>||</em></span>
 (virtual)<span class="emphasis"><em>}]</em></span> (<span class="emphasis"><em>result-type</em></span>) (<span class="emphasis"><em>function-name</em></span>)( <span class="emphasis"><em>{</em></span>(void) <span class="emphasis"><em>||</em></span> <span class="emphasis"><em>{[</em></span>(copyable)<span class="emphasis"><em>]</em></span>(<span class="emphasis"><em>argument-type</em></span>)(<span class="emphasis"><em>argument-name</em></span>)<span class="emphasis"><em>}+}</em></span> ) <span class="emphasis"><em>[</em></span>(const)<span class="emphasis"><em>]</em></span> <span class="emphasis"><em>[</em></span>(precondition) ({ ... })<span class="emphasis"><em>]</em></span> <span class="emphasis"><em>[</em></span>(postcondition) {(<span class="emphasis"><em>result-name</em></span>)}? ({ ... })<span class="emphasis"><em>]</em></span> (body) ({ ... }) </code> </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> See Without the Macro section for examples of the code generated by this macro expansion. </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>If contract compilation is turned on, this macro expands to the function contract (see the Without the Macros section). </p></li>
+<li class="listitem"><p>Otherwise, if contract compilation is turned off, this macro expands to just the function body using <code class="computeroutput">body_code_block</code> (and no contract overhead is added).</p></li>
+</ul></div>
+<p>
+The usual C++ restrictions on the function signature apply. For example, static member functions cannot be <code class="computeroutput">virtual</code> or <code class="computeroutput">const</code>, plus they cannot subcontract so <code class="computeroutput">(inherit)</code> cannot be specified. The library will generate compile-time errors if <code class="computeroutput">sequence</code> violates these constraints.</p>
+<p>For <span class="bold"><strong>operators</strong></span>, the operator name must also be spelled out in words and passed as <code class="computeroutput">(operator(<span class="emphasis"><em>symbol, word</em></span>))</code> (this is because operator names usually contain symbols, like <code class="computeroutput">"[]"</code>, that are not valid preprocessor token so they cannot be used by this library). The spelled out operator name is arbitrary but it cannot contain operator special symbols (see the Tutorial for more information). For example, for <code class="computeroutput">operator[]</code> the function name passed to <code class="computeroutput">sequence</code> could be <code class="computeroutput">(operator([], at))</code>.</p>
+<p><span class="bold"><strong>Overloaded</strong></span> functions, with same number of arguments and constant qualifier, must have different argument names (and not just different argument types). This is necessary otherwise this library will not be able to distinguish the contract of the overloaded functions from each other and it will generate a compile-time error. (C++ uses the argument types and not their names to distinguish overloaded functions from each other but this library cannot use the argument types because, in general, they are not valid preprocessor tokens -- see the Tutorial for more information on this topic.)</p>
+<p><span class="bold"><strong>Note:</strong></span> For functions with no argument <code class="computeroutput">(<span class="emphasis"><em>function-name</em></span>)( (void) )</code>, and not just <code class="computeroutput">(<span class="emphasis"><em>function-name</em></span>)( )</code>, must be used to specify the empty argument list within <code class="computeroutput">sequence</code>. This is because ISO standard C++ does not allow for empty macro parameters (this library also supports <code class="computeroutput">(<span class="emphasis"><em>function-name</em></span>)( )</code> but this will only compile on C99 so its use is not recommended -- see the Tutorial section for more information).</p>
+<p><span class="bold"><strong>Warning:</strong></span> While there is only a limited amount of compile-time error checking that the library can do on <code class="computeroutput">sequence</code>, the current library implementation does not uses the best possible error detection and reporting mechanism for missuses of the <code class="computeroutput">sequence</code> syntax. In some cases, and depending on the compiler used, an error in programming <code class="computeroutput">sequence</code> might result in cryptic compiler errors (involving library internal templates and preprocessor macros, Boost.Preprocessor internal macros <code class="computeroutput">BOOST_PP_...</code>, and only referring to the contract macro first line number). The best way to resolve these errors is usually to inspect the <code class="computeroutput">sequence</code> by eye instead of trying to make sense of the compiler error messages. Also, try first to compile with contracts turned off so to make sure that the errors are actually
in the contract code. Rarely, it might be useful to look at the code generated by the contract macro expansion after preprocessing using your compiler related options ("-E -P" on GCC, "\EP" on Microsoft Visual C++, etc).</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_ASSERT()</code>, <code class="computeroutput">CONTRACT_INVARIANT()</code>, <code class="computeroutput">CONTRACT_CONSTRUCTOR()</code>, <code class="computeroutput">CONTRACT_DESTRUCTOR()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_DESTRUCTOR.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/nonmember_function.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_INIT_LOOP_VARIANT.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_INIT_LOOP_VARIANT.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_INIT_LOOP_VARIANT</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">
+<link rel="prev" href="CONTRACT_ASSERT_LOOP_VARIANT_MSG.html" title="Macro CONTRACT_ASSERT_LOOP_VARIANT_MSG">
+<link rel="next" href="CONTRACT_CONSTRUCTOR_BODY.html" title="Macro CONTRACT_CONSTRUCTOR_BODY">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT_LOOP_VARIANT_MSG.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CONSTRUCTOR_BODY.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_INIT_LOOP_VARIANT"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_INIT_LOOP_VARIANT</span></h2>
+<p>CONTRACT_INIT_LOOP_VARIANT</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp</a>&gt;
+
+</span>CONTRACT_INIT_LOOP_VARIANT</pre></div>
+<div class="refsect1">
+<a name="id963357"></a><h2>Description</h2>
+<p>Initialize the evaluation of the loop variant expression of type <code class="computeroutput">contract::loop_variant_type</code>.</p>
+<p>It must be used once, and only once, in a given code block. It must be used before using <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT()</code> (or <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT_MSG()</code>) at same of higher scope level.</p>
+<p>It can also be used within a <code class="computeroutput">for</code> loop initialization argument, for example: </p>
+<pre class="programlisting"> <span class="keyword">void</span> <span class="identifier">offset</span><span class="special">(</span><span class="keyword">int</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="special">...</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="identifier">CONTRACT_INIT_LOOP_VARIANT</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">MAX</span><span class="special">;</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">CONTRACT_ASSERT_LOOP_VARIANT</span><span class="special">(</span> <span class="identifier">MAX</span> <span class="special">-</span> <span class="identifier">i</span> <span class="special">)</span><span class="special">;</span>
+ <span class="special">...</span>
+ <span class="identifier">i</span> <span class="special">+=</span> <span class="identifier">DELTA</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+</pre>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">contract::loop_variant_type</code>, <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT()</code>, <code class="computeroutput">CONTRACT_ASSERT_LOOP_VARIANT_MSG()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="CONTRACT_ASSERT_LOOP_VARIANT_MSG.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CONSTRUCTOR_BODY.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_INVARIANT.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_INVARIANT.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_INVARIANT</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp&gt;">
+<link rel="prev" href="contract/from.html" title="Type from">
+<link rel="next" href="CONTRACT_CONSTRUCTOR.html" title="Macro CONTRACT_CONSTRUCTOR">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/from.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CONSTRUCTOR.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_INVARIANT"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_INVARIANT</span></h2>
+<p>CONTRACT_INVARIANT</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/macros.hpp</a>&gt;
+
+</span>CONTRACT_INVARIANT(sequence)</pre></div>
+<div class="refsect1">
+<a name="id969100"></a><h2>Description</h2>
+<p>Macro used to write (static and non) class invariants.</p>
+<p>This macro should be used in a private section in the class declaration. There is no need for a trailing <code class="computeroutput">";"</code> after the macro closing parenthesis <code class="computeroutput">")"</code>.</p>
+<p>For example (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">myvector</span> <span class="special">{</span>
+
+ <span class="identifier">CONTRACT_INVARIANT</span><span class="special">(</span> <span class="special">(</span><span class="keyword">static</span><span class="special">)</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Assert static class invariants.</span>
+ <span class="special">}</span><span class="special">)</span> <span class="special">(</span><span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Assert non-static class invariants.</span>
+ <span class="special">}</span><span class="special">)</span> <span class="special">)</span> <span class="comment">// No need for ";" after macro closing parenthesis ")".</span>
+
+ <span class="special">...</span> <span class="comment">// Rest of the class.</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">sequence</code></strong></span></td>
+<td>A Boost.Preprocesor sequence of tokens <code class="computeroutput">(<span class="emphasis"><em>1st-token</em></span>)(<span class="emphasis"><em>2nd-token</em></span>)<span class="emphasis"><em>...</em></span>(<span class="emphasis"><em>last-token</em></span>)</code> that specifies static and non-static class invariants.<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>At least one of the class invariants must be specified (i.e., you can specify only non-static class invariants, only static class invariants, or both static and non-static class invariants).</p></li>
+<li class="listitem"><p>The code block <code class="computeroutput">({ ... })</code> following <code class="computeroutput">(static)</code> should assert static class invariants. The other code block should assert non-static class invariants.</p></li>
+<li class="listitem"><p>The class invariant <code class="computeroutput">sequence</code> syntax is as follows (<span class="emphasis"><em>[]</em></span> for optional tokens):</p></li>
+</ul></div>
+<code class="computeroutput"> <span class="emphasis"><em>[</em></span>(static)({ ... })<span class="emphasis"><em>] </em></span>({ ... }) </code> </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> See the Without the Macro section for examples of the code generated by this macro expansion. </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>If contract compilation is turned on, this macro expands to the augmented state member variable named <code class="computeroutput">contract_state_</code>. </p></li>
+<li class="listitem"><p>Furthermore, if invariants compilation is specifically turned on, this macro expands to the static member function <code class="computeroutput">contract_static_invariant_</code> and the non-static member function <code class="computeroutput">contract_invariant_</code> defined respectively using the two code blocks from <code class="computeroutput">(static)({ ... })</code> and <code class="computeroutput">({ ... })</code>. </p></li>
+<li class="listitem"><p>Otherwise, if contract compilation is turned off, this macro expands to nothing (and no contract overhead is added).</p></li>
+</ul></div>
+<p>
+<span class="bold"><strong>Note:</strong></span> Even if a class has no invariants, you must still use this macro (with an empty code block) otherwise the library will generate a compile-time error saying that it cannot find the invariant check function for your class (see the Tutorial section for more information): </p>
+<pre class="programlisting"> <span class="keyword">class</span> <span class="identifier">myclass</span> <span class="special">{</span>
+
+ <span class="comment">// Assert no invariant (mandatory).</span>
+ <span class="identifier">CONTRACT_INVARIANT</span><span class="special">(</span> <span class="special">(</span><span class="special">{</span><span class="special">}</span><span class="special">)</span> <span class="special">)</span>
+
+ <span class="special">...</span> <span class="comment">// Rest of the class.</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p> In this case, <code class="computeroutput">CONTRACT_INVARIANT()</code> cannot be used instead of <code class="computeroutput">CONTRACT_INVARIANT( ({}) )</code>. This is because ISO standard C++ does not allow for empty macro parameters (this library also supports <code class="computeroutput">CONTRACT_INVARIANT()</code> but this will only compile on C99 so its use is not recommended -- see the Tutorial section for more information).</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_ASSERT()</code>, <code class="computeroutput">CONTRACT_CONSTRUCTOR()</code>, <code class="computeroutput">CONTRACT_DESTRUCTOR()</code>, <code class="computeroutput">CONTRACT_FUNCTION()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/from.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.macros_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="CONTRACT_CONSTRUCTOR.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_OLDOF.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_OLDOF.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_OLDOF</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp&gt;">
+<link rel="prev" href="contract/copy.html" title="Class template copy">
+<link rel="next" href="contract/state.html" title="Class state">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/copy.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/state.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_OLDOF"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_OLDOF</span></h2>
+<p>CONTRACT_OLDOF</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp</a>&gt;
+
+</span>CONTRACT_OLDOF(variable_name)</pre></div>
+<div class="refsect1">
+<a name="id978321"></a><h2>Description</h2>
+<p>Macro used to access old value for the variable with the specified name in postconditions.</p>
+<p>The library automatically declares variables to hold old values of types tagged <code class="computeroutput"><a class="link" href="contract/copyable.html" title="Class template copyable">contract::copyable</a></code> and makes then accessible in the postconditions code block (and from the postconditions code block only). This macro simply expands the specified name to the name of the old variable automatically declared by the library.</p>
+<p>For example, in postconditions of a member function <code class="computeroutput">void myvector&lt;T&gt;::push_back(const T&amp; element)</code>, if both the class type <code class="computeroutput">myvector</code> and the <code class="computeroutput">element</code> argument type <code class="computeroutput">const T&amp;</code> have been tagged copyable (see the <code class="computeroutput">sequence</code> parameter of <code class="computeroutput">CONTRACT_FUNCTION()</code> and <code class="computeroutput"><a class="link" href="contract/copy.html" title="Class template copy">contract::copy</a></code>) then the following old values are available: </p>
+<pre class="programlisting"> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="keyword">this</span><span class="special">)</span><span class="special">-&gt;</span><span class="special">...</span> <span class="comment">// Object old value.</span>
+ <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">element</span><span class="special">)</span><span class="special">...</span> <span class="comment">// Old value of function argument `element`.</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">variable_name</code></strong></span></td>
+<td>Use <code class="computeroutput">this</code> to access a pointer to the old object value. Use one of the function argument names to access the old value of that argument. The type of the variable with the specified name must be tagged <code class="computeroutput"><a class="link" href="contract/copyable.html" title="Class template copyable">contract::copyable</a></code> in the signature sequence its old value to be available (otherwise the use of this macro will generate a compile-time error with <code class="computeroutput">noold</code> in the error message). </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> This macro expands to code equivalent to the following: </p>
+<pre class="programlisting"> <span class="identifier">contract_old_</span> <span class="special">##</span> <span class="identifier">variable_name</span> <span class="special">##</span> <span class="identifier">_</span>
+</pre>
+<p> (The preprocessor operator <code class="computeroutput">##</code> concatenates the specified tokens.)</p>
+<p><span class="bold"><strong>Note:</strong></span> Shallow copies are performed for old values of pointer types (unless the pointed type defines a different copy constructor or <code class="computeroutput"><a class="link" href="contract/copy.html" title="Class template copy">contract::copy</a></code> has been specialized for the pointed type to perform a different copy operation). Therefore, if a pointer type is tagged <code class="computeroutput"><a class="link" href="contract/copyable.html" title="Class template copyable">contract::copyable</a></code>, the old pointer value will be available in the postconditions and not the old pointed value -- this might not be what you intended. The notable exception is the object which is passed by pointer (like <code class="computeroutput">this</code>) but its old value is automatically deep copied by the library.</p>
+<p><span class="bold"><strong>Note:</strong></span> The library supports old values for the object and all the function argument types. This is a subset of the old values supported by Eiffel which are old values for any expression that can be evaluated in postconditions. However, the old values supported by the library are usually enough to program the postconditions.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="contract/copy.html" title="Class template copy">contract::copy</a></code>, <code class="computeroutput"><a class="link" href="contract/copyable.html" title="Class template copyable">contract::copyable</a></code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/copy.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract/state.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/CONTRACT_WRAP_TYPE.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/CONTRACT_WRAP_TYPE.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,97 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro CONTRACT_WRAP_TYPE</title>
+<link rel="stylesheet" href="doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Contract++ 0.3.490">
+<link rel="up" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="contract/wrap_void_T__id437104.html" title="Struct template wrap&lt;void(T)&gt;">
+<link rel="next" href="contract__/Rationale.html" title="Annex: Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/wrap_void_T__id437104.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract__/Rationale.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="CONTRACT_WRAP_TYPE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro CONTRACT_WRAP_TYPE</span></h2>
+<p>CONTRACT_WRAP_TYPE</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span>CONTRACT_WRAP_TYPE(parenthesized_type)</pre></div>
+<div class="refsect1">
+<a name="id980750"></a><h2>Description</h2>
+<p>Macro used to pass type expressions with unwrapped commas as macro parameters.</p>
+<p>The C++ ISO standard preprocessor only recognizes the parenthesis <code class="computeroutput"></code>() and it does not recognize any other parenthesis like <code class="computeroutput">&lt;&gt;</code>, <code class="computeroutput">{}</code>, <code class="computeroutput"></code>[], etc.</p>
+<p>As a consequence, any comma within a macro parameter which is not wrapped by the <code class="computeroutput"></code>() parenthesis will be interpreted by the preprocessor as a separation token (the end of the current macro parameter and the start of the next macro parameter). See also the Tutorial section for more explanation and examples.</p>
+<p><span class="bold"><strong>Value Expressions</strong></span></p>
+<p>Value expressions passed as macro parameters and containing unwrapped commas can be wrapped by and extra set of parenthesis <code class="computeroutput"></code>().</p>
+<p>For example, this is OK because the comma `<code class="computeroutput">,</code>` is already wrapped by the parenthesis <code class="computeroutput"></code>() of the <code class="computeroutput">add()</code> function call: </p>
+<pre class="programlisting"> <span class="identifier">CONTRACT_ASSERT</span><span class="special">(</span> <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special">==</span> <span class="number">3</span> <span class="special">)</span><span class="special">;</span> <span class="comment">// OK.</span>
+</pre>
+<p> This is incorrect instead because the comma `<code class="computeroutput">,</code>` is not wrapped. It is interpreted as a call to <code class="computeroutput">CONTRACT_ASSERT()</code> passing <span class="bold"><strong>two</strong></span> distinct macro parameters `<code class="computeroutput">std::map&lt;double</code>` and `<code class="computeroutput">int&gt;().empty()</code>` separated by the comma `<code class="computeroutput">,</code>`: </p>
+<pre class="programlisting"> <span class="identifier">CONTRACT_ASSERT</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span><span class="special">(</span><span class="special">)</span><span class="special">.</span><span class="identifier">empty</span><span class="special">(</span><span class="special">)</span> <span class="special">)</span><span class="special">;</span> <span class="comment">// Error.</span>
+</pre>
+<p> However, it can be fixed by using and extra set of parenthesis to wrap the value expression: </p>
+<pre class="programlisting"> <span class="identifier">CONTRACT_ASSERT</span><span class="special">(</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span><span class="special">(</span><span class="special">)</span><span class="special">.</span><span class="identifier">empty</span><span class="special">(</span><span class="special">)</span><span class="special">)</span> <span class="special">)</span><span class="special">;</span> <span class="comment">// OK.</span>
+</pre>
+<p><span class="bold"><strong>Type Expressions</strong></span></p>
+<p>A similar issue arises when type expressions with unwrapped commas are passed as macro parameters (including when they are passed as preprocessor sequence elements): </p>
+<pre class="programlisting"> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="identifier">dobule</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">m</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span>
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span><span class="special">)</span> <span class="special">(</span><span class="identifier">m</span><span class="special">)</span><span class="special">(</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">)</span> <span class="comment">// Error.</span>
+ <span class="special">...</span>
+ <span class="special">)</span>
+</pre>
+<p> This is interpreted as a preprocessor 2-tuple with two elements `<code class="computeroutput">std::map&lt;double</code>` and `<code class="computeroutput">int&gt;</code>` separated by the comma `<code class="computeroutput">,</code>` instead that one single element of the preprocessor sequence.</p>
+<p><span class="bold"><strong>Note:</strong></span> Unfortunately, the approach followed for value expressions cannot be used for macro parameters that represent type expressions. That is because types wrapped by an extra set of parenthesis <code class="computeroutput"></code>() can introduce syntax or semantics errors depending on the context where they are used. For example, with respect to <code class="computeroutput">std::map&lt;double, int&gt;</code>, the wrapped type expression <code class="computeroutput">(std::map&lt;double, int&gt;)</code> could be compiled a C-style type cast potentically introducing a semantic error, or it could generate a syntax error if it were used to declare a variable.</p>
+<p>The macro <code class="computeroutput">CONTRACT_WRAP_TYPE()</code> (or equivalently the <code class="computeroutput"><a class="link" href="contract/wrap.html" title="Struct template wrap">contract::wrap</a></code> class template) is be used to overcome this limitation: </p>
+<pre class="programlisting"> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="identifier">dobule</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">m</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span>
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span> <span class="special">(</span><span class="identifier">CONTRACT_WRAP_TYPE</span><span class="special">(</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span><span class="special">)</span> <span class="special">)</span><span class="special">)</span> <span class="comment">//OK.</span>
+ <span class="special">(</span><span class="identifier">m</span><span class="special">)</span><span class="special">(</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">)</span>
+ <span class="special">...</span>
+ <span class="special">)</span>
+</pre>
+<p> Note that the extra pair of parenthesis <code class="computeroutput"></code>() used in invoking the macro are mandatory as they wrap the comma(s) so one parameter (not many) is passed to the macro.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">parenthesized_type</code></strong></span></td>
+<td>The type expression wrapped within an extra set of mandatory parenthesis <code class="computeroutput"></code>(). </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> The macro in the example above expands to code equivalent to the following: </p>
+<pre class="programlisting"> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="identifier">dobule</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">m</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span>
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span> <span class="special">(</span><span class="identifier">contract</span><span class="special">::</span><span class="identifier">wrap</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span><span class="special">)</span><span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">m</span><span class="special">)</span><span class="special">(</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">)</span>
+ <span class="special">...</span>
+ <span class="special">)</span>
+</pre>
+<p> <span class="bold"><strong>See:</strong></span> <a class="link" href="contract/wrap.html" title="Struct template wrap">contract::wrap</a>, Tutorial section </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract/wrap_void_T__id437104.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="contract__/Rationale.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/block_invariant_failed.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/block_invariant_failed.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function block_invariant_failed</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="set_block_invariant_failed.html" title="Function set_block_invariant_failed">
+<link rel="next" href="set_class_invariant_failed.html" title="Function set_class_invariant_failed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="set_block_invariant_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="set_class_invariant_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.block_invariant_failed"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function block_invariant_failed</span></h2>
+<p>contract::block_invariant_failed</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="keyword">void</span> <span class="identifier">block_invariant_failed</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">from</span> <span class="special">&amp;</span> where<span class="special">)</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id959749"></a><h2>Description</h2>
+<p>Automatically invoked by this library when a block invariant condition fails.</p>
+<p>It calls <code class="computeroutput">std::terminate()</code> by default but it can be redefined using <code class="computeroutput">contract::set_block_invariant_failed()</code>. When this function is called, the exception raised by the contract failure is the active unhandled exception (which can be re-thrown using <code class="computeroutput">throw</code> and then caught, see Throw on Failure annex).</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">where</code></strong></span></td>
+<td>The source that found the the block invariant failure. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="set_block_invariant_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="set_class_invariant_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/class_invariant_failed.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/class_invariant_failed.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function class_invariant_failed</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="set_class_invariant_failed.html" title="Function set_class_invariant_failed">
+<link rel="next" href="set_precondition_failed.html" title="Function set_precondition_failed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="set_class_invariant_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="set_precondition_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.class_invariant_failed"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function class_invariant_failed</span></h2>
+<p>contract::class_invariant_failed</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="keyword">void</span> <span class="identifier">class_invariant_failed</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">from</span> <span class="special">&amp;</span> where<span class="special">)</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id960041"></a><h2>Description</h2>
+<p>Automatically invoked by this library when a class invariant condition fails.</p>
+<p>It calls <code class="computeroutput">std::terminate()</code> by default but it can be redefined using <code class="computeroutput">contract::set_class_invariant_failed()</code>. When this function is called, the exception raised by the contract failure is the active unhandled exception (which can be re-thrown using <code class="computeroutput">throw</code> and then caught, see Throw on Failure annex).</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">where</code></strong></span></td>
+<td>The source that found the the invariant failure. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="set_class_invariant_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="set_precondition_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/constructor.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/constructor.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,178 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template constructor</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.constructor_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/constructor.hpp&gt;">
+<link rel="prev" href="../CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html" title="Macro CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE">
+<link rel="next" href="../CONTRACT_CHECK_BLOCK_INVARIANT.html" title="Macro CONTRACT_CHECK_BLOCK_INVARIANT">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.constructor_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_CHECK_BLOCK_INVARIANT.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.constructor"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template constructor</span></h2>
+<p>contract::constructor</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.constructor_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/constructor.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/constructor.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="constructor.html" title="Class template constructor">constructor</a> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">contract</span><span class="special">::</span><span class="identifier">nonstatic_member_function</span><span class="special">&lt;</span> <span class="identifier">F</span> <span class="special">&gt;</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="constructor.html#contract.constructorconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="constructor.html#id431593-bb"><span class="identifier">constructor</span></a><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span><span class="special">,</span> <span class="identifier">__PreconditionFunctionPointer__</span><span class="special">,</span>
+ <span class="identifier">__PostconditionFunctionPointer__</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="constructor.html#id431801-bb"><span class="special">~</span><span class="identifier">constructor</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="constructor.html#id431522-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="constructor.html#id431526-bb"><span class="identifier">call</span></a><span class="special">(</span><span class="identifier">__MaybeCvClassPointer__</span><span class="special">,</span> <span class="identifier">ArgumentType1</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumetnTypeN</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id966454"></a><h2>Description</h2>
+<p>Class template used to write contracts for constructors.</p>
+<p><span class="bold"><strong>Note:</strong></span> Only the differences between this class and the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> class are documented here. Read the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> documentation first.</p>
+<p>The <code class="computeroutput">CONTRACT_CONSTRUCTOR()</code> macro expands to code that uses this class template (see the Without the Macros section) -- whenever possible, use the macro instead of using this class template directly. Rarely, it might be needed to use this class template directly to implement workarounds for compilers that do not fully comply with the ISO C++ standard.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">F</code></strong></span></td>
+<td>The function type of the constructor function being contracted. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p>Base contract classes cannot be specified because constructors do not directly subcontract (C++ object construction mechanism will automatically invoke base class contracts when they are present).</p>
+<p>The function type <code class="computeroutput">F</code> must be specified as follows: </p>
+<pre class="programlisting"> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">ClassType</span><span class="special">*</span><span class="special">,</span> <span class="identifier">ArgumentType1</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumentTypeN</span><span class="special">)</span>
+</pre>
+<p> Note: </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The result type is always <code class="computeroutput">void</code> because constructors return no value. </p></li>
+<li class="listitem"><p><code class="computeroutput">ClassType</code> is never <code class="computeroutput">const</code> because constructors can never be constant members (as they modify the object by constructing it). </p></li>
+<li class="listitem"><p><code class="computeroutput">ClassType</code> cannot be tagged <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> because there is no object before constructor body execution (it has not been constructed yet) -- the library will generate a compile-time error otherwise.</p></li>
+</ul></div>
+<p>
+<span class="bold"><strong>See:</strong></span> Without the Macros section, <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> </p>
+<div class="refsect2">
+<a name="id966708"></a><h3>
+<a name="contract.constructorconstruct-copy-destruct"></a><code class="computeroutput">constructor</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id431593-bb"></a><span class="identifier">constructor</span><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span> body_function<span class="special">,</span>
+ <span class="identifier">__PreconditionFunctionPointer__</span> precondition_function<span class="special">,</span>
+ <span class="identifier">__PostconditionFunctionPointer__</span> postcondition_function<span class="special">)</span><span class="special">;</span></pre>
+<p>Construct this contract object using the specified body, preconditions, and postconditions functions.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">body_function</code></strong></span></td>
+<td>A pointer to the function executing the body. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">precondition_function</code></strong></span></td>
+<td>A pointer to the function asserting the preconditions. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">postcondition_function</code></strong></span></td>
+<td>A pointer to the function asserting the postconditions. </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p>Refer to the <code class="computeroutput"><code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code></code> documentation for the definition of metaprogramming constructs used below (<code class="computeroutput">__IfCopyable__</code>, etc).</p>
+<p>The body function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef void (ClassType::* __BodyFunctionPointer__)
+ ( __RemoveCopyable__&lt; ArgumentType1 &gt;,
+ ...,
+ __RemoveCopyable__&lt; ArgumentTypeN &gt;
+ );
+</pre>
+<p>The precondition function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef void (* __PreconditionFunctionPointer__)
+ ( boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type,
+ ...,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type
+ );
+</pre>
+<p> </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>This is a <span class="bold"><strong>static</strong></span> member function (because is does not specify the class type using <code class="computeroutput">(*)</code> instead of <code class="computeroutput">(ClassType::*)</code>). This ensures that constructor preconditions do not access the object (as before constructor body no object has been constructed yet). </p></li>
+<li class="listitem"><p>The precondition function is never <code class="computeroutput">const</code> (because is must be <code class="computeroutput">static</code>).</p></li>
+</ul></div>
+<p>
+The postcondition function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef void (ClassType::* __PreconditionFunctionPointer__)
+ ( contract::noold,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type,
+ __IfCopyable__&lt; ArgumentType1,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type &gt;,
+ ...,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type,
+ __IfCopyable__&lt; ArgumentTypeN,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type &gt;
+ ) const;
+</pre>
+<p> </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>The old object value is never available (it is always of type <code class="computeroutput">contract::noold</code>). This ensure that constructor postconditions never access the object old value (as there was no object before constructor body execution). </p></li></ul></div>
+<p>
+</p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id431801-bb"></a><span class="special">~</span><span class="identifier">constructor</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Destroy this contract object. </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id967077"></a><h3>
+<a name="id431522-bb"></a><code class="computeroutput">constructor</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id431526-bb"></a><span class="identifier">call</span><span class="special">(</span><span class="identifier">__MaybeCvClassPointer__</span> object<span class="special">,</span> <span class="identifier">ArgumentType1</span> argument1<span class="special">,</span> <span class="special">...</span><span class="special">,</span>
+ <span class="identifier">ArgumetnTypeN</span> argumentN<span class="special">)</span><span class="special">;</span></pre>
+<p>Check the contract and executes the member function body.</p>
+<p>Refer to the <code class="computeroutput"><code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code></code> documentation.</p>
+<p>Accordingly with <code class="computeroutput">F</code>, the <code class="computeroutput">call()</code> function always returns <code class="computeroutput">void</code>. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.constructor_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_CHECK_BLOCK_INVARIANT.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/contract_failed_handler.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/contract_failed_handler.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Type definition contract_failed_handler</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="failure.html" title="Class failure">
+<link rel="next" href="set_block_invariant_failed.html" title="Function set_block_invariant_failed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="failure.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="set_block_invariant_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.contract_failed_handler"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Type definition contract_failed_handler</span></h2>
+<p>contract_failed_handler</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="keyword">typedef</span> <span class="identifier">__ContractFailedHandler__</span> <span class="identifier">contract_failed_handler</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id959391"></a><h2>Description</h2>
+<p>Function pointer type of the contract condition failure handler functions.</p>
+<p>Where the function pointer type __ContractFailedHandler__ is defined as follows: </p>
+<pre class="programlisting"> <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="special">(</span><span class="special">*</span> <span class="identifier">contract_failed_handler</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">from</span><span class="special">&amp;</span> <span class="identifier">where</span><span class="special">)</span><span class="special">;</span>
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">where</code></strong></span></td>
+<td>The source that found the condition failure. This is useful for example to program failure handlers that throw exceptions in general but never from within destructors. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> Throw on Failure annex for an example. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="failure.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="set_block_invariant_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/copy.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/copy.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template copy</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp&gt;">
+<link rel="prev" href="copyable.html" title="Class template copyable">
+<link rel="next" href="../CONTRACT_OLDOF.html" title="Macro CONTRACT_OLDOF">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="copyable.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_OLDOF.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.copy"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template copy</span></h2>
+<p>contract::copy</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="copy.html" title="Class template copy">copy</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="copy.html#contract.copyconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="copy.html#id436197-bb"><span class="identifier">copy</span></a><span class="special">(</span><span class="identifier">__ConstRef__</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="copy.html#contract.copypublic-data-members">public data members</a></span>
+ <span class="identifier">__ConstType__</span> <a class="link" href="copy.html#contract.copy.value"><span class="identifier">value</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id976743"></a><h2>Description</h2>
+<p>Copy wrapper used by the library to make the actual copy of variables for which old values are needed in postconditions.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type of the object being copied. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Note:</strong></span> Under most circumstances programmers do <span class="bold"><strong>not</strong></span> need to use this class which is usually just used internally by the library.</p>
+<p>Specifically, if the copied type <code class="computeroutput">T</code> already has a public constant-correct copy constructor then the <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> template will use such a constructor by default and programmers do not need to define any specialization of the <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> template. </p>
+<pre class="programlisting"> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">T</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">source</span><span class="special">)</span><span class="special">;</span> <span class="comment">// Public constant-correct copy constructor.</span>
+
+ <span class="special">...</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p> The constructor needs to be public for the library to access it and it needs to be contract-correct for the library to use it while still ensuring the contract-correctness of the contract checking code.</p>
+<p>However, the <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> template can be specialized by programmers to expose a non-public constant-correct copy constructor to the library via friendship: </p>
+<pre class="programlisting"> <span class="keyword">class</span> <span class="identifier">x</span> <span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// User class with no public copy constructor.</span>
+
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="comment">// Only the library can access this copy constructor via friendship.</span>
+ <span class="keyword">friend</span> <span class="keyword">class</span> <a class="link" href="copy.html" title="Class template copy">contract::copy</a><span class="special">&lt;</span><span class="identifier">x</span><span class="special">&gt;</span><span class="special">;</span>
+ <span class="identifier">x</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">x</span><span class="special">*</span> <span class="identifier">source</span><span class="special">)</span><span class="special">;</span> <span class="comment">// Constant-correct (private) copy constructor.</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p>Furthermore, programmers can specialize the <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> template for a user defined type in order to relax the library requirement of an accessible constant-correct copy constructor all together (it is recommended <span class="bold"><strong>not</strong></span> to do this unless strictly necessary). </p>
+<pre class="programlisting"> <span class="keyword">class</span> <span class="identifier">y</span><span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">noncopyable</span> <span class="special">{</span> <span class="comment">// User class with no copy constructor at all.</span>
+ <span class="comment">// Self backup copy maintained by the class itself.</span>
+ <span class="identifier">y</span> <span class="identifier">backup_copy</span><span class="special">;</span> <span class="comment">// Use this as the old value.</span>
+
+ <span class="special">...</span>
+ <span class="special">}</span><span class="special">;</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">contract</span> <span class="special">{</span>
+
+ <span class="comment">// Specialization to handle y old value without copying it.</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">copy</span><span class="special">&lt;</span><span class="identifier">y</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// It must declare a member variable named `value`.</span>
+ <span class="keyword">const</span> <span class="identifier">y</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">;</span> <span class="comment">// Maintains constant-correctness by using const member.</span>
+
+ <span class="comment">// It must defined this copy constructor. It must maintains</span>
+ <span class="comment">// constant-correctness taking a constant reference to `source`.</span>
+ <span class="identifier">copy</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">y</span><span class="special">&amp;</span> <span class="identifier">source</span><span class="special">)</span><span class="special">:</span>
+ <span class="comment">// This does not copy `source` (`value` is a reference).</span>
+ <span class="comment">// Instead it uses its `source` existing backup copy.</span>
+ <span class="identifier">value</span><span class="special">(</span><span class="identifier">source</span><span class="special">.</span><span class="identifier">backup_copy</span><span class="special">)</span> <span class="special">{</span><span class="special">}</span>
+ <span class="special">}</span><span class="special">;</span>
+
+ <span class="special">}</span> <span class="comment">// namespace</span>
+</pre>
+<p>The <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> template can also be specialized to alter the copy semantics for a type (it is recommended <span class="bold"><strong>not</strong></span> to do this unless strictly necessary). For example, by default a pointer to a double number <code class="computeroutput">double*</code> is copied by copying the pointer value and not by copying the pointed number (this is the usual C++ copy semantic for pointers). The following specialization of <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> copies the pointed number instead of the pointer value for postcondition old values of argument of type <code class="computeroutput">double*</code>. </p>
+<pre class="programlisting"> <span class="keyword">namespace</span> <span class="identifier">contract</span> <span class="special">{</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">copy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">*</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">double</span> <span class="identifier">number_</span><span class="special">;</span> <span class="comment">// Copied pointed number value.</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">const</span> <span class="keyword">double</span><span class="special">*</span> <span class="identifier">value</span><span class="special">;</span> <span class="comment">// Pointer to number_.</span>
+
+ <span class="identifier">copy</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">double</span><span class="special">*</span> <span class="identifier">number_ptr</span><span class="special">)</span><span class="special">:</span> <span class="identifier">number_</span><span class="special">(</span><span class="special">)</span><span class="special">,</span> <span class="identifier">value</span><span class="special">(</span><span class="special">&amp;</span><span class="identifier">number_</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// Check pointer is valid.</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="special">!</span><span class="identifier">number_ptr</span><span class="special">)</span> <span class="keyword">throw</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span><span class="special">(</span><span class="string">"Invalid number pointer"</span><span class="special">)</span><span class="special">;</span>
+ <span class="identifier">number_</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">number_ptr</span><span class="special">;</span> <span class="comment">// Copy the *pointed* number.</span>
+ <span class="special">}</span>
+ <span class="special">}</span><span class="special">;</span>
+
+ <span class="special">}</span> <span class="comment">// namespace</span>
+</pre>
+<p>See also the Examples section for a concrete example that specializes <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> to relax the accessible constant-correct constructor requirement. </p>
+<div class="refsect2">
+<a name="id977971"></a><h3>
+<a name="contract.copyconstruct-copy-destruct"></a><code class="computeroutput">copy</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><a name="id436197-bb"></a><span class="identifier">copy</span><span class="special">(</span><span class="identifier">__ConstRef__</span> source<span class="special">)</span><span class="special">;</span></pre>
+<p>Constructor which copies the specified object.</p>
+<p>The copy is done by constructing the member variable `value` using an accessible constant-correct copy constructor for <code class="computeroutput">T</code> (which must be available otherwise the library will generate a compile-time error).</p>
+<p><span class="bold"><strong>Note:</strong></span> Source is a constant reference so to ensure contract checking constant-correctness (correctly, this constraint cannot be relaxed not even by specializing this class template).</p>
+<p>The constant reference type is defined as follows: </p>
+<pre class="programlisting"> typedef typename boost::add_reference&lt;const_type&gt;::type __ConstRef__;
+</pre>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">source</code></strong></span></td>
+<td>The source object to be copied into the <code class="computeroutput">value</code> member variable. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+</li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id978108"></a><h3>
+<a name="contract.copypublic-data-members"></a><code class="computeroutput">copy</code>
+ public
+ public data members</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="identifier">__ConstType__</span> <a name="contract.copy.value"></a><span class="identifier">value</span><span class="special">;</span></pre>
+<p>The copied value (used as the old value in postconditions).</p>
+<p>The variable type is defined as follows: </p>
+<pre class="programlisting"> <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">add_const</span><span class="special">&lt;</span><span class="keyword">typename</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span><span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span> <span class="identifier">__ConstType__</span><span class="special">;</span>
+</pre>
+<p> </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="copyable.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_OLDOF.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/copyable.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/copyable.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template copyable</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp&gt;">
+<link rel="prev" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">
+<link rel="next" href="copy.html" title="Class template copy">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nonstatic_member_function.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="copy.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.copyable"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template copyable</span></h2>
+<p>contract::copyable</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/old.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="copyable.html" title="Class template copyable">copyable</a> <span class="special">{</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id976260"></a><h2>Description</h2>
+<p>Tag the specified type <code class="computeroutput">T</code> copyable.</p>
+<p>In general, you should tag a type copyable <span class="bold"><strong>only</strong></span> when the related variable old value (before body execution) is really needed in postconditions because:</p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><p>The correspondent variable value will be copied before body execution adding run-time overhead. The library performs the extra copy to support old values in postconditions only for variables of types tagged copyable and only when the <code class="computeroutput">CONTRACT_CHECK_POSTCONDITION</code> macro is defined.</p></li>
+<li class="listitem">
+<p>A type tagged copyable has the extra requirement that it must define an accessible constant-correct copy constructor (otherwise the library will generate a compile-time error). The copy constructor is constant-correct when it accesses the copied value via a constant reference argument (this way the copied value cannot be mistakenly modified while it is being copied to check contracts): </p>
+<pre class="programlisting"> <span class="identifier">T</span><span class="special">::</span><span class="identifier">T</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">source</span><span class="special">)</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span> <span class="comment">// Must be accessible and construct from a const&amp;.</span>
+</pre>
+<p> See <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> to relax this requirement.</p>
+</li>
+</ol></div>
+<p>
+</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>The type to be tagged. The <span class="bold"><strong>entire</strong></span> type with eventual <code class="computeroutput">const</code>, <code class="computeroutput">&amp;</code>, <code class="computeroutput">*</code>, etc qualifier should be tagged copyable. For example, if the type is <code class="computeroutput">const int&amp;</code> then <code class="computeroutput">contract::copyable&lt;const int&amp;&gt;</code> should be used (and not <code class="computeroutput">const contract::copyable&lt;int&gt;&amp;</code>). </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Note:</strong></span> When using the contract macros, <code class="computeroutput">(copyable)(T)</code> is used instead of <code class="computeroutput">contract::copyable&lt;T&gt;</code> to tag the type <code class="computeroutput">T</code> copyable in the macro <code class="computeroutput">sequence</code> parameter.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">CONTRACT_OLDOF()</code>, <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nonstatic_member_function.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.old_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="copy.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/destructor.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/destructor.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,130 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template destructor</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.destructor_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/destructor.hpp&gt;">
+<link rel="prev" href="../CONTRACT_CHECK_POSTCONDITION.html" title="Macro CONTRACT_CHECK_POSTCONDITION">
+<link rel="next" href="from.html" title="Type from">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_CHECK_POSTCONDITION.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.destructor_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="from.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.destructor"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template destructor</span></h2>
+<p>contract::destructor</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.destructor_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/destructor.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/destructor.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="destructor.html" title="Class template destructor">destructor</a> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">contract</span><span class="special">::</span><span class="identifier">nonstatic_member_function</span><span class="special">&lt;</span> <span class="identifier">F</span> <span class="special">&gt;</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="destructor.html#contract.destructorconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="destructor.html#id432227-bb"><span class="identifier">destructor</span></a><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="destructor.html#id432297-bb"><span class="special">~</span><span class="identifier">destructor</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="destructor.html#id432179-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="destructor.html#id432183-bb"><span class="identifier">call</span></a><span class="special">(</span><span class="identifier">__MaybeCvClassPointer__</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id968109"></a><h2>Description</h2>
+<p>Class template used to write contracts for destructors.</p>
+<p><span class="bold"><strong>Note:</strong></span> Only the differences between this class and the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> class are documented here. Read the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> documentation first.</p>
+<p>The <code class="computeroutput">CONTRACT_DESTRUCTOR()</code> macro expands to code that uses this class template (see the Without the Macros section) -- whenever possible, use the macro instead of using this class template directly. Rarely, it might be needed to use this class template directly to implement workarounds for compilers that do not fully comply with the ISO C++ standard.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">F</code></strong></span></td>
+<td>The function type for the destructor being contracted. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p>Base contract classes cannot be specified because destructors do not directly subcontract (C++ object destruction mechanism will automatically invoke base class contracts when they are present).</p>
+<p>The function type <code class="computeroutput">F</code> must be specified as follows: </p>
+<pre class="programlisting"> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">ClassType</span><span class="special">::</span><span class="special">*</span><span class="special">)</span><span class="special">(</span><span class="special">)</span>
+</pre>
+<p> Note: </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The result type is always <code class="computeroutput">void</code> because destructors return no value. </p></li>
+<li class="listitem"><p><code class="computeroutput">ClassType</code> is never <code class="computeroutput">const</code> because destructors can never be constant members (as they modify the object by destructing it). </p></li>
+<li class="listitem"><p><code class="computeroutput">ClassType</code> cannot be tagged <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> because there is no object before destructor body execution (it has not been destructed yet) -- the library will generate a compile-time error otherwise. </p></li>
+<li class="listitem"><p>There is no function argument type because destructors take no argument.</p></li>
+</ul></div>
+<p>
+<span class="bold"><strong>See:</strong></span> Without the Macros section, <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> </p>
+<div class="refsect2">
+<a name="id968346"></a><h3>
+<a name="contract.destructorconstruct-copy-destruct"></a><code class="computeroutput">destructor</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id432227-bb"></a><span class="identifier">destructor</span><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span> body_function<span class="special">)</span><span class="special">;</span></pre>
+<p>Construct this contract object using the specified body.</p>
+<p>No precondition and no postcondition function is specified (destructors only check class invariants). This is because destructors have no arguments so there are no preconditions, in addition there is no object after destructor body execution so there are no postconditions (see Tutorial section for more information).</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">body_function</code></strong></span></td>
+<td>A pointer to the function executing the body. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p>The body function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef void (ClassType::* __BodyFunctionPointer__)();
+</pre>
+<p> </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Destructor body takes no argument. </p></li></ul></div>
+<p>
+</p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id432297-bb"></a><span class="special">~</span><span class="identifier">destructor</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Destroy this contract object. </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id968514"></a><h3>
+<a name="id432179-bb"></a><code class="computeroutput">destructor</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id432183-bb"></a><span class="identifier">call</span><span class="special">(</span><span class="identifier">__MaybeCvClassPointer__</span> object<span class="special">)</span><span class="special">;</span></pre>
+<p>Check the contract and executes the member function body.</p>
+<p>Refer to the <code class="computeroutput"><code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code></code> documentation.</p>
+<p>Accordingly with <code class="computeroutput">F</code>, the <code class="computeroutput">call()</code> function always returns void and it takes no argument. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_CHECK_POSTCONDITION.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.destructor_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="from.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/failure.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/failure.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,140 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class failure</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="contract_failed_handler.html" title="Type definition contract_failed_handler">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="contract_failed_handler.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.failure"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class failure</span></h2>
+<p>contract::failure</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="keyword">class</span> <a class="link" href="failure.html" title="Class failure">failure</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="failure.html#contract.failureconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <span class="keyword">explicit</span> <a class="link" href="failure.html#id425493-bb"><span class="identifier">failure</span></a><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="special">=</span> <span class="string">""</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="failure.html#id263277-bb"><span class="identifier">failure</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="failure.html" title="Class failure">failure</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+ failure&amp; <a class="link" href="failure.html#id263293-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="failure.html" title="Class failure">failure</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="failure.html#id263309-bb"><span class="special">~</span><span class="identifier">failure</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="failure.html#id425420-bb">public member functions</a></span>
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <a class="link" href="failure.html#id425424-bb"><span class="identifier">what</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <a class="link" href="failure.html#id425448-bb"><span class="identifier">file</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">unsigned</span> <span class="keyword">long</span> <a class="link" href="failure.html#id425462-bb"><span class="identifier">line</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <a class="link" href="failure.html#id425475-bb"><span class="identifier">description</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id958496"></a><h2>Description</h2>
+<p>Default exception thrown when a contract condition is found to be false.</p>
+<p>It is recommended to assert contract conditions using the <code class="computeroutput">CONTRACT_ASSERT()</code> macro instead of throwing this exception directly.</p>
+<p>The library handles exceptions (any exception, not just this one) when thrown from within block invariants (plus loop variants), class invariants, preconditions, and postconditions invoking <code class="computeroutput">contract::block_invariant_failed()</code>, <code class="computeroutput">contract::class_invariant_failed()</code>, <code class="computeroutput">contract::precondition_failed()</code>, and <code class="computeroutput">contract::postcondition_failed()</code> respectively (see the Without the Macros section).</p>
+<p>Therefore, throwing this exception on a contract condition failure does <span class="bold"><strong>not</strong></span> imply that an exception will be thrown overall to handle the failure. It only implies that the correct contract failure handler function will be automatically invoked by the library (after checking eventual overridden contracts for subcontracting, etc). It is not possible to call the failure handler functions directly instead of throwing the exception because that will not allow the library to check overridden contracts when subcontracting. The failure handler functions will then decide the action to take (the default handlers provided by the library invoke <code class="computeroutput">std::terminate()</code> but programmers can redefine this behaviour using <code class="computeroutput">contract::set_block_invariant_failed()</code>, <code class="computeroutput">contract::set_class_invariant_failed()</code>, <code class="computeroutput">contract::set_precondition_failed()</code>, and <cod
e class="computeroutput">contract::set_postcondition_failed()</code>).</p>
+<p>The member functions of this class do not throw (their exception specification is <code class="computeroutput">thow()</code>) so they can be safely used when checking contracts in compliance with STL C++ exception safety requirements at all times.</p>
+<p><span class="bold"><strong>See:</strong></span> Without the Macros section. </p>
+<div class="refsect2">
+<a name="id958633"></a><h3>
+<a name="contract.failureconstruct-copy-destruct"></a><code class="computeroutput">failure</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">explicit</span> <a name="id425493-bb"></a><span class="identifier">failure</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> file<span class="special">,</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="special">&amp;</span> line<span class="special">,</span>
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> description <span class="special">=</span> <span class="string">""</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Create a condition failure object.</p>
+<p>All the constructor parameters are used to provide more descriptive error messages in case of contract condition failure. At least the file and line number must be specified so to uniquely identify the point of the contract condition failure.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">file</code></strong></span></td>
+<td>The source code file containing the failed contract condition (use <code class="computeroutput">__FILE__</code>). </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">line</code></strong></span></td>
+<td>The source code line number containing the failed contract condition (use <code class="computeroutput">__LINE__</code>). </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">description</code></strong></span></td>
+<td>An optional human readable description of the contract condition failure (<code class="computeroutput">""</code> if not specified). </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id263277-bb"></a><span class="identifier">failure</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="failure.html" title="Class failure">failure</a> <span class="special">&amp;</span> source<span class="special">)</span><span class="special">;</span></pre>
+<p>Create a condition failure object copying it from the specified one. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout">failure&amp; <a name="id263293-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="failure.html" title="Class failure">failure</a> <span class="special">&amp;</span> source<span class="special">)</span><span class="special">;</span></pre>
+<p>Copy a condition failure from the specified one. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id263309-bb"></a><span class="special">~</span><span class="identifier">failure</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Destroy the condition failure object. </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id959038"></a><h3>
+<a name="id425420-bb"></a><code class="computeroutput">failure</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <a name="id425424-bb"></a><span class="identifier">what</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>Return a human readable message explaining the nature of the condition failure.</p>
+<p><span class="bold"><strong>Returns:</strong></span> The actual message text is library implementation specific but it will contain the condition description, the file name, and the line number (when specified). For example, the returned message could look like this: </p>
+<pre class="programlisting"> contract "size increased by 1" failed at myvector.cpp:40
+</pre>
+<p> </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <a name="id425448-bb"></a><span class="identifier">file</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>Return the condition failure source file. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">unsigned</span> <span class="keyword">long</span> <a name="id425462-bb"></a><span class="identifier">line</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>Return the condition failure source line number. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <a name="id425475-bb"></a><span class="identifier">description</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>Return the condition failure description (<code class="computeroutput">""</code> if not specified). </p>
+</li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="contract_failed_handler.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/from.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/from.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Type from</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.from_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/from.hpp&gt;">
+<link rel="prev" href="destructor.html" title="Class template destructor">
+<link rel="next" href="../CONTRACT_INVARIANT.html" title="Macro CONTRACT_INVARIANT">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="destructor.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.from_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_INVARIANT.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.from"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Type from</span></h2>
+<p>contract::from</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.from_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/from.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/from.hpp</a>&gt;
+
+</span>
+<span class="keyword">enum</span> <span class="identifier">from</span> <span class="special">{</span> <a class="link" href="from.html#contract.from.FROM_CONSTRUCTOR">FROM_CONSTRUCTOR</a>, <a class="link" href="from.html#contract.from.FROM_DESTRUCTOR">FROM_DESTRUCTOR</a>, <a class="link" href="from.html#contract.from.FROM_NONSTATIC_MEMBER_FUNCTION">FROM_NONSTATIC_MEMBER_FUNCTION</a>,
+ <a class="link" href="from.html#contract.from.FORM_STATIC_MEMBER_FUNCTION">FORM_STATIC_MEMBER_FUNCTION</a>, <a class="link" href="from.html#contract.from.FROM_NONMEMBER_FUNCTION">FROM_NONMEMBER_FUNCTION</a>, <a class="link" href="from.html#contract.from.FROM_BLOCK">FROM_BLOCK</a> <span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id968823"></a><h2>Description</h2>
+<p>Source that found the contract condition failure.</p>
+<p>For example, this is used in the Throw on Failure annex to ensure that destructors never throw to comply with C++ STL exception safety requirements.</p>
+<p>These failure sources are identified separately because they all have different contract checking semantics with respect to each other (see the Tutorial section).</p>
+<p><span class="bold"><strong>Warning:</strong></span> You must not assume any specific integer value for these enumerated values. Only use the enumerated values because the integer values they map to are library implementation specific and they could change in future revisions of the library.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">contract::contract_failed_handler</code> </p>
+<div class="variablelist"><dl>
+<dt><span class="term"><code class="computeroutput">FROM_CONSTRUCTOR</code><a name="contract.from.FROM_CONSTRUCTOR"></a></span></dt>
+<dd><p>Contract condition failed from a constructor. </p></dd>
+<dt><span class="term"><code class="computeroutput">FROM_DESTRUCTOR</code><a name="contract.from.FROM_DESTRUCTOR"></a></span></dt>
+<dd><p>Contract condition failed from a destructor. </p></dd>
+<dt><span class="term"><code class="computeroutput">FROM_NONSTATIC_MEMBER_FUNCTION</code><a name="contract.from.FROM_NONSTATIC_MEMBER_FUNCTION"></a></span></dt>
+<dd><p>Contract condition failed from a non-static member function. </p></dd>
+<dt><span class="term"><code class="computeroutput">FORM_STATIC_MEMBER_FUNCTION</code><a name="contract.from.FORM_STATIC_MEMBER_FUNCTION"></a></span></dt>
+<dd><p>Contract condition failed from a static member function. </p></dd>
+<dt><span class="term"><code class="computeroutput">FROM_NONMEMBER_FUNCTION</code><a name="contract.from.FROM_NONMEMBER_FUNCTION"></a></span></dt>
+<dd><p>Contract condition failed from a non-member function. </p></dd>
+<dt><span class="term"><code class="computeroutput">FROM_BLOCK</code><a name="contract.from.FROM_BLOCK"></a></span></dt>
+<dd><p>Contract condition failed from a code block. </p></dd>
+</dl></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="destructor.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.from_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_INVARIANT.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/loop_variant_type.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/loop_variant_type.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Type definition loop_variant_type</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">
+<link rel="prev" href="../CONTRACT_ASSERT_MSG.html" title="Macro CONTRACT_ASSERT_MSG">
+<link rel="next" href="../CONTRACT_ASSERT_BLOCK_INVARIANT.html" title="Macro CONTRACT_ASSERT_BLOCK_INVARIANT">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_ASSERT_MSG.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_ASSERT_BLOCK_INVARIANT.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.loop_variant_type"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Type definition loop_variant_type</span></h2>
+<p>loop_variant_type</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/block.hpp</a>&gt;
+
+</span>
+<span class="keyword">typedef</span> <span class="identifier">__Integer__</span> <span class="identifier">loop_variant_type</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id961515"></a><h2>Description</h2>
+<p>The type of the loop variant expression.</p>
+<p>The <code class="computeroutput">__Integer__</code> type is a signed integer type but its actual type is library implementation specific.</p>
+<p><span class="bold"><strong>Note:</strong></span> While the loop variant expression type is signed, the loop variant value is asserted to be always positive (<code class="computeroutput">&gt; 0</code>).</p>
+<p>For example, you can use this type to convert (not cast) the variant expression into the variant type: </p>
+<pre class="programlisting"> <span class="identifier">CONTRACT_INIT_LOOP_VARIANT</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">size</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">CONTRACT_ASSERT_LOOP_VARIANT</span><span class="special">(</span> <span class="identifier">loop_variant_type</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">size</span><span class="special">(</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">i</span><span class="special">)</span> <span class="special">)</span><span class="special">;</span>
+ <span class="special">...</span>
+ <span class="special">}</span>
+</pre>
+<p> Note this is <span class="bold"><strong>not</strong></span> a type cast so it will generate a compile-time error if the type conversion if not possible. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_ASSERT_MSG.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.block_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_ASSERT_BLOCK_INVARIANT.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/nonmember_function.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/nonmember_function.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,167 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template nonmember_function</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.nonmember_function_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/nonmember_function.hpp&gt;">
+<link rel="prev" href="../CONTRACT_FUNCTION.html" title="Macro CONTRACT_FUNCTION">
+<link rel="next" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_FUNCTION.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.nonmember_function_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="nonstatic_member_function.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.nonmember_function"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template nonmember_function</span></h2>
+<p>contract::nonmember_function</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.nonmember_function_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/nonmember_function.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/nonmember_function.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="nonmember_function.html" title="Class template nonmember_function">nonmember_function</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="nonmember_function.html#contract.nonmember_functionconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="nonmember_function.html#id434379-bb"><span class="identifier">nonmember_function</span></a><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span><span class="special">,</span> <span class="identifier">__PreconditionFunctionPointer__</span><span class="special">,</span>
+ <span class="identifier">__PostconditionFunctionPointer__</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="nonmember_function.html#id434552-bb"><span class="special">~</span><span class="identifier">nonmember_function</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="nonmember_function.html#id434323-bb">public member functions</a></span>
+ <span class="identifier">ResultType</span> <a class="link" href="nonmember_function.html#id434326-bb"><span class="identifier">call</span></a><span class="special">(</span><span class="identifier">ArgumentType1</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumetnTypeN</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id973041"></a><h2>Description</h2>
+<p>Class template used to write contracts for non-member functions.</p>
+<p><span class="bold"><strong>Note:</strong></span> Only the differences between this class and the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> class are documented here. Read the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> documentation first.</p>
+<p>The <code class="computeroutput">CONTRACT_FUNCTION()</code> macro expands to code that uses this class template (when no <code class="computeroutput">(class)</code> is specified in the function signature sequence, see the Without the Macros section) -- whenever possible, use the macro instead of using this class template directly. Rarely, it might be needed to use this template class directly to implement workarounds for compilers that do not fully comply with the ISO C++ standard.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">F</code></strong></span></td>
+<td>The function type of the non-member function being contracted. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p>The function type <code class="computeroutput">F</code> must be specified as follows: </p>
+<pre class="programlisting"> <span class="identifier">ResultType</span> <span class="special">(</span><span class="identifier">ArgumentType1</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumentTypeN</span><span class="special">)</span>
+</pre>
+<p><span class="bold"><strong>See:</strong></span> Without the Macros section, <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> </p>
+<div class="refsect2">
+<a name="id973216"></a><h3>
+<a name="contract.nonmember_functionconstruct-copy-destruct"></a><code class="computeroutput">nonmember_function</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id434379-bb"></a><span class="identifier">nonmember_function</span><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span> body_function<span class="special">,</span>
+ <span class="identifier">__PreconditionFunctionPointer__</span> precondition_function<span class="special">,</span>
+ <span class="identifier">__PostconditionFunctionPointer__</span> postcondition_function<span class="special">)</span><span class="special">;</span></pre>
+<p>Construct this contract object using the specified body, preconditions, and postconditions functions.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">body_function</code></strong></span></td>
+<td>A pointer to the function executing the body. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">precondition_function</code></strong></span></td>
+<td>A pointer to the function asserting the preconditions. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">postcondition_function</code></strong></span></td>
+<td>A pointer to the function asserting the postconditions. </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p>Refer to the <code class="computeroutput"><code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code></code> documentation for the definition of metaprogramming constructs used below (<code class="computeroutput">__IfCopyable__</code>, etc).</p>
+<p>Note the followings for the function pointer types defined below: </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>They are non-member functions. </p></li>
+<li class="listitem"><p>There is no old object value in postconditions, not even <code class="computeroutput">contract::noold</code> (because non-member functions have no object).</p></li>
+</ul></div>
+<p>
+The body function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef ResultType (* __BodyFunctionPointer__)
+ ( __RemoveCopyable__&lt; ArgumentType1 &gt;,
+ ...,
+ __RemoveCopyable__&lt; ArgumentTypeN &gt;
+ );
+</pre>
+<p>The precondition function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef ResultType (* __PreconditionFunctionPointer__)
+ ( boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type,
+ ...,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type
+ );
+</pre>
+<p>The postcondition function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef ResultType (* __PreconditionFunctionPointer__)
+ ( boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable&lt; ArgumentType1 &gt; &gt;::type&gt;::type,
+ __IfCopyable__&lt; ArgumentType1,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type &gt;,
+ ...,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type,
+ __IfCopyable__&lt; ArgumentTypeN,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable&lt; ArgumentTypeN &gt; &gt;::type&gt;::type &gt;,
+ __IfNonVoid__&lt; boost::add_reference&lt;boost::add_const&lt;
+ ResultType&gt;::type&gt;::type &gt;
+ );
+</pre>
+<p> </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id434552-bb"></a><span class="special">~</span><span class="identifier">nonmember_function</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Destroy this contract object. </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id973538"></a><h3>
+<a name="id434323-bb"></a><code class="computeroutput">nonmember_function</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="identifier">ResultType</span> <a name="id434326-bb"></a><span class="identifier">call</span><span class="special">(</span><span class="identifier">ArgumentType1</span> argument1<span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumetnTypeN</span> argumentN<span class="special">)</span><span class="special">;</span></pre>
+<p>Check the contract and executes the member function body.</p>
+<p>Refer to the <code class="computeroutput"><code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code></code> documentation.</p>
+<p>The <code class="computeroutput">call()</code> function takes no object (because the contracted function is not a member). </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_FUNCTION.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.nonmember_function_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="nonstatic_member_function.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/nonstatic_member_function.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/nonstatic_member_function.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,283 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template nonstatic_member_function</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.nonstatic_member_function_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/nonstatic_member_function.hpp&gt;">
+<link rel="prev" href="nonmember_function.html" title="Class template nonmember_function">
+<link rel="next" href="copyable.html" title="Class template copyable">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nonmember_function.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.nonstatic_member_function_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="copyable.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.nonstatic_member_function"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template nonstatic_member_function</span></h2>
+<p>contract::nonstatic_member_function</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.nonstatic_member_function_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/nonstatic_member_function.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/nonstatic_member_function.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">,</span> <span class="keyword">typename</span> BaseContractClass1 <span class="special">=</span> <span class="keyword">void</span><span class="special">,</span> <span class="special">...</span> <span class="special">,</span>
+ <span class="keyword">typename</span> BaseContractClassM <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">nonstatic_member_function</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="nonstatic_member_function.html#contract.nonstatic_member_functionconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="nonstatic_member_function.html#id435431-bb"><span class="identifier">nonstatic_member_function</span></a><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span><span class="special">,</span>
+ <span class="identifier">__PreconditionFunctionPointer__</span><span class="special">,</span>
+ <span class="identifier">__PostconditionFunctionPointer__</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="nonstatic_member_function.html#id435745-bb"><span class="special">~</span><span class="identifier">nonstatic_member_function</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="nonstatic_member_function.html#id435225-bb">public member functions</a></span>
+ <span class="identifier">ResultType</span> <a class="link" href="nonstatic_member_function.html#id435229-bb"><span class="identifier">call</span></a><span class="special">(</span><span class="identifier">__MaybeCVClassPointer__</span><span class="special">,</span> <span class="identifier">ArgumentType1</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumetnTypeN</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id974179"></a><h2>Description</h2>
+<p>Class template used to write contracts for non-static member functions.</p>
+<p><span class="bold"><strong>Note:</strong></span> This class is used to write contracts for non-static member functions but it cannot be used for static-member functions (see <code class="computeroutput">contract::static_member</code>), constructors (see <code class="computeroutput"><a class="link" href="constructor.html" title="Class template constructor">contract::constructor</a></code>), destructors (see <code class="computeroutput"><a class="link" href="destructor.html" title="Class template destructor">contract::destructor</a></code>), and non-m ember functions (see <code class="computeroutput"><a class="link" href="nonmember_function.html" title="Class template nonmember_function">contract::nonmember_function</a></code>) because they have different contract checking semantics.</p>
+<p>The <code class="computeroutput">CONTRACT_FUNCTION()</code> macro expands to code that uses this class template (see the Without the Macros section) -- whenever possible, use the macro instead of using this class template directly. Rarely, it might be needed to use this class template directly to implement workarounds for compilers that do not fully comply with the ISO C++ standard.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">F</code></strong></span></td>
+<td>The function type of the function being contracted. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">BaseContractClass1, ..., BaseContractClassM</code></strong></span></td>
+<td>These are the contracts from which the member function is subcontracting. These are all optional, they are only specified when the member function is subcontracting: no base contract is specified if no subcontracting, only <code class="computeroutput">BaseContractClass1</code> is specified to subcontract from 1 base class only, and more base contract classes are specified to support subcontracting with multiple inheritance. <div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Each of these types must inherit from <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> (so to be a contract class) and its class type must be a base class of the contracted class (otherwise the library will generate a compile-time error). </p></li>
+<li class="listitem"><p>When multiple base contract classes are specified, the overridden contracts are checked following the order of the specified template parameters. The derived class contract is checked last. </p></li>
+<li class="listitem"><p>The maximum number of supported base class contracts <span class="emphasis"><em>M</em></span> is specified by the <code class="computeroutput">CONTRACT_CONFIG_MAX_MULTIPLE_INHERITANCE</code> configuration macro. </p></li>
+</ul></div>
+</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p>The following metaprogramming constructs (e.g., <code class="computeroutput">__AMetaprogrammingConstruct__</code>) are used in this documentation to define the different types:</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>If <code class="computeroutput">S</code> is <code class="computeroutput">contract::copyable&lt;T&gt;</code> then <code class="computeroutput">__RemoveCopyable__&lt; S &gt;</code> is <code class="computeroutput">T</code>, otherwise it is <code class="computeroutput">S</code> (i.e., this removes the eventual <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> tag from the specified type).</p></li>
+<li class="listitem"><p><code class="computeroutput">__UncopyableClassType__</code> is <code class="computeroutput">__RemoveCopyable__&lt; __RemoveCV__&lt; ClassType &gt; &gt;</code>.</p></li>
+<li class="listitem"><p>If <code class="computeroutput">ClassType</code> is cv-qualified then <code class="computeroutput">__MaybeCV__</code> is the cv-qualifier (<code class="computeroutput">const</code>, <code class="computeroutput">volatile</code>, or <code class="computeroutput">const volatile</code>), otherwise it is nothing.</p></li>
+<li class="listitem"><p>If <code class="computeroutput">S</code> is tagged <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> then <code class="computeroutput"> __IfCopyable__&lt; S, T &gt;</code> is the <code class="computeroutput">T</code>, otherwise it is the <code class="computeroutput">contract::noold</code>.</p></li>
+<li class="listitem"><p>If <code class="computeroutput">F</code> has a non-void <code class="computeroutput">ResultType</code> then <code class="computeroutput">__IfNonVoid__&lt; C &gt;</code> is <code class="computeroutput">C</code>, otherwise it is nothing.</p></li>
+<li class="listitem"><p><code class="computeroutput">__MaybeCvClassPointer__</code> is a pointer to <code class="computeroutput">__UncopyableClassType__</code> with the same cv-qualifier of <code class="computeroutput">ClassType</code> (<code class="computeroutput">*</code>, <code class="computeroutput">const*</code>, <code class="computeroutput">volatile*</code>, or <code class="computeroutput">const volatile*</code>).</p></li>
+</ul></div>
+<p>
+</p>
+<p>These metaporgramming constructs are <span class="bold"><strong>not</strong></span> templates. They are internally implemented by the library using both preprocessor and template metaprogramming (in a way that is intentionally <span class="emphasis"><em>not</em></span> documented here because it is library implementation specific).</p>
+<p>The function type template parameter <code class="computeroutput">F</code> must be specified as follows: </p>
+<pre class="programlisting"> <span class="identifier">ResultType</span> <span class="special">(</span><span class="identifier">ClassType</span><span class="special">*</span><span class="special">,</span> <span class="identifier">ArgumentType1</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumentTypeN</span><span class="special">)</span>
+</pre>
+<p>Where: </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The <code class="computeroutput">ResultType</code> is the function result type (use <code class="computeroutput">void</code> for functions that have no return value). </p></li>
+<li class="listitem"><p>The <code class="computeroutput">ClassType</code> is the type of the class the function is member of. </p></li>
+<li class="listitem"><p>For constant member functions <code class="computeroutput">const</code> qualifies the class type. </p></li>
+<li class="listitem"><p>The class type <code class="computeroutput">ClassType</code> (together with its eventual <code class="computeroutput">const</code> qualifier) can be tagged <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> as in <code class="computeroutput">contract::copyable&lt;ClassType __ConstIfContractMemeber__&gt;*</code> if the object old value <code class="computeroutput">CONTRACT_OLDOF(this)</code> is needed in the postconditions (in this case the class must have an accessible constant-correct copy constructor, see <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code>). Note that <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> does <span class="bold"><strong>not</strong></span> wrap the pointer operator (i.e., <code class="computeroutput">contract::copyable&lt;ClassType __Cons
tIfContractMemeber__*&gt;</code> is invalid). </p></li>
+<li class="listitem">
+<p>The class type must declare a (private) mutable member variable of a friend type <code class="computeroutput"><a class="link" href="state.html" title="Class state">contract::state</a></code> with the predefined name <code class="computeroutput">contract_state_</code> otherwise the library will generate a compile-time error. This member variable is mainly used by the library to keep track of when contracts are being checked so to disable assertion checking in nested member function calls that could otherwise result in infinite recursion (see the Without the Macros section). </p>
+<pre class="programlisting"> <span class="keyword">class</span> <span class="identifier">ClassType</span> <span class="special">{</span>
+
+ <span class="comment">// Optional contract compilation.</span>
+ <span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">BOOST_CONTRACT_CHECK_CLASS_INVARIANT</span> <span class="special">||</span> \
+ <span class="identifier">defined</span> <span class="identifier">BOOST_CONTRACT_CHECK_PRECONDITION</span> <span class="special">||</span> \
+ <span class="identifier">defined</span> <span class="identifier">BOOST_CONTRACT_CHECK_POSTCONDITION</span>
+ <span class="comment">// Augmented state.</span>
+ <span class="keyword">friend</span> <a class="link" href="state.html" title="Class state">contract::state</a><span class="special">;</span>
+ <span class="keyword">mutable</span> <a class="link" href="state.html" title="Class state">contract::state</a> <span class="identifier">contract_state_</span><span class="special">;</span>
+ <span class="preprocessor">#endif</span>
+
+ <span class="special">...</span> <span class="comment">// Rest of the class.</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p> Whenever possible, use the <code class="computeroutput">CONTRACT_INVARIANT()</code> macro instead of declaring <code class="computeroutput">contract_state_</code> directly. </p>
+</li>
+<li class="listitem"><p>The function argument types <code class="computeroutput">ArgumentType1</code>, ..., <code class="computeroutput">ArgumentTypeN</code> are all optional (specify none for a function with no argument, only <code class="computeroutput">ArgumentType1</code> is specified for a function with one argument, etc). </p></li>
+<li class="listitem"><p>Any of the argument type can be tagged <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> if the old value <code class="computeroutput">CONTRACT_OLDOF(argument-name)</code> (before body execution) of the related argument is needed in postconditions. Types tagged <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> must have an accessible constant-correct copy constructor (otherwise the library will generate a compile-time error, see <code class="computeroutput"><a class="link" href="copy.html" title="Class template copy">contract::copy</a></code>). The eventual <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> tag must wrap the <span class="bold"><strong>entire</strong></span> argument type (including the pointer operator if present, this is different from t
he class type). </p></li>
+<li class="listitem"><p>The maximum number of supported function arguments <span class="emphasis"><em>N</em></span> is specified by the <code class="computeroutput">CONTRACT_CONFIG_MAX_FUNCTION_ARITY</code> configuration macro.</p></li>
+</ul></div>
+<p>
+<span class="bold"><strong>See:</strong></span> Without the Macros section </p>
+<div class="refsect2">
+<a name="id975184"></a><h3>
+<a name="contract.nonstatic_member_functionconstruct-copy-destruct"></a><code class="computeroutput">nonstatic_member_function</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id435431-bb"></a><span class="identifier">nonstatic_member_function</span><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span> body_function<span class="special">,</span>
+ <span class="identifier">__PreconditionFunctionPointer__</span> precondition_function<span class="special">,</span>
+ <span class="identifier">__PostconditionFunctionPointer__</span> postcondition_function<span class="special">)</span><span class="special">;</span></pre>
+<p>Construct this contract object using the specified body, preconditions, and postconditions functions.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">body_function</code></strong></span></td>
+<td>A pointer to the function executing the body. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">precondition_function</code></strong></span></td>
+<td>A pointer to the function asserting the preconditions. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">postcondition_function</code></strong></span></td>
+<td>A pointer to the function asserting the postconditions. </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p>The body function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef ResultType (__UncopyableClassType__::* __BodyFunctionPointer__)
+ ( __RemoveCopyable__&lt; ArgumentType1 &gt;,
+ ...,
+ __RemoveCopyable__&lt; ArgumentTypeN &gt;
+ ) __MaybeCV__;
+</pre>
+<p> </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The body function pointer type matches the signature of the contracted function. </p></li>
+<li class="listitem"><p>The <code class="computeroutput"><code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code></code> tag is removed from the class and argument types. </p></li>
+<li class="listitem"><p>The function type is the <code class="computeroutput">const</code> only if the contracted function is a constant member.</p></li>
+</ul></div>
+<p>
+The precondition function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef void (__UncopyableClassType__::* __PreconditionFunctionPointer__)
+ ( boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type,
+ ...,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type
+ ) const __MaybeVolatile__;
+</pre>
+<p> </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The precondition function pointer type always has a <code class="computeroutput">void</code> return type. </p></li>
+<li class="listitem"><p>The <code class="computeroutput"><code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code></code> tag is removed from the class and argument types. </p></li>
+<li class="listitem"><p>Each function argument is passed as a contract reference. </p></li>
+<li class="listitem"><p>The function type is always <code class="computeroutput">const</code> if the contracted function is a member.</p></li>
+</ul></div>
+<p>
+The postcondition function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef void (__UncopyableClassType__::* __PreconditionFunctionPointer__)
+ ( __IfCopyable__&lt; ClassType,
+ boost::add_pointer&lt;boost::add_const&lt;
+ ClassType&gt;::type&gt;::type &gt;,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type,
+ __IfCopyable__&lt; ArgumentType1,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type &gt;,
+ ...,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type,
+ __IfCopyable__&lt; ArgumentTypeN,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type &gt;,
+ __IfNonVoid__&lt; boost::add_reference&lt;boost::add_const&lt;
+ ResultType&gt;::type&gt;::type &gt;
+ ) const __MaybeVolatile__;
+</pre>
+<p> </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>The postcondition function pointer type always has a <code class="computeroutput">void</code> return type. </p></li>
+<li class="listitem"><p>The <code class="computeroutput"><code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code></code> tag is removed from the class and argument types. </p></li>
+<li class="listitem"><p>The first argument is a constant pointer to the object old value if the class type was tagged <code class="computeroutput"><code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code></code>, otherwise it is of type <code class="computeroutput">contract::noold</code> (indicating that no object old value is available because the class type was not tagged <code class="computeroutput"><code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code></code>). </p></li>
+<li class="listitem"><p>Each function argument is passed as contract reference and it is followed by its old value. Each old value is a constant reference to the argument old value if the argument type was tagged <code class="computeroutput">contract::copayble</code>, otherwise it is of type <code class="computeroutput">contract::noold</code> (indicating that no object old value is available because the argument type was not tagged <code class="computeroutput"><code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code></code>). </p></li>
+<li class="listitem"><p>The function type is always <code class="computeroutput">const</code> if the contracted function is a member. </p></li>
+</ul></div>
+<p>
+</p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id435745-bb"></a><span class="special">~</span><span class="identifier">nonstatic_member_function</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Destroy this contract object. </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id975705"></a><h3>
+<a name="id435225-bb"></a><code class="computeroutput">nonstatic_member_function</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="identifier">ResultType</span> <a name="id435229-bb"></a><span class="identifier">call</span><span class="special">(</span><span class="identifier">__MaybeCVClassPointer__</span> object<span class="special">,</span> <span class="identifier">ArgumentType1</span> argument1<span class="special">,</span> <span class="special">...</span><span class="special">,</span>
+ <span class="identifier">ArgumetnTypeN</span> argumentN<span class="special">)</span><span class="special">;</span></pre>
+<p>Check the contract and execute the member function body.</p>
+<p>This function implements the correct contract checking semantics for the function call (see the Tutorial section). In summary: </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>It checks class invariants and preconditions (also of overridden contracts when subcontracting), it executes the member function body, then it checks class invariants and postconditions (also of overridden contracts when subcontracting). </p></li>
+<li class="listitem"><p>If the body throws an exception, only class invariants (and not postconditions) are checked on function exit. </p></li>
+<li class="listitem"><p>Non-member functions do not check class invariants and they do not subcontract.</p></li>
+</ul></div>
+<p>
+<span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">object</code></strong></span></td>
+<td>A pointer to the object (present only if <code class="computeroutput">F</code> is a member function pointer type). The object pointer is <code class="computeroutput">const</code> only if <code class="computeroutput">F</code> is a constant member function pointer type (to handle constant member functions). </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">argument1, ..., argumentN</code></strong></span></td>
+<td>The function arguments. </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> The function return value but only when <code class="computeroutput">F</code> is a non-void function pointer type.</p>
+<p><span class="bold"><strong>Note:</strong></span> When <code class="computeroutput">F</code> is a member function pointer type, the <code class="computeroutput">call()</code> function checks class invariants by calling a constant member function with the <code class="computeroutput">contract_invariant_</code> predefined name and it also checks static class invariants by calling a static member function with the <code class="computeroutput">contract_static_invariant_</code> predefined name (see the Without the Macros section for more information): </p>
+<pre class="programlisting"> class ClassType {
+
+ #if defined BOOST_CONTRACT_CHECK_INVARIANT
+ void contract_static_invariant_(void) {
+ ... // Assert static class invariants.
+ }
+ void contract_invariant_ (void) const {
+ ... // Assert class invariants.
+ }
+ #endif
+
+ ... // Rest of the class.
+ };
+</pre>
+<p> Note the #if guard to declare the function only when invariant compilation and checking is turned on. Such function must be defined and accessible otherwise the library will generate a compile-time error. Whenever possible, use the <code class="computeroutput">CONTRACT_INVARIANT()</code> macro instead of programming the <code class="computeroutput">contract_invariant_</code> and <code class="computeroutput">contract_static_invariant_</code> functions directly. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nonmember_function.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.nonstatic_member_function_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="copyable.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/postcondition_failed.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/postcondition_failed.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function postcondition_failed</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="set_postcondition_failed.html" title="Function set_postcondition_failed">
+<link rel="next" href="../CONTRACT_ASSERT.html" title="Macro CONTRACT_ASSERT">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="set_postcondition_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_ASSERT.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.postcondition_failed"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function postcondition_failed</span></h2>
+<p>contract::postcondition_failed</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="keyword">void</span> <span class="identifier">postcondition_failed</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">from</span> <span class="special">&amp;</span> where<span class="special">)</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id960624"></a><h2>Description</h2>
+<p>Automatically invoked by this library when a postcondition fails.</p>
+<p>It calls <code class="computeroutput">std::terminate()</code> by default but it can be redefined using <code class="computeroutput">contract::set_postcondition_failed()</code>. When this function is called, the exception raised by the contract failure is the active unhandled exception (which can be re-thrown using <code class="computeroutput">throw</code> and then caught, see Throw on Failure annex).</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">where</code></strong></span></td>
+<td>The source that found the the invariant failure. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="set_postcondition_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_ASSERT.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/precondition_failed.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/precondition_failed.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function precondition_failed</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="set_precondition_failed.html" title="Function set_precondition_failed">
+<link rel="next" href="set_postcondition_failed.html" title="Function set_postcondition_failed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="set_precondition_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="set_postcondition_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.precondition_failed"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function precondition_failed</span></h2>
+<p>contract::precondition_failed</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="keyword">void</span> <span class="identifier">precondition_failed</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">from</span> <span class="special">&amp;</span> where<span class="special">)</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id960333"></a><h2>Description</h2>
+<p>Automatically invoked by this library when a precondition fails.</p>
+<p>It calls <code class="computeroutput">std::terminate()</code> by default but it can be redefined using <code class="computeroutput">contract::set_precondition_failed()</code>. When this function is called, the exception raised by the contract failure is the active unhandled exception (which can be re-thrown using <code class="computeroutput">throw</code> and then caught, see Throw on Failure annex).</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">where</code></strong></span></td>
+<td>The source that found the the invariant failure. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="set_precondition_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="set_postcondition_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/set_block_invariant_failed.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/set_block_invariant_failed.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function set_block_invariant_failed</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="contract_failed_handler.html" title="Type definition contract_failed_handler">
+<link rel="next" href="block_invariant_failed.html" title="Function block_invariant_failed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract_failed_handler.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="block_invariant_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.set_block_invariant_failed"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function set_block_invariant_failed</span></h2>
+<p>contract::set_block_invariant_failed</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="identifier">contract_failed_handler</span>
+<span class="identifier">set_block_invariant_failed</span><span class="special">(</span><span class="identifier">contract_failed_handler</span> handler<span class="special">)</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id959598"></a><h2>Description</h2>
+<p>Set the specified user defined handler function to call on block invariant failure.</p>
+<p>This function can be used by programmers to specify an action to take in case of block invariant failure different from the default to terminate the program.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">handler</code></strong></span></td>
+<td>A pointer to the new handler function. Passing an invalid pointer, including 0, has undefined behaviour and it will likely result in a segmentation fault. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> The previously set handler function pointer.</p>
+<p><span class="bold"><strong>See:</strong></span> Throw on Failure annex for an example. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contract_failed_handler.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="block_invariant_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/set_class_invariant_failed.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/set_class_invariant_failed.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function set_class_invariant_failed</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="block_invariant_failed.html" title="Function block_invariant_failed">
+<link rel="next" href="class_invariant_failed.html" title="Function class_invariant_failed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="block_invariant_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="class_invariant_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.set_class_invariant_failed"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function set_class_invariant_failed</span></h2>
+<p>contract::set_class_invariant_failed</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="identifier">contract_failed_handler</span>
+<span class="identifier">set_class_invariant_failed</span><span class="special">(</span><span class="identifier">contract_failed_handler</span> handler<span class="special">)</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id959890"></a><h2>Description</h2>
+<p>Set the specified user defined handler function to call on class invariant failure.</p>
+<p>This function can be used by programmers to specify an action to take in case of class invariant failure different from the default to terminate the program.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">handler</code></strong></span></td>
+<td>A pointer to the new handler function. Passing an invalid pointer, including 0, has undefined behaviour and it will likely result in a segmentation fault. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> The previously set handler function pointer.</p>
+<p><span class="bold"><strong>See:</strong></span> Throw on Failure annex for an example. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="block_invariant_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="class_invariant_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/set_postcondition_failed.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/set_postcondition_failed.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function set_postcondition_failed</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="precondition_failed.html" title="Function precondition_failed">
+<link rel="next" href="postcondition_failed.html" title="Function postcondition_failed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="precondition_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="postcondition_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.set_postcondition_failed"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function set_postcondition_failed</span></h2>
+<p>contract::set_postcondition_failed</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="identifier">contract_failed_handler</span>
+<span class="identifier">set_postcondition_failed</span><span class="special">(</span><span class="identifier">contract_failed_handler</span> handler<span class="special">)</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id960474"></a><h2>Description</h2>
+<p>Set the specified user defined handler function to call on postcondition failure.</p>
+<p>This function can be used by programmers to specify an action to take in case of postcondition failure different from the default to terminate the program.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">handler</code></strong></span></td>
+<td>A pointer to the new handler function. Passing an invalid pointer, including 0, has undefined behaviour and it will likely result in a segmentation fault. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> The previously set handler function pointer.</p>
+<p><span class="bold"><strong>See:</strong></span> Throw on Failure annex for an example. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="precondition_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="postcondition_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/set_precondition_failed.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/set_precondition_failed.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function set_precondition_failed</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">
+<link rel="prev" href="class_invariant_failed.html" title="Function class_invariant_failed">
+<link rel="next" href="precondition_failed.html" title="Function precondition_failed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="class_invariant_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="precondition_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.set_precondition_failed"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function set_precondition_failed</span></h2>
+<p>contract::set_precondition_failed</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/assert.hpp</a>&gt;
+
+</span>
+<span class="identifier">contract_failed_handler</span>
+<span class="identifier">set_precondition_failed</span><span class="special">(</span><span class="identifier">contract_failed_handler</span> handler<span class="special">)</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id960182"></a><h2>Description</h2>
+<p>Set the specified user defined handler function to call on precondition failure.</p>
+<p>This function can be used by programmers to specify an action to take in case of precondition failure different from the default to terminate the program.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">handler</code></strong></span></td>
+<td>A pointer to the new handler function. Passing an invalid pointer, including 0, has undefined behaviour and it will likely result in a segmentation fault. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>Returns:</strong></span> The previously set handler function pointer.</p>
+<p><span class="bold"><strong>See:</strong></span> Throw on Failure annex for an example. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="class_invariant_failed.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.assert_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="precondition_failed.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/state.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/state.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class state</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.state_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/state.hpp&gt;">
+<link rel="prev" href="../CONTRACT_OLDOF.html" title="Macro CONTRACT_OLDOF">
+<link rel="next" href="static_member_function.html" title="Class template static_member_function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_OLDOF.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.state_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="static_member_function.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.state"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class state</span></h2>
+<p>contract::state</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.state_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/state.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/state.hpp</a>&gt;
+
+</span>
+<span class="keyword">class</span> <a class="link" href="state.html" title="Class state">state</a> <span class="special">{</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id978831"></a><h2>Description</h2>
+<p>Augmented object state internally used by the library.</p>
+<p>As illustrated by the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> documentation, the class being contracted must declare a (private) member variable named <code class="computeroutput">contract_state_</code> of <code class="computeroutput">mutable</code> type <code class="computeroutput"><a class="link" href="state.html" title="Class state">contract::state</a></code> (see <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> for example code). The type <code class="computeroutput"><a class="link" href="state.html" title="Class state">contract::state</a></code> must be declared a friend of the class. This member variable is automatically declared when the <code class="computeroutput">CONTRACT_INVARIANT()</code> macro is used (recommended).</p>
+<p>This library will generate a compile-time error if this state variable is not declared and accessible to the contracts.</p>
+<p><span class="bold"><strong>Note:</strong></span> This member variable is used internally by this library mainly to track when assertions are being checked so to disable assertion checking in nested function calls that could otherwise lead to infinite recursion (this is a common requirement for Contract Programming). The friendship is requires so the library internally has access to the entire user class including non public members.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code>, Without the Macros section </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_OLDOF.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.state_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="static_member_function.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/static_member_function.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/static_member_function.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,176 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template static_member_function</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.static_member_function_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/static_member_function.hpp&gt;">
+<link rel="prev" href="state.html" title="Class state">
+<link rel="next" href="wrap.html" title="Struct template wrap">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="state.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.static_member_function_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="wrap.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.static_member_function"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template static_member_function</span></h2>
+<p>contract::static_member_function</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.static_member_function_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/static_member_function.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/static_member_function.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="static_member_function.html" title="Class template static_member_function">static_member_function</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="static_member_function.html#contract.static_member_functionconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="static_member_function.html#id436831-bb"><span class="identifier">static_member_function</span></a><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span><span class="special">,</span>
+ <span class="identifier">__PreconditionFunctionPointer__</span><span class="special">,</span>
+ <span class="identifier">__PostconditionFunctionPointer__</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="static_member_function.html#id437028-bb"><span class="special">~</span><span class="identifier">static_member_function</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="static_member_function.html#id436775-bb">public member functions</a></span>
+ <span class="identifier">ResultType</span> <a class="link" href="static_member_function.html#id436779-bb"><span class="identifier">call</span></a><span class="special">(</span><span class="identifier">ArgumentType1</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumetnTypeN</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id979337"></a><h2>Description</h2>
+<p>Class template used to write contracts for static member functions.</p>
+<p><span class="bold"><strong>Note:</strong></span> Only the differences between this class and the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> class are documented here. Read the <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> documentation first.</p>
+<p>The <code class="computeroutput">CONTRACT_FUNCTION()</code> macro expands to code that uses this class template (when <code class="computeroutput">(static)</code> is specified in the function signature sequence, see the Without the Macros section) -- whenever possible, use the macro instead of using this class template directly. Rarely, it might be needed to use this template class directly to implement workarounds for compilers that do not fully comply with the ISO C++ standard.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">F</code></strong></span></td>
+<td>The function type of the static member function being contracted. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p>Base contract classes cannot be specified because static member functions cannot be virtual and they cannot override base virtual functions so they cannot subcontract.</p>
+<p>The function type <code class="computeroutput">F</code> must be specified as follows: </p>
+<pre class="programlisting"> <span class="identifier">ResultType</span> <span class="special">(</span><span class="identifier">ClassType</span><span class="special">*</span><span class="special">,</span> <span class="identifier">ArgumentType1</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumentTypeN</span><span class="special">)</span>
+</pre>
+<p> Note: </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="computeroutput">ClassType</code> is never <code class="computeroutput">const</code> because static member functions cannot be constant member functions (there is no object to not modify). </p></li>
+<li class="listitem"><p><code class="computeroutput">ClassType</code> cannot be tagged <code class="computeroutput"><a class="link" href="copyable.html" title="Class template copyable">contract::copyable</a></code> because there is no object for static member functions -- the library will generate a compile-time error otherwise.</p></li>
+</ul></div>
+<p>
+<span class="bold"><strong>See:</strong></span> Without the Macros section, <code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code> </p>
+<div class="refsect2">
+<a name="id979582"></a><h3>
+<a name="contract.static_member_functionconstruct-copy-destruct"></a><code class="computeroutput">static_member_function</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id436831-bb"></a><span class="identifier">static_member_function</span><span class="special">(</span><span class="identifier">__BodyFunctionPointer__</span> body_function<span class="special">,</span>
+ <span class="identifier">__PreconditionFunctionPointer__</span> precondition_function<span class="special">,</span>
+ <span class="identifier">__PostconditionFunctionPointer__</span> postcondition_function<span class="special">)</span><span class="special">;</span></pre>
+<p>Construct this contract object using the specified body, preconditions, and postconditions functions.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">body_function</code></strong></span></td>
+<td>A pointer to the function executing the body. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">precondition_function</code></strong></span></td>
+<td>A pointer to the function asserting the preconditions. </td>
+</tr>
+<tr>
+<td><span class="bold"><strong><code class="computeroutput">postcondition_function</code></strong></span></td>
+<td>A pointer to the function asserting the postconditions. </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p>Refer to the <code class="computeroutput"><code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code></code> documentation for the definition of metaprogramming constructs used below (<code class="computeroutput">__IfCopyable__</code>, etc).</p>
+<p>Note the followings for the function pointer types defined below: </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>They are static member functions (they do not specify the class type as in <code class="computeroutput">(ClassType::*)</code> but only the function pointer <code class="computeroutput">(*)</code>). </p></li>
+<li class="listitem"><p>They are never <code class="computeroutput">const</code> member functions because they are <code class="computeroutput">static</code>. </p></li>
+<li class="listitem"><p>There is no old object value in postconditions, not even <code class="computeroutput">contract::noold</code> (because static member functions have no object).</p></li>
+</ul></div>
+<p>
+The body function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef ResultType (* __BodyFunctionPointer__)
+ ( __RemoveCopyable__&lt; ArgumentType1 &gt;,
+ ...,
+ __RemoveCopyable__&lt; ArgumentTypeN &gt;
+ );
+</pre>
+<p>The precondition function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef ResultType (* __PreconditionFunctionPointer__)
+ ( boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type,
+ ...,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type
+ );
+</pre>
+<p>The postcondition function pointer type is defined as follows: </p>
+<pre class="programlisting"> typedef ResultType (* __PreconditionFunctionPointer__)
+ ( boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable&lt; ArgumentType1 &gt; &gt;::type&gt;::type,
+ __IfCopyable__&lt; ArgumentType1,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentType1 &gt; &gt;::type&gt;::type &gt;,
+ ...,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable__&lt; ArgumentTypeN &gt; &gt;::type&gt;::type,
+ __IfCopyable__&lt; ArgumentTypeN,
+ boost::add_reference&lt;boost::add_const&lt;
+ __RemoveCopyable&lt; ArgumentTypeN &gt; &gt;::type&gt;::type &gt;,
+ __IfNonVoid__&lt; boost::add_reference&lt;boost::add_const&lt;
+ ResultType&gt;::type&gt;::type &gt;
+ );
+</pre>
+<p> </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id437028-bb"></a><span class="special">~</span><span class="identifier">static_member_function</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Destroy this contract object. </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id979928"></a><h3>
+<a name="id436775-bb"></a><code class="computeroutput">static_member_function</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="identifier">ResultType</span> <a name="id436779-bb"></a><span class="identifier">call</span><span class="special">(</span><span class="identifier">ArgumentType1</span> argument1<span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">ArgumetnTypeN</span> argumentN<span class="special">)</span><span class="special">;</span></pre>
+<p>Check the contract and executes the member function body.</p>
+<p>Refer to the <code class="computeroutput"><code class="computeroutput"><a class="link" href="nonstatic_member_function.html" title="Class template nonstatic_member_function">contract::nonstatic_member_function</a></code></code> documentation.</p>
+<p>The <code class="computeroutput">call()</code> function takes no object (because the contracted function is static). </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="state.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.static_member_function_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="wrap.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="static_member_function.html" title="Class template static_member_function">
+<link rel="next" href="wrap_void_T__id437104.html" title="Struct template wrap&lt;void(T)&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="static_member_function.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="wrap_void_T__id437104.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap</span></h2>
+<p>contract::wrap</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap.html" title="Struct template wrap">wrap</a> <span class="special">{</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980332"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p><span class="bold"><strong>Warning:</strong></span> Attempting to use this template directly will generate a compile-time error. Only the template specialization <code class="computeroutput"><a class="link" href="wrap.html" title="Struct template wrap">contract::wrap</a>&lt;void(T)&gt;</code> can be used.</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="wrap.html" title="Struct template wrap">contract::wrap</a>&lt;void(T)&gt;</code> specialization, <code class="computeroutput">CONTRACT_WRAP_TYPE()</code> </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="static_member_function.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="wrap_void_T__id437104.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id2358596.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id2358596.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header..home.lcaminiti.sandbox.dbcpp_sourceforge.boost-quickbook.doc.qbk.src.contract.wrap_hpp" title="Header &lt;contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src=".././doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header..home.lcaminiti.sandbox.dbcpp_sourceforge.boost-quickbook.doc.qbk.src.contract.wrap_hpp"><img src=".././doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src=".././doc/html/images/next.png" alt="Next"></a>
+</div>
+<hr>
+<div class="refentry" lang="en">
+<a name="contract.wrap_void(T)_id2358596"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="emphasis"><em>// In header: &lt;<a class="link" href="../reference.html#header..home.lcaminiti.sandbox.dbcpp_sourceforge.boost-quickbook.doc.qbk.src.contract.wrap_hpp" title="Header &lt;contract/wrap.hpp&gt;">contract/wrap.hpp</a>&gt;
+
+</em></span><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt;
+<span class="bold"><strong>struct</strong></span> <a class="link" href="wrap_void_T__id2358596.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a>&lt;<span class="bold"><strong>void</strong></span>(T)&gt; {
+ <span class="emphasis"><em>// <a class="link" href="wrap_void_T__id2358596.html#contract.wrap_void(T)_id2358596types">types</a></em></span>
+ <span class="bold"><strong>typedef</strong></span> T <a class="link" href="wrap_void_T__id2358596.html#contract.wrap_void(T)_id2358596.type">type</a>;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id2670329"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2" lang="en">
+<a name="id2670413"></a><h3>
+<a name="contract.wrap_void(T)_id2358596types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol type="1"><li>
+<p>
+<span class="bold"><strong>typedef</strong></span> T <a name="contract.wrap_void(T)_id2358596.type"></a>type;</p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 -2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src=".././doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header..home.lcaminiti.sandbox.dbcpp_sourceforge.boost-quickbook.doc.qbk.src.contract.wrap_hpp"><img src=".././doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src=".././doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436550.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436550.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id436550"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id436550.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id436550.html#contract.wrap_void(T)_id436550types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id436550.html#contract.wrap_void(T)_id436550.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980042"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980134"></a><h3>
+<a name="contract.wrap_void(T)_id436550types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id436550.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436560.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436560.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id436560"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id436560.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id436560.html#contract.wrap_void(T)_id436560types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id436560.html#contract.wrap_void(T)_id436560.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id979985"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980077"></a><h3>
+<a name="contract.wrap_void(T)_id436560types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id436560.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436562.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436562.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id436562"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id436562.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id436562.html#contract.wrap_void(T)_id436562types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id436562.html#contract.wrap_void(T)_id436562.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980000"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980091"></a><h3>
+<a name="contract.wrap_void(T)_id436562types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id436562.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436565.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436565.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id436565"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id436565.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id436565.html#contract.wrap_void(T)_id436565types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id436565.html#contract.wrap_void(T)_id436565.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id979999"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980090"></a><h3>
+<a name="contract.wrap_void(T)_id436565types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id436565.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436578.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436578.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id436578"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id436578.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id436578.html#contract.wrap_void(T)_id436578types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id436578.html#contract.wrap_void(T)_id436578.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980054"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980146"></a><h3>
+<a name="contract.wrap_void(T)_id436578types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id436578.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436755.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436755.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id436755"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id436755.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id436755.html#contract.wrap_void(T)_id436755types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id436755.html#contract.wrap_void(T)_id436755.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980214"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980305"></a><h3>
+<a name="contract.wrap_void(T)_id436755types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id436755.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436782.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id436782.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id436782"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id436782.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id436782.html#contract.wrap_void(T)_id436782types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id436782.html#contract.wrap_void(T)_id436782.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980274"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980365"></a><h3>
+<a name="contract.wrap_void(T)_id436782types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id436782.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437043.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437043.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id437043"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id437043.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id437043.html#contract.wrap_void(T)_id437043types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id437043.html#contract.wrap_void(T)_id437043.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980519"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980611"></a><h3>
+<a name="contract.wrap_void(T)_id437043types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id437043.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437088.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437088.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id437088"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id437088.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id437088.html#contract.wrap_void(T)_id437088types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id437088.html#contract.wrap_void(T)_id437088.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980523"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980614"></a><h3>
+<a name="contract.wrap_void(T)_id437088types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id437088.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437104.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437104.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id437104"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id437104.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id437104.html#contract.wrap_void(T)_id437104types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id437104.html#contract.wrap_void(T)_id437104.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980562"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980653"></a><h3>
+<a name="contract.wrap_void(T)_id437104types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id437104.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437106.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437106.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id437106"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id437106.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id437106.html#contract.wrap_void(T)_id437106types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id437106.html#contract.wrap_void(T)_id437106.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980504"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980596"></a><h3>
+<a name="contract.wrap_void(T)_id437106types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id437106.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437311.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437311.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id437311"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id437311.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id437311.html#contract.wrap_void(T)_id437311types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id437311.html#contract.wrap_void(T)_id437311.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980786"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980878"></a><h3>
+<a name="contract.wrap_void(T)_id437311types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id437311.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437382.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437382.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id437382"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id437382.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id437382.html#contract.wrap_void(T)_id437382types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id437382.html#contract.wrap_void(T)_id437382.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id980786"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id980878"></a><h3>
+<a name="contract.wrap_void(T)_id437382types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id437382.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437642.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id437642.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id437642"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id437642.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id437642.html#contract.wrap_void(T)_id437642types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id437642.html#contract.wrap_void(T)_id437642.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id981050"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id981142"></a><h3>
+<a name="contract.wrap_void(T)_id437642types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id437642.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id439377.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id439377.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id439377"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id439377.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id439377.html#contract.wrap_void(T)_id439377types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id439377.html#contract.wrap_void(T)_id439377.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id982642"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id982734"></a><h3>
+<a name="contract.wrap_void(T)_id439377types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id439377.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id439703.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract/wrap_void_T__id439703.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template wrap&lt;void(T)&gt;</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">
+<link rel="prev" href="wrap.html" title="Struct template wrap">
+<link rel="next" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="contract.wrap_void(T)_id439703"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template wrap&lt;void(T)&gt;</span></h2>
+<p>contract::wrap&lt;void(T)&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp" title="Header &lt;E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp&gt;">E:/sandbox/contractpp/trunk/doc/qbk/src/contract/wrap.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="wrap_void_T__id439703.html" title="Struct template wrap&lt;void(T)&gt;">wrap</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="wrap_void_T__id439703.html#contract.wrap_void(T)_id439703types">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a class="link" href="wrap_void_T__id439703.html#contract.wrap_void(T)_id439703.type"><span class="identifier">type</span></a><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id983092"></a><h2>Description</h2>
+<p>Metafunction used to wrap type expressions containing commas so they can be passed as macro parameters.</p>
+<p>This metafunction first wrap the specified type <code class="computeroutput">T</code> within parenthesis <code class="computeroutput"></code>() (so <code class="computeroutput">T</code> can be passed as a single macro parameter even if it contains commas) forming a void-function type with one argument of type <code class="computeroutput">T</code>. Then the application of the metafunction via its member <code class="computeroutput">type</code> returns the wrapped type <code class="computeroutput">T</code>.</p>
+<p><span class="bold"><strong>Parameters:</strong></span> </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><span class="bold"><strong><code class="computeroutput">T</code></strong></span></td>
+<td>Type to be wrapped so it can be passed within a macro parameter even if it contains commas. </td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+<p><span class="bold"><strong>See:</strong></span> CONTRACT_WRAP_TYPE() for more explanation and examples </p>
+<div class="refsect2">
+<a name="id983184"></a><h3>
+<a name="contract.wrap_void(T)_id439703types"></a><code class="computeroutput">wrap</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">T</span> <a name="contract.wrap_void(T)_id439703.type"></a><span class="identifier">type</span><span class="special">;</span></p>
+<p>The type T. </p>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html#header.E:.sandbox.contractpp.trunk.doc.qbk.src.contract.wrap_hpp"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract__/Rationale.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract__/Rationale.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,149 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Annex: Rationale</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../index.html" title="Contract++ 0.3.490">
+<link rel="prev" href="../CONTRACT_WRAP_TYPE.html" title="Macro CONTRACT_WRAP_TYPE">
+<link rel="next" href="bibliography.html" title="Bibliography">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="contract__.Rationale"></a><a class="link" href="Rationale.html" title="Annex: Rationale">Annex: Rationale</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="Rationale.html#contract__.Rationale.why_is_the_body_not_passed_as_a_macro_parameter_">Why
+ is the body not passed as a macro parameter?</a></span></dt>
+<dt><span class="section"><a href="Rationale.html#contract__.Rationale.why_the_contract_macros_need_all_class_and_function_signature_elements_">Why
+ the contract macros need all class and function signature elements?</a></span></dt>
+<dt><span class="section"><a href="Rationale.html#contract__.Rationale.why_exception_specifications_are_passed_as_a_macro_parameter___throw________">Why
+ exception specifications are passed as a macro parameter <code class="computeroutput"><span class="special">(</span><span class="keyword">throw</span><span class="special">)(...)</span></code>?</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="contract__.Rationale.why_is_the_body_not_passed_as_a_macro_parameter_"></a><a class="link" href="Rationale.html#contract__.Rationale.why_is_the_body_not_passed_as_a_macro_parameter_" title="Why is the body not passed as a macro parameter?">Why
+ is the body not passed as a macro parameter?</a>
+</h3></div></div></div>
+<p>
+ The function, constructor, and destructor definition body is not passed as
+ a macro parameter because macros always expand on a single line. Therefore,
+ if the body was passed as a macro parameter and part of the macro expansion,
+ it would expand on a single line and eventual compiler error referring to
+ code within the body will all have the same line number making it very difficult
+ to pinpoint the error.
+ </p>
+<p>
+ The downside of keeping the body outside the macro expansion is that the
+ additional body function defined to wrap the body will have the same access
+ level as the function being contracted. Therefore, if the function being
+ contracted is not private, the body function will also be not private. However,
+ this is an acceptable limitation because the body function, even if public
+ or protected, will have a special named prefix <code class="computeroutput"><span class="identifier">contract_body_</span><span class="special">...</span></code> indicating that it is part of this library
+ private API and should never be used directly by programmers.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="contract__.Rationale.why_the_contract_macros_need_all_class_and_function_signature_elements_"></a><a class="link" href="Rationale.html#contract__.Rationale.why_the_contract_macros_need_all_class_and_function_signature_elements_" title="Why the contract macros need all class and function signature elements?">Why
+ the contract macros need all class and function signature elements?</a>
+</h3></div></div></div>
+<p>
+ Even if we do not consider implementation details of this library, a large
+ set of attributes of the declaration signature of classes and function is
+ needed to program contracts. For example: * The class is needed to access
+ the object <code class="computeroutput"><span class="keyword">this</span></code>. * Base classes
+ are needed to automatically support subcontracting. Furthermore, the base
+ class access level is needed because subcontracting could in principle be
+ relaxed for private and protected base classes (this was suggested by A++
+ but the current implementation of the library decided to follow N1962 and
+ not to relax subcontracting for non-public functions). Also to automatically
+ support subcontracting, the function contract macros needed to know if a
+ function if virtual or not (this allows to defined special types for virtual
+ function in the base classes so they can be automatically detected by derived
+ classes via introspection metaprogramming techniques using SFINAE). * The
+ member function access level is needed because class invariants are only
+ checked for public functions. * The static classifier of member functions
+ is needed because static member functions do not check non-static class invariants.
+ * Function parameter types and names are needed because they are need to
+ be passed to the functions checking the preconditions and postconditions.
+ Furthermore, the parameter type needs to be specified separately from the
+ parameter name because the <code class="computeroutput"><span class="keyword">const</span></code>
+ qualifier needs to be added to the type so preconditions and postconditions
+ access parameters only in a constant-correct context. Finally, the parameter
+ names are used to emulate function overloading (i.e., functions with same
+ name can have separate contracts as long as they have different parameter
+ names). * The function result type is needed so the result value can be accessed
+ by postconditions for non-void functions. * Template parameters are needed
+ to check contracts.
+ </p>
+<p>
+ Given the large number of signature attributes that are needed to specify
+ contracts, the parenthesized signature was used so the library has access
+ to all the attributes of the signature. Furthermore, to avoid duplicating
+ the signature attributes (which would require programmers to duplicate code
+ making both development and manteinace more tedius), all the attributes are
+ specified within the macros so the macros can also generated the class and
+ function signature automatically.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="contract__.Rationale.why_exception_specifications_are_passed_as_a_macro_parameter___throw________"></a><a class="link" href="Rationale.html#contract__.Rationale.why_exception_specifications_are_passed_as_a_macro_parameter___throw________" title="Why exception specifications are passed as a macro parameter (throw)(...)?">Why
+ exception specifications are passed as a macro parameter <code class="computeroutput"><span class="special">(</span><span class="keyword">throw</span><span class="special">)(...)</span></code>?</a>
+</h3></div></div></div>
+<p>
+ Exception specifications cannot simply be programmed outside the contract
+ macros before the body is specified as:
+ </p>
+<pre class="programlisting"><span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)(</span><span class="identifier">f</span><span class="special">)(</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">)</span> <span class="special">)</span> <span class="keyword">throw</span><span class="special">()</span> <span class="special">{</span>
+ <span class="special">...</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Because this way the exception specification only apply to the body function
+ and the macro expansion cannot apply them to the actual function:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Check preconditions.</span>
+ <span class="identifier">f_body</span><span class="special">();</span> <span class="comment">// Execute body.</span>
+ <span class="special">...</span> <span class="comment">// Check postconditions.</span>
+<span class="special">}</span>
+<span class="special">...</span>
+<span class="keyword">void</span> <span class="identifier">f_body</span><span class="special">()</span> <span class="keyword">throw</span><span class="special">()</span> <span class="special">{</span>
+ <span class="special">...</span>
+<span class="special">}</span>
+</pre>
+<p>
+ So if for some reason the precondition or postcondition (or invariant, or
+ any other code of this library) throws an exception, the function <code class="computeroutput"><span class="identifier">f</span><span class="special">()</span></code> will
+ still throw that exception not complying with the exception specification.
+ </p>
+<p>
+ Therefore, the exception specification are passed as a macro parameter (complicating
+ the parenthesized syntax a bit) so they can applied by the macro expansion
+ to the outer most function <code class="computeroutput"><span class="identifier">f</span><span class="special">()</span></code> and not just to its body function.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../CONTRACT_WRAP_TYPE.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract__/bibliography.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract__/bibliography.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,136 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Bibliography</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../index.html" title="Contract++ 0.3.490">
+<link rel="prev" href="Rationale.html" title="Annex: Rationale">
+<link rel="next" href="license.html" title="License">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="Rationale.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="license.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="contract__.bibliography"></a><a class="link" href="bibliography.html" title="Bibliography">Bibliography</a>
+</h2></div></div></div>
+<p>
+ [Abrahams2005] D. Abrahams, L. Crowl, T. Ottosen, and J. Widman. <span class="emphasis"><em>Proposal
+ to add Contract Programming to C++ (revision 2).</em></span> The C++ Standards
+ Committee, n1773,
+ 2005.
+ </p>
+<p>
+ [Bright2004] W. Bright. <a href="http://www.digitalmars.com/d/2.0/dbc.html" target="_top"><span class="emphasis"><em>Contract
+ Programming for the D Programming Language.</em></span></a> 2004.
+ </p>
+<p>
+ [Bright2004b] W. Bright. <a href="http://www.digitalmars.com/ctg/contract.html" target="_top"><span class="emphasis"><em>Contract
+ Programming for the Digital Mars C++ Compiler.</em></span></a> 2004.
+ </p>
+<p>
+ [C^2] Aechmea. <a href="http://www.programmersheaven.com/app/news/DisplayNews.aspx?NewsID=3843" target="_top"><span class="emphasis"><em>C^2
+ Contract Programming add-on for C++.</em></span></a> 2005.
+ </p>
+<p>
+ [Chrome2002] RemObjects. <a href="http://blogs.remobjects.com/blogs/mh/2008/05/01/p216" target="_top"><span class="emphasis"><em>Chromes:
+ Contract Programming for Object Pascal in .NET.</em></span></a> 2002.
+ </p>
+<p>
+ [Cline1990] M. Cline and D. Lea. "The Behaviour of C++ Classes" and
+ "Using Annotated C++". <span class="emphasis"><em>Proc. of the Symposium on Object
+ Oriented Programming Emphasizing Practical Applications</em></span>, Maris College,
+ 19090.
+ </p>
+<p>
+ [Crowl2005] L. Crowl and T. Ottosen. <span class="emphasis"><em>Proposal to add Contract Programming
+ to C++ (revision 3).</em></span> The C++ Standards Committee, n1866,
+ 2005.
+ </p>
+<p>
+ [Crowl2006] L. Crowl and T. Ottosen. <span class="emphasis"><em>Proposal to add Contract Programming
+ to C++ (revision 4).</em></span> The C++ Standards Committee, n1962,
+ 2006.
+ </p>
+<p>
+ [iContract] O. Enseling. <a href="http://www.javaworld.com/javaworld/jw-02-2001/jw-0216-cooltools.html" target="_top"><span class="emphasis"><em>iContract:
+ Contract Programming for Java.</em></span></a> 2001.
+ </p>
+<p>
+ [Jcontract] Parasoft. <a href="http://www.parasoft.com/jsp/products/article.jsp?label=product_info_Jcontract" target="_top"><span class="emphasis"><em>Jcontract:
+ Contract Programming for Java.</em></span></a>
+ </p>
+<p>
+ [Maley1999] D. Maley and I. Spence. <a href="http://www.computer.org/portal/web/csdl/doi/10.1109/TOOLS.1999.779000" target="_top"><span class="emphasis"><em>Emulating
+ Design by Contract in C++.</em></span></a> Proceedings of TOOLS, IEEE Computer
+ Society, 1999.
+ </p>
+<p>
+ [Meyer1997] B. Meyer. <span class="emphasis"><em>Object Oriented Software Construction.</em></span>
+ Prentice-Hall, 2nd edition, 1997.
+ </p>
+<p>
+ [Mitchell2002] R. Mitchell and J. McKim. <span class="emphasis"><em>Design by Contract, by Example.</em></span>
+ Addison-Wesley, 2002.
+ </p>
+<p>
+ [Nelson2004] C. Nelson. <span class="emphasis"><em>Working draft changes for C99 preprocessor
+ synchronization.</em></span> C++ Standards Committee n1653,
+ 2004.
+ </p>
+<p>
+ [Ottosen2004] T. Ottosen. <span class="emphasis"><em>Proposal to add Design by Contract to C++.</em></span>
+ The C++ Standards Committee, n1613,
+ 2004.
+ </p>
+<p>
+ [Ottosen2004b] T. Ottosen. <span class="emphasis"><em>Proposal to add Contract Programming to
+ C++ (revision 1).</em></span> The C++ Standards Committee, n1669,
+ 2004.
+ </p>
+<p>
+ [SPARKAda] Praxis. <a href="http://www.praxis-his.com/sparkada/language.asp" target="_top"><span class="emphasis"><em>SPARKAda
+ (Ada-like Language with Contract Programming).</em></span></a>
+ </p>
+<p>
+ [Spec#] Microsoft. <a href="http:://research.microsoft.com/en-us/projects/specsharp/" target="_top"><span class="emphasis"><em>Spec#
+ (C# Extension).</em></span></a>
+ </p>
+<p>
+ [Stroustrup1997] B. Stroustrup. <span class="emphasis"><em>The C++ Programming Language.</em></span>
+ Prentice-Hall, 2nd Edition, 1997
+ </p>
+<p>
+ [Sutter2005] H. Sutter and F. Glassborow. <span class="emphasis"><em>Delegating Constructors,
+ revision 2.</em></span> C++ Standards Committee, n1895,
+ 2005.
+ </p>
+<p>
+ [Tandin2004] A. Tandin. <a href="http://www.codeproject.com/KB/macros/DbC_and_Doxygen.aspx" target="_top"><span class="emphasis"><em>Design
+ by Contract macros for C++ and link to Doxygen.</em></span></a> 2004.
+ </p>
+<p>
+ [Wilson2006] M. Wilson. <span class="emphasis"><em>Contract Programming 101 -- The Nuclear Reactor
+ and the Deep Space Probe.</em></span> <a href="http://www.artima.com/cppsource/deepspace.html" target="_top">The
+ C++ Source</a>, 2006.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="Rationale.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="license.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract__/contract_programming.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract__/contract_programming.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,886 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Annex: Contract Programming</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../index.html" title="Contract++ 0.3.490">
+<link rel="prev" href="throw_on_failure.html" title="Annex: Throw on Failure">
+<link rel="next" href="Grammar.html" title="Appendix: Grammar">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="throw_on_failure.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="Grammar.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="contract__.contract_programming"></a><a class="link" href="contract_programming.html" title="Annex: Contract Programming">Annex: Contract Programming</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Features</span></dt>
+<dt><span class="section">Requirements</span></dt>
+<dt><span class="section">Benefits</span></dt>
+<dt><span class="section">Costs</span></dt>
+<dt><span class="section">Other Tools</span></dt>
+</dl></div>
+<p>
+ This section continues the discussion on Contract Programming started in <a class="link" href="tutorial.html#contract__.tutorial.contract_programming_overview" title="Contract Programming Overview">Contract Programming
+ Overview</a>.
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="contract__.contract_programming.features"></a><a class="link" href="contract_programming.html#contract__.contract_programming.features" title="Features">Features</a>
+</h3></div></div></div>
+<p>
+ The following table compares features between this library, the proposal
+ for adding Contract Programming to the C++ standard <a class="link" href="bibliography.html" title="Bibliography">[Crowl2006]</a>
+ (see also <a class="link" href="bibliography.html" title="Bibliography">[Crowl2005]</a>, <a class="link" href="bibliography.html" title="Bibliography">[Abrahams2005]</a>, <a class="link" href="bibliography.html" title="Bibliography">[Ottosen2004b]</a>,
+ and <a class="link" href="bibliography.html" title="Bibliography">[Ottosen2004]</a>) <sup>[<a name="id950232" href="#ftn.id950232" class="footnote">19</a>]</sup> , the Eiffel programming language <a class="link" href="bibliography.html" title="Bibliography">[Meyer1997]</a>,
+ and the D programming language <a class="link" href="bibliography.html" title="Bibliography">[Bright2004]</a>.
+ </p>
+<div class="table">
+<a name="id950262"></a><p class="title"><b>Table&#160;1.&#160;Contract Programming Feature Comparison</b></p>
+<div class="table-contents"><table class="table" summary="Contract Programming Feature Comparison">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Feature
+ </p>
+ </th>
+<th>
+ <p>
+ This Library
+ </p>
+ </th>
+<th>
+ <p>
+ C++ Standard Proposal
+ </p>
+ </th>
+<th>
+ <p>
+ ISE Eiffel 5.4
+ </p>
+ </th>
+<th>
+ <p>
+ D
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Keywords</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ In contract macros preprocessor sequence: <code class="literal">(precondition)</code>,
+ <code class="literal">(postcondition)</code>, <code class="literal">(body)</code>,
+ <code class="literal">(copyable)</code>, <code class="literal">(inherit)</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">invariant</code>, <code class="literal">precondition</code>,
+ <code class="literal">postcondition</code>, <code class="literal">oldof</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">invariant</code>, <code class="literal">require</code>, <code class="literal">ensure</code>,
+ <code class="literal">do</code>, <code class="literal">require else</code>, <code class="literal">ensure
+ then</code>, <code class="literal">old</code>, <code class="literal">result</code>,
+ <code class="literal">variant</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">invariant</code>, <code class="literal">in</code>, <code class="literal">out</code>,
+ <code class="literal">assert</code>, <code class="literal">static</code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>On contract failure</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Default to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">()</span></code> but can be customized (might
+ throw)
+ </p>
+ </td>
+<td>
+ <p>
+ Default to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">()</span></code> but can be customized (might
+ throw)
+ </p>
+ </td>
+<td>
+ <p>
+ Throw exception
+ </p>
+ </td>
+<td>
+ <p>
+ Throw exception
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Return value in postconditions</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">(postcondition)(</code><span class="emphasis"><em>result-name</em></span><code class="literal">)</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">postcondition (</code><span class="emphasis"><em>result-name</em></span><code class="literal">)</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">result</code> keyword
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Old values in postconditions</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">CONTRACT_OLDOF(</code><span class="emphasis"><em>name</em></span><code class="literal">)</code>
+ (but only for class and argument types tagged <code class="computeroutput"><span class="identifier">contract</span><span class="special">::</span><span class="identifier">copyable</span></code>)
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">oldof</code> keyword
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">old</code> keyword
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Subcontracting</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, also support multiple base contracts for multiple inheritance
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, also support multiple base contracts but only base classes
+ can specify preconditions
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Contracts for abstract functions</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ No (planned)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Arbitrary code in contracts</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes (but recommended to limit contracts to a list of assertions
+ <code class="literal">CONTRACT_ASSERT()</code> and to use only public members
+ in preconditions)
+ </p>
+ </td>
+<td>
+ <p>
+ No, assertions only
+ </p>
+ </td>
+<td>
+ <p>
+ No, assertions only plus preconditions can only access public members
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Constant-correct</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Function code ordering</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ In contract macros preprocessor sequence: Preconditions -&gt; postconditions
+ -&gt; body
+ </p>
+ </td>
+<td>
+ <p>
+ Preconditions, postconditions, body
+ </p>
+ </td>
+<td>
+ <p>
+ Preconditions, body, postconditions
+ </p>
+ </td>
+<td>
+ <p>
+ Preconditions, postconditions, body
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Static assertions</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ No (but Boost.MPL
+ can be used within contracts)
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Block invariants</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">CONTRACT_ASSERT_BLOCK_INVARIANT()</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">invariant</code>
+ </p>
+ </td>
+<td>
+ <p>
+ No, but support loop invariants (loops are special code blocks
+ that iterate)
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Loop variants</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, <code class="literal">CONTRACT_ASSERT_LOOP_VARIANT()</code> and <code class="literal">CONTRACT_INIT_LOOP_VARIANT</code>
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Disable assertion checking within assertions checking
+ (policy)</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes (to prevent infinite recursion)
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, but not in preconditions
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Nested function calls (policy)</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Disable checking of class invariants (static and non)
+ </p>
+ </td>
+<td>
+ <p>
+ Disable nothing
+ </p>
+ </td>
+<td>
+ <p>
+ Disable all checks
+ </p>
+ </td>
+<td>
+ <p>
+ Disable nothing
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Non-static class invariants checking (policy)</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ At constructor exit, around any non-static function, at destructor
+ entry, and at function exit due to exception -- but only if programmers
+ specifies contracts for those (e.g., if no contract specified for
+ a private function then no class invariant and no contract is checked
+ for that function)
+ </p>
+ </td>
+<td>
+ <p>
+ At constructor exit, around public functions, at destructor entry,
+ and at function exit due to exception
+ </p>
+ </td>
+<td>
+ <p>
+ At constructor exit, and around public functions
+ </p>
+ </td>
+<td>
+ <p>
+ At constructor exit, around public functions, and at destructor
+ entry
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Static class invariants checking (policy)</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ At entry and exit of any (also static) member function, constructor,
+ and destructor
+ </p>
+ </td>
+<td>
+ <p>
+ No static class invariants
+ </p>
+ </td>
+<td>
+ <p>
+ No static class invariants
+ </p>
+ </td>
+<td>
+ <p>
+ No static class invariants
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="emphasis"><em>Removable from object code</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, any combinations of <code class="computeroutput"><span class="identifier">CONTRACT_CHECK_BLOCK_INVARIANT</span></code>,
+ <code class="computeroutput"><span class="identifier">CONTRACT_CHECK_CLASS_INVARIANT</span></code>,
+ <code class="computeroutput"><span class="identifier">CONTRACT_CHECK_PRECONDITION</span></code>,
+ and <code class="computeroutput"><span class="identifier">CONTRACT_CHECK_POSTCONDITION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Yes (but predefined combinations only)
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="contract__.contract_programming.requirements"></a><a class="link" href="contract_programming.html#contract__.contract_programming.requirements" title="Requirements">Requirements</a>
+</h3></div></div></div>
+<p>
+ The design of this library was largely based on the requirements identified
+ by the different revisions of the proposal for adding Contract Programming
+ to the C++ standard <a class="link" href="bibliography.html" title="Bibliography">[Crowl2006, etc]</a>
+ and by the Eiffel programming language <a class="link" href="bibliography.html" title="Bibliography">[Meyer1997]</a>.
+ </p>
+<p>
+ This is a list of some of the specific requirements considered for the library
+ design:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Implement Contract Programming within ISO standard C++ (without using
+ external preprcessing tools, etc).
+ </li>
+<li class="listitem">
+ Support optional contract compilation and checking. Programmers can select
+ any combination among invariants, preconditions, and postconditions to
+ be compiled and checked (e.g., compile and check invariants and postconditions
+ only).
+ </li>
+<li class="listitem">
+ Programmers can decide the action to take on contract failure.
+ </li>
+<li class="listitem">
+ Programmers can completely remove contract code for compilation. In other
+ words, if no invariants, no preconditions, and no postconditions are
+ compiled and checked then the user code should remain unchanged (for
+ object size, execution time, compilation-time, etc).
+ </li>
+<li class="listitem">
+ Support old values in postconditions for copyable types. Plus allow programmers
+ to remove the extra copy overhead even for copyable types if the old
+ value is not needed in postconditions (e.g., by not specifying the type
+ copyable).
+ </li>
+<li class="listitem">
+ Support result value in postconditions.
+ </li>
+<li class="listitem">
+ Support subcontracting with multiple inheritance.
+ </li>
+<li class="listitem">
+ Enforce contract constant-correctness at compile-time.
+ </li>
+<li class="listitem">
+ Do not alter the user code public API.
+ </li>
+<li class="listitem">
+ Support contract for all C++ constructs (operators, template class, template
+ functions, static members, non-members, non-static members, constructors,
+ destructors, pure virtual members, etc).
+ </li>
+<li class="listitem">
+ Program contracts together with function and class declarations (not
+ definitions) because contracts are part of the specifications.
+ </li>
+<li class="listitem">
+ Support contract when function (body) definition is separated from (contract)
+ declaration.
+ </li>
+<li class="listitem">
+ Support block invariants.
+ </li>
+<li class="listitem">
+ Support loop variants and invariants.
+ </li>
+</ol></div>
+<p>
+ In addition, library early implementations were somewhat inspired by the
+ work of <a class="link" href="bibliography.html" title="Bibliography">[Maley1999]</a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="contract__.contract_programming.benefits"></a><a class="link" href="contract_programming.html#contract__.contract_programming.benefits" title="Benefits">Benefits</a>
+</h3></div></div></div>
+<p>
+ The main use of Contract Programming is to improve software quality. <a class="link" href="bibliography.html" title="Bibliography">[Meyer1997]</a> discusses how Contract
+ Programming can be used as the basic tool to write "correct" software.
+ The following is a short summary of the benefits associated with Contract
+ Programming mainly taken from <a class="link" href="bibliography.html" title="Bibliography">[Ottosen2004]</a>.
+ See also <a class="link" href="bibliography.html" title="Bibliography">[Wilson2006]</a> for
+ a discussion of Contract Programming applied to the C++ programming language.
+ Furhtermore, <a class="link" href="bibliography.html" title="Bibliography">[Stroustrup1997]</a>
+ discusses the key importance of class invariants plus advantages and disadvantages
+ of using preconditions and postconditions.
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Using class invariants, programmers can describe what to expect from
+ a class and the logic dependencies between the class members. It is the
+ job of the constructor to ensure that the class invariants are satisfied
+ when the object is first created. Then the implementation of the member
+ functions can be largely simplified as they can be written knowing that
+ the class invariants are satisfied because Contract Programing checks
+ them before and after the execution of every member function. Finally,
+ the destructor makes sure that the class invariants hold for the entire
+ object life-cycle checking the class invariants one last time before
+ destroying the object.
+ </li>
+<li class="listitem">
+ Using function preconditions and postconditions, programmers can give
+ a precise semantic description of what a function requires at its entry
+ and what it ensures under its (normal) exit. In particular, using the
+ old value in postconditions, Contract Programming provides a mechanism
+ that allows programmers to compare values of an expression before and
+ after the executions of the function body. This mechanism is powerful
+ enough to enable programmers to express many constraints within the code
+ -- constraints that would otherwise have to be captured at the best only
+ informally by the code documentation.
+ </li>
+<li class="listitem">
+ Because contracts are embedded directly into the source code, they are
+ executed and verified at run-time so they are always up to date with
+ the code itself. Therefore the specifications as documented by the contracts
+ can be trusted to always be up to date with the source code itself.
+ </li>
+<li class="listitem">
+ Contract Programming can provide a powerful debugging facility because,
+ if contracts are well written, bugs will cause contract assertions to
+ fail exactly where the problem first occurs instead that in some later
+ stage of the program in an apparently unrelated manner. In general, a
+ precondition failure points to a bug in the function caller. A postcondition
+ failure points instead to a bug in the function implementation. Furthermore,
+ in case of contract failure, this library provides detailed error messages
+ that greatly helps debugging. <sup>[<a name="id951869" href="#ftn.id951869" class="footnote">20</a>]</sup>
+ </li>
+<li class="listitem">
+ Contract Programming facilitates testing because a contract naturally
+ specifies what a test should check. For example, preconditions of a function
+ state which inputs cause the function to fail and postconditions state
+ which inputs cause it to exit normally.
+ </li>
+<li class="listitem">
+ Contract Programming can serve to reduce the gap between designers and
+ programmers by providing a precise and unambiguous specification language.
+ Moreover, contracts can make code reviews easier.
+ </li>
+<li class="listitem">
+ Contract Programming formalizes the virtual function overriding mechanism
+ via the concept of subcontracting. This keeps the base class programmers
+ in control as overriding functions still have to fully satisfy the base
+ class contracts.
+ </li>
+<li class="listitem">
+ Contract Programming assertions can replace <span class="emphasis"><em>defensive programming</em></span>
+ checks localizing these checks within the contract and making the code
+ more readable.
+ </li>
+</ol></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="contract__.contract_programming.costs"></a><a class="link" href="contract_programming.html#contract__.contract_programming.costs" title="Costs">Costs</a>
+</h3></div></div></div>
+<p>
+ Contract Programming benefits come to the cost of performance as discussed
+ in detail by both <a class="link" href="bibliography.html" title="Bibliography">[Stroustrup1997]</a>
+ and <a class="link" href="bibliography.html" title="Bibliography">[Meyer1997]</a>.
+ </p>
+<p>
+ The run-time performances are negatively impacted by Contract Programming
+ mainly because of the following:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ The extra processing required to check the assertions.
+ </li>
+<li class="listitem">
+ The extra processing required by the additional function calls (additional
+ functions are invoked to check class invariants, preconditions, and postconditions).
+ </li>
+<li class="listitem">
+ The extra processing required to copy object and function arguments when
+ their old values are accessed in postconditions.
+ </li>
+</ol></div>
+<p>
+ To alleviate some of these run-time performance impacts, you can selectively
+ turn off some of the contract compilation and the related run-time checking.
+ In reality, you will have to decide based on the performance trade-offs required
+ by your system but a reasonable approach might be to <sup>[<a name="id952047" href="#ftn.id952047" class="footnote">21</a>]</sup>:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Always write contracts to clarify the semantics of your design embedding
+ them directly into the code and its documentation.
+ </li>
+<li class="listitem">
+ Turn on class invariants, preconditions, and postconditions compilation
+ and checking during early testing.
+ </li>
+<li class="listitem">
+ Turn on only preconditions (and possibly class invariants) during release
+ testing and for the final release. (Postconditions are usually more expensive
+ to check.)
+ </li>
+</ul></div>
+<p>
+ Compile-time performances are also impacted by this library as compilation
+ time and compiler memory usage increase mainly because:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ The contracts appear in the class declaration (usually header files)
+ so they have to be re-compiled for each translation unit.
+ </li>
+<li class="listitem">
+ The library implementation extensively uses C++ preprocessor and template
+ metaprogramming which can significantly stress some compilers.
+ </li>
+</ol></div>
+<p>
+ In addition, Contract Programming might induce a false sense of security
+ on the correctness of the software. However, Contract Programming is proposed
+ here as a tool to complement (and not to substitute) testing.
+ </p>
+<p>
+ In general, Contract Programming is an essential approach to improve software
+ quality even if it comes at a performance cost. While performance trade-offs
+ should be carefully considered depending on the specific application domain,
+ software quality cannot be sacrificed -- it is difficult to see the value
+ of a system that quickly and efficiently provides the incorrect output.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="contract__.contract_programming.other_tools"></a><a class="link" href="contract_programming.html#contract__.contract_programming.other_tools" title="Other Tools">Other Tools</a>
+</h3></div></div></div>
+<p>
+ Contract Programming is also supported by the following tools (this is <span class="emphasis"><em>not</em></span>
+ a complete list):
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ <a class="link" href="bibliography.html" title="Bibliography">[Bright2004b]</a> is the Digital
+ Mars C++ compiler with added Contract Programming support.
+ </li>
+<li class="listitem">
+ <a class="link" href="bibliography.html" title="Bibliography">[C^2]</a> implements Contract
+ Programming for C++ using an external preprocessing tool.
+ </li>
+<li class="listitem">
+ <a class="link" href="bibliography.html" title="Bibliography">[Spec#]</a> extends C# with
+ Contract Programming.
+ </li>
+<li class="listitem">
+ <a class="link" href="bibliography.html" title="Bibliography">[iContract]</a> and <a class="link" href="bibliography.html" title="Bibliography">[Jcontract]</a> are external preprocessing
+ tools that implement Contract Programming for Java.
+ </li>
+<li class="listitem">
+ <a class="link" href="bibliography.html" title="Bibliography">[Chrome2002]</a> is Object
+ Pascal in .NET with Contract Programming support.
+ </li>
+<li class="listitem">
+ <a class="link" href="bibliography.html" title="Bibliography">[SPARKAda]</a> is an Ada-like
+ programming language with Contract Programming support.
+ </li>
+</ul></div>
+<p>
+ Typically, preprocessing tools external to the language work by transforming
+ specially formatted code comments into contract code that is then checked
+ at run-time.
+ </p>
+</div>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a id="ftn.id950232" href="#id950232" class="para">19</a>] </sup>
+ These are all revisions of the same proposal for adding Contract Programming
+ to the C++ standard.
+ </p></div>
+<div class="footnote"><p><sup>[<a id="ftn.id951869" href="#id951869" class="para">20</a>] </sup>
+ Of course, if the contract is ill written then Contract Programming
+ is of little use. However, it is less likely to have a bug in both
+ the function body and the contract than in the function body only.
+ For example, consider the validation of a result in postconditions.
+ Validating the return value might seem redundant, but in this case
+ we actually want that redundancy. When programmers write a function,
+ there is a certain probability that they make a mistake in implementing
+ the function body. When they specify the result of the function in
+ the postconditions, there is also a certain probability that they make
+ a mistake in writing the contract. However, the probability that they
+ make a mistake twice (in the body <span class="emphasis"><em>and</em></span> in the contract)
+ is lower than the probability that the mistake is made just once (in
+ the body).
+ </p></div>
+<div class="footnote"><p><sup>[<a id="ftn.id952047" href="#id952047" class="para">21</a>] </sup>
+ This approach is generally reasonable because in well tested production
+ code, validating the function body implementation via postconditions and
+ class invariants is rarely needed since the function has shown itself to
+ be "correct" during testing. On the other hand, checking arguments
+ has continuing need because of the evolution of the callers.
+ </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009, 2010 Lorenzo Caminiti<p>
+ Distributed under the Contract++ Software License, Version 1.0 (see accompanying
+ file LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="throw_on_failure.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="Grammar.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/contract/libs/contract/doc/html/contract__/examples.html
==============================================================================
--- (empty file)
+++ sandbox/contract/libs/contract/doc/html/contract__/examples.html 2011-05-31 14:35:22 EDT (Tue, 31 May 2011)
@@ -0,0 +1,1572 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Examples</title>
+<link rel="stylesheet" href="../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Contract++ 0.3.490">
+<link rel="up" href="../index.html" title="Contract++ 0.3.490">
+<link rel="prev" href="without_the_macros.html" title="Without the Macros">
+<link rel="next" href="throw_on_failure.html" title="Annex: Throw on Failure">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="without_the_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="throw_on_failure.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="contract__.examples"></a><a class="link" href="examples.html" title="Examples">Examples</a>
+</h2></div></div></div>
+<p>
+ This section provides source code of fully working examples that can all be
+ compiled and executed using this library. The most interesting examples (from
+ the authors' prospective) have highlighted keywords in their purpose descriptions.
+ </p>
+<p>
+ All examples presented in the Contract Programming proposal for the C++ standard
+ <a class="link" href="bibliography.html" title="Bibliography">[Crowl2006]</a> are programmed here
+ using the library. Most of the other examples have been ported to C++ from
+ Eiffel code using this library and they were originally presented in <a class="link" href="bibliography.html" title="Bibliography">[Meyer1997]</a> and <a class="link" href="bibliography.html" title="Bibliography">[Mitchell2002]</a>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Remember to #define the <code class="computeroutput">CONTRACT_CHECK_BLOCK_INVARIANT</code>,
+ <code class="computeroutput">CONTRACT_CHECK_CLASS_INVARIANT</code>,
+ <code class="computeroutput">CONTRACT_CHECK_PRECONDITION</code>,
+ and <code class="computeroutput">CONTRACT_CHECK_POSTCONDITION</code>
+ macro symbols using your compiler options (these symbols are #undefined by
+ default, see the <a class="link" href="getting_started.html" title="Getting Started">Getting Started</a>
+ section).
+ </p></td></tr>
+</table></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Contract++ Library Syntax (supported by ISO C++)
+ </p>
+ </th>
+<th>
+ <p>
+ N1962 and ConceptC++ Syntax (proposals not part of C++0x standard)
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">contract</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">utility</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <span class="comment">// For boost::prior().</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">concept_check</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+
+<span class="comment">// Contract helpers.</span>
+
+<span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+<span class="keyword">template</span><span class="special">(</span> <span class="keyword">class</span> <span class="identifier">Iter</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">)</span>
+ <span class="identifier">requires</span><span class="special">(</span> <span class="comment">// Concepts.</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ForwardIterator</span><span class="special">&lt;</span><span class="identifier">Iter</span><span class="special">&gt;,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">EqualityComparable</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="comment">// For simplicity, assume T comparable.</span>
+ <span class="special">)</span>
+<span class="keyword">bool</span> <span class="special">(</span><span class="identifier">all_equals</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">Iter</span><span class="special">)</span> <span class="identifier">first</span><span class="special">,</span> <span class="special">(</span><span class="identifier">Iter</span><span class="special">)</span> <span class="identifier">last</span><span class="special">,</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;)</span> <span class="identifier">val</span> <span class="special">)</span>
+<span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">for</span><span class="special">(</span><span class="identifier">Iter</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">first</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">last</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="keyword">if</span> <span class="special">(*</span><span class="identifier">i</span> <span class="special">!=</span> <span class="identifier">val</span><span class="special">)</span> <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+<span class="keyword">template</span><span class="special">(</span> <span class="keyword">class</span> <span class="identifier">Iter</span> <span class="special">)</span>
+ <span class="identifier">requires</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">FowardIterator</span><span class="special">&lt;</span><span class="identifier">Iter</span><span class="special">&gt;,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">EqualityComparable</span><span class="special">&lt;</span><span class="keyword">typename</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">FowardIterator</span><span class="special">&lt;</span><span class="identifier">Iter</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+ <span class="special">)</span>
+<span class="keyword">bool</span> <span class="special">(</span><span class="identifier">all_equals</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">Iter</span><span class="special">)</span> <span class="identifier">first1</span><span class="special">,</span> <span class="special">(</span><span class="identifier">Iter</span><span class="special">)</span> <span class="identifier">last1</span><span class="special">,</span> <span class="special">(</span><span class="identifier">Iter</span><span class="special">)</span> <span class="identifier">first2</span><span class="special">,</span> <span class="special">(</span><span class="identifier">Iter</span><span class="special">)</span> <span class="identifier">last2</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first1</span><span class="special">,</span> <span class="identifier">last1</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first2</span><span class="special">,</span> <span class="identifier">last2</span><span class="special">)</span>
+ <span class="special">)</span>
+<span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">Iter</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">first1</span><span class="special">,</span> <span class="identifier">j</span> <span class="special">=</span> <span class="identifier">first2</span><span class="special">;</span>
+ <span class="keyword">while</span><span class="special">(</span><span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">last1</span> <span class="special">&amp;&amp;</span> <span class="identifier">j</span> <span class="special">&lt;</span> <span class="identifier">last2</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(*</span><span class="identifier">i</span> <span class="special">!=</span> <span class="special">*</span><span class="identifier">j</span><span class="special">)</span> <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+ <span class="special">++</span><span class="identifier">i</span><span class="special">;</span> <span class="special">++</span><span class="identifier">j</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+<span class="keyword">template</span><span class="special">(</span> <span class="keyword">class</span> <span class="identifier">Iter</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Size</span> <span class="special">)</span>
+ <span class="identifier">requires</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ForwardIterator</span><span class="special">&lt;</span><span class="identifier">Iter</span><span class="special">&gt;,</span>
+ <span class="comment">// `IDENTITY_TYPE()` to handle commas within macro parameters.</span>
+ <span class="keyword">typename</span> <span class="identifier">CONTRACT_IDENTITY_TYPE</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">Convertible</span><span class="special">&lt;</span><span class="identifier">Size</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;))</span>
+ <span class="special">)</span>
+<span class="keyword">bool</span> <span class="special">(</span><span class="identifier">equal_distance</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">Iter</span><span class="special">)</span> <span class="identifier">first</span><span class="special">,</span> <span class="special">(</span><span class="identifier">Iter</span><span class="special">)</span> <span class="identifier">last</span><span class="special">,</span> <span class="special">(</span><span class="identifier">Size</span><span class="special">)</span> <span class="identifier">size</span> <span class="special">)</span>
+<span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">size</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span> <span class="comment">// Could tag for in-iter.</span>
+<span class="special">}</span>
+
+<span class="comment">// New vector interface (with contracts).</span>
+
+<span class="identifier">CONTRACT_CLASS</span><span class="special">(</span>
+<span class="keyword">template</span><span class="special">(</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span><span class="special">,</span> <span class="keyword">default</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">)</span>
+<span class="keyword">class</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">)</span> <span class="comment">// No base classes so no subcontracting for this example.</span>
+<span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">CONTRACT_CLASS_INVARIANT</span><span class="special">(</span> <span class="comment">// Used within a private context.</span>
+ <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="number">0</span><span class="special">),</span>
+ <span class="keyword">int</span><span class="special">(</span><span class="identifier">size</span><span class="special">())</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">()),</span>
+ <span class="keyword">int</span><span class="special">(</span><span class="identifier">size</span><span class="special">())</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">rbegin</span><span class="special">(),</span> <span class="identifier">rend</span><span class="special">()),</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;=</span> <span class="identifier">capacity</span><span class="special">(),</span>
+ <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&lt;=</span> <span class="identifier">max_size</span><span class="special">()</span>
+ <span class="special">)</span>
+ <span class="comment">// No static class invariants for this example.</span>
+
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">iterator</span> <span class="identifier">iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">const_iterator</span> <span class="identifier">const_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">reverse_iterator</span> <span class="identifier">reverse_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">const_reverse_iterator</span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">reference</span> <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">const_reference</span> <span class="identifier">const_reference</span><span class="special">;</span>
+
+ <span class="identifier">CONTRACT_CONSTRUCTOR</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">)()</span>
+ <span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">vector_</span><span class="special">()</span> <span class="special">)</span> <span class="comment">// Member initializers.</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_CONSTRUCTOR</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">explicit</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">)(</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">Alloc</span><span class="special">&amp;)</span> <span class="identifier">al</span> <span class="special">)</span>
+ <span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">al</span><span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">empty</span><span class="special">(),</span> <span class="identifier">al</span> <span class="special">==</span> <span class="identifier">get_allocator</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_CONSTRUCTOR</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">explicit</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">count</span> <span class="special">)</span>
+ <span class="identifier">initialize</span><span class="special">(</span> <span class="special">(</span><span class="identifier">vector_</span><span class="special">(</span><span class="identifier">count</span><span class="special">))</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">count</span><span class="special">,</span> <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">T</span><span class="special">())</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_CONSTRUCTOR</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">count</span><span class="special">,</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;)</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">count</span><span class="special">,</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">count</span><span class="special">,</span> <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_CONSTRUCTOR</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">count</span><span class="special">,</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;)</span> <span class="identifier">val</span><span class="special">,</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">Alloc</span><span class="special">&amp;)</span> <span class="identifier">al</span> <span class="special">)</span>
+ <span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">count</span><span class="special">,</span> <span class="identifier">val</span><span class="special">,</span> <span class="identifier">al</span><span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">count</span><span class="special">,</span>
+ <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">),</span>
+ <span class="identifier">al</span> <span class="special">==</span> <span class="identifier">get_allocator</span><span class="special">()</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_CONSTRUCTOR</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">)(</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">vector</span><span class="special">&amp;)</span> <span class="identifier">right</span> <span class="special">)</span>
+ <span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">right</span><span class="special">.</span><span class="identifier">vector_</span><span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">right</span> <span class="special">==</span> <span class="special">*</span><span class="keyword">this</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_CONSTRUCTOR</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">template</span><span class="special">(</span> <span class="keyword">class</span> <span class="identifier">InIt</span> <span class="special">)</span> <span class="identifier">requires</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">InputIterator</span><span class="special">&lt;</span><span class="identifier">InIt</span><span class="special">&gt;</span> <span class="special">)</span>
+ <span class="special">(</span><span class="identifier">vector</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">InIt</span><span class="special">)</span> <span class="identifier">first</span><span class="special">,</span> <span class="special">(</span><span class="identifier">InIt</span><span class="special">)</span> <span class="identifier">last</span> <span class="special">)</span>
+ <span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">equal_distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">size</span><span class="special">())</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_CONSTRUCTOR</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">template</span><span class="special">(</span> <span class="keyword">class</span> <span class="identifier">InIt</span> <span class="special">)</span> <span class="identifier">requires</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">InputIterator</span><span class="special">&lt;</span><span class="identifier">InIt</span><span class="special">&gt;</span> <span class="special">)</span>
+ <span class="special">(</span><span class="identifier">vector</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">InIt</span><span class="special">)</span> <span class="identifier">first</span><span class="special">,</span> <span class="special">(</span><span class="identifier">InIt</span><span class="special">)</span> <span class="identifier">last</span><span class="special">,</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">Alloc</span><span class="special">&amp;)</span> <span class="identifier">al</span> <span class="special">)</span>
+ <span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">al</span><span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="identifier">equal_distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">size</span><span class="special">()),</span>
+ <span class="identifier">al</span> <span class="special">==</span> <span class="identifier">get_allocator</span><span class="special">()</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_DESTRUCTOR</span><span class="special">(</span> <span class="comment">// Contracted so also destructor checks invariants.</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">)()</span>
+ <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">reserve</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">count</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">count</span> <span class="special">&lt;</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">count</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">reserve</span><span class="special">(</span><span class="identifier">count</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="special">(</span><span class="identifier">capacity</span><span class="special">)()</span> <span class="keyword">const</span> <span class="comment">// Constant member.</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span> <span class="identifier">result</span> <span class="special">&gt;=</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">)</span> <span class="comment">// With result.</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">capacity</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">begin</span><span class="special">)()</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">(</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">end</span><span class="special">()</span> <span class="special">)</span> <span class="comment">// Select assertion.</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">const_iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">begin</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">(</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">end</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span> <span class="comment">// Contracted even if no pre/post so to check invariants.</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">end</span><span class="special">)()</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">const_iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">end</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">reverse_iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">rbegin</span><span class="special">)()</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">(</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">rend</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">rbegin</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">const_reverse_iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">rbegin</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">(</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">rend</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">rbegin</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">reverse_iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">rend</span><span class="special">)()</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">rend</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">const_reverse_iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">rend</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">rend</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">resize</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">newsize</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span> <span class="comment">// Old values.</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">newsize</span><span class="special">,</span>
+ <span class="comment">// Version 1: with an if.</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">newsize</span> <span class="special">&gt;</span> <span class="identifier">old_size</span><span class="special">)</span> <span class="special">(</span>
+ <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">old_size</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">T</span><span class="special">())</span>
+ <span class="special">)</span> <span class="keyword">else</span> <span class="special">(</span>
+ <span class="keyword">true</span> <span class="comment">// Dummy assertion to show the optional else branch.</span>
+ <span class="special">)</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">resize</span><span class="special">(</span><span class="identifier">newsize</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">resize</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">newsize</span><span class="special">,</span> <span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span> <span class="comment">// Specify old type.</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">newsize</span><span class="special">,</span>
+ <span class="comment">// Version 2: with a ternary operator `condition ? then : else`.</span>
+ <span class="identifier">newsize</span> <span class="special">&gt;</span> <span class="identifier">old_size</span> <span class="special">?</span>
+ <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">old_size</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">:</span> <span class="keyword">true</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">resize</span><span class="special">(</span><span class="identifier">newsize</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="special">(</span><span class="identifier">size</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span> <span class="identifier">result</span> <span class="special">&lt;=</span> <span class="identifier">capacity</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="special">(</span><span class="identifier">max_size</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span> <span class="identifier">result</span> <span class="special">&gt;=</span> <span class="identifier">capacity</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">max_size</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">bool</span> <span class="special">(</span><span class="identifier">empty</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span> <span class="identifier">result</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">empty</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">Alloc</span><span class="special">)</span> <span class="special">(</span><span class="identifier">get_allocator</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">get_allocator</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">reference</span><span class="special">)</span> <span class="special">(</span><span class="identifier">at</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">off</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">off</span> <span class="special">&lt;</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">off</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">const_reference</span><span class="special">)</span> <span class="special">(</span><span class="identifier">at</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">off</span> <span class="special">)</span> <span class="keyword">const</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">off</span> <span class="special">&lt;</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">off</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span> <span class="comment">// Operators name in both symbol `[]` and word `at`.</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">reference</span><span class="special">)</span> <span class="keyword">operator</span><span class="special">([],</span> <span class="identifier">at</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">off</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">off</span> <span class="special">&lt;</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">[</span><span class="identifier">off</span><span class="special">];</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">const_reference</span><span class="special">)</span> <span class="keyword">operator</span><span class="special">([],</span> <span class="identifier">at</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">off</span> <span class="special">)</span> <span class="keyword">const</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">off</span> <span class="special">&lt;</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">[</span><span class="identifier">off</span><span class="special">];</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">reference</span><span class="special">)</span> <span class="special">(</span><span class="identifier">front</span><span class="special">)()</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="keyword">bool</span><span class="special">(!</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">)</span> <span class="comment">// `bool()` handles leading `!`.</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">front</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">const_reference</span><span class="special">)</span> <span class="special">(</span><span class="identifier">front</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">false</span> <span class="special">)</span> <span class="comment">// `== false` instead of `!`.</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">front</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">reference</span><span class="special">)</span> <span class="special">(</span><span class="identifier">back</span><span class="special">)()</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">contract</span><span class="special">::</span><span class="identifier">identity</span><span class="special">(!</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">)</span> <span class="comment">// `identity` for `!`.</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">const_reference</span><span class="special">)</span> <span class="special">(</span><span class="identifier">back</span><span class="special">)()</span> <span class="keyword">const</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">false</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">push_back</span><span class="special">)(</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;)</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span>
+ <span class="keyword">auto</span> <span class="identifier">old_capacity</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">capacity</span><span class="special">()),</span>
+ <span class="identifier">back</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">val</span><span class="special">,</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">old_size</span> <span class="special">+</span> <span class="number">1</span><span class="special">,</span>
+ <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">old_capacity</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">pop_back</span><span class="special">)()</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">false</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">old_size</span> <span class="special">-</span> <span class="number">1</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">template</span><span class="special">(</span> <span class="keyword">class</span> <span class="identifier">InIt</span> <span class="special">)</span> <span class="identifier">requires</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">InputIterator</span><span class="special">&lt;</span><span class="identifier">InIt</span><span class="special">&gt;</span> <span class="special">)</span>
+ <span class="keyword">void</span> <span class="special">(</span><span class="identifier">assign</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">InIt</span><span class="special">)</span> <span class="identifier">first</span><span class="special">,</span> <span class="special">(</span><span class="identifier">InIt</span><span class="special">)</span> <span class="identifier">last</span> <span class="special">)</span>
+ <span class="comment">/** @pre [first, last) not sub-range of [begin(), end()). */</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">equal_distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">size</span><span class="special">())</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">assign</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">count</span><span class="special">,</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;)</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">count</span> <span class="special">&lt;=</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">count</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">insert</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="identifier">pos</span><span class="special">,</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;)</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span>
+ <span class="identifier">val</span> <span class="special">==</span> <span class="special">*</span><span class="identifier">result</span><span class="special">,</span>
+ <span class="keyword">auto</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">old_size</span> <span class="special">+</span> <span class="number">1</span><span class="special">,</span>
+ <span class="keyword">auto</span> <span class="identifier">old_capacity</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">capacity</span><span class="special">()),</span>
+ <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">old_capacity</span>
+ <span class="comment">/** @post
+ * if capacity() &gt; oldof capacity():
+ * all iterators invalidated
+ * else:
+ * all iterators in [pos, end()) invalidated
+ */</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">pos</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">insert</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="identifier">pos</span><span class="special">,</span> <span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="identifier">count</span><span class="special">,</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;)</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="special">&gt;</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">count</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span>
+ <span class="keyword">auto</span> <span class="identifier">old_capacity</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">capacity</span><span class="special">()),</span>
+ <span class="keyword">auto</span> <span class="identifier">old_pos</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">pos</span><span class="special">),</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">old_size</span> <span class="special">+</span> <span class="identifier">count</span><span class="special">,</span>
+ <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">old_capacity</span><span class="special">,</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">capacity</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">old_capacity</span><span class="special">)</span> <span class="special">(</span>
+ <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">prior</span><span class="special">(</span><span class="identifier">old_pos</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">prior</span><span class="special">(</span><span class="identifier">old_pos</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">count</span><span class="special">,</span> <span class="identifier">val</span><span class="special">)</span>
+ <span class="comment">/** @post All iterators in [pos, end()) invalidated. */</span>
+ <span class="special">)</span>
+ <span class="comment">/** @post Else, all iterators invalidated. */</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">pos</span><span class="special">,</span> <span class="identifier">count</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">template</span><span class="special">(</span> <span class="keyword">class</span> <span class="identifier">InIt</span> <span class="special">)</span> <span class="identifier">requires</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">InputIterator</span><span class="special">&lt;</span><span class="identifier">InIt</span><span class="special">&gt;</span> <span class="special">)</span>
+ <span class="keyword">void</span> <span class="special">(</span><span class="identifier">insert</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="identifier">pos</span><span class="special">,</span> <span class="special">(</span><span class="identifier">InIt</span><span class="special">)</span> <span class="identifier">first</span><span class="special">,</span> <span class="special">(</span><span class="identifier">InIt</span><span class="special">)</span> <span class="identifier">last</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span>
+ <span class="comment">/** @pre [first, last) not a sub-range of [begin(), end()). */</span>
+ <span class="identifier">max_size</span><span class="special">()</span> <span class="special">&gt;</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span>
+ <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span>
+ <span class="keyword">auto</span> <span class="identifier">old_capacity</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">capacity</span><span class="special">()),</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">old_size</span> <span class="special">+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">),</span>
+ <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">old_capacity</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">pos</span><span class="special">,</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">erase</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="identifier">pos</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span>
+ <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">false</span><span class="special">,</span>
+ <span class="identifier">pos</span> <span class="special">!=</span> <span class="identifier">end</span><span class="special">()</span>
+ <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span>
+ <span class="keyword">auto</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">old_size</span> <span class="special">-</span> <span class="number">1</span><span class="special">,</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">(</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">end</span><span class="special">()</span> <span class="special">)</span>
+ <span class="comment">/** @post Iterators in [pos, end()) invalidated. */</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">erase</span><span class="special">(</span><span class="identifier">pos</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="special">(</span><span class="identifier">erase</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="identifier">first</span><span class="special">,</span> <span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span> <span class="identifier">last</span> <span class="special">)</span>
+ <span class="identifier">precondition</span><span class="special">(</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span>
+ <span class="keyword">auto</span> <span class="identifier">old_size</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">size</span><span class="special">()),</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">old_size</span> <span class="special">-</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">),</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">(</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">end</span><span class="special">()</span> <span class="special">)</span>
+ <span class="comment">/** @post Iterators in [first, end()) invalidated. */</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">erase</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">clear</span><span class="special">)()</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">clear</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">void</span> <span class="special">(</span><span class="identifier">swap</span><span class="special">)(</span> <span class="special">(</span><span class="identifier">vector</span><span class="special">&amp;)</span> <span class="identifier">right</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">old_self</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(*</span><span class="keyword">this</span><span class="special">),</span> <span class="comment">// Deep copy (not just ptr).</span>
+ <span class="keyword">auto</span> <span class="identifier">old_right</span> <span class="special">=</span> <span class="identifier">CONTRACT_OLDOF</span><span class="special">(</span><span class="identifier">right</span><span class="special">),</span>
+ <span class="identifier">right</span> <span class="special">==</span> <span class="identifier">old_self</span><span class="special">,</span>
+ <span class="identifier">old_right</span> <span class="special">==</span> <span class="special">*</span><span class="keyword">this</span><span class="special">,</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">right</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">CONTRACT_FUNCTION</span><span class="special">(</span>
+ <span class="keyword">public</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">(==,</span> <span class="identifier">equal</span><span class="special">)(</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">vector</span><span class="special">&amp;)</span> <span class="identifier">right</span> <span class="special">)</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span>
+ <span class="keyword">auto</span> <span class="identifier">result</span> <span class="special">=</span> <span class="keyword">return</span><span class="special">,</span>
+ <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">right</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">right</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span>
+ <span class="special">)</span>
+ <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span> <span class="special">==</span> <span class="identifier">right</span><span class="special">.</span><span class="identifier">vector_</span><span class="special">;</span>
+ <span class="special">}</span>
+
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;</span> <span class="identifier">vector_</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// Extra spaces, newlines, public, etc to better align code with library syntax.</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">concepts</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+
+<span class="comment">// Contract helpers.</span>
+
+
+<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">Iter</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">&gt;</span>
+ <span class="identifier">requires</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ForwardIterator</span><span class="special">&lt;</span><span class="identifier">Iter</span><span class="special">&gt;,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">EqualityComparable</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span>
+
+<span class="keyword">bool</span> <span class="identifier">all_equals</span><span class="special">(</span> <span class="identifier">Iter</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iter</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">for</span><span class="special">(</span><span class="identifier">Iter</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">first</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">last</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="keyword">if</span> <span class="special">(*</span><span class="identifier">i</span> <span class="special">!=</span> <span class="identifier">val</span><span class="special">)</span> <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+<span class="special">}</span>
+
+
+<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">Iter</span> <span class="special">&gt;</span>
+ <span class="identifier">requires</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ForwardIterator</span><span class="special">&lt;</span><span class="identifier">Iter</span><span class="special">&gt;,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">EqualityComparable</span><span class="special">&lt;</span><span class="keyword">typename</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ForwardIterator</span><span class="special">&lt;</span><span class="identifier">Iter</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+
+<span class="keyword">bool</span> <span class="identifier">all_equals</span><span class="special">(</span> <span class="identifier">Iter</span> <span class="identifier">first1</span><span class="special">,</span> <span class="identifier">Iter</span> <span class="identifier">last1</span><span class="special">,</span> <span class="identifier">Iter</span> <span class="identifier">first2</span><span class="special">,</span> <span class="identifier">Iter</span> <span class="identifier">last2</span> <span class="special">)</span>
+ <span class="identifier">precondition</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first1</span><span class="special">,</span> <span class="identifier">last1</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first2</span><span class="special">,</span> <span class="identifier">last2</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">{</span>
+ <span class="identifier">Iter</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">first1</span><span class="special">,</span> <span class="identifier">j</span> <span class="special">=</span> <span class="identifier">first2</span><span class="special">;</span>
+ <span class="keyword">while</span><span class="special">(</span><span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">last1</span> <span class="special">&amp;&amp;</span> <span class="identifier">j</span> <span class="special">&lt;</span> <span class="identifier">last2</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(*</span><span class="identifier">i</span> <span class="special">!=</span> <span class="special">*</span><span class="identifier">j</span><span class="special">)</span> <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+ <span class="special">++</span><span class="identifier">i</span><span class="special">;</span> <span class="special">++</span><span class="identifier">j</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+<span class="special">}</span>
+
+
+<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">Iter</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Size</span> <span class="special">&gt;</span>
+ <span class="identifier">requires</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ForwardIterator</span><span class="special">&lt;</span><span class="identifier">Iter</span><span class="special">&gt;,</span>
+
+ <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">Convertible</span><span class="special">&lt;</span><span class="identifier">Size</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span>
+
+<span class="keyword">bool</span> <span class="identifier">equal_distance</span><span class="special">(</span><span class="identifier">Iter</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iter</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">Size</span> <span class="identifier">size</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="keyword">int</span><span class="special">(</span><span class="identifier">size</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="comment">// New vector interface (with contracts).</span>
+
+
+<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">vector</span>
+<span class="special">{</span>
+ <span class="identifier">invariant</span> <span class="special">{</span>
+ <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="number">0</span><span class="special">);</span>
+ <span class="keyword">int</span><span class="special">(</span><span class="identifier">size</span><span class="special">())</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">());</span>
+ <span class="keyword">int</span><span class="special">(</span><span class="identifier">size</span><span class="special">())</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">rbegin</span><span class="special">(),</span> <span class="identifier">rend</span><span class="special">());</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;=</span> <span class="identifier">capacity</span><span class="special">();</span>
+ <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&lt;=</span> <span class="identifier">max_size</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="comment">// No static class invariants allowed (could be `static invariant { ... }`).</span>
+
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">iterator</span> <span class="identifier">iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">const_iterator</span> <span class="identifier">const_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">reverse_iterator</span> <span class="identifier">reverse_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">const_reverse_iterator</span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">reference</span> <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;::</span><span class="identifier">const_reference</span> <span class="identifier">const_reference</span><span class="special">;</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">vector</span><span class="special">()</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">()</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">empty</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">explicit</span> <span class="identifier">vector</span><span class="special">(</span> <span class="keyword">const</span> <span class="identifier">Alloc</span><span class="special">&amp;</span> <span class="identifier">al</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">al</span><span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">empty</span><span class="special">();</span> <span class="identifier">al</span> <span class="special">==</span> <span class="identifier">get_allocator</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">explicit</span> <span class="identifier">vector</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">count</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">count</span><span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">count</span><span class="special">;</span> <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">T</span><span class="special">());</span> <span class="special">}</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">vector</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">count</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">count</span><span class="special">,</span> <span class="identifier">val</span><span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">count</span><span class="special">;</span> <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">);</span> <span class="special">}</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">vector</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">count</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Alloc</span><span class="special">&amp;</span> <span class="identifier">al</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">count</span><span class="special">,</span> <span class="identifier">val</span><span class="special">,</span> <span class="identifier">al</span><span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span>
+ <span class="identifier">size</span> <span class="special">==</span> <span class="identifier">count</span><span class="special">;</span>
+ <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="identifier">al</span> <span class="special">==</span> <span class="identifier">get_allocator</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">vector</span><span class="special">(</span> <span class="keyword">const</span> <span class="identifier">vector</span><span class="special">&amp;</span> <span class="identifier">right</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">right</span><span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">right</span> <span class="special">==</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">InIt</span> <span class="special">&gt;</span> <span class="identifier">requires</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">InputIterator</span><span class="special">&lt;</span><span class="identifier">InIt</span><span class="special">&gt;</span>
+ <span class="identifier">vector</span><span class="special">(</span> <span class="identifier">InIt</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">InIt</span> <span class="identifier">last</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">equal_distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">size</span><span class="special">());</span> <span class="special">}</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">InIt</span> <span class="special">&gt;</span> <span class="identifier">requires</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">InputIterator</span><span class="special">&lt;</span><span class="identifier">InIt</span><span class="special">&gt;</span>
+ <span class="identifier">vector</span><span class="special">(</span> <span class="identifier">InIt</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">InIt</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Alloc</span><span class="special">&amp;</span> <span class="identifier">al</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">vector_</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">al</span><span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span>
+ <span class="identifier">equal_distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">size</span><span class="special">());</span>
+ <span class="identifier">al</span> <span class="special">==</span> <span class="identifier">get_allocator</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="special">~</span><span class="identifier">vector</span><span class="special">()</span>
+ <span class="special">{}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">void</span> <span class="identifier">reserve</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">count</span> <span class="special">)</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">count</span> <span class="special">&lt;</span> <span class="identifier">max_size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">count</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">reverse</span><span class="special">(</span><span class="identifier">count</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">size_type</span> <span class="identifier">capacity</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span> <span class="identifier">result</span> <span class="special">&gt;=</span> <span class="identifier">size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">capacity</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">()</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span>
+
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">end</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span>
+
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">end</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span>
+
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">rend</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">rbegin</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span>
+
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span> <span class="identifier">result</span> <span class="special">==</span> <span class="identifier">rend</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">rbegin</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">rend</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">rend</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">void</span> <span class="identifier">resize</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">newsize</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span>
+
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">newsize</span><span class="special">;</span>
+ <span class="comment">// Version 1: with an if.</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">newsize</span> <span class="special">&gt;</span> <span class="identifier">oldof</span> <span class="identifier">size</span><span class="special">())</span> <span class="special">{</span> <span class="comment">// Old values.</span>
+ <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">oldof</span> <span class="identifier">size</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">T</span><span class="special">());</span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="keyword">true</span><span class="special">;</span> <span class="comment">// Dummy assertion to show the optional else branch.</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">resize</span><span class="special">(</span><span class="identifier">newsize</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">void</span> <span class="identifier">resize</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">newsize</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span>
+
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">newsize</span><span class="special">;</span>
+ <span class="comment">// Version 2: with ternary operator `condition ? then : else`.</span>
+ <span class="identifier">newsize</span> <span class="special">&gt;</span> <span class="identifier">oldof</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">?</span> <span class="comment">// then</span>
+ <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">oldof</span> <span class="identifier">size</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">:</span> <span class="keyword">true</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">resize</span><span class="special">(</span><span class="identifier">newsize</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span> <span class="identifier">result</span> <span class="special">&lt;=</span> <span class="identifier">capacity</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">size_type</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span> <span class="identifier">result</span> <span class="special">&gt;=</span> <span class="identifier">capacity</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vactor_</span><span class="special">.</span><span class="identifier">max_size</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span> <span class="identifier">result</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="number">0</span><span class="special">);</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">empty</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">Alloc</span> <span class="identifier">get_allocator</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">get_allocator</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">reference</span> <span class="identifier">at</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">off</span> <span class="special">)</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">off</span> <span class="special">&lt;</span> <span class="identifier">size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">off</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">const_reference</span> <span class="identifier">at</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">off</span> <span class="special">)</span> <span class="keyword">const</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">off</span> <span class="special">&lt;</span> <span class="identifier">size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">off</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">[](</span> <span class="identifier">size_type</span> <span class="identifier">off</span> <span class="special">)</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">off</span> <span class="special">&lt;</span> <span class="identifier">size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">[</span><span class="identifier">off</span><span class="special">];</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">const_reference</span> <span class="keyword">operator</span><span class="special">[](</span> <span class="identifier">size_type</span> <span class="identifier">off</span> <span class="special">)</span> <span class="keyword">const</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">off</span> <span class="special">&lt;</span> <span class="identifier">size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">[</span><span class="identifier">off</span><span class="special">];</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">reference</span> <span class="identifier">front</span><span class="special">()</span>
+ <span class="identifier">recondition</span> <span class="special">{</span> <span class="keyword">bool</span><span class="special">(!</span><span class="identifier">empty</span><span class="special">());</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">front</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">const_reference</span> <span class="identifier">front</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">false</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">front</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">reference</span> <span class="identifier">back</span><span class="special">()</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="special">!</span><span class="identifier">empty</span><span class="special">();</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">const_reference</span> <span class="identifier">back</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">false</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">void</span> <span class="identifier">push_back</span><span class="special">(</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;</span> <span class="identifier">max_size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span>
+
+
+ <span class="identifier">back</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">val</span><span class="special">;</span>
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">oldof</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">;</span>
+ <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">oldof</span> <span class="identifier">capacity</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="identifier">pubilc</span><span class="special">:</span> <span class="keyword">void</span> <span class="identifier">pop_back</span><span class="special">()</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">false</span><span class="special">;</span> <span class="special">}</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span>
+
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">oldof</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">-</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="identifier">pubilc</span><span class="special">:</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">InIt</span> <span class="special">&gt;</span> <span class="identifier">requires</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">InputIterator</span><span class="special">&lt;</span><span class="identifier">InIt</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">assign</span><span class="special">(</span> <span class="identifier">InIt</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">InIt</span> <span class="identifier">last</span> <span class="special">)</span>
+ <span class="comment">/** @pre [first, last) not sub-range of [begin(), end()). */</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">equal_distance</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">size</span><span class="special">());</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">void</span> <span class="identifier">assign</span><span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">count</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">count</span> <span class="special">&lt;=</span> <span class="identifier">max_size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="identifier">postcondition</span> <span class="special">{</span> <span class="identifier">all_equals</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">end</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">);</span> <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="identifier">assign</span><span class="special">(</span><span class="identifier">count</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="identifier">iterator</span> <span class="identifier">insert</span><span class="special">(</span> <span class="identifier">iterator</span> <span class="identifier">where</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;</span> <span class="identifier">max_size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="identifier">postcondition</span><span class="special">(</span> <span class="identifier">result</span> <span class="special">)</span> <span class="special">{</span>
+
+ <span class="identifier">val</span> <span class="special">==</span> <span class="special">*</span><span class="identifier">result</span><span class="special">;</span>
+
+ <span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">oldof</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">;</span>
+
+ <span class="identifier">capacity</span><span class="special">()</span> <span class="special">&gt;=</span> <span class="identifier">oldof</span> <span class="identifier">capacity</span><span class="special">();</span>
+ <span class="comment">/** @post
+ * if capacity() &gt; oldof capacity():
+ * all iterators invalidated
+ * else:
+ * all iterators in [pos, end()) invalidated
+ */</span>
+ <span class="special">}</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">vector_</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">pos</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span> <span class="keyword">void</span> <span class="identifier">insert</span><span class="special">(</span> <span class="identifier">iterator</span> <span class="identifier">pos</span><span class="special">,</span> <span class="identifier">size_type</span> <span class="identifier">count</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span> <span class="special">)</span>
+ <span class="identifier">precondition</span> <span class="special">{</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">count</span> <span class="special">&lt;=</span> <span class="identifier">max_size</span><span class="special">();</span> <span class="special">}</span>
+ <span class="identifier"