Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2008-04-14 01:19:05


Author: eric_niebler
Date: 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
New Revision: 44393
URL: http://svn.boost.org/trac/boost/changeset/44393

Log:
Merged revisions 44111-44378 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r44114 | emildotchevski | 2008-04-08 14:29:37 -0700 (Tue, 08 Apr 2008) | 1 line
  
  fixed compile errors, removed tabs as required.
........
  r44118 | djowel | 2008-04-08 18:29:12 -0700 (Tue, 08 Apr 2008) | 7 lines
  
  In preparation for spirit2:
  * flat includes
  * home directory
  * forwarding headers
  * classic spirit
........
  r44119 | djowel | 2008-04-08 18:51:47 -0700 (Tue, 08 Apr 2008) | 7 lines
  
  In preparation for spirit2:
  * flat includes
  * home directory
  * forwarding headers
  * classic spirit
........
  r44120 | hkaiser | 2008-04-08 19:17:53 -0700 (Tue, 08 Apr 2008) | 1 line
  
  Fixed one more include path
........
  r44121 | johnmaddock | 2008-04-09 04:34:20 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Run config_info and config_test in both single and multi-thread modes.
........
  r44122 | johnmaddock | 2008-04-09 04:34:45 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Run config_info and config_test in both single and multi-thread modes.
........
  r44123 | johnmaddock | 2008-04-09 04:35:36 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Added needed #includes.
........
  r44124 | johnmaddock | 2008-04-09 04:45:15 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Added improved SVG support.
........
  r44125 | hkaiser | 2008-04-09 06:50:03 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Fixed #pragma message directives and a couple of forwarding headers.
........
  r44126 | johnmaddock | 2008-04-09 08:21:03 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Fix bug report #1797.
........
  r44127 | johnmaddock | 2008-04-09 08:31:33 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Update for bug report #1790.
........
  r44128 | johnmaddock | 2008-04-09 08:32:08 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Fix for bug #1790.
........
  r44130 | danieljames | 2008-04-09 10:26:31 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Fix a typo.
........
  r44131 | danieljames | 2008-04-09 10:27:08 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Rebuild the function types documentation.
........
  r44132 | pdimov | 2008-04-09 10:49:20 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Proper try_lock semantics.
........
  r44134 | emildotchevski | 2008-04-09 11:48:39 -0700 (Wed, 09 Apr 2008) | 1 line
  
  missing include
........
  r44136 | anthonyw | 2008-04-09 12:33:06 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Added test for trac ticket #1803: condition_variable::notify_one may fail to wake a waiting thread on win32
........
  r44137 | pdimov | 2008-04-09 12:58:54 -0700 (Wed, 09 Apr 2008) | 1 line
  
  sp_counted_base_spin.hpp added, enabled by BOOST_SP_USE_SPINLOCK.
........
  r44138 | pdimov | 2008-04-09 14:08:39 -0700 (Wed, 09 Apr 2008) | 1 line
  
  spinlock_gcc_arm.hpp added.
........
  r44139 | grafik | 2008-04-09 14:20:28 -0700 (Wed, 09 Apr 2008) | 1 line
  
  Add ARM architecture/instrustion-set.
........
  r44140 | pdimov | 2008-04-09 16:19:22 -0700 (Wed, 09 Apr 2008) | 1 line
  
  ARM assembly fix.
........
  r44145 | johnmaddock | 2008-04-10 05:46:41 -0700 (Thu, 10 Apr 2008) | 2 lines
  
  Doh! Changes to code should actually compile!
  A fix for the last change.
........
  r44146 | anthonyw | 2008-04-10 06:14:43 -0700 (Thu, 10 Apr 2008) | 1 line
  
  fix for notify problem in trac ticket #1803
........
  r44147 | anthonyw | 2008-04-10 06:27:44 -0700 (Thu, 10 Apr 2008) | 1 line
  
  fix for trac ticket #1804
........
  r44148 | anthonyw | 2008-04-10 06:35:07 -0700 (Thu, 10 Apr 2008) | 1 line
  
  Added native_handle to thread on posix platforms
........
  r44149 | anthonyw | 2008-04-10 07:07:39 -0700 (Thu, 10 Apr 2008) | 1 line
  
  added overloads of timed_lock_shared with a relative timeout to shared_mutex
........
  r44150 | anthonyw | 2008-04-10 07:15:26 -0700 (Thu, 10 Apr 2008) | 1 line
  
  added tests for plain timed_lock on shared_mutex
........
  r44151 | daniel_frey | 2008-04-10 07:38:14 -0700 (Thu, 10 Apr 2008) | 1 line
  
  Added test and fix for "convertible to bool" requirement
........
  r44152 | anthonyw | 2008-04-10 08:52:01 -0700 (Thu, 10 Apr 2008) | 1 line
  
  Added native_handle to condition_variable on pthreads
........
  r44153 | anthonyw | 2008-04-10 11:34:42 -0700 (Thu, 10 Apr 2008) | 1 line
  
  Updated thread.hpp as catch-all header
........
  r44160 | dgregor | 2008-04-10 14:05:14 -0700 (Thu, 10 Apr 2008) | 1 line
  
  Refactor mpi_datatype_cache to fix problems on VC9
........
  r44161 | danieljames | 2008-04-10 14:06:48 -0700 (Thu, 10 Apr 2008) | 2 lines
  
  Try to fix Herve's name in a couple of places.
........
  r44163 | djowel | 2008-04-10 16:51:31 -0700 (Thu, 10 Apr 2008) | 1 line
  
  moving stuff to classic spirit
........
  r44164 | emildotchevski | 2008-04-10 20:51:06 -0700 (Thu, 10 Apr 2008) | 1 line
  
  to_string fixes
........
  r44165 | grafik | 2008-04-10 22:34:00 -0700 (Thu, 10 Apr 2008) | 1 line
  
  Use local sorted() function to support Python < 2.4.
........
  r44166 | grafik | 2008-04-10 22:36:28 -0700 (Thu, 10 Apr 2008) | 1 line
  
  Add support for toolset requirements at the definition level.
........
  r44167 | grafik | 2008-04-11 00:50:47 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Initial support for cross-compiling to ARM architecture.
........
  r44168 | anthonyw | 2008-04-11 01:52:09 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Added test and fix for win32 condition_variable broadcast bug similar to #1803
........
  r44169 | johnmaddock | 2008-04-11 01:53:54 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Fix doc typo from issue #1794.
........
  r44170 | johnmaddock | 2008-04-11 02:21:08 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Beefed up pthreads test cases.
........
  r44171 | johnmaddock | 2008-04-11 02:22:31 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Hopefully fix gcc/solaris single threading mode.
........
  r44172 | jurko | 2008-04-11 03:51:43 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Comment typo correction.
........
  r44175 | dgregor | 2008-04-11 08:39:41 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Fix some header-inclusion and header-ordering issues to get the MPI library compiling again.
........
  r44186 | johnmaddock | 2008-04-11 10:54:47 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Disable long double tests on unsupported platforms.
........
  r44187 | johnmaddock | 2008-04-11 10:57:58 -0700 (Fri, 11 Apr 2008) | 1 line
  
  We don't need duplicate using declarations.
........
  r44188 | johnmaddock | 2008-04-11 11:08:59 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Update error levels for real_concept tests.
........
  r44189 | johnmaddock | 2008-04-11 11:12:02 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Update tolerance used for skewness test.
........
  r44190 | hkaiser | 2008-04-11 11:19:46 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Fixed reference to Spirit classic test suite
........
  r44192 | emildotchevski | 2008-04-11 11:34:46 -0700 (Fri, 11 Apr 2008) | 1 line
  
  to_string adjustments
........
  r44195 | jurko | 2008-04-11 14:03:06 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Implemented a patch contributed by Igor Nazarenko reimplementing the list_sort() function to use a C qsort() function instead of a hand-crafted merge-sort algorithm. Makes some list sortings (e.g. 1,2,1,2,1,2,1,2,...) extremely faster, in turn significantly speeding up some project builds.
........
  r44196 | hkaiser | 2008-04-11 15:01:55 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Changed SpiritV1 header files to have a classic_ prefix
........
  r44197 | hkaiser | 2008-04-11 15:05:25 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Renamed a SpiritV1 header file I missed before
........
  r44198 | hkaiser | 2008-04-11 19:35:34 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Renamed PhoenixV1 files.
........
  r44203 | hkaiser | 2008-04-11 20:00:17 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Fixed an ambiguity.
........
  r44206 | hkaiser | 2008-04-11 20:02:34 -0700 (Fri, 11 Apr 2008) | 1 line
  
  Fixed more SpiritV1 header references after renaming
........
  r44246 | emildotchevski | 2008-04-11 20:27:57 -0700 (Fri, 11 Apr 2008) | 1 line
  
  removed tabs. what's wrong with tabs anyway?
........
  r44342 | emildotchevski | 2008-04-11 23:08:10 -0700 (Fri, 11 Apr 2008) | 1 line
  
  documentation cleanup
........
  r44343 | speedsnail | 2008-04-12 04:02:35 -0700 (Sat, 12 Apr 2008) | 2 lines
  
  Fixed a bug in for seldom used argument <property:/property-name/> in rule format-name.
  Added /property-name/ may be a regex.
........
  r44344 | pdimov | 2008-04-12 07:27:22 -0700 (Sat, 12 Apr 2008) | 1 line
  
  shared_ptr::lock no longer requires exceptions.
........
  r44346 | johnmaddock | 2008-04-12 09:01:16 -0700 (Sat, 12 Apr 2008) | 1 line
  
  Remove references to Boost.Test from the config_test target.
........
  r44347 | johnmaddock | 2008-04-12 09:02:24 -0700 (Sat, 12 Apr 2008) | 1 line
  
  When -lrt is needed, it's needed in *both* single and multi-threaded builds.
........
  r44350 | johnmaddock | 2008-04-12 09:27:11 -0700 (Sat, 12 Apr 2008) | 2 lines
  
  Add non central distro's to fwd.hpp.
  Added needed #include to bessel_ik.hpp.
........
  r44351 | johnmaddock | 2008-04-12 09:28:57 -0700 (Sat, 12 Apr 2008) | 3 lines
  
  Fix declaration order in dist_nc_beta_incl_test.cpp test.
  Fix long long usage in sf_modf_incl_test.cpp.
  Adjust failure rates in test_zeta.cpp to cope with HP aCC and 128-bit long doubles.
........
  r44352 | johnmaddock | 2008-04-12 09:42:28 -0700 (Sat, 12 Apr 2008) | 1 line
  
  Remove test row that causes problems for VC-7.1 due to a compiler bug.
........
  r44353 | pdimov | 2008-04-12 11:22:18 -0700 (Sat, 12 Apr 2008) | 1 line
  
  sp_accept_owner added.
........
  r44354 | grafik | 2008-04-12 12:44:47 -0700 (Sat, 12 Apr 2008) | 1 line
  
  Add multiple requirements for toolset subconditions instead of one composite as they are not supported for conditional requirements. Thanks to Roland for finding the problem.
........
  r44355 | hkaiser | 2008-04-12 16:58:29 -0700 (Sat, 12 Apr 2008) | 1 line
  
  Changed copyright, started to apply changes for switching namespaces.
........
  r44356 | djowel | 2008-04-12 17:15:11 -0700 (Sat, 12 Apr 2008) | 1 line
  
  added flat forwarding headers
........
  r44357 | djowel | 2008-04-12 17:39:00 -0700 (Sat, 12 Apr 2008) | 1 line
  
  added flat forwarding headers
........
  r44358 | djowel | 2008-04-12 17:54:10 -0700 (Sat, 12 Apr 2008) | 1 line
  
  adding spirit2
........
  r44359 | djowel | 2008-04-12 18:52:31 -0700 (Sat, 12 Apr 2008) | 1 line
  
  spirit2 ! :)
........
  r44360 | djowel | 2008-04-12 20:02:30 -0700 (Sat, 12 Apr 2008) | 1 line
  
  spirit2 ! :)
........
  r44361 | djowel | 2008-04-12 20:17:57 -0700 (Sat, 12 Apr 2008) | 1 line
  
  spirit2 ! :)
........
  r44367 | andreas_huber69 | 2008-04-13 06:57:42 -0700 (Sun, 13 Apr 2008) | 1 line
  
  Changed the PingPong example to demonstrate how the inner workings of an asynchronous_state_machine<> subclass can be hidden.
........
  r44369 | pdimov | 2008-04-13 08:35:40 -0700 (Sun, 13 Apr 2008) | 1 line
  
  Honor BOOST_DISABLE_THREADS; route GCC/ARM to the spinlock implementation; fall back to the spinlock implementation instead of using pthread_mutex.
........
  r44370 | anthonyw | 2008-04-13 08:50:08 -0700 (Sun, 13 Apr 2008) | 1 line
  
  Added extended adopt/defer/try constructors to upgrade_lock
........
  r44371 | hkaiser | 2008-04-13 09:28:27 -0700 (Sun, 13 Apr 2008) | 1 line
  
  Fixed Spirit Classic namespace switching.
........
  r44372 | emildotchevski | 2008-04-13 10:07:26 -0700 (Sun, 13 Apr 2008) | 1 line
  
  minor compile error fix
........
  r44374 | hkaiser | 2008-04-13 15:00:04 -0700 (Sun, 13 Apr 2008) | 1 line
  
  Added SpiritV2 test suite to regression tests.
........
  r44376 | grafik | 2008-04-13 15:12:12 -0700 (Sun, 13 Apr 2008) | 1 line
  
  Move array test into canonical test subdir structure.
........
  r44377 | grafik | 2008-04-13 15:24:41 -0700 (Sun, 13 Apr 2008) | 1 line
  
  Move crc test into canonical test subdir structure.
........

Added:
   branches/proto/v4/boost/detail/sp_counted_base_spin.hpp
      - copied unchanged from r44377, /trunk/boost/detail/sp_counted_base_spin.hpp
   branches/proto/v4/boost/detail/spinlock_gcc_arm.hpp
      - copied unchanged from r44377, /trunk/boost/detail/spinlock_gcc_arm.hpp
   branches/proto/v4/boost/exception/detail/is_output_streamable.hpp
      - copied unchanged from r44377, /trunk/boost/exception/detail/is_output_streamable.hpp
   branches/proto/v4/boost/spirit/home/
      - copied from r44377, /trunk/boost/spirit/home/
   branches/proto/v4/boost/spirit/home/classic/
      - copied from r44377, /trunk/boost/spirit/home/classic/
   branches/proto/v4/boost/spirit/home/classic.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/
      - copied from r44377, /trunk/boost/spirit/home/classic/actor/
   branches/proto/v4/boost/spirit/home/classic/actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/assign_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/assign_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/assign_key_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/assign_key_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/clear_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/clear_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/decrement_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/decrement_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/erase_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/erase_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/increment_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/increment_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/insert_at_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/insert_at_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/insert_key_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/insert_key_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/push_back_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/push_back_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/push_front_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/push_front_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/ref_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/ref_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/ref_const_ref_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/ref_const_ref_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/ref_value_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/ref_value_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/swap_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/swap_actor.hpp
   branches/proto/v4/boost/spirit/home/classic/actor/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/actor/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/attribute/
      - copied from r44377, /trunk/boost/spirit/home/classic/attribute/
   branches/proto/v4/boost/spirit/home/classic/attribute.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/attribute.hpp
   branches/proto/v4/boost/spirit/home/classic/attribute/closure.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/attribute/closure.hpp
   branches/proto/v4/boost/spirit/home/classic/attribute/closure_context.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/attribute/closure_context.hpp
   branches/proto/v4/boost/spirit/home/classic/attribute/closure_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/attribute/closure_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/attribute/parametric.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/attribute/parametric.hpp
   branches/proto/v4/boost/spirit/home/classic/attribute/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/attribute/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/core/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/
   branches/proto/v4/boost/spirit/home/classic/core.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core.hpp
   branches/proto/v4/boost/spirit/home/classic/core/assert.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/assert.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/composite/
   branches/proto/v4/boost/spirit/home/classic/core/composite/actions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/actions.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/alternative.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/alternative.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/composite.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/composite.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/difference.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/difference.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/directives.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/directives.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/epsilon.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/epsilon.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/exclusive_or.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/exclusive_or.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/alternative.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/alternative.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/difference.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/difference.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/directives.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/directives.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/intersection.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/intersection.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/kleene_star.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/kleene_star.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/list.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/list.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/optional.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/optional.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/positive.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/positive.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/sequence.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/sequence.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/sequential_and.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/sequential_and.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/impl/sequential_or.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/impl/sequential_or.ipp
   branches/proto/v4/boost/spirit/home/classic/core/composite/intersection.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/intersection.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/kleene_star.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/kleene_star.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/list.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/list.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/no_actions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/no_actions.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/operators.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/operators.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/optional.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/optional.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/positive.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/positive.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/sequence.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/sequence.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/sequential_and.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/sequential_and.hpp
   branches/proto/v4/boost/spirit/home/classic/core/composite/sequential_or.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/composite/sequential_or.hpp
   branches/proto/v4/boost/spirit/home/classic/core/config.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/config.hpp
   branches/proto/v4/boost/spirit/home/classic/core/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/impl/
   branches/proto/v4/boost/spirit/home/classic/core/impl/match.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/impl/match.ipp
   branches/proto/v4/boost/spirit/home/classic/core/impl/match_attr_traits.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/impl/match_attr_traits.ipp
   branches/proto/v4/boost/spirit/home/classic/core/impl/parser.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/impl/parser.ipp
   branches/proto/v4/boost/spirit/home/classic/core/match.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/match.hpp
   branches/proto/v4/boost/spirit/home/classic/core/nil.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/nil.hpp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/grammar.hpp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/impl/
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/static.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/impl/static.hpp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/parser_context.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/parser_context.hpp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/parser_id.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/parser_id.hpp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/rule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/rule.hpp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/subrule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/subrule.hpp
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/core/parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/parser.hpp
   branches/proto/v4/boost/spirit/home/classic/core/primitives/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/primitives/
   branches/proto/v4/boost/spirit/home/classic/core/primitives/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/primitives/impl/
   branches/proto/v4/boost/spirit/home/classic/core/primitives/impl/numerics.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/primitives/impl/numerics.ipp
   branches/proto/v4/boost/spirit/home/classic/core/primitives/impl/primitives.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/primitives/impl/primitives.ipp
   branches/proto/v4/boost/spirit/home/classic/core/primitives/numerics.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/primitives/numerics.hpp
   branches/proto/v4/boost/spirit/home/classic/core/primitives/numerics_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/primitives/numerics_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/core/primitives/primitives.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/primitives/primitives.hpp
   branches/proto/v4/boost/spirit/home/classic/core/safe_bool.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/safe_bool.hpp
   branches/proto/v4/boost/spirit/home/classic/core/scanner/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/scanner/
   branches/proto/v4/boost/spirit/home/classic/core/scanner/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/core/scanner/impl/
   branches/proto/v4/boost/spirit/home/classic/core/scanner/impl/skipper.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/scanner/impl/skipper.ipp
   branches/proto/v4/boost/spirit/home/classic/core/scanner/scanner.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/scanner/scanner.hpp
   branches/proto/v4/boost/spirit/home/classic/core/scanner/scanner_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/scanner/scanner_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/core/scanner/skipper.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/scanner/skipper.hpp
   branches/proto/v4/boost/spirit/home/classic/core/scanner/skipper_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/scanner/skipper_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/core/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/core/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/debug/
      - copied from r44377, /trunk/boost/spirit/home/classic/debug/
   branches/proto/v4/boost/spirit/home/classic/debug.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/debug.hpp
   branches/proto/v4/boost/spirit/home/classic/debug/debug_node.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/debug/debug_node.hpp
   branches/proto/v4/boost/spirit/home/classic/debug/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/debug/impl/
   branches/proto/v4/boost/spirit/home/classic/debug/impl/parser_names.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/debug/impl/parser_names.ipp
   branches/proto/v4/boost/spirit/home/classic/debug/minimal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/debug/minimal.hpp
   branches/proto/v4/boost/spirit/home/classic/debug/parser_names.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/debug/parser_names.hpp
   branches/proto/v4/boost/spirit/home/classic/debug/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/debug/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/
      - copied from r44377, /trunk/boost/spirit/home/classic/dynamic/
   branches/proto/v4/boost/spirit/home/classic/dynamic.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/for.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/for.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/if.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/if.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/dynamic/impl/
   branches/proto/v4/boost/spirit/home/classic/dynamic/impl/conditions.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/impl/conditions.ipp
   branches/proto/v4/boost/spirit/home/classic/dynamic/impl/select.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/impl/select.ipp
   branches/proto/v4/boost/spirit/home/classic/dynamic/impl/switch.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/impl/switch.ipp
   branches/proto/v4/boost/spirit/home/classic/dynamic/lazy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/lazy.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/rule_alias.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/rule_alias.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/select.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/select.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/stored_rule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/stored_rule.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/switch.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/switch.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/dynamic/while.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/dynamic/while.hpp
   branches/proto/v4/boost/spirit/home/classic/error_handling/
      - copied from r44377, /trunk/boost/spirit/home/classic/error_handling/
   branches/proto/v4/boost/spirit/home/classic/error_handling.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/error_handling.hpp
   branches/proto/v4/boost/spirit/home/classic/error_handling/exceptions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/error_handling/exceptions.hpp
   branches/proto/v4/boost/spirit/home/classic/error_handling/exceptions_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/error_handling/exceptions_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/error_handling/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/error_handling/impl/
   branches/proto/v4/boost/spirit/home/classic/error_handling/impl/exceptions.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/error_handling/impl/exceptions.ipp
   branches/proto/v4/boost/spirit/home/classic/error_handling/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/error_handling/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/
      - copied from r44377, /trunk/boost/spirit/home/classic/iterator/
   branches/proto/v4/boost/spirit/home/classic/iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/file_iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/file_iterator.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/file_iterator_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/file_iterator_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/fixed_size_queue.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/fixed_size_queue.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/iterator/impl/
   branches/proto/v4/boost/spirit/home/classic/iterator/impl/file_iterator.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/impl/file_iterator.ipp
   branches/proto/v4/boost/spirit/home/classic/iterator/impl/position_iterator.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/impl/position_iterator.ipp
   branches/proto/v4/boost/spirit/home/classic/iterator/multi_pass.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/multi_pass.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/multi_pass_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/multi_pass_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/position_iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/position_iterator.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/position_iterator_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/position_iterator_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/iterator/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/iterator/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/meta/
      - copied from r44377, /trunk/boost/spirit/home/classic/meta/
   branches/proto/v4/boost/spirit/home/classic/meta.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta.hpp
   branches/proto/v4/boost/spirit/home/classic/meta/as_parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/as_parser.hpp
   branches/proto/v4/boost/spirit/home/classic/meta/fundamental.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/fundamental.hpp
   branches/proto/v4/boost/spirit/home/classic/meta/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/meta/impl/
   branches/proto/v4/boost/spirit/home/classic/meta/impl/fundamental.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/impl/fundamental.ipp
   branches/proto/v4/boost/spirit/home/classic/meta/impl/parser_traits.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/impl/parser_traits.ipp
   branches/proto/v4/boost/spirit/home/classic/meta/impl/refactoring.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/impl/refactoring.ipp
   branches/proto/v4/boost/spirit/home/classic/meta/impl/traverse.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/impl/traverse.ipp
   branches/proto/v4/boost/spirit/home/classic/meta/parser_traits.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/parser_traits.hpp
   branches/proto/v4/boost/spirit/home/classic/meta/refactoring.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/refactoring.hpp
   branches/proto/v4/boost/spirit/home/classic/meta/traverse.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/meta/traverse.hpp
   branches/proto/v4/boost/spirit/home/classic/namespace.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/namespace.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/
      - copied from r44377, /trunk/boost/spirit/home/classic/phoenix/
   branches/proto/v4/boost/spirit/home/classic/phoenix.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/actor.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/binders.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/binders.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/casts.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/casts.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/closures.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/closures.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/composite.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/composite.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/functions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/functions.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/new.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/new.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/operators.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/operators.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/primitives.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/primitives.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/special_ops.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/special_ops.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/statements.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/statements.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/tuple_helpers.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/tuple_helpers.hpp
   branches/proto/v4/boost/spirit/home/classic/phoenix/tuples.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/phoenix/tuples.hpp
   branches/proto/v4/boost/spirit/home/classic/symbols/
      - copied from r44377, /trunk/boost/spirit/home/classic/symbols/
   branches/proto/v4/boost/spirit/home/classic/symbols.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/symbols.hpp
   branches/proto/v4/boost/spirit/home/classic/symbols/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/symbols/impl/
   branches/proto/v4/boost/spirit/home/classic/symbols/impl/symbols.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/symbols/impl/symbols.ipp
   branches/proto/v4/boost/spirit/home/classic/symbols/impl/tst.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/symbols/impl/tst.ipp
   branches/proto/v4/boost/spirit/home/classic/symbols/symbols.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/symbols/symbols.hpp
   branches/proto/v4/boost/spirit/home/classic/symbols/symbols_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/symbols/symbols_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/symbols/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/symbols/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/
      - copied from r44377, /trunk/boost/spirit/home/classic/tree/
   branches/proto/v4/boost/spirit/home/classic/tree/ast.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/ast.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/ast_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/ast_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/common.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/common.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/common_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/common_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/tree/impl/
   branches/proto/v4/boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp
   branches/proto/v4/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp
   branches/proto/v4/boost/spirit/home/classic/tree/parse_tree.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/parse_tree.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/parse_tree_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/parse_tree_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/parse_tree_utils.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/parse_tree_utils.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/parsetree.dtd
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/parsetree.dtd
   branches/proto/v4/boost/spirit/home/classic/tree/tree_to_xml.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/tree_to_xml.hpp
   branches/proto/v4/boost/spirit/home/classic/tree/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/tree/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/
      - copied from r44377, /trunk/boost/spirit/home/classic/utility/
   branches/proto/v4/boost/spirit/home/classic/utility.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/chset.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/chset.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/chset_operators.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/chset_operators.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/confix.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/confix.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/confix_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/confix_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/distinct.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/distinct.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/distinct_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/distinct_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/escape_char.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/escape_char.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/escape_char_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/escape_char_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/flush_multi_pass.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/flush_multi_pass.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/functor_parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/functor_parser.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/grammar_def.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/grammar_def.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/grammar_def_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/grammar_def_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/
      - copied from r44377, /trunk/boost/spirit/home/classic/utility/impl/
   branches/proto/v4/boost/spirit/home/classic/utility/impl/chset/
      - copied from r44377, /trunk/boost/spirit/home/classic/utility/impl/chset/
   branches/proto/v4/boost/spirit/home/classic/utility/impl/chset.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/chset.ipp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/chset/range_run.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/chset/range_run.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/chset/range_run.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/chset/range_run.ipp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/chset_operators.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/chset_operators.ipp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/confix.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/confix.ipp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/escape_char.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/escape_char.ipp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/lists.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/lists.ipp
   branches/proto/v4/boost/spirit/home/classic/utility/impl/regex.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/impl/regex.ipp
   branches/proto/v4/boost/spirit/home/classic/utility/lists.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/lists.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/lists_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/lists_fwd.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/loops.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/loops.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/regex.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/regex.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/rule_parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/rule_parser.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/scoped_lock.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/scoped_lock.hpp
   branches/proto/v4/boost/spirit/home/classic/utility/typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/utility/typeof.hpp
   branches/proto/v4/boost/spirit/home/classic/version.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/classic/version.hpp
   branches/proto/v4/boost/spirit/home/karma/
      - copied from r44377, /trunk/boost/spirit/home/karma/
   branches/proto/v4/boost/spirit/home/karma.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma.hpp
   branches/proto/v4/boost/spirit/home/karma/action/
      - copied from r44377, /trunk/boost/spirit/home/karma/action/
   branches/proto/v4/boost/spirit/home/karma/action.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/action.hpp
   branches/proto/v4/boost/spirit/home/karma/action/action.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/action/action.hpp
   branches/proto/v4/boost/spirit/home/karma/action/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/action/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/auxiliary/
      - copied from r44377, /trunk/boost/spirit/home/karma/auxiliary/
   branches/proto/v4/boost/spirit/home/karma/auxiliary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/auxiliary.hpp
   branches/proto/v4/boost/spirit/home/karma/auxiliary/eps.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/auxiliary/eps.hpp
   branches/proto/v4/boost/spirit/home/karma/auxiliary/functor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/auxiliary/functor.hpp
   branches/proto/v4/boost/spirit/home/karma/auxiliary/functor_director.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/auxiliary/functor_director.hpp
   branches/proto/v4/boost/spirit/home/karma/auxiliary/lazy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/auxiliary/lazy.hpp
   branches/proto/v4/boost/spirit/home/karma/auxiliary/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/auxiliary/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/auxiliary/none.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/auxiliary/none.hpp
   branches/proto/v4/boost/spirit/home/karma/binary/
      - copied from r44377, /trunk/boost/spirit/home/karma/binary/
   branches/proto/v4/boost/spirit/home/karma/binary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/binary.hpp
   branches/proto/v4/boost/spirit/home/karma/binary/binary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/binary/binary.hpp
   branches/proto/v4/boost/spirit/home/karma/binary/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/binary/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/char/
      - copied from r44377, /trunk/boost/spirit/home/karma/char/
   branches/proto/v4/boost/spirit/home/karma/char.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/char.hpp
   branches/proto/v4/boost/spirit/home/karma/char/char.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/char/char.hpp
   branches/proto/v4/boost/spirit/home/karma/char/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/char/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/char/space.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/char/space.hpp
   branches/proto/v4/boost/spirit/home/karma/delimit.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/delimit.hpp
   branches/proto/v4/boost/spirit/home/karma/detail/
      - copied from r44377, /trunk/boost/spirit/home/karma/detail/
   branches/proto/v4/boost/spirit/home/karma/detail/generate_to.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/detail/generate_to.hpp
   branches/proto/v4/boost/spirit/home/karma/detail/ostream_iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/detail/ostream_iterator.hpp
   branches/proto/v4/boost/spirit/home/karma/detail/output_iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/detail/output_iterator.hpp
   branches/proto/v4/boost/spirit/home/karma/detail/string_generate.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/detail/string_generate.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/
      - copied from r44377, /trunk/boost/spirit/home/karma/directive/
   branches/proto/v4/boost/spirit/home/karma/directive.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/alignment_meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/alignment_meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/case_meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/case_meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/center_alignment.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/center_alignment.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/delimit.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/delimit.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/delimiter_meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/delimiter_meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/detail/
      - copied from r44377, /trunk/boost/spirit/home/karma/directive/detail/
   branches/proto/v4/boost/spirit/home/karma/directive/detail/center_alignment_generate.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/detail/center_alignment_generate.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/detail/left_alignment_generate.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/detail/left_alignment_generate.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/detail/right_alignment_generate.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/detail/right_alignment_generate.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/left_alignment.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/left_alignment.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/right_alignment.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/right_alignment.hpp
   branches/proto/v4/boost/spirit/home/karma/directive/verbatim.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/directive/verbatim.hpp
   branches/proto/v4/boost/spirit/home/karma/domain.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/domain.hpp
   branches/proto/v4/boost/spirit/home/karma/generate.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/generate.hpp
   branches/proto/v4/boost/spirit/home/karma/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/nonterminal/
      - copied from r44377, /trunk/boost/spirit/home/karma/nonterminal/
   branches/proto/v4/boost/spirit/home/karma/nonterminal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/nonterminal.hpp
   branches/proto/v4/boost/spirit/home/karma/nonterminal/detail/
      - copied from r44377, /trunk/boost/spirit/home/karma/nonterminal/detail/
   branches/proto/v4/boost/spirit/home/karma/nonterminal/detail/rule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/nonterminal/detail/rule.hpp
   branches/proto/v4/boost/spirit/home/karma/nonterminal/grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/nonterminal/grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/nonterminal/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/nonterminal/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/nonterminal/nonterminal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/nonterminal/nonterminal.hpp
   branches/proto/v4/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp
   branches/proto/v4/boost/spirit/home/karma/nonterminal/rule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/nonterminal/rule.hpp
   branches/proto/v4/boost/spirit/home/karma/numeric/
      - copied from r44377, /trunk/boost/spirit/home/karma/numeric/
   branches/proto/v4/boost/spirit/home/karma/numeric.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/numeric.hpp
   branches/proto/v4/boost/spirit/home/karma/numeric/detail/
      - copied from r44377, /trunk/boost/spirit/home/karma/numeric/detail/
   branches/proto/v4/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp
   branches/proto/v4/boost/spirit/home/karma/numeric/int.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/numeric/int.hpp
   branches/proto/v4/boost/spirit/home/karma/numeric/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/numeric/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/numeric/numeric_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/numeric/numeric_fwd.hpp
   branches/proto/v4/boost/spirit/home/karma/numeric/real.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/numeric/real.hpp
   branches/proto/v4/boost/spirit/home/karma/numeric/real_policies.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/numeric/real_policies.hpp
   branches/proto/v4/boost/spirit/home/karma/numeric/uint.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/numeric/uint.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/
      - copied from r44377, /trunk/boost/spirit/home/karma/operator/
   branches/proto/v4/boost/spirit/home/karma/operator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/alternative.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/alternative.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/detail/
      - copied from r44377, /trunk/boost/spirit/home/karma/operator/detail/
   branches/proto/v4/boost/spirit/home/karma/operator/detail/alternative.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/detail/alternative.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/detail/sequence.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/detail/sequence.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/karma-alt/
      - copied from r44377, /trunk/boost/spirit/home/karma/operator/karma-alt/
   branches/proto/v4/boost/spirit/home/karma/operator/karma-alt.zip
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/karma-alt.zip
   branches/proto/v4/boost/spirit/home/karma/operator/karma-alt/alternative.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/karma-alt/alternative.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/karma-alt/detail/
      - copied from r44377, /trunk/boost/spirit/home/karma/operator/karma-alt/detail/
   branches/proto/v4/boost/spirit/home/karma/operator/karma-alt/detail/alternative.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/karma-alt/detail/alternative.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/kleene.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/kleene.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/list.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/list.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/optional.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/optional.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/plus.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/plus.hpp
   branches/proto/v4/boost/spirit/home/karma/operator/sequence.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/operator/sequence.hpp
   branches/proto/v4/boost/spirit/home/karma/stream/
      - copied from r44377, /trunk/boost/spirit/home/karma/stream/
   branches/proto/v4/boost/spirit/home/karma/stream.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/stream.hpp
   branches/proto/v4/boost/spirit/home/karma/stream/detail/
      - copied from r44377, /trunk/boost/spirit/home/karma/stream/detail/
   branches/proto/v4/boost/spirit/home/karma/stream/detail/format_manip.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp
   branches/proto/v4/boost/spirit/home/karma/stream/detail/iterator_ostream.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/stream/detail/iterator_ostream.hpp
   branches/proto/v4/boost/spirit/home/karma/stream/format_manip.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/stream/format_manip.hpp
   branches/proto/v4/boost/spirit/home/karma/stream/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/stream/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/stream/stream.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/stream/stream.hpp
   branches/proto/v4/boost/spirit/home/karma/string/
      - copied from r44377, /trunk/boost/spirit/home/karma/string/
   branches/proto/v4/boost/spirit/home/karma/string.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/string.hpp
   branches/proto/v4/boost/spirit/home/karma/string/lit.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/string/lit.hpp
   branches/proto/v4/boost/spirit/home/karma/string/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/string/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/karma/what.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/karma/what.hpp
   branches/proto/v4/boost/spirit/home/lex/
      - copied from r44377, /trunk/boost/spirit/home/lex/
   branches/proto/v4/boost/spirit/home/lex.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex.hpp
   branches/proto/v4/boost/spirit/home/lex/domain.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/domain.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/
      - copied from r44377, /trunk/boost/spirit/home/lex/lexer/
   branches/proto/v4/boost/spirit/home/lex/lexer.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/action.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/action.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/char_token_def.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/char_token_def.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/detail/
      - copied from r44377, /trunk/boost/spirit/home/lex/lexer/detail/
   branches/proto/v4/boost/spirit/home/lex/lexer/detail/sequence.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/detail/sequence.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexer.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexer.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexer_actions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexer_actions.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexer_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexer_fwd.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/
      - copied from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_generate_static.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_generate_static.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_iterator.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_static_functor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_static_functor.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_static_lexer.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_static_lexer.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/sequence.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/sequence.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/string_token_def.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/string_token_def.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/terminal_director.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/terminal_director.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/terminal_holder.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/terminal_holder.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/token_def.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/token_def.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer/token_set.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer/token_set.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer_lexertl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer_lexertl.hpp
   branches/proto/v4/boost/spirit/home/lex/lexer_static_lexertl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/lexer_static_lexertl.hpp
   branches/proto/v4/boost/spirit/home/lex/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/lex/qi/
      - copied from r44377, /trunk/boost/spirit/home/lex/qi/
   branches/proto/v4/boost/spirit/home/lex/qi/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/qi/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/lex/qi/state/
      - copied from r44377, /trunk/boost/spirit/home/lex/qi/state/
   branches/proto/v4/boost/spirit/home/lex/qi/state/in_state.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/qi/state/in_state.hpp
   branches/proto/v4/boost/spirit/home/lex/qi/state/state_switcher.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/qi/state/state_switcher.hpp
   branches/proto/v4/boost/spirit/home/lex/qi/utility/
      - copied from r44377, /trunk/boost/spirit/home/lex/qi/utility/
   branches/proto/v4/boost/spirit/home/lex/qi/utility/plain_token.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/qi/utility/plain_token.hpp
   branches/proto/v4/boost/spirit/home/lex/set_state.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/set_state.hpp
   branches/proto/v4/boost/spirit/home/lex/tokenize_and_parse.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/lex/tokenize_and_parse.hpp
   branches/proto/v4/boost/spirit/home/phoenix/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/
   branches/proto/v4/boost/spirit/home/phoenix.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix.hpp
   branches/proto/v4/boost/spirit/home/phoenix/algorithm.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/algorithm.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/bind/
   branches/proto/v4/boost/spirit/home/phoenix/bind.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/bind_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/bind_function.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/bind_function_object.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/bind_function_object.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/bind_member_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/bind_member_function.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/bind_member_variable.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/bind_member_variable.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/bind/detail/
   branches/proto/v4/boost/spirit/home/phoenix/bind/detail/bind_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/detail/bind_function.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/detail/function_ptr.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/detail/function_ptr.hpp
   branches/proto/v4/boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp
   branches/proto/v4/boost/spirit/home/phoenix/container.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/container.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/core/
   branches/proto/v4/boost/spirit/home/phoenix/core.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/actor.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/argument.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/argument.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/as_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/as_actor.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/basic_environment.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/basic_environment.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/compose.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/compose.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/composite.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/composite.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/core/detail/
   branches/proto/v4/boost/spirit/home/phoenix/core/detail/actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/detail/actor.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/detail/basic_environment.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/detail/basic_environment.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/detail/compose.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/detail/compose.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/detail/composite.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/detail/composite.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/detail/composite_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/detail/composite_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/detail/composite_info.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/detail/composite_info.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/detail/function_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/detail/function_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/is_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/is_actor.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/limits.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/limits.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/nothing.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/nothing.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/reference.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/reference.hpp
   branches/proto/v4/boost/spirit/home/phoenix/core/value.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/core/value.hpp
   branches/proto/v4/boost/spirit/home/phoenix/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/detail/
   branches/proto/v4/boost/spirit/home/phoenix/detail/local_reference.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/detail/local_reference.hpp
   branches/proto/v4/boost/spirit/home/phoenix/detail/type_deduction.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/detail/type_deduction.hpp
   branches/proto/v4/boost/spirit/home/phoenix/function/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/function/
   branches/proto/v4/boost/spirit/home/phoenix/function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/function.hpp
   branches/proto/v4/boost/spirit/home/phoenix/function/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/function/detail/
   branches/proto/v4/boost/spirit/home/phoenix/function/detail/function_call.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/function/detail/function_call.hpp
   branches/proto/v4/boost/spirit/home/phoenix/function/function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/function/function.hpp
   branches/proto/v4/boost/spirit/home/phoenix/fusion/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/fusion/
   branches/proto/v4/boost/spirit/home/phoenix/fusion.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/fusion.hpp
   branches/proto/v4/boost/spirit/home/phoenix/fusion/at.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/fusion/at.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/object/
   branches/proto/v4/boost/spirit/home/phoenix/object.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/const_cast.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/const_cast.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/construct.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/construct.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/delete.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/delete.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/object/detail/
   branches/proto/v4/boost/spirit/home/phoenix/object/detail/construct.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/detail/construct.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/detail/construct_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/detail/construct_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/detail/new.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/detail/new.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/detail/new_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/detail/new_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/dynamic_cast.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/dynamic_cast.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/new.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/new.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/reinterpret_cast.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/reinterpret_cast.hpp
   branches/proto/v4/boost/spirit/home/phoenix/object/static_cast.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/object/static_cast.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/operator/
   branches/proto/v4/boost/spirit/home/phoenix/operator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/arithmetic.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/arithmetic.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/bitwise.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/bitwise.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/comparison.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/comparison.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/binary_compose.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/binary_compose.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/binary_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/binary_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/io.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/io.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_gen.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_gen.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_return.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_return.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/unary_compose.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/unary_compose.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/detail/unary_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/detail/unary_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/if_else.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/if_else.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/io.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/io.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/logical.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/logical.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/member.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/member.hpp
   branches/proto/v4/boost/spirit/home/phoenix/operator/self.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/operator/self.hpp
   branches/proto/v4/boost/spirit/home/phoenix/scope/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/scope/
   branches/proto/v4/boost/spirit/home/phoenix/scope.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/scope.hpp
   branches/proto/v4/boost/spirit/home/phoenix/scope/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/scope/detail/
   branches/proto/v4/boost/spirit/home/phoenix/scope/detail/local_gen.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/scope/detail/local_gen.hpp
   branches/proto/v4/boost/spirit/home/phoenix/scope/detail/local_variable.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/scope/detail/local_variable.hpp
   branches/proto/v4/boost/spirit/home/phoenix/scope/dynamic.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/scope/dynamic.hpp
   branches/proto/v4/boost/spirit/home/phoenix/scope/lambda.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/scope/lambda.hpp
   branches/proto/v4/boost/spirit/home/phoenix/scope/let.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/scope/let.hpp
   branches/proto/v4/boost/spirit/home/phoenix/scope/local_variable.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/scope/local_variable.hpp
   branches/proto/v4/boost/spirit/home/phoenix/scope/scoped_environment.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/scope/scoped_environment.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/statement/
   branches/proto/v4/boost/spirit/home/phoenix/statement.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/statement/detail/
   branches/proto/v4/boost/spirit/home/phoenix/statement/detail/catch_all_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/detail/catch_all_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/detail/catch_composite.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/detail/catch_composite.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/detail/catch_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/detail/catch_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/detail/switch.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/detail/switch.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/detail/switch_eval.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/detail/switch_eval.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/detail/switch_eval.ipp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/detail/switch_eval.ipp
   branches/proto/v4/boost/spirit/home/phoenix/statement/do_while.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/do_while.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/for.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/for.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/if.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/if.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/sequence.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/sequence.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/switch.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/switch.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/throw.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/throw.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/try_catch.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/try_catch.hpp
   branches/proto/v4/boost/spirit/home/phoenix/statement/while.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/statement/while.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/stl/
   branches/proto/v4/boost/spirit/home/phoenix/stl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/begin.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/begin.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/decay_array.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/decay_array.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/end.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/end.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_equal_range.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_equal_range.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_find.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_find.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_lower_bound.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_lower_bound.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove_if.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove_if.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_reverse.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_reverse.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_sort.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_sort.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_unique.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_unique.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_upper_bound.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/has_upper_bound.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_map.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_map.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_set.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_set.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_list.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_list.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_map.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_map.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_set.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_set.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_list_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/std_list_fwd.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_map_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/std_map_fwd.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_set_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/detail/std_set_fwd.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/iteration.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/iteration.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/querying.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/querying.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/transformation.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/algorithm/transformation.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/container/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/stl/container/
   branches/proto/v4/boost/spirit/home/phoenix/stl/container.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/container.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/container/container.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/container/container.hpp
   branches/proto/v4/boost/spirit/home/phoenix/stl/container/detail/
      - copied from r44377, /trunk/boost/spirit/home/phoenix/stl/container/detail/
   branches/proto/v4/boost/spirit/home/phoenix/stl/container/detail/container.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/stl/container/detail/container.hpp
   branches/proto/v4/boost/spirit/home/phoenix/version.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/phoenix/version.hpp
   branches/proto/v4/boost/spirit/home/qi/
      - copied from r44377, /trunk/boost/spirit/home/qi/
   branches/proto/v4/boost/spirit/home/qi.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi.hpp
   branches/proto/v4/boost/spirit/home/qi/action/
      - copied from r44377, /trunk/boost/spirit/home/qi/action/
   branches/proto/v4/boost/spirit/home/qi/action.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/action.hpp
   branches/proto/v4/boost/spirit/home/qi/action/action.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/action/action.hpp
   branches/proto/v4/boost/spirit/home/qi/action/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/action/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/auxiliary/
      - copied from r44377, /trunk/boost/spirit/home/qi/auxiliary/
   branches/proto/v4/boost/spirit/home/qi/auxiliary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/auxiliary.hpp
   branches/proto/v4/boost/spirit/home/qi/auxiliary/eps.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/auxiliary/eps.hpp
   branches/proto/v4/boost/spirit/home/qi/auxiliary/functor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/auxiliary/functor.hpp
   branches/proto/v4/boost/spirit/home/qi/auxiliary/functor_director.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/auxiliary/functor_director.hpp
   branches/proto/v4/boost/spirit/home/qi/auxiliary/lazy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/auxiliary/lazy.hpp
   branches/proto/v4/boost/spirit/home/qi/auxiliary/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/auxiliary/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/auxiliary/none.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/auxiliary/none.hpp
   branches/proto/v4/boost/spirit/home/qi/binary/
      - copied from r44377, /trunk/boost/spirit/home/qi/binary/
   branches/proto/v4/boost/spirit/home/qi/binary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/binary.hpp
   branches/proto/v4/boost/spirit/home/qi/binary/binary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/binary/binary.hpp
   branches/proto/v4/boost/spirit/home/qi/binary/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/binary/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/char/
      - copied from r44377, /trunk/boost/spirit/home/qi/char/
   branches/proto/v4/boost/spirit/home/qi/char.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char.hpp
   branches/proto/v4/boost/spirit/home/qi/char/char.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char/char.hpp
   branches/proto/v4/boost/spirit/home/qi/char/char_class.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char/char_class.hpp
   branches/proto/v4/boost/spirit/home/qi/char/char_parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char/char_parser.hpp
   branches/proto/v4/boost/spirit/home/qi/char/detail/
      - copied from r44377, /trunk/boost/spirit/home/qi/char/detail/
   branches/proto/v4/boost/spirit/home/qi/char/detail/range.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char/detail/range.hpp
   branches/proto/v4/boost/spirit/home/qi/char/detail/range_functions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char/detail/range_functions.hpp
   branches/proto/v4/boost/spirit/home/qi/char/detail/range_run.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char/detail/range_run.hpp
   branches/proto/v4/boost/spirit/home/qi/char/detail/range_run_impl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char/detail/range_run_impl.hpp
   branches/proto/v4/boost/spirit/home/qi/char/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/char/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/debug/
      - copied from r44377, /trunk/boost/spirit/home/qi/debug/
   branches/proto/v4/boost/spirit/home/qi/debug.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/debug.hpp
   branches/proto/v4/boost/spirit/home/qi/debug/detail/
      - copied from r44377, /trunk/boost/spirit/home/qi/debug/detail/
   branches/proto/v4/boost/spirit/home/qi/debug/detail/debug_handler.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/debug/detail/debug_handler.hpp
   branches/proto/v4/boost/spirit/home/qi/debug/detail/print_node_info.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/debug/detail/print_node_info.hpp
   branches/proto/v4/boost/spirit/home/qi/debug/minimal_macros.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/debug/minimal_macros.hpp
   branches/proto/v4/boost/spirit/home/qi/debug/simple_debug.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/debug/simple_debug.hpp
   branches/proto/v4/boost/spirit/home/qi/debug/simple_debug_macros.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/debug/simple_debug_macros.hpp
   branches/proto/v4/boost/spirit/home/qi/detail/
      - copied from r44377, /trunk/boost/spirit/home/qi/detail/
   branches/proto/v4/boost/spirit/home/qi/detail/alternative_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/detail/alternative_function.hpp
   branches/proto/v4/boost/spirit/home/qi/detail/assign_to.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/detail/assign_to.hpp
   branches/proto/v4/boost/spirit/home/qi/detail/construct.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/detail/construct.hpp
   branches/proto/v4/boost/spirit/home/qi/detail/expect_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/detail/expect_function.hpp
   branches/proto/v4/boost/spirit/home/qi/detail/fail_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/detail/fail_function.hpp
   branches/proto/v4/boost/spirit/home/qi/detail/pass_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/detail/pass_function.hpp
   branches/proto/v4/boost/spirit/home/qi/detail/permute_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/detail/permute_function.hpp
   branches/proto/v4/boost/spirit/home/qi/detail/string_parse.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/detail/string_parse.hpp
   branches/proto/v4/boost/spirit/home/qi/directive/
      - copied from r44377, /trunk/boost/spirit/home/qi/directive/
   branches/proto/v4/boost/spirit/home/qi/directive.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/directive.hpp
   branches/proto/v4/boost/spirit/home/qi/directive/lexeme.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/directive/lexeme.hpp
   branches/proto/v4/boost/spirit/home/qi/directive/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/directive/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/directive/omit.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/directive/omit.hpp
   branches/proto/v4/boost/spirit/home/qi/directive/raw.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/directive/raw.hpp
   branches/proto/v4/boost/spirit/home/qi/domain.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/domain.hpp
   branches/proto/v4/boost/spirit/home/qi/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/
      - copied from r44377, /trunk/boost/spirit/home/qi/nonterminal/
   branches/proto/v4/boost/spirit/home/qi/nonterminal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/detail/
      - copied from r44377, /trunk/boost/spirit/home/qi/nonterminal/detail/
   branches/proto/v4/boost/spirit/home/qi/nonterminal/detail/error_handler.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal/detail/error_handler.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/detail/rule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal/detail/rule.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/error_handler_result.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal/error_handler_result.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal/grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/nonterminal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal/nonterminal.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/nonterminal_director.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal/nonterminal_director.hpp
   branches/proto/v4/boost/spirit/home/qi/nonterminal/rule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/nonterminal/rule.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/
      - copied from r44377, /trunk/boost/spirit/home/qi/numeric/
   branches/proto/v4/boost/spirit/home/qi/numeric.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/detail/
      - copied from r44377, /trunk/boost/spirit/home/qi/numeric/detail/
   branches/proto/v4/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/detail/real_impl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric/detail/real_impl.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/int.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric/int.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/numeric_utils.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric/numeric_utils.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/real.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric/real.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/real_policies.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric/real_policies.hpp
   branches/proto/v4/boost/spirit/home/qi/numeric/uint.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/numeric/uint.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/
      - copied from r44377, /trunk/boost/spirit/home/qi/operator/
   branches/proto/v4/boost/spirit/home/qi/operator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/alternative.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/alternative.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/and_predicate.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/and_predicate.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/difference.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/difference.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/expect.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/expect.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/kleene.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/kleene.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/list.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/list.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/not_predicate.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/not_predicate.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/optional.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/optional.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/permutation.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/permutation.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/plus.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/plus.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/sequence.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/sequence.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/sequence_base.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/sequence_base.hpp
   branches/proto/v4/boost/spirit/home/qi/operator/sequential_or.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/operator/sequential_or.hpp
   branches/proto/v4/boost/spirit/home/qi/parse.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/parse.hpp
   branches/proto/v4/boost/spirit/home/qi/skip.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/skip.hpp
   branches/proto/v4/boost/spirit/home/qi/stream/
      - copied from r44377, /trunk/boost/spirit/home/qi/stream/
   branches/proto/v4/boost/spirit/home/qi/stream.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/stream.hpp
   branches/proto/v4/boost/spirit/home/qi/stream/detail/
      - copied from r44377, /trunk/boost/spirit/home/qi/stream/detail/
   branches/proto/v4/boost/spirit/home/qi/stream/detail/iterator_istream.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/stream/detail/iterator_istream.hpp
   branches/proto/v4/boost/spirit/home/qi/stream/detail/match_manip.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp
   branches/proto/v4/boost/spirit/home/qi/stream/match_manip.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/stream/match_manip.hpp
   branches/proto/v4/boost/spirit/home/qi/stream/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/stream/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/stream/stream.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/stream/stream.hpp
   branches/proto/v4/boost/spirit/home/qi/string/
      - copied from r44377, /trunk/boost/spirit/home/qi/string/
   branches/proto/v4/boost/spirit/home/qi/string.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/string.hpp
   branches/proto/v4/boost/spirit/home/qi/string/detail/
      - copied from r44377, /trunk/boost/spirit/home/qi/string/detail/
   branches/proto/v4/boost/spirit/home/qi/string/detail/tst.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/string/detail/tst.hpp
   branches/proto/v4/boost/spirit/home/qi/string/lit.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/string/lit.hpp
   branches/proto/v4/boost/spirit/home/qi/string/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/string/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/qi/string/symbols.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/string/symbols.hpp
   branches/proto/v4/boost/spirit/home/qi/string/tst.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/string/tst.hpp
   branches/proto/v4/boost/spirit/home/qi/string/tst_map.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/string/tst_map.hpp
   branches/proto/v4/boost/spirit/home/qi/what.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/qi/what.hpp
   branches/proto/v4/boost/spirit/home/support/
      - copied from r44377, /trunk/boost/spirit/home/support/
   branches/proto/v4/boost/spirit/home/support/algorithm/
      - copied from r44377, /trunk/boost/spirit/home/support/algorithm/
   branches/proto/v4/boost/spirit/home/support/algorithm/any.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/algorithm/any.hpp
   branches/proto/v4/boost/spirit/home/support/algorithm/any_if.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/algorithm/any_if.hpp
   branches/proto/v4/boost/spirit/home/support/algorithm/any_ns.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/algorithm/any_ns.hpp
   branches/proto/v4/boost/spirit/home/support/argument.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/argument.hpp
   branches/proto/v4/boost/spirit/home/support/as_variant.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/as_variant.hpp
   branches/proto/v4/boost/spirit/home/support/ascii.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/ascii.hpp
   branches/proto/v4/boost/spirit/home/support/attribute_of.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/attribute_of.hpp
   branches/proto/v4/boost/spirit/home/support/attribute_transform.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/attribute_transform.hpp
   branches/proto/v4/boost/spirit/home/support/auxiliary/
      - copied from r44377, /trunk/boost/spirit/home/support/auxiliary/
   branches/proto/v4/boost/spirit/home/support/auxiliary/functor_holder.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/auxiliary/functor_holder.hpp
   branches/proto/v4/boost/spirit/home/support/auxiliary/meta_function_holder.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/auxiliary/meta_function_holder.hpp
   branches/proto/v4/boost/spirit/home/support/char_class/
      - copied from r44377, /trunk/boost/spirit/home/support/char_class/
   branches/proto/v4/boost/spirit/home/support/char_class.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/char_class.hpp
   branches/proto/v4/boost/spirit/home/support/char_class/ascii.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/char_class/ascii.hpp
   branches/proto/v4/boost/spirit/home/support/char_class/iso8859_1.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/char_class/iso8859_1.hpp
   branches/proto/v4/boost/spirit/home/support/char_class/standard.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/char_class/standard.hpp
   branches/proto/v4/boost/spirit/home/support/char_class/standard_wide.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/char_class/standard_wide.hpp
   branches/proto/v4/boost/spirit/home/support/component.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/component.hpp
   branches/proto/v4/boost/spirit/home/support/detail/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/
   branches/proto/v4/boost/spirit/home/support/detail/container.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/container.hpp
   branches/proto/v4/boost/spirit/home/support/detail/hold_any.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/hold_any.hpp
   branches/proto/v4/boost/spirit/home/support/detail/integer/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/integer/
   branches/proto/v4/boost/spirit/home/support/detail/integer/cover_operators.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/integer/cover_operators.hpp
   branches/proto/v4/boost/spirit/home/support/detail/integer/endian.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/integer/endian.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/lexer/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/char_state_machine.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/char_state_machine.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/char_traits.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/char_traits.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/consts.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/consts.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/containers/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/lexer/containers/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/debug.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/debug.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/generate_cpp.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/generate_cpp.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/generator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/generator.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/parser.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/node.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/partition/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/lexer/partition/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/partition/charset.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/partition/charset.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/partition/equivset.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/partition/equivset.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/rules.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/rules.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/runtime_error.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/runtime_error.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/serialise.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/serialise.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/size_t.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/size_t.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/state_machine.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/state_machine.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/string_token.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/string_token.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/tokeniser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/lexer/tokeniser.hpp
   branches/proto/v4/boost/spirit/home/support/detail/math/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/math/
   branches/proto/v4/boost/spirit/home/support/detail/math/detail/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/math/detail/
   branches/proto/v4/boost/spirit/home/support/detail/math/detail/fp_traits.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/math/detail/fp_traits.hpp
   branches/proto/v4/boost/spirit/home/support/detail/math/fpclassify.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/math/fpclassify.hpp
   branches/proto/v4/boost/spirit/home/support/detail/math/nonfinite_num_facets.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/math/nonfinite_num_facets.hpp
   branches/proto/v4/boost/spirit/home/support/detail/math/signbit.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/math/signbit.hpp
   branches/proto/v4/boost/spirit/home/support/detail/to_narrow.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/to_narrow.hpp
   branches/proto/v4/boost/spirit/home/support/detail/unordered/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/unordered/
   branches/proto/v4/boost/spirit/home/support/detail/unordered/detail/
      - copied from r44377, /trunk/boost/spirit/home/support/detail/unordered/detail/
   branches/proto/v4/boost/spirit/home/support/detail/unordered/detail/allocator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/unordered/detail/allocator.hpp
   branches/proto/v4/boost/spirit/home/support/detail/unordered/detail/hash_table.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/unordered/detail/hash_table.hpp
   branches/proto/v4/boost/spirit/home/support/detail/unordered/detail/hash_table_impl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/unordered/detail/hash_table_impl.hpp
   branches/proto/v4/boost/spirit/home/support/detail/unordered_map.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/unordered_map.hpp
   branches/proto/v4/boost/spirit/home/support/detail/unordered_set.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/unordered_set.hpp
   branches/proto/v4/boost/spirit/home/support/detail/values.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/values.hpp
   branches/proto/v4/boost/spirit/home/support/detail/what_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/detail/what_function.hpp
   branches/proto/v4/boost/spirit/home/support/iso8859_1.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iso8859_1.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/
      - copied from r44377, /trunk/boost/spirit/home/support/iterators/
   branches/proto/v4/boost/spirit/home/support/iterators/detail/
      - copied from r44377, /trunk/boost/spirit/home/support/iterators/detail/
   branches/proto/v4/boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/combine_policies.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/combine_policies.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/first_owner_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/first_owner_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/functor_input_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/functor_input_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/lex_input_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/lex_input_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/multi_pass.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/multi_pass.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/no_check_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/no_check_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/look_ahead.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/look_ahead.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/multi_pass.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/multi_pass.hpp
   branches/proto/v4/boost/spirit/home/support/iterators/multi_pass_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/iterators/multi_pass_fwd.hpp
   branches/proto/v4/boost/spirit/home/support/meta_grammar/
      - copied from r44377, /trunk/boost/spirit/home/support/meta_grammar/
   branches/proto/v4/boost/spirit/home/support/meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/meta_grammar.hpp
   branches/proto/v4/boost/spirit/home/support/meta_grammar/basic_rules.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/meta_grammar/basic_rules.hpp
   branches/proto/v4/boost/spirit/home/support/meta_grammar/basic_transforms.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/meta_grammar/basic_transforms.hpp
   branches/proto/v4/boost/spirit/home/support/meta_grammar/grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/meta_grammar/grammar.hpp
   branches/proto/v4/boost/spirit/home/support/modifier.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/modifier.hpp
   branches/proto/v4/boost/spirit/home/support/multi_pass.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/multi_pass.hpp
   branches/proto/v4/boost/spirit/home/support/nonterminal/
      - copied from r44377, /trunk/boost/spirit/home/support/nonterminal/
   branches/proto/v4/boost/spirit/home/support/nonterminal/detail/
      - copied from r44377, /trunk/boost/spirit/home/support/nonterminal/detail/
   branches/proto/v4/boost/spirit/home/support/nonterminal/detail/expand_arg.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/nonterminal/detail/expand_arg.hpp
   branches/proto/v4/boost/spirit/home/support/nonterminal/detail/nonterminal_fcall.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/nonterminal/detail/nonterminal_fcall.hpp
   branches/proto/v4/boost/spirit/home/support/nonterminal/locals.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/nonterminal/locals.hpp
   branches/proto/v4/boost/spirit/home/support/nonterminal/nonterminal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/nonterminal/nonterminal.hpp
   branches/proto/v4/boost/spirit/home/support/placeholders.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/placeholders.hpp
   branches/proto/v4/boost/spirit/home/support/safe_bool.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/safe_bool.hpp
   branches/proto/v4/boost/spirit/home/support/standard.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/standard.hpp
   branches/proto/v4/boost/spirit/home/support/standard_wide.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/standard_wide.hpp
   branches/proto/v4/boost/spirit/home/support/unused.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/home/support/unused.hpp
   branches/proto/v4/boost/spirit/include/
      - copied from r44377, /trunk/boost/spirit/include/
   branches/proto/v4/boost/spirit/include/classic.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic.hpp
   branches/proto/v4/boost/spirit/include/classic_actions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_actions.hpp
   branches/proto/v4/boost/spirit/include/classic_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_alternative.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_alternative.hpp
   branches/proto/v4/boost/spirit/include/classic_as_parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_as_parser.hpp
   branches/proto/v4/boost/spirit/include/classic_assert.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_assert.hpp
   branches/proto/v4/boost/spirit/include/classic_assign_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_assign_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_assign_key_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_assign_key_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_ast.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_ast.hpp
   branches/proto/v4/boost/spirit/include/classic_ast_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_ast_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_attribute.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_attribute.hpp
   branches/proto/v4/boost/spirit/include/classic_basic_chset.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_basic_chset.hpp
   branches/proto/v4/boost/spirit/include/classic_chset.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_chset.hpp
   branches/proto/v4/boost/spirit/include/classic_chset_operators.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_chset_operators.hpp
   branches/proto/v4/boost/spirit/include/classic_clear_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_clear_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_closure.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_closure.hpp
   branches/proto/v4/boost/spirit/include/classic_closure_context.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_closure_context.hpp
   branches/proto/v4/boost/spirit/include/classic_closure_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_closure_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_common.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_common.hpp
   branches/proto/v4/boost/spirit/include/classic_common_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_common_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_composite.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_composite.hpp
   branches/proto/v4/boost/spirit/include/classic_config.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_config.hpp
   branches/proto/v4/boost/spirit/include/classic_confix.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_confix.hpp
   branches/proto/v4/boost/spirit/include/classic_confix_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_confix_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_core.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_core.hpp
   branches/proto/v4/boost/spirit/include/classic_debug.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_debug.hpp
   branches/proto/v4/boost/spirit/include/classic_debug_node.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_debug_node.hpp
   branches/proto/v4/boost/spirit/include/classic_decrement_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_decrement_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_difference.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_difference.hpp
   branches/proto/v4/boost/spirit/include/classic_directives.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_directives.hpp
   branches/proto/v4/boost/spirit/include/classic_distinct.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_distinct.hpp
   branches/proto/v4/boost/spirit/include/classic_distinct_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_distinct_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_dynamic.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_dynamic.hpp
   branches/proto/v4/boost/spirit/include/classic_epsilon.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_epsilon.hpp
   branches/proto/v4/boost/spirit/include/classic_erase_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_erase_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_error_handling.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_error_handling.hpp
   branches/proto/v4/boost/spirit/include/classic_escape_char.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_escape_char.hpp
   branches/proto/v4/boost/spirit/include/classic_escape_char_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_escape_char_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_exceptions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_exceptions.hpp
   branches/proto/v4/boost/spirit/include/classic_exceptions_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_exceptions_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_exclusive_or.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_exclusive_or.hpp
   branches/proto/v4/boost/spirit/include/classic_file_iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_file_iterator.hpp
   branches/proto/v4/boost/spirit/include/classic_file_iterator_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_file_iterator_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_fixed_size_queue.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_fixed_size_queue.hpp
   branches/proto/v4/boost/spirit/include/classic_flush_multi_pass.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_flush_multi_pass.hpp
   branches/proto/v4/boost/spirit/include/classic_for.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_for.hpp
   branches/proto/v4/boost/spirit/include/classic_functor_parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_functor_parser.hpp
   branches/proto/v4/boost/spirit/include/classic_fundamental.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_fundamental.hpp
   branches/proto/v4/boost/spirit/include/classic_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_grammar.hpp
   branches/proto/v4/boost/spirit/include/classic_grammar_def.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_grammar_def.hpp
   branches/proto/v4/boost/spirit/include/classic_grammar_def_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_grammar_def_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_if.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_if.hpp
   branches/proto/v4/boost/spirit/include/classic_increment_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_increment_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_insert_at_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_insert_at_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_insert_key_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_insert_key_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_intersection.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_intersection.hpp
   branches/proto/v4/boost/spirit/include/classic_iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_iterator.hpp
   branches/proto/v4/boost/spirit/include/classic_kleene_star.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_kleene_star.hpp
   branches/proto/v4/boost/spirit/include/classic_lazy.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_lazy.hpp
   branches/proto/v4/boost/spirit/include/classic_list.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_list.hpp
   branches/proto/v4/boost/spirit/include/classic_lists.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_lists.hpp
   branches/proto/v4/boost/spirit/include/classic_lists_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_lists_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_loops.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_loops.hpp
   branches/proto/v4/boost/spirit/include/classic_match.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_match.hpp
   branches/proto/v4/boost/spirit/include/classic_meta.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_meta.hpp
   branches/proto/v4/boost/spirit/include/classic_minimal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_minimal.hpp
   branches/proto/v4/boost/spirit/include/classic_multi_pass.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_multi_pass.hpp
   branches/proto/v4/boost/spirit/include/classic_multi_pass_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_multi_pass_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_nil.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_nil.hpp
   branches/proto/v4/boost/spirit/include/classic_no_actions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_no_actions.hpp
   branches/proto/v4/boost/spirit/include/classic_numerics.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_numerics.hpp
   branches/proto/v4/boost/spirit/include/classic_numerics_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_numerics_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_operators.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_operators.hpp
   branches/proto/v4/boost/spirit/include/classic_optional.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_optional.hpp
   branches/proto/v4/boost/spirit/include/classic_parametric.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parametric.hpp
   branches/proto/v4/boost/spirit/include/classic_parse_tree.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parse_tree.hpp
   branches/proto/v4/boost/spirit/include/classic_parse_tree_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parse_tree_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_parse_tree_utils.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parse_tree_utils.hpp
   branches/proto/v4/boost/spirit/include/classic_parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parser.hpp
   branches/proto/v4/boost/spirit/include/classic_parser_context.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parser_context.hpp
   branches/proto/v4/boost/spirit/include/classic_parser_id.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parser_id.hpp
   branches/proto/v4/boost/spirit/include/classic_parser_names.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parser_names.hpp
   branches/proto/v4/boost/spirit/include/classic_parser_traits.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_parser_traits.hpp
   branches/proto/v4/boost/spirit/include/classic_position_iterator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_position_iterator.hpp
   branches/proto/v4/boost/spirit/include/classic_position_iterator_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_position_iterator_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_positive.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_positive.hpp
   branches/proto/v4/boost/spirit/include/classic_primitives.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_primitives.hpp
   branches/proto/v4/boost/spirit/include/classic_push_back_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_push_back_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_push_front_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_push_front_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_range_run.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_range_run.hpp
   branches/proto/v4/boost/spirit/include/classic_ref_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_ref_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_ref_const_ref_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_ref_const_ref_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp
   branches/proto/v4/boost/spirit/include/classic_ref_const_ref_value_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_ref_const_ref_value_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_ref_value_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_ref_value_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_refactoring.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_refactoring.hpp
   branches/proto/v4/boost/spirit/include/classic_regex.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_regex.hpp
   branches/proto/v4/boost/spirit/include/classic_rule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_rule.hpp
   branches/proto/v4/boost/spirit/include/classic_rule_alias.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_rule_alias.hpp
   branches/proto/v4/boost/spirit/include/classic_rule_parser.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_rule_parser.hpp
   branches/proto/v4/boost/spirit/include/classic_safe_bool.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_safe_bool.hpp
   branches/proto/v4/boost/spirit/include/classic_scanner.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_scanner.hpp
   branches/proto/v4/boost/spirit/include/classic_scanner_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_scanner_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_scoped_lock.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_scoped_lock.hpp
   branches/proto/v4/boost/spirit/include/classic_select.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_select.hpp
   branches/proto/v4/boost/spirit/include/classic_sequence.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_sequence.hpp
   branches/proto/v4/boost/spirit/include/classic_sequential_and.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_sequential_and.hpp
   branches/proto/v4/boost/spirit/include/classic_sequential_or.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_sequential_or.hpp
   branches/proto/v4/boost/spirit/include/classic_skipper.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_skipper.hpp
   branches/proto/v4/boost/spirit/include/classic_skipper_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_skipper_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_static.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_static.hpp
   branches/proto/v4/boost/spirit/include/classic_stored_rule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_stored_rule.hpp
   branches/proto/v4/boost/spirit/include/classic_stored_rule_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_stored_rule_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_subrule.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_subrule.hpp
   branches/proto/v4/boost/spirit/include/classic_subrule_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_subrule_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_swap_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_swap_actor.hpp
   branches/proto/v4/boost/spirit/include/classic_switch.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_switch.hpp
   branches/proto/v4/boost/spirit/include/classic_symbols.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_symbols.hpp
   branches/proto/v4/boost/spirit/include/classic_symbols_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_symbols_fwd.hpp
   branches/proto/v4/boost/spirit/include/classic_traverse.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_traverse.hpp
   branches/proto/v4/boost/spirit/include/classic_tree_to_xml.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_tree_to_xml.hpp
   branches/proto/v4/boost/spirit/include/classic_typeof.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_typeof.hpp
   branches/proto/v4/boost/spirit/include/classic_utility.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_utility.hpp
   branches/proto/v4/boost/spirit/include/classic_version.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_version.hpp
   branches/proto/v4/boost/spirit/include/classic_while.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/classic_while.hpp
   branches/proto/v4/boost/spirit/include/karma.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma.hpp
   branches/proto/v4/boost/spirit/include/karma_action.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_action.hpp
   branches/proto/v4/boost/spirit/include/karma_auxiliary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_auxiliary.hpp
   branches/proto/v4/boost/spirit/include/karma_binary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_binary.hpp
   branches/proto/v4/boost/spirit/include/karma_char.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_char.hpp
   branches/proto/v4/boost/spirit/include/karma_delimit.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_delimit.hpp
   branches/proto/v4/boost/spirit/include/karma_directive.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_directive.hpp
   branches/proto/v4/boost/spirit/include/karma_domain.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_domain.hpp
   branches/proto/v4/boost/spirit/include/karma_generate.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_generate.hpp
   branches/proto/v4/boost/spirit/include/karma_meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_meta_grammar.hpp
   branches/proto/v4/boost/spirit/include/karma_nonterminal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_nonterminal.hpp
   branches/proto/v4/boost/spirit/include/karma_numeric.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_numeric.hpp
   branches/proto/v4/boost/spirit/include/karma_operator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_operator.hpp
   branches/proto/v4/boost/spirit/include/karma_stream.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_stream.hpp
   branches/proto/v4/boost/spirit/include/karma_string.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_string.hpp
   branches/proto/v4/boost/spirit/include/karma_what.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/karma_what.hpp
   branches/proto/v4/boost/spirit/include/lex.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/lex.hpp
   branches/proto/v4/boost/spirit/include/lex_domain.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/lex_domain.hpp
   branches/proto/v4/boost/spirit/include/lex_lexer.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/lex_lexer.hpp
   branches/proto/v4/boost/spirit/include/lex_lexer_lexertl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/lex_lexer_lexertl.hpp
   branches/proto/v4/boost/spirit/include/lex_lexer_static_lexertl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/lex_lexer_static_lexertl.hpp
   branches/proto/v4/boost/spirit/include/lex_meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/lex_meta_grammar.hpp
   branches/proto/v4/boost/spirit/include/lex_set_state.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/lex_set_state.hpp
   branches/proto/v4/boost/spirit/include/lex_tokenize_and_parse.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/lex_tokenize_and_parse.hpp
   branches/proto/v4/boost/spirit/include/phoenix.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix.hpp
   branches/proto/v4/boost/spirit/include/phoenix1.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_actor.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_actor.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_binders.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_binders.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_casts.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_casts.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_closures.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_closures.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_composite.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_composite.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_functions.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_functions.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_new.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_new.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_operators.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_operators.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_primitives.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_primitives.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_special_ops.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_special_ops.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_statements.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_statements.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_tuple_helpers.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_tuple_helpers.hpp
   branches/proto/v4/boost/spirit/include/phoenix1_tuples.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix1_tuples.hpp
   branches/proto/v4/boost/spirit/include/phoenix_algorithm.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_algorithm.hpp
   branches/proto/v4/boost/spirit/include/phoenix_bind.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_bind.hpp
   branches/proto/v4/boost/spirit/include/phoenix_container.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_container.hpp
   branches/proto/v4/boost/spirit/include/phoenix_core.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_core.hpp
   branches/proto/v4/boost/spirit/include/phoenix_function.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_function.hpp
   branches/proto/v4/boost/spirit/include/phoenix_fusion.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_fusion.hpp
   branches/proto/v4/boost/spirit/include/phoenix_object.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_object.hpp
   branches/proto/v4/boost/spirit/include/phoenix_operator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_operator.hpp
   branches/proto/v4/boost/spirit/include/phoenix_scope.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_scope.hpp
   branches/proto/v4/boost/spirit/include/phoenix_statement.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_statement.hpp
   branches/proto/v4/boost/spirit/include/phoenix_stl.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_stl.hpp
   branches/proto/v4/boost/spirit/include/phoenix_version.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/phoenix_version.hpp
   branches/proto/v4/boost/spirit/include/qi.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi.hpp
   branches/proto/v4/boost/spirit/include/qi_action.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_action.hpp
   branches/proto/v4/boost/spirit/include/qi_auxiliary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_auxiliary.hpp
   branches/proto/v4/boost/spirit/include/qi_binary.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_binary.hpp
   branches/proto/v4/boost/spirit/include/qi_char.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_char.hpp
   branches/proto/v4/boost/spirit/include/qi_debug.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_debug.hpp
   branches/proto/v4/boost/spirit/include/qi_directive.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_directive.hpp
   branches/proto/v4/boost/spirit/include/qi_domain.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_domain.hpp
   branches/proto/v4/boost/spirit/include/qi_meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_meta_grammar.hpp
   branches/proto/v4/boost/spirit/include/qi_nonterminal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_nonterminal.hpp
   branches/proto/v4/boost/spirit/include/qi_numeric.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_numeric.hpp
   branches/proto/v4/boost/spirit/include/qi_operator.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_operator.hpp
   branches/proto/v4/boost/spirit/include/qi_parse.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_parse.hpp
   branches/proto/v4/boost/spirit/include/qi_skip.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_skip.hpp
   branches/proto/v4/boost/spirit/include/qi_stream.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_stream.hpp
   branches/proto/v4/boost/spirit/include/qi_string.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_string.hpp
   branches/proto/v4/boost/spirit/include/qi_what.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/qi_what.hpp
   branches/proto/v4/boost/spirit/include/support.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support.hpp
   branches/proto/v4/boost/spirit/include/support_any.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_any.hpp
   branches/proto/v4/boost/spirit/include/support_any_if.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_any_if.hpp
   branches/proto/v4/boost/spirit/include/support_any_ns.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_any_ns.hpp
   branches/proto/v4/boost/spirit/include/support_argument.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_argument.hpp
   branches/proto/v4/boost/spirit/include/support_as_variant.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_as_variant.hpp
   branches/proto/v4/boost/spirit/include/support_ascii.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_ascii.hpp
   branches/proto/v4/boost/spirit/include/support_attribute_of.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_attribute_of.hpp
   branches/proto/v4/boost/spirit/include/support_attribute_transform.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_attribute_transform.hpp
   branches/proto/v4/boost/spirit/include/support_basic_rules.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_basic_rules.hpp
   branches/proto/v4/boost/spirit/include/support_basic_transforms.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_basic_transforms.hpp
   branches/proto/v4/boost/spirit/include/support_char_class.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_char_class.hpp
   branches/proto/v4/boost/spirit/include/support_component.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_component.hpp
   branches/proto/v4/boost/spirit/include/support_functor_holder.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_functor_holder.hpp
   branches/proto/v4/boost/spirit/include/support_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_grammar.hpp
   branches/proto/v4/boost/spirit/include/support_iso8859_1.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_iso8859_1.hpp
   branches/proto/v4/boost/spirit/include/support_locals.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_locals.hpp
   branches/proto/v4/boost/spirit/include/support_look_ahead.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_look_ahead.hpp
   branches/proto/v4/boost/spirit/include/support_meta_function_holder.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_meta_function_holder.hpp
   branches/proto/v4/boost/spirit/include/support_meta_grammar.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_meta_grammar.hpp
   branches/proto/v4/boost/spirit/include/support_modifier.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_modifier.hpp
   branches/proto/v4/boost/spirit/include/support_multi_pass.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_multi_pass.hpp
   branches/proto/v4/boost/spirit/include/support_multi_pass_fwd.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_multi_pass_fwd.hpp
   branches/proto/v4/boost/spirit/include/support_nonterminal.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_nonterminal.hpp
   branches/proto/v4/boost/spirit/include/support_placeholders.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_placeholders.hpp
   branches/proto/v4/boost/spirit/include/support_safe_bool.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_safe_bool.hpp
   branches/proto/v4/boost/spirit/include/support_standard.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_standard.hpp
   branches/proto/v4/boost/spirit/include/support_standard_wide.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_standard_wide.hpp
   branches/proto/v4/boost/spirit/include/support_unused.hpp
      - copied unchanged from r44377, /trunk/boost/spirit/include/support_unused.hpp
   branches/proto/v4/libs/array/test/
      - copied from r44377, /trunk/libs/array/test/
   branches/proto/v4/libs/array/test/Jamfile.v2
      - copied unchanged from r44377, /trunk/libs/array/test/Jamfile.v2
   branches/proto/v4/libs/array/test/array0.cpp
      - copied unchanged from r44377, /trunk/libs/array/test/array0.cpp
   branches/proto/v4/libs/array/test/array1.cpp
      - copied unchanged from r44377, /trunk/libs/array/test/array1.cpp
   branches/proto/v4/libs/array/test/array2.cpp
      - copied unchanged from r44377, /trunk/libs/array/test/array2.cpp
   branches/proto/v4/libs/array/test/array3.cpp
      - copied unchanged from r44377, /trunk/libs/array/test/array3.cpp
   branches/proto/v4/libs/array/test/array4.cpp
      - copied unchanged from r44377, /trunk/libs/array/test/array4.cpp
   branches/proto/v4/libs/array/test/array5.cpp
      - copied unchanged from r44377, /trunk/libs/array/test/array5.cpp
   branches/proto/v4/libs/array/test/print.hpp
      - copied unchanged from r44377, /trunk/libs/array/test/print.hpp
   branches/proto/v4/libs/crc/test/
      - copied from r44377, /trunk/libs/crc/test/
   branches/proto/v4/libs/crc/test/crc_test.cpp
      - copied unchanged from r44377, /trunk/libs/crc/test/crc_test.cpp
   branches/proto/v4/libs/exception/test/has_to_string_test.cpp
      - copied unchanged from r44377, /trunk/libs/exception/test/has_to_string_test.cpp
   branches/proto/v4/libs/exception/test/is_output_streamable_test.cpp
      - copied unchanged from r44377, /trunk/libs/exception/test/is_output_streamable_test.cpp
   branches/proto/v4/libs/exception/test/to_string_fail.cpp
      - copied unchanged from r44377, /trunk/libs/exception/test/to_string_fail.cpp
   branches/proto/v4/libs/exception/test/to_string_stub_test.cpp
      - copied unchanged from r44377, /trunk/libs/exception/test/to_string_stub_test.cpp
   branches/proto/v4/libs/smart_ptr/test/sp_accept_owner_test.cpp
      - copied unchanged from r44377, /trunk/libs/smart_ptr/test/sp_accept_owner_test.cpp
   branches/proto/v4/libs/spirit/classic/
      - copied from r44377, /trunk/libs/spirit/classic/
   branches/proto/v4/libs/spirit/classic/change_log.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/change_log.html
   branches/proto/v4/libs/spirit/classic/doc/
      - copied from r44377, /trunk/libs/spirit/classic/doc/
   branches/proto/v4/libs/spirit/classic/doc/acknowledgments.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/acknowledgments.html
   branches/proto/v4/libs/spirit/classic/doc/basic_concepts.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/basic_concepts.html
   branches/proto/v4/libs/spirit/classic/doc/character_sets.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/character_sets.html
   branches/proto/v4/libs/spirit/classic/doc/closures.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/closures.html
   branches/proto/v4/libs/spirit/classic/doc/confix.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/confix.html
   branches/proto/v4/libs/spirit/classic/doc/debugging.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/debugging.html
   branches/proto/v4/libs/spirit/classic/doc/directives.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/directives.html
   branches/proto/v4/libs/spirit/classic/doc/distinct.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/distinct.html
   branches/proto/v4/libs/spirit/classic/doc/dynamic_parsers.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/dynamic_parsers.html
   branches/proto/v4/libs/spirit/classic/doc/epsilon.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/epsilon.html
   branches/proto/v4/libs/spirit/classic/doc/error_handling.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/error_handling.html
   branches/proto/v4/libs/spirit/classic/doc/escape_char_parser.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/escape_char_parser.html
   branches/proto/v4/libs/spirit/classic/doc/faq.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/faq.html
   branches/proto/v4/libs/spirit/classic/doc/file_iterator.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/file_iterator.html
   branches/proto/v4/libs/spirit/classic/doc/functional.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/functional.html
   branches/proto/v4/libs/spirit/classic/doc/functor_parser.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/functor_parser.html
   branches/proto/v4/libs/spirit/classic/doc/grammar.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/grammar.html
   branches/proto/v4/libs/spirit/classic/doc/includes.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/includes.html
   branches/proto/v4/libs/spirit/classic/doc/indepth_the_parser.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/indepth_the_parser.html
   branches/proto/v4/libs/spirit/classic/doc/indepth_the_parser_context.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/indepth_the_parser_context.html
   branches/proto/v4/libs/spirit/classic/doc/indepth_the_scanner.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/indepth_the_scanner.html
   branches/proto/v4/libs/spirit/classic/doc/introduction.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/introduction.html
   branches/proto/v4/libs/spirit/classic/doc/list_parsers.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/list_parsers.html
   branches/proto/v4/libs/spirit/classic/doc/loops.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/loops.html
   branches/proto/v4/libs/spirit/classic/doc/multi_pass.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/multi_pass.html
   branches/proto/v4/libs/spirit/classic/doc/numerics.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/numerics.html
   branches/proto/v4/libs/spirit/classic/doc/operators.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/operators.html
   branches/proto/v4/libs/spirit/classic/doc/organization.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/organization.html
   branches/proto/v4/libs/spirit/classic/doc/parametric_parsers.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/parametric_parsers.html
   branches/proto/v4/libs/spirit/classic/doc/phoenix.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/phoenix.html
   branches/proto/v4/libs/spirit/classic/doc/portability.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/portability.html
   branches/proto/v4/libs/spirit/classic/doc/position_iterator.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/position_iterator.html
   branches/proto/v4/libs/spirit/classic/doc/predefined_actors.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/predefined_actors.html
   branches/proto/v4/libs/spirit/classic/doc/preface.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/preface.html
   branches/proto/v4/libs/spirit/classic/doc/primitives.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/primitives.html
   branches/proto/v4/libs/spirit/classic/doc/quick_start.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/quick_start.html
   branches/proto/v4/libs/spirit/classic/doc/quickref.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/quickref.html
   branches/proto/v4/libs/spirit/classic/doc/rationale.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/rationale.html
   branches/proto/v4/libs/spirit/classic/doc/refactoring.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/refactoring.html
   branches/proto/v4/libs/spirit/classic/doc/references.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/references.html
   branches/proto/v4/libs/spirit/classic/doc/regular_expression_parser.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/regular_expression_parser.html
   branches/proto/v4/libs/spirit/classic/doc/rule.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/rule.html
   branches/proto/v4/libs/spirit/classic/doc/scanner.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/scanner.html
   branches/proto/v4/libs/spirit/classic/doc/scoped_lock.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/scoped_lock.html
   branches/proto/v4/libs/spirit/classic/doc/select_parser.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/select_parser.html
   branches/proto/v4/libs/spirit/classic/doc/semantic_actions.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/semantic_actions.html
   branches/proto/v4/libs/spirit/classic/doc/stored_rule.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/stored_rule.html
   branches/proto/v4/libs/spirit/classic/doc/style_guide.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/style_guide.html
   branches/proto/v4/libs/spirit/classic/doc/subrules.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/subrules.html
   branches/proto/v4/libs/spirit/classic/doc/switch_parser.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/switch_parser.html
   branches/proto/v4/libs/spirit/classic/doc/symbols.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/symbols.html
   branches/proto/v4/libs/spirit/classic/doc/techniques.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/techniques.html
   branches/proto/v4/libs/spirit/classic/doc/the_lazy_parser.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/the_lazy_parser.html
   branches/proto/v4/libs/spirit/classic/doc/theme/
      - copied from r44377, /trunk/libs/spirit/classic/doc/theme/
   branches/proto/v4/libs/spirit/classic/doc/theme/alert.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/alert.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/arrow.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/arrow.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/bkd.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/bkd.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/bkd2.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/bkd2.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/bulb.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/bulb.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/bullet.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/bullet.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/closure1.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/closure1.png
   branches/proto/v4/libs/spirit/classic/doc/theme/error_handling.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/error_handling.png
   branches/proto/v4/libs/spirit/classic/doc/theme/intro1.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/intro1.png
   branches/proto/v4/libs/spirit/classic/doc/theme/intro2.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/intro2.png
   branches/proto/v4/libs/spirit/classic/doc/theme/intro3.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/intro3.png
   branches/proto/v4/libs/spirit/classic/doc/theme/intro4.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/intro4.png
   branches/proto/v4/libs/spirit/classic/doc/theme/intro5.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/intro5.png
   branches/proto/v4/libs/spirit/classic/doc/theme/intro6.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/intro6.png
   branches/proto/v4/libs/spirit/classic/doc/theme/intro7.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/intro7.png
   branches/proto/v4/libs/spirit/classic/doc/theme/l_arr.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/l_arr.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/l_arr_disabled.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/l_arr_disabled.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/lambda.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/lambda.png
   branches/proto/v4/libs/spirit/classic/doc/theme/lens.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/lens.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/note.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/note.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/organization1.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/organization1.png
   branches/proto/v4/libs/spirit/classic/doc/theme/r_arr.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/r_arr.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/r_arr_disabled.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/r_arr_disabled.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/scanner1.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/scanner1.png
   branches/proto/v4/libs/spirit/classic/doc/theme/spirit.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/spirit.gif
   branches/proto/v4/libs/spirit/classic/doc/theme/style.css
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/style.css
   branches/proto/v4/libs/spirit/classic/doc/theme/subrule1.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/subrule1.png
   branches/proto/v4/libs/spirit/classic/doc/theme/trees1.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/trees1.png
   branches/proto/v4/libs/spirit/classic/doc/theme/trees2.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/trees2.png
   branches/proto/v4/libs/spirit/classic/doc/theme/trees3.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/trees3.png
   branches/proto/v4/libs/spirit/classic/doc/theme/trees4.png
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/trees4.png
   branches/proto/v4/libs/spirit/classic/doc/theme/u_arr.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/theme/u_arr.gif
   branches/proto/v4/libs/spirit/classic/doc/trees.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/doc/trees.html
   branches/proto/v4/libs/spirit/classic/example/
      - copied from r44377, /trunk/libs/spirit/classic/example/
   branches/proto/v4/libs/spirit/classic/example/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/Jamfile
   branches/proto/v4/libs/spirit/classic/example/fundamental/
      - copied from r44377, /trunk/libs/spirit/classic/example/fundamental/
   branches/proto/v4/libs/spirit/classic/example/fundamental/ast_calc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/ast_calc.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/bind.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/bind.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/boiler_plate.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/boiler_plate.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/calc_debug.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/calc_debug.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/calc_plain.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/calc_plain.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/comments.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/comments.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/complex_number.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/complex_number.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/
      - copied from r44377, /trunk/libs/spirit/classic/example/fundamental/distinct/
   branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/distinct/distinct_parser.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser_dynamic.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/distinct/distinct_parser_dynamic.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/error_handling.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/error_handling.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/error_reporting.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/error_reporting.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/file_parser.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/file_parser.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/full_calc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/full_calc.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/functor_parser.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/functor_parser.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/list_parser.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/list_parser.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/matching_tags.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/matching_tags.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/
      - copied from r44377, /trunk/libs/spirit/classic/example/fundamental/more_calculators/
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/ast_calc2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/more_calculators/ast_calc2.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/calc_with_variables.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/more_calculators/calc_with_variables.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/phoenix_subrule_calc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/more_calculators/phoenix_subrule_calc.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/primitive_calc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/more_calculators/primitive_calc.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/rpn_calc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/more_calculators/rpn_calc.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/vmachine_calc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/more_calculators/vmachine_calc.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/no_actions.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/no_actions.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/number_list.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/number_list.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/parse_tree_calc1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/parse_tree_calc1.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/parser_context.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/parser_context.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/phoenix_calc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/phoenix_calc.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/
      - copied from r44377, /trunk/libs/spirit/classic/example/fundamental/position_iterator/
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err1 (props changed)
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err1
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err2 (props changed)
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err2
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err3 (props changed)
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err3
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.ok (props changed)
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.ok
   branches/proto/v4/libs/spirit/classic/example/fundamental/refactoring.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/refactoring.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/regular_expression.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/regular_expression.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/roman_numerals.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/roman_numerals.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/stuff_vector.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/stuff_vector2.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/subrule_calc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/subrule_calc.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/sum.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/sum.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/thousand_separated.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/thousand_separated.cpp
   branches/proto/v4/libs/spirit/classic/example/fundamental/tree_calc_grammar.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/fundamental/tree_calc_grammar.hpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/
      - copied from r44377, /trunk/libs/spirit/classic/example/intermediate/
   branches/proto/v4/libs/spirit/classic/example/intermediate/ipv4.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/ipv4.cpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/ipv4_opt.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/ipv4_opt.cpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/lazy_parser.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/lazy_parser.cpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/parameters.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/parameters.cpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/regex_convert.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/regex_convert.cpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/simple_xml/
      - copied from r44377, /trunk/libs/spirit/classic/example/intermediate/simple_xml/
   branches/proto/v4/libs/spirit/classic/example/intermediate/simple_xml/actions.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/simple_xml/actions.hpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/simple_xml/driver.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/simple_xml/driver.cpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/simple_xml/tag.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/simple_xml/tag.cpp
   branches/proto/v4/libs/spirit/classic/example/intermediate/simple_xml/xml_g.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/intermediate/simple_xml/xml_g.hpp
   branches/proto/v4/libs/spirit/classic/example/techniques/
      - copied from r44377, /trunk/libs/spirit/classic/example/techniques/
   branches/proto/v4/libs/spirit/classic/example/techniques/dynamic_rule.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/dynamic_rule.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/epsilon.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/epsilon.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/multiple_scanners.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/multiple_scanners.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/nabialek.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/nabialek.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules/
      - copied from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules/
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules/no_rule1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules/no_rule1.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules/no_rule2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules/no_rule2.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules/no_rule3.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules/no_rule3.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules_with_typeof/
      - copied from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules_with_typeof/
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules_with_typeof/opaque_rule_parser.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules_with_typeof/opaque_rule_parser.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules_with_typeof/rule_parser_1_1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules_with_typeof/rule_parser_1_1.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules_with_typeof/rule_parser_1_2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules_with_typeof/rule_parser_1_2.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules_with_typeof/rule_parser_2_1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules_with_typeof/rule_parser_2_1.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules_with_typeof/rule_parser_2_2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/no_rules_with_typeof/rule_parser_2_2.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/right_recursion.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/right_recursion.cpp
   branches/proto/v4/libs/spirit/classic/example/techniques/typeof.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/example/techniques/typeof.cpp
   branches/proto/v4/libs/spirit/classic/index.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/index.html
   branches/proto/v4/libs/spirit/classic/phoenix/
      - copied from r44377, /trunk/libs/spirit/classic/phoenix/
   branches/proto/v4/libs/spirit/classic/phoenix/doc/
      - copied from r44377, /trunk/libs/spirit/classic/phoenix/doc/
   branches/proto/v4/libs/spirit/classic/phoenix/doc/actors.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/actors.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/actors_revisited.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/actors_revisited.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/adaptable_closures.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/adaptable_closures.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/architecture.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/architecture.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/arguments.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/arguments.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/basic_concepts.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/basic_concepts.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/binders.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/binders.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/composites.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/composites.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/composites_revisited.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/composites_revisited.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/efficiency.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/efficiency.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/functions.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/functions.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/inside_phoenix.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/inside_phoenix.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/interfacing.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/interfacing.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/introduction.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/introduction.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/lazy_construction.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/lazy_construction.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/lazy_functions.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/lazy_functions.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/operators.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/operators.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/operators_revisited.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/operators_revisited.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/organization.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/organization.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/place_holders.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/place_holders.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/polymorphic_functions.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/polymorphic_functions.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/preface.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/preface.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/primitives.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/primitives.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/quick_start.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/quick_start.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/references.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/references.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/statements.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/statements.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/
      - copied from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/alert.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/alert.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/arrow.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/arrow.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/bkd.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/bkd.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/bkd2.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/bkd2.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/bulb.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/bulb.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/bullet.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/bullet.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/l_arr.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/l_arr.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/l_arr_disabled.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/l_arr_disabled.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/lens.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/lens.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/note.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/note.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/r_arr.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/r_arr.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/r_arr_disabled.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/r_arr_disabled.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/smiley.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/smiley.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/spirit.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/spirit.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/style.css
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/style.css
   branches/proto/v4/libs/spirit/classic/phoenix/doc/theme/u_arr.gif
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/theme/u_arr.gif
   branches/proto/v4/libs/spirit/classic/phoenix/doc/tuples.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/tuples.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/values.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/values.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/variables.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/variables.html
   branches/proto/v4/libs/spirit/classic/phoenix/doc/wrap_up.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/doc/wrap_up.html
   branches/proto/v4/libs/spirit/classic/phoenix/example/
      - copied from r44377, /trunk/libs/spirit/classic/phoenix/example/
   branches/proto/v4/libs/spirit/classic/phoenix/example/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/Jamfile
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/
      - copied from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/closures.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/closures.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample10.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample10.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample2.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample3.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample3.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample4.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample4.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample5.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample5.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample6.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample6.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample7.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample7.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample8.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample8.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/example/fundamental/sample9.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/example/fundamental/sample9.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/index.html
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/index.html
   branches/proto/v4/libs/spirit/classic/phoenix/test/
      - copied from r44377, /trunk/libs/spirit/classic/phoenix/test/
   branches/proto/v4/libs/spirit/classic/phoenix/test/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/Jamfile
   branches/proto/v4/libs/spirit/classic/phoenix/test/binary_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/binary_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/binders_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/binders_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/functors_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/functors_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/iostream_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/iostream_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/mixed_binary_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/mixed_binary_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/more_expressions_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/more_expressions_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/new_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/new_test.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/primitives_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/primitives_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/runtest.sh
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/runtest.sh
   branches/proto/v4/libs/spirit/classic/phoenix/test/statements_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/statements_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/stl_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/stl_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/tuples_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/tuples_tests.cpp
   branches/proto/v4/libs/spirit/classic/phoenix/test/unary_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/phoenix/test/unary_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/
      - copied from r44377, /trunk/libs/spirit/classic/test/
   branches/proto/v4/libs/spirit/classic/test/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/Jamfile
   branches/proto/v4/libs/spirit/classic/test/actor/
      - copied from r44377, /trunk/libs/spirit/classic/test/actor/
   branches/proto/v4/libs/spirit/classic/test/actor/action_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/action_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/action_tests.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/action_tests.hpp
   branches/proto/v4/libs/spirit/classic/test/actor/assign_key_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/assign_key_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/assign_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/assign_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/clear_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/clear_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/decrement_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/decrement_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/erase_at_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/erase_at_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/increment_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/increment_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/insert_at_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/insert_at_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/insert_key_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/insert_key_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/push_back_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/push_back_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/push_front_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/push_front_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/swap_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/swap_test.cpp
   branches/proto/v4/libs/spirit/classic/test/actor/unit_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/actor/unit_test.cpp
   branches/proto/v4/libs/spirit/classic/test/ast_calc_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/ast_calc_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/bug_000008.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/bug_000008.cpp
   branches/proto/v4/libs/spirit/classic/test/bug_fixes.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/bug_fixes.cpp
   branches/proto/v4/libs/spirit/classic/test/char_strings_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/char_strings_test.cpp
   branches/proto/v4/libs/spirit/classic/test/char_strings_test_fail.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/char_strings_test_fail.cpp
   branches/proto/v4/libs/spirit/classic/test/chset_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/chset_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/closure_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/closure_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/confix_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/confix_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/custom_real_parser.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/custom_real_parser.cpp
   branches/proto/v4/libs/spirit/classic/test/directives_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/directives_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/distinct_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/distinct_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/epsilon_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/epsilon_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/escape_char_parser_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/escape_char_parser_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/exception_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/exception_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/file_iterator_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/file_iterator_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/fixed_size_queue_fail_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/fixed_size_queue_fail_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/fixed_size_queue_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/fixed_size_queue_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/for_p_as_parser_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/for_p_as_parser_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/for_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/for_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/fundamental_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/fundamental_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/grammar_def_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/grammar_def_test.cpp
   branches/proto/v4/libs/spirit/classic/test/grammar_mt_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/grammar_mt_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/grammar_multi_instance_tst.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/grammar_multi_instance_tst.cpp
   branches/proto/v4/libs/spirit/classic/test/grammar_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/grammar_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/group_match_bug.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/group_match_bug.cpp
   branches/proto/v4/libs/spirit/classic/test/if_p_as_parser_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/if_p_as_parser_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/if_p_int_as_condition_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/if_p_int_as_condition_test.cpp
   branches/proto/v4/libs/spirit/classic/test/if_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/if_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/impl/
      - copied from r44377, /trunk/libs/spirit/classic/test/impl/
   branches/proto/v4/libs/spirit/classic/test/impl/sstream.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/impl/sstream.hpp
   branches/proto/v4/libs/spirit/classic/test/impl/string_length.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/impl/string_length.hpp
   branches/proto/v4/libs/spirit/classic/test/impl/var.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/impl/var.hpp
   branches/proto/v4/libs/spirit/classic/test/lazy_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/lazy_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/loops_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/loops_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/match_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/match_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/mix_and_match_trees.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/mix_and_match_trees.cpp
   branches/proto/v4/libs/spirit/classic/test/multi_pass_compile_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/multi_pass_compile_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/multi_pass_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/multi_pass_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/negated_eps_p_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/negated_eps_p_test.cpp
   branches/proto/v4/libs/spirit/classic/test/numerics_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/numerics_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/operators_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/operators_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/owi_mt_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/owi_mt_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/owi_st_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/owi_st_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/parametric_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/parametric_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/parser_context_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/parser_context_test.cpp
   branches/proto/v4/libs/spirit/classic/test/parser_traits_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/parser_traits_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/position_iterator_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/position_iterator_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/post_skips.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/post_skips.cpp
   branches/proto/v4/libs/spirit/classic/test/primitives_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/primitives_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/repeat_ast_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/repeat_ast_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/rule_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/rule_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/scanner_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/scanner_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/scanner_value_type_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/scanner_value_type_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/scoped_lock_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/scoped_lock_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/select_p_with_rule.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/select_p_with_rule.cpp
   branches/proto/v4/libs/spirit/classic/test/sf_bug_720917.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/sf_bug_720917.cpp
   branches/proto/v4/libs/spirit/classic/test/shortest_alternative_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/shortest_alternative_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/subrule_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/subrule_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/switch_problem.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/switch_problem.cpp
   branches/proto/v4/libs/spirit/classic/test/switch_tests_eps_default.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/switch_tests_eps_default.cpp
   branches/proto/v4/libs/spirit/classic/test/switch_tests_general_def.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/switch_tests_general_def.cpp
   branches/proto/v4/libs/spirit/classic/test/switch_tests_single.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/switch_tests_single.cpp
   branches/proto/v4/libs/spirit/classic/test/switch_tests_wo_default.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/switch_tests_wo_default.cpp
   branches/proto/v4/libs/spirit/classic/test/symbols_add_null.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/symbols_add_null.cpp
   branches/proto/v4/libs/spirit/classic/test/symbols_find_null.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/symbols_find_null.cpp
   branches/proto/v4/libs/spirit/classic/test/symbols_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/symbols_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/traverse_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/traverse_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/tree_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/tree_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/tree_to_xml.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/tree_to_xml.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/
      - copied from r44377, /trunk/libs/spirit/classic/test/typeof_support/
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_actor.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_actor.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_attribute.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_attribute.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_core.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_core.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_debug.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_debug.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_dynamic.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_dynamic.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_error_handling.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_error_handling.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_iterator.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_iterator.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_symbols.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_symbols.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_tree.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_tree.cpp
   branches/proto/v4/libs/spirit/classic/test/typeof_support/typeof_utility.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/typeof_support/typeof_utility.cpp
   branches/proto/v4/libs/spirit/classic/test/while_p_as_parser_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/while_p_as_parser_tests.cpp
   branches/proto/v4/libs/spirit/classic/test/while_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/classic/test/while_tests.cpp
   branches/proto/v4/libs/spirit/doc/
      - copied from r44377, /trunk/libs/spirit/doc/
   branches/proto/v4/libs/spirit/doc/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/doc/Jamfile
   branches/proto/v4/libs/spirit/doc/_concepts_template_.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/_concepts_template_.qbk
   branches/proto/v4/libs/spirit/doc/_reference_template_.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/_reference_template_.qbk
   branches/proto/v4/libs/spirit/doc/acknowledgments.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/acknowledgments.qbk
   branches/proto/v4/libs/spirit/doc/faq.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/faq.qbk
   branches/proto/v4/libs/spirit/doc/html/
      - copied from r44377, /trunk/libs/spirit/doc/html/
   branches/proto/v4/libs/spirit/doc/html/images/
      - copied from r44377, /trunk/libs/spirit/doc/html/images/
   branches/proto/v4/libs/spirit/doc/html/images/FlowOfControl.png
      - copied unchanged from r44377, /trunk/libs/spirit/doc/html/images/FlowOfControl.png
   branches/proto/v4/libs/spirit/doc/html/images/Thumbs.db
      - copied unchanged from r44377, /trunk/libs/spirit/doc/html/images/Thumbs.db
   branches/proto/v4/libs/spirit/doc/html/images/TokenStructure.png
      - copied unchanged from r44377, /trunk/libs/spirit/doc/html/images/TokenStructure.png
   branches/proto/v4/libs/spirit/doc/introduction.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/introduction.qbk
   branches/proto/v4/libs/spirit/doc/lex/
      - copied from r44377, /trunk/libs/spirit/doc/lex/
   branches/proto/v4/libs/spirit/doc/lex.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex.qbk
   branches/proto/v4/libs/spirit/doc/lex/introduction.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/introduction.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_attributes.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_attributes.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_primitives.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_primitives.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart1.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_quickstart1.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart2.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_quickstart2.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart3.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_quickstart3.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_semantic_actions.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_semantic_actions.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_states.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_states.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_static_model.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_static_model.qbk
   branches/proto/v4/libs/spirit/doc/lex/lexer_tutorials.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/lexer_tutorials.qbk
   branches/proto/v4/libs/spirit/doc/lex/parsing_using_a_lexer.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/parsing_using_a_lexer.qbk
   branches/proto/v4/libs/spirit/doc/lex/token_definition.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/token_definition.qbk
   branches/proto/v4/libs/spirit/doc/lex/tokenizing.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/tokenizing.qbk
   branches/proto/v4/libs/spirit/doc/lex/tokens_values.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/lex/tokens_values.qbk
   branches/proto/v4/libs/spirit/doc/notes/
      - copied from r44377, /trunk/libs/spirit/doc/notes/
   branches/proto/v4/libs/spirit/doc/notes.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/notes.qbk
   branches/proto/v4/libs/spirit/doc/notes/style_guide.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/notes/style_guide.qbk
   branches/proto/v4/libs/spirit/doc/outline.txt
      - copied unchanged from r44377, /trunk/libs/spirit/doc/outline.txt
   branches/proto/v4/libs/spirit/doc/preface.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/preface.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/
      - copied from r44377, /trunk/libs/spirit/doc/qi_and_karma/
   branches/proto/v4/libs/spirit/doc/qi_and_karma.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/attributes.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/attributes.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/debugging.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/debugging.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/directives.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/directives.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/error_handling.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/error_handling.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/generating.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/generating.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/grammars.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/grammars.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/operators.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/operators.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/parse_trees_and_asts.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/parse_trees_and_asts.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/parsing.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/parsing.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/peg.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/peg.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/primitives.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/primitives.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/quick_reference.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/quick_reference.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/rules.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/rules.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/semantic_actions.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/semantic_actions.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/tutorials.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/qi_and_karma/tutorials.qbk
   branches/proto/v4/libs/spirit/doc/rationale.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/rationale.qbk
   branches/proto/v4/libs/spirit/doc/reference/
      - copied from r44377, /trunk/libs/spirit/doc/reference/
   branches/proto/v4/libs/spirit/doc/reference/lex/
      - copied from r44377, /trunk/libs/spirit/doc/reference/lex/
   branches/proto/v4/libs/spirit/doc/reference/lex/lexer.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/lex/lexer.qbk
   branches/proto/v4/libs/spirit/doc/reference/lex/lexer_class.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/lex/lexer_class.qbk
   branches/proto/v4/libs/spirit/doc/reference/lex/token.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/lex/token.qbk
   branches/proto/v4/libs/spirit/doc/reference/lex/token_class.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/lex/token_class.qbk
   branches/proto/v4/libs/spirit/doc/reference/lex/tokendef.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/lex/tokendef.qbk
   branches/proto/v4/libs/spirit/doc/reference/lex/tokendef_class.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/lex/tokendef_class.qbk
   branches/proto/v4/libs/spirit/doc/reference/lex/tokenset.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/lex/tokenset.qbk
   branches/proto/v4/libs/spirit/doc/reference/lex/tokenset_class.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/lex/tokenset_class.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/
      - copied from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/action.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/action.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/auxiliary.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/auxiliary.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/binary.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/binary.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/char.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/char.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/debug.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/debug.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/directive.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/directive.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/generator.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/generator.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/nonterminal.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/nonterminal.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/numeric.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/numeric.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/operator.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/operator.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/parser.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/parser.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/stream.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/stream.qbk
   branches/proto/v4/libs/spirit/doc/reference/qi_and_karma/string.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/reference/qi_and_karma/string.qbk
   branches/proto/v4/libs/spirit/doc/references.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/references.qbk
   branches/proto/v4/libs/spirit/doc/spirit2.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/spirit2.qbk
   branches/proto/v4/libs/spirit/doc/what_s_new.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/doc/what_s_new.qbk
   branches/proto/v4/libs/spirit/example/
      - copied from r44377, /trunk/libs/spirit/example/
   branches/proto/v4/libs/spirit/example/karma/
      - copied from r44377, /trunk/libs/spirit/example/karma/
   branches/proto/v4/libs/spirit/example/karma/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/example/karma/Jamfile
   branches/proto/v4/libs/spirit/example/karma/basic_facilities.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/karma/basic_facilities.cpp
   branches/proto/v4/libs/spirit/example/karma/functor_facilities.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/karma/functor_facilities.cpp
   branches/proto/v4/libs/spirit/example/karma/quick_start1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/karma/quick_start1.cpp
   branches/proto/v4/libs/spirit/example/lex/
      - copied from r44377, /trunk/libs/spirit/example/lex/
   branches/proto/v4/libs/spirit/example/lex/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/Jamfile
   branches/proto/v4/libs/spirit/example/lex/example.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example.hpp
   branches/proto/v4/libs/spirit/example/lex/example1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example1.cpp
   branches/proto/v4/libs/spirit/example/lex/example1.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example1.input
   branches/proto/v4/libs/spirit/example/lex/example2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example2.cpp
   branches/proto/v4/libs/spirit/example/lex/example2.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example2.input
   branches/proto/v4/libs/spirit/example/lex/example3.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example3.cpp
   branches/proto/v4/libs/spirit/example/lex/example3.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example3.input
   branches/proto/v4/libs/spirit/example/lex/example4.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example4.cpp
   branches/proto/v4/libs/spirit/example/lex/example4.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example4.input
   branches/proto/v4/libs/spirit/example/lex/example5.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example5.cpp
   branches/proto/v4/libs/spirit/example/lex/example5.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example5.input
   branches/proto/v4/libs/spirit/example/lex/example6.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example6.cpp
   branches/proto/v4/libs/spirit/example/lex/example6.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/example6.input
   branches/proto/v4/libs/spirit/example/lex/print_numbers.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/print_numbers.cpp
   branches/proto/v4/libs/spirit/example/lex/print_numbers.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/print_numbers.input
   branches/proto/v4/libs/spirit/example/lex/static_lexer/
      - copied from r44377, /trunk/libs/spirit/example/lex/static_lexer/
   branches/proto/v4/libs/spirit/example/lex/static_lexer/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/static_lexer/Jamfile
   branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/static_lexer/word_count.input
   branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count_generate.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/static_lexer/word_count_generate.cpp
   branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count_static.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/static_lexer/word_count_static.cpp
   branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count_static.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/static_lexer/word_count_static.hpp
   branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count_tokens.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/static_lexer/word_count_tokens.hpp
   branches/proto/v4/libs/spirit/example/lex/strip_comments.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/strip_comments.cpp
   branches/proto/v4/libs/spirit/example/lex/strip_comments.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/strip_comments.input
   branches/proto/v4/libs/spirit/example/lex/strip_comments_lexer.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/strip_comments_lexer.cpp
   branches/proto/v4/libs/spirit/example/lex/word_count.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/word_count.cpp
   branches/proto/v4/libs/spirit/example/lex/word_count.input
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/word_count.input
   branches/proto/v4/libs/spirit/example/lex/word_count_functor.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/word_count_functor.cpp
   branches/proto/v4/libs/spirit/example/lex/word_count_functor.flex
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/word_count_functor.flex
   branches/proto/v4/libs/spirit/example/lex/word_count_functor_flex.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/word_count_functor_flex.cpp
   branches/proto/v4/libs/spirit/example/lex/word_count_lexer.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/lex/word_count_lexer.cpp
   branches/proto/v4/libs/spirit/example/qi/
      - copied from r44377, /trunk/libs/spirit/example/qi/
   branches/proto/v4/libs/spirit/example/qi/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/Jamfile
   branches/proto/v4/libs/spirit/example/qi/calc1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc1.cpp
   branches/proto/v4/libs/spirit/example/qi/calc2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc2.cpp
   branches/proto/v4/libs/spirit/example/qi/calc3.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc3.cpp
   branches/proto/v4/libs/spirit/example/qi/calc3_lexer.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc3_lexer.cpp
   branches/proto/v4/libs/spirit/example/qi/calc4.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc4.cpp
   branches/proto/v4/libs/spirit/example/qi/calc5.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc5.cpp
   branches/proto/v4/libs/spirit/example/qi/calc6/
      - copied from r44377, /trunk/libs/spirit/example/qi/calc6/
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc6/calc6.cpp
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc6/calc6.hpp
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6a.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc6/calc6a.cpp
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6b.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc6/calc6b.cpp
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6b.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc6/calc6b.hpp
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6c.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc6/calc6c.cpp
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6c.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc6/calc6c.hpp
   branches/proto/v4/libs/spirit/example/qi/calc7/
      - copied from r44377, /trunk/libs/spirit/example/qi/calc7/
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc7/calc7.cpp
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc7/calc7.hpp
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7a.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc7/calc7a.cpp
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7b.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc7/calc7b.cpp
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7b.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc7/calc7b.hpp
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7c.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc7/calc7c.cpp
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7c.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/calc7/calc7c.hpp
   branches/proto/v4/libs/spirit/example/qi/complex_number.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/complex_number.cpp
   branches/proto/v4/libs/spirit/example/qi/employee.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/employee.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/
      - copied from r44377, /trunk/libs/spirit/example/qi/mini_c/
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_c.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_c.hpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_ca.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_ca.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cb.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_cb.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cb.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_cb.hpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cc.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_cc.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cc.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_cc.hpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cd.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_cd.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cd.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c/mini_cd.hpp
   branches/proto/v4/libs/spirit/example/qi/mini_c_samples/
      - copied from r44377, /trunk/libs/spirit/example/qi/mini_c_samples/
   branches/proto/v4/libs/spirit/example/qi/mini_c_samples/1.mini
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c_samples/1.mini
   branches/proto/v4/libs/spirit/example/qi/mini_c_samples/2.mini
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c_samples/2.mini
   branches/proto/v4/libs/spirit/example/qi/mini_c_samples/3.mini
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_c_samples/3.mini
   branches/proto/v4/libs/spirit/example/qi/mini_xml1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_xml1.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_xml2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_xml2.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_xml_karma.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_xml_karma.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/
      - copied from r44377, /trunk/libs/spirit/example/qi/mini_xml_samples/
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/1.xml
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_xml_samples/1.xml
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/2.xml
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_xml_samples/2.xml
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/3.xml
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/mini_xml_samples/3.xml
   branches/proto/v4/libs/spirit/example/qi/num_list.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/num_list.cpp
   branches/proto/v4/libs/spirit/example/qi/num_list2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/num_list2.cpp
   branches/proto/v4/libs/spirit/example/qi/num_list3.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/num_list3.cpp
   branches/proto/v4/libs/spirit/example/qi/roman.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/roman.cpp
   branches/proto/v4/libs/spirit/example/qi/sum.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/example/qi/sum.cpp
   branches/proto/v4/libs/spirit/index.html
      - copied unchanged from r44377, /trunk/libs/spirit/index.html
   branches/proto/v4/libs/spirit/phoenix/
      - copied from r44377, /trunk/libs/spirit/phoenix/
   branches/proto/v4/libs/spirit/phoenix/doc/
      - copied from r44377, /trunk/libs/spirit/phoenix/doc/
   branches/proto/v4/libs/spirit/phoenix/doc/Jamfile.v2
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/Jamfile.v2
   branches/proto/v4/libs/spirit/phoenix/doc/html/
      - copied from r44377, /trunk/libs/spirit/phoenix/doc/html/
   branches/proto/v4/libs/spirit/phoenix/doc/html/boostbook.css
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/boostbook.css
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/
      - copied from r44377, /trunk/libs/spirit/phoenix/doc/html/images/
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/add2.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/add2.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/add2_call.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/add2_call.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/adder.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/adder.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/alert.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/alert.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/banner.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/banner.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/fbox.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/fbox.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/funnel_in.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/funnel_in.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/funnel_out.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/funnel_out.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/home.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/home.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/lambda_cpp.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/lambda_cpp.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/next.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/next.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/note.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/note.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/organization.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/organization.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/prev.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/prev.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/smiley.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/smiley.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/tip.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/tip.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/images/up.png
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/images/up.png
   branches/proto/v4/libs/spirit/phoenix/doc/html/index.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/index.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/
      - copied from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/acknowledgement.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/acknowledgement.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/actors.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/actors.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/algorithm.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/algorithm.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/basics.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/basics.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/composite.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/composite.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/inside_phoenix.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/inside_phoenix.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/intrinsic.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/intrinsic.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/introduction.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/introduction.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/organization.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/organization.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/primitives.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/primitives.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/references.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/references.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/starter_kit.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/starter_kit.html
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/wrap_up.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/html/phoenix/wrap_up.html
   branches/proto/v4/libs/spirit/phoenix/doc/users_manual.qbk
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/doc/users_manual.qbk
   branches/proto/v4/libs/spirit/phoenix/example/
      - copied from r44377, /trunk/libs/spirit/phoenix/example/
   branches/proto/v4/libs/spirit/phoenix/example/Jamfile.v2
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/Jamfile.v2
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/
      - copied from r44377, /trunk/libs/spirit/phoenix/example/users_manual/
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/algorithm.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/algorithm.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/all_odds.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/all_odds.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/arguments.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/arguments.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/callback.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/callback.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/factorial.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/factorial.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/find_if.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/find_if.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/function.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/function.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/if.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/if.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/lambda.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/lambda.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/references.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/references.cpp
   branches/proto/v4/libs/spirit/phoenix/example/users_manual/values.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/example/users_manual/values.cpp
   branches/proto/v4/libs/spirit/phoenix/index.html
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/index.html
   branches/proto/v4/libs/spirit/phoenix/test/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/
   branches/proto/v4/libs/spirit/phoenix/test/Jamfile.v2
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/Jamfile.v2
   branches/proto/v4/libs/spirit/phoenix/test/algorithm/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/algorithm/
   branches/proto/v4/libs/spirit/phoenix/test/algorithm/iteration.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/algorithm/iteration.cpp
   branches/proto/v4/libs/spirit/phoenix/test/algorithm/querying.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/algorithm/querying.cpp
   branches/proto/v4/libs/spirit/phoenix/test/algorithm/querying2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/algorithm/querying2.cpp
   branches/proto/v4/libs/spirit/phoenix/test/algorithm/transformation1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/algorithm/transformation1.cpp
   branches/proto/v4/libs/spirit/phoenix/test/algorithm/transformation2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/algorithm/transformation2.cpp
   branches/proto/v4/libs/spirit/phoenix/test/algorithm/transformation3.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/algorithm/transformation3.cpp
   branches/proto/v4/libs/spirit/phoenix/test/algorithm/transformation4.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/algorithm/transformation4.cpp
   branches/proto/v4/libs/spirit/phoenix/test/bind/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/bind/
   branches/proto/v4/libs/spirit/phoenix/test/bind/bind_function_object_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/bind/bind_function_object_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/bind/bind_function_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/bind/bind_function_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/bind/bind_member_function_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/bind/bind_member_function_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/bind/bind_member_variable_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/bind/bind_member_variable_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/container/
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests.hpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests1a.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests1a.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests1b.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests1b.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests2a.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests2a.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests2b.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests2b.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3a.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests3a.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3b.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests3b.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests4a.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests4a.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests4b.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests4b.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests5a.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests5a.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests5b.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests5b.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests6a.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests6a.cpp
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests6b.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/container/container_tests6b.cpp
   branches/proto/v4/libs/spirit/phoenix/test/core/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/core/
   branches/proto/v4/libs/spirit/phoenix/test/core/compose_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/core/compose_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/core/primitives_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/core/primitives_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/detail/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/detail/
   branches/proto/v4/libs/spirit/phoenix/test/detail/type_deduction_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/detail/type_deduction_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/function/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/function/
   branches/proto/v4/libs/spirit/phoenix/test/function/function_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/function/function_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/object/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/object/
   branches/proto/v4/libs/spirit/phoenix/test/object/cast_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/object/cast_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/object/new_delete_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/object/new_delete_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/operator/
   branches/proto/v4/libs/spirit/phoenix/test/operator/arithmetic_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/arithmetic_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/bitwise_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/bitwise_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/comparison_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/comparison_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/if_else_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/if_else_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/io_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/io_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/logical_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/logical_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/member.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/member.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/misc_binary_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/misc_binary_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/self_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/self_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/operator/unary_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/operator/unary_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/scope/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/scope/
   branches/proto/v4/libs/spirit/phoenix/test/scope/bug_000008.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/scope/bug_000008.cpp
   branches/proto/v4/libs/spirit/phoenix/test/scope/dynamic_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/scope/dynamic_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/scope/lambda_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/scope/lambda_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/scope/let_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/scope/let_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/statement/
      - copied from r44377, /trunk/libs/spirit/phoenix/test/statement/
   branches/proto/v4/libs/spirit/phoenix/test/statement/exceptions.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/statement/exceptions.cpp
   branches/proto/v4/libs/spirit/phoenix/test/statement/if_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/statement/if_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/statement/loops_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/statement/loops_tests.cpp
   branches/proto/v4/libs/spirit/phoenix/test/statement/switch_tests.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/phoenix/test/statement/switch_tests.cpp
   branches/proto/v4/libs/spirit/test/
      - copied from r44377, /trunk/libs/spirit/test/
   branches/proto/v4/libs/spirit/test/Jamfile
      - copied unchanged from r44377, /trunk/libs/spirit/test/Jamfile
   branches/proto/v4/libs/spirit/test/karma/
      - copied from r44377, /trunk/libs/spirit/test/karma/
   branches/proto/v4/libs/spirit/test/karma/alternative.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/alternative.cpp
   branches/proto/v4/libs/spirit/test/karma/binary.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/binary.cpp
   branches/proto/v4/libs/spirit/test/karma/case_handling.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/case_handling.cpp
   branches/proto/v4/libs/spirit/test/karma/center_alignment.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/center_alignment.cpp
   branches/proto/v4/libs/spirit/test/karma/char.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/char.cpp
   branches/proto/v4/libs/spirit/test/karma/delimiter.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/delimiter.cpp
   branches/proto/v4/libs/spirit/test/karma/eps.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/eps.cpp
   branches/proto/v4/libs/spirit/test/karma/format_manip.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/format_manip.cpp
   branches/proto/v4/libs/spirit/test/karma/functor.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/functor.cpp
   branches/proto/v4/libs/spirit/test/karma/grammar.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/grammar.cpp
   branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/grammar_fail.cpp
   branches/proto/v4/libs/spirit/test/karma/int_numerics.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/int_numerics.cpp
   branches/proto/v4/libs/spirit/test/karma/kleene.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/kleene.cpp
   branches/proto/v4/libs/spirit/test/karma/lazy.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/lazy.cpp
   branches/proto/v4/libs/spirit/test/karma/left_alignment.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/left_alignment.cpp
   branches/proto/v4/libs/spirit/test/karma/list.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/list.cpp
   branches/proto/v4/libs/spirit/test/karma/lit.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/lit.cpp
   branches/proto/v4/libs/spirit/test/karma/none.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/none.cpp
   branches/proto/v4/libs/spirit/test/karma/optional.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/optional.cpp
   branches/proto/v4/libs/spirit/test/karma/pattern.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/pattern.cpp
   branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/real_numerics.cpp
   branches/proto/v4/libs/spirit/test/karma/right_alignment.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/right_alignment.cpp
   branches/proto/v4/libs/spirit/test/karma/rule_fail.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/rule_fail.cpp
   branches/proto/v4/libs/spirit/test/karma/sequence.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/sequence.cpp
   branches/proto/v4/libs/spirit/test/karma/test.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/karma/test.hpp
   branches/proto/v4/libs/spirit/test/lex/
      - copied from r44377, /trunk/libs/spirit/test/lex/
   branches/proto/v4/libs/spirit/test/lex/lexertl1.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/lex/lexertl1.cpp
   branches/proto/v4/libs/spirit/test/lex/lexertl2.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/lex/lexertl2.cpp
   branches/proto/v4/libs/spirit/test/lex/lexertl3.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/lex/lexertl3.cpp
   branches/proto/v4/libs/spirit/test/lex/lexertl4.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/lex/lexertl4.cpp
   branches/proto/v4/libs/spirit/test/lex/lexertl5.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/lex/lexertl5.cpp
   branches/proto/v4/libs/spirit/test/lex/state_switcher_test.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/lex/state_switcher_test.cpp
   branches/proto/v4/libs/spirit/test/lex/test.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/lex/test.hpp
   branches/proto/v4/libs/spirit/test/lex/test_parser.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/lex/test_parser.hpp
   branches/proto/v4/libs/spirit/test/qi/
      - copied from r44377, /trunk/libs/spirit/test/qi/
   branches/proto/v4/libs/spirit/test/qi/alternative.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/alternative.cpp
   branches/proto/v4/libs/spirit/test/qi/and_predicate.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/and_predicate.cpp
   branches/proto/v4/libs/spirit/test/qi/binary.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/binary.cpp
   branches/proto/v4/libs/spirit/test/qi/char.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/char.cpp
   branches/proto/v4/libs/spirit/test/qi/char_class.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/char_class.cpp
   branches/proto/v4/libs/spirit/test/qi/debug.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/debug.cpp
   branches/proto/v4/libs/spirit/test/qi/difference.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/difference.cpp
   branches/proto/v4/libs/spirit/test/qi/eps.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/eps.cpp
   branches/proto/v4/libs/spirit/test/qi/expect.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/expect.cpp
   branches/proto/v4/libs/spirit/test/qi/functor.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/functor.cpp
   branches/proto/v4/libs/spirit/test/qi/grammar.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/grammar.cpp
   branches/proto/v4/libs/spirit/test/qi/grammar_fail.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/grammar_fail.cpp
   branches/proto/v4/libs/spirit/test/qi/int.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/int.cpp
   branches/proto/v4/libs/spirit/test/qi/kleene.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/kleene.cpp
   branches/proto/v4/libs/spirit/test/qi/lazy.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/lazy.cpp
   branches/proto/v4/libs/spirit/test/qi/lexeme.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/lexeme.cpp
   branches/proto/v4/libs/spirit/test/qi/list.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/list.cpp
   branches/proto/v4/libs/spirit/test/qi/lit.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/lit.cpp
   branches/proto/v4/libs/spirit/test/qi/match_manip.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/match_manip.cpp
   branches/proto/v4/libs/spirit/test/qi/no_case.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/no_case.cpp
   branches/proto/v4/libs/spirit/test/qi/none.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/none.cpp
   branches/proto/v4/libs/spirit/test/qi/not_predicate.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/not_predicate.cpp
   branches/proto/v4/libs/spirit/test/qi/optional.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/optional.cpp
   branches/proto/v4/libs/spirit/test/qi/permutation.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/permutation.cpp
   branches/proto/v4/libs/spirit/test/qi/plus.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/plus.cpp
   branches/proto/v4/libs/spirit/test/qi/range_run.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/range_run.cpp
   branches/proto/v4/libs/spirit/test/qi/raw.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/raw.cpp
   branches/proto/v4/libs/spirit/test/qi/real.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/real.cpp
   branches/proto/v4/libs/spirit/test/qi/rule.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/rule.cpp
   branches/proto/v4/libs/spirit/test/qi/rule_fail.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/rule_fail.cpp
   branches/proto/v4/libs/spirit/test/qi/sequence.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/sequence.cpp
   branches/proto/v4/libs/spirit/test/qi/sequential_or.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/sequential_or.cpp
   branches/proto/v4/libs/spirit/test/qi/symbols.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/symbols.cpp
   branches/proto/v4/libs/spirit/test/qi/test.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/test.hpp
   branches/proto/v4/libs/spirit/test/qi/tst.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/tst.cpp
   branches/proto/v4/libs/spirit/test/qi/uint.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/qi/uint.cpp
   branches/proto/v4/libs/spirit/test/support/
      - copied from r44377, /trunk/libs/spirit/test/support/
   branches/proto/v4/libs/spirit/test/support/detail/
      - copied from r44377, /trunk/libs/spirit/test/support/detail/
   branches/proto/v4/libs/spirit/test/support/detail/sstream.hpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/support/detail/sstream.hpp
   branches/proto/v4/libs/spirit/test/support/hold_any.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/support/hold_any.cpp
   branches/proto/v4/libs/spirit/test/support/multi_pass.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/support/multi_pass.cpp
   branches/proto/v4/libs/spirit/test/support/multi_pass_compile.cpp
      - copied unchanged from r44377, /trunk/libs/spirit/test/support/multi_pass_compile.cpp
   branches/proto/v4/libs/statechart/example/PingPong/Player.cpp
      - copied unchanged from r44377, /trunk/libs/statechart/example/PingPong/Player.cpp
   branches/proto/v4/libs/statechart/example/PingPong/Player.hpp
      - copied unchanged from r44377, /trunk/libs/statechart/example/PingPong/Player.hpp
   branches/proto/v4/libs/statechart/example/PingPong/Waiting.hpp
      - copied unchanged from r44377, /trunk/libs/statechart/example/PingPong/Waiting.hpp
   branches/proto/v4/libs/thread/test/test_shared_mutex_timed_locks.cpp
      - copied unchanged from r44377, /trunk/libs/thread/test/test_shared_mutex_timed_locks.cpp
Removed:
   branches/proto/v4/boost/spirit/core/composite/impl/
   branches/proto/v4/boost/spirit/core/impl/
   branches/proto/v4/boost/spirit/core/non_terminal/impl/
   branches/proto/v4/boost/spirit/core/primitives/impl/
   branches/proto/v4/boost/spirit/core/scanner/impl/
   branches/proto/v4/boost/spirit/debug/impl/
   branches/proto/v4/boost/spirit/dynamic/impl/
   branches/proto/v4/boost/spirit/error_handling/impl/
   branches/proto/v4/boost/spirit/iterator/impl/
   branches/proto/v4/boost/spirit/meta/impl/
   branches/proto/v4/boost/spirit/symbols/impl/
   branches/proto/v4/boost/spirit/tree/impl/
   branches/proto/v4/boost/spirit/utility/impl/
   branches/proto/v4/libs/array/array0.cpp
   branches/proto/v4/libs/array/array1.cpp
   branches/proto/v4/libs/array/array2.cpp
   branches/proto/v4/libs/array/array3.cpp
   branches/proto/v4/libs/array/array4.cpp
   branches/proto/v4/libs/array/array5.cpp
   branches/proto/v4/libs/array/print.hpp
   branches/proto/v4/libs/crc/crc_test.cpp
   branches/proto/v4/libs/exception/doc/adding_data_at_throw.html
   branches/proto/v4/libs/exception/doc/adding_data_later.html
   branches/proto/v4/libs/exception/doc/cloning_and_rethrowing.html
   branches/proto/v4/libs/exception/doc/grouping_data.html
   branches/proto/v4/libs/exception/doc/using_enable_cloning.html
   branches/proto/v4/libs/spirit/change_log.html
Properties modified:
   branches/proto/v4/ (props changed)
   branches/proto/v4/libs/statechart/example/PingPong/PingPong.vcproj (contents, props changed)
Text files modified:
   branches/proto/v4/boost/archive/detail/basic_serializer.hpp | 8
   branches/proto/v4/boost/archive/detail/basic_serializer_map.hpp | 2
   branches/proto/v4/boost/archive/impl/archive_pointer_oserializer.ipp | 1
   branches/proto/v4/boost/config/platform/solaris.hpp | 7
   branches/proto/v4/boost/config/suffix.hpp | 2
   branches/proto/v4/boost/detail/shared_count.hpp | 19
   branches/proto/v4/boost/detail/sp_counted_base.hpp | 32
   branches/proto/v4/boost/detail/spinlock.hpp | 4
   branches/proto/v4/boost/detail/spinlock_nt.hpp | 28
   branches/proto/v4/boost/detail/spinlock_pool.hpp | 4
   branches/proto/v4/boost/enable_shared_from_this.hpp | 26
   branches/proto/v4/boost/exception/cloning.hpp | 84
   branches/proto/v4/boost/exception/detail/cloning_base.hpp | 26
   branches/proto/v4/boost/exception/detail/counted_base.hpp | 48
   branches/proto/v4/boost/exception/enable_error_info.hpp | 110
   branches/proto/v4/boost/exception/enable_exception_cloning.hpp | 260 +-
   branches/proto/v4/boost/exception/error_info.hpp | 8
   branches/proto/v4/boost/exception/exception.hpp | 148
   branches/proto/v4/boost/exception/info.hpp | 422 ++--
   branches/proto/v4/boost/exception/info_tuple.hpp | 94
   branches/proto/v4/boost/exception/to_string.hpp | 56
   branches/proto/v4/boost/exception/to_string_stub.hpp | 211 -
   branches/proto/v4/boost/math/distributions/fwd.hpp | 12
   branches/proto/v4/boost/math/special_functions/detail/bessel_ik.hpp | 1
   branches/proto/v4/boost/math/tools/polynomial.hpp | 2
   branches/proto/v4/boost/mpi/datatype.hpp | 2
   branches/proto/v4/boost/mpi/detail/mpi_datatype_cache.hpp | 45
   branches/proto/v4/boost/operators.hpp | 36
   branches/proto/v4/boost/regex/concepts.hpp | 6
   branches/proto/v4/boost/shared_ptr.hpp | 90
   branches/proto/v4/boost/spirit.hpp | 88
   branches/proto/v4/boost/spirit/actor.hpp | 123 -
   branches/proto/v4/boost/spirit/actor/assign_actor.hpp | 103
   branches/proto/v4/boost/spirit/actor/assign_key_actor.hpp | 101
   branches/proto/v4/boost/spirit/actor/clear_actor.hpp | 67
   branches/proto/v4/boost/spirit/actor/decrement_actor.hpp | 65
   branches/proto/v4/boost/spirit/actor/erase_actor.hpp | 94
   branches/proto/v4/boost/spirit/actor/increment_actor.hpp | 65
   branches/proto/v4/boost/spirit/actor/insert_at_actor.hpp | 126 -
   branches/proto/v4/boost/spirit/actor/insert_key_actor.hpp | 102
   branches/proto/v4/boost/spirit/actor/push_back_actor.hpp | 106
   branches/proto/v4/boost/spirit/actor/push_front_actor.hpp | 96
   branches/proto/v4/boost/spirit/actor/ref_actor.hpp | 74
   branches/proto/v4/boost/spirit/actor/ref_const_ref_actor.hpp | 82
   branches/proto/v4/boost/spirit/actor/ref_const_ref_const_ref_a.hpp | 91
   branches/proto/v4/boost/spirit/actor/ref_const_ref_value_actor.hpp | 82
   branches/proto/v4/boost/spirit/actor/ref_value_actor.hpp | 74
   branches/proto/v4/boost/spirit/actor/swap_actor.hpp | 90
   branches/proto/v4/boost/spirit/actor/typeof.hpp | 77
   branches/proto/v4/boost/spirit/attribute.hpp | 51
   branches/proto/v4/boost/spirit/attribute/closure.hpp | 1086 ----------
   branches/proto/v4/boost/spirit/attribute/closure_context.hpp | 64
   branches/proto/v4/boost/spirit/attribute/closure_fwd.hpp | 72
   branches/proto/v4/boost/spirit/attribute/parametric.hpp | 149 -
   branches/proto/v4/boost/spirit/attribute/typeof.hpp | 71
   branches/proto/v4/boost/spirit/core.hpp | 87
   branches/proto/v4/boost/spirit/core/assert.hpp | 48
   branches/proto/v4/boost/spirit/core/composite/actions.hpp | 132 -
   branches/proto/v4/boost/spirit/core/composite/alternative.hpp | 143 -
   branches/proto/v4/boost/spirit/core/composite/composite.hpp | 147 -
   branches/proto/v4/boost/spirit/core/composite/difference.hpp | 146 -
   branches/proto/v4/boost/spirit/core/composite/directives.hpp | 612 -----
   branches/proto/v4/boost/spirit/core/composite/epsilon.hpp | 281 --
   branches/proto/v4/boost/spirit/core/composite/exclusive_or.hpp | 147 -
   branches/proto/v4/boost/spirit/core/composite/intersection.hpp | 147 -
   branches/proto/v4/boost/spirit/core/composite/kleene_star.hpp | 105
   branches/proto/v4/boost/spirit/core/composite/list.hpp | 78
   branches/proto/v4/boost/spirit/core/composite/no_actions.hpp | 176 -
   branches/proto/v4/boost/spirit/core/composite/operators.hpp | 37
   branches/proto/v4/boost/spirit/core/composite/optional.hpp | 99
   branches/proto/v4/boost/spirit/core/composite/positive.hpp | 108
   branches/proto/v4/boost/spirit/core/composite/sequence.hpp | 138 -
   branches/proto/v4/boost/spirit/core/composite/sequential_and.hpp | 81
   branches/proto/v4/boost/spirit/core/composite/sequential_or.hpp | 159 -
   branches/proto/v4/boost/spirit/core/config.hpp | 70
   branches/proto/v4/boost/spirit/core/match.hpp | 190 -
   branches/proto/v4/boost/spirit/core/nil.hpp | 28
   branches/proto/v4/boost/spirit/core/non_terminal/grammar.hpp | 88
   branches/proto/v4/boost/spirit/core/non_terminal/parser_context.hpp | 156 -
   branches/proto/v4/boost/spirit/core/non_terminal/parser_id.hpp | 125 -
   branches/proto/v4/boost/spirit/core/non_terminal/rule.hpp | 176 -
   branches/proto/v4/boost/spirit/core/non_terminal/subrule.hpp | 305 --
   branches/proto/v4/boost/spirit/core/non_terminal/subrule_fwd.hpp | 40
   branches/proto/v4/boost/spirit/core/parser.hpp | 228 --
   branches/proto/v4/boost/spirit/core/primitives/numerics.hpp | 294 --
   branches/proto/v4/boost/spirit/core/primitives/numerics_fwd.hpp | 92
   branches/proto/v4/boost/spirit/core/primitives/primitives.hpp | 655 ------
   branches/proto/v4/boost/spirit/core/safe_bool.hpp | 66
   branches/proto/v4/boost/spirit/core/scanner/scanner.hpp | 333 ---
   branches/proto/v4/boost/spirit/core/scanner/scanner_fwd.hpp | 57
   branches/proto/v4/boost/spirit/core/scanner/skipper.hpp | 201 -
   branches/proto/v4/boost/spirit/core/scanner/skipper_fwd.hpp | 37
   branches/proto/v4/boost/spirit/core/typeof.hpp | 340 ---
   branches/proto/v4/boost/spirit/debug.hpp | 155 -
   branches/proto/v4/boost/spirit/debug/debug_node.hpp | 324 ---
   branches/proto/v4/boost/spirit/debug/minimal.hpp | 87
   branches/proto/v4/boost/spirit/debug/parser_names.hpp | 263 --
   branches/proto/v4/boost/spirit/debug/typeof.hpp | 45
   branches/proto/v4/boost/spirit/dynamic.hpp | 40
   branches/proto/v4/boost/spirit/dynamic/for.hpp | 196 -
   branches/proto/v4/boost/spirit/dynamic/if.hpp | 238 --
   branches/proto/v4/boost/spirit/dynamic/lazy.hpp | 75
   branches/proto/v4/boost/spirit/dynamic/rule_alias.hpp | 81
   branches/proto/v4/boost/spirit/dynamic/select.hpp | 246 --
   branches/proto/v4/boost/spirit/dynamic/stored_rule.hpp | 130 -
   branches/proto/v4/boost/spirit/dynamic/stored_rule_fwd.hpp | 36
   branches/proto/v4/boost/spirit/dynamic/switch.hpp | 264 --
   branches/proto/v4/boost/spirit/dynamic/typeof.hpp | 94
   branches/proto/v4/boost/spirit/dynamic/while.hpp | 198 -
   branches/proto/v4/boost/spirit/error_handling.hpp | 33
   branches/proto/v4/boost/spirit/error_handling/exceptions.hpp | 370 ---
   branches/proto/v4/boost/spirit/error_handling/exceptions_fwd.hpp | 46
   branches/proto/v4/boost/spirit/error_handling/typeof.hpp | 43
   branches/proto/v4/boost/spirit/iterator.hpp | 37
   branches/proto/v4/boost/spirit/iterator/file_iterator.hpp | 234 --
   branches/proto/v4/boost/spirit/iterator/file_iterator_fwd.hpp | 43
   branches/proto/v4/boost/spirit/iterator/fixed_size_queue.hpp | 407 ---
   branches/proto/v4/boost/spirit/iterator/multi_pass.hpp | 1312 ------------
   branches/proto/v4/boost/spirit/iterator/multi_pass_fwd.hpp | 51
   branches/proto/v4/boost/spirit/iterator/position_iterator.hpp | 438 ----
   branches/proto/v4/boost/spirit/iterator/position_iterator_fwd.hpp | 65
   branches/proto/v4/boost/spirit/iterator/typeof.hpp | 100
   branches/proto/v4/boost/spirit/meta.hpp | 40
   branches/proto/v4/boost/spirit/meta/as_parser.hpp | 118 -
   branches/proto/v4/boost/spirit/meta/fundamental.hpp | 65
   branches/proto/v4/boost/spirit/meta/parser_traits.hpp | 329 ---
   branches/proto/v4/boost/spirit/meta/refactoring.hpp | 287 --
   branches/proto/v4/boost/spirit/meta/traverse.hpp | 231 --
   branches/proto/v4/boost/spirit/phoenix.hpp | 41
   branches/proto/v4/boost/spirit/phoenix/actor.hpp | 606 -----
   branches/proto/v4/boost/spirit/phoenix/binders.hpp | 4077 ---------------------------------------
   branches/proto/v4/boost/spirit/phoenix/casts.hpp | 1481 --------------
   branches/proto/v4/boost/spirit/phoenix/closures.hpp | 450 ----
   branches/proto/v4/boost/spirit/phoenix/composite.hpp | 1433 -------------
   branches/proto/v4/boost/spirit/phoenix/functions.hpp | 771 -------
   branches/proto/v4/boost/spirit/phoenix/new.hpp | 1326 ------------
   branches/proto/v4/boost/spirit/phoenix/operators.hpp | 2214 ---------------------
   branches/proto/v4/boost/spirit/phoenix/primitives.hpp | 258 --
   branches/proto/v4/boost/spirit/phoenix/special_ops.hpp | 352 ---
   branches/proto/v4/boost/spirit/phoenix/statements.hpp | 456 ----
   branches/proto/v4/boost/spirit/phoenix/tuple_helpers.hpp | 1086 ----------
   branches/proto/v4/boost/spirit/phoenix/tuples.hpp | 1340 ------------
   branches/proto/v4/boost/spirit/symbols.hpp | 33
   branches/proto/v4/boost/spirit/symbols/symbols.hpp | 234 --
   branches/proto/v4/boost/spirit/symbols/symbols_fwd.hpp | 43
   branches/proto/v4/boost/spirit/symbols/typeof.hpp | 35
   branches/proto/v4/boost/spirit/tree/ast.hpp | 389 ---
   branches/proto/v4/boost/spirit/tree/ast_fwd.hpp | 47
   branches/proto/v4/boost/spirit/tree/common.hpp | 1588 ---------------
   branches/proto/v4/boost/spirit/tree/common_fwd.hpp | 101
   branches/proto/v4/boost/spirit/tree/parse_tree.hpp | 302 --
   branches/proto/v4/boost/spirit/tree/parse_tree_fwd.hpp | 43
   branches/proto/v4/boost/spirit/tree/parse_tree_utils.hpp | 76
   branches/proto/v4/boost/spirit/tree/tree_to_xml.hpp | 124 -
   branches/proto/v4/boost/spirit/tree/typeof.hpp | 90
   branches/proto/v4/boost/spirit/utility.hpp | 54
   branches/proto/v4/boost/spirit/utility/chset.hpp | 188 -
   branches/proto/v4/boost/spirit/utility/chset_operators.hpp | 407 ---
   branches/proto/v4/boost/spirit/utility/confix.hpp | 401 ---
   branches/proto/v4/boost/spirit/utility/confix_fwd.hpp | 44
   branches/proto/v4/boost/spirit/utility/distinct.hpp | 240 --
   branches/proto/v4/boost/spirit/utility/distinct_fwd.hpp | 41
   branches/proto/v4/boost/spirit/utility/escape_char.hpp | 189 -
   branches/proto/v4/boost/spirit/utility/escape_char_fwd.hpp | 34
   branches/proto/v4/boost/spirit/utility/flush_multi_pass.hpp | 86
   branches/proto/v4/boost/spirit/utility/functor_parser.hpp | 76
   branches/proto/v4/boost/spirit/utility/grammar_def.hpp | 312 --
   branches/proto/v4/boost/spirit/utility/grammar_def_fwd.hpp | 53
   branches/proto/v4/boost/spirit/utility/lists.hpp | 345 ---
   branches/proto/v4/boost/spirit/utility/lists_fwd.hpp | 36
   branches/proto/v4/boost/spirit/utility/loops.hpp | 326 ---
   branches/proto/v4/boost/spirit/utility/regex.hpp | 121 -
   branches/proto/v4/boost/spirit/utility/rule_parser.hpp | 1139 ----------
   branches/proto/v4/boost/spirit/utility/scoped_lock.hpp | 123 -
   branches/proto/v4/boost/spirit/utility/typeof.hpp | 153 -
   branches/proto/v4/boost/spirit/version.hpp | 42
   branches/proto/v4/boost/thread.hpp | 8
   branches/proto/v4/boost/thread/locks.hpp | 13
   branches/proto/v4/boost/thread/pthread/condition_variable_fwd.hpp | 6
   branches/proto/v4/boost/thread/pthread/mutex.hpp | 2
   branches/proto/v4/boost/thread/pthread/shared_mutex.hpp | 18
   branches/proto/v4/boost/thread/pthread/thread.hpp | 3
   branches/proto/v4/boost/thread/win32/condition_variable.hpp | 94
   branches/proto/v4/boost/thread/win32/shared_mutex.hpp | 12
   branches/proto/v4/boost/type_traits/type_with_alignment.hpp | 3
   branches/proto/v4/boost/weak_ptr.hpp | 26
   branches/proto/v4/libs/config/test/Jamfile.v2 | 10
   branches/proto/v4/libs/config/test/boost_has_pthreads.ipp | 27
   branches/proto/v4/libs/config/test/config_info.cpp | 3
   branches/proto/v4/libs/config/test/config_test.cpp | 2
   branches/proto/v4/libs/config/test/has_tr1_regex_fail.cpp | 15
   branches/proto/v4/libs/config/test/has_tr1_regex_pass.cpp | 17
   branches/proto/v4/libs/config/tools/generate.cpp | 6
   branches/proto/v4/libs/crc/crc.html | 4
   branches/proto/v4/libs/exception/doc/reno.css | 7
   branches/proto/v4/libs/exception/example/cloning_1.cpp | 4
   branches/proto/v4/libs/exception/example/cloning_2.cpp | 20
   branches/proto/v4/libs/exception/example/enable_error_info.cpp | 16
   branches/proto/v4/libs/exception/example/error_info_1.cpp | 22
   branches/proto/v4/libs/exception/example/error_info_2.cpp | 20
   branches/proto/v4/libs/exception/example/example_io.cpp | 278 +-
   branches/proto/v4/libs/exception/example/logging.cpp | 14
   branches/proto/v4/libs/exception/test/Jamfile.v2 | 9
   branches/proto/v4/libs/exception/test/boost_error_info_test.cpp | 48
   branches/proto/v4/libs/exception/test/cloning_test.cpp | 58
   branches/proto/v4/libs/exception/test/enable_error_info_test.cpp | 70
   branches/proto/v4/libs/exception/test/errno_test.cpp | 34
   branches/proto/v4/libs/exception/test/error_info_test.cpp | 322 +-
   branches/proto/v4/libs/exception/test/exception_fail.cpp | 6
   branches/proto/v4/libs/exception/test/exception_test.cpp | 38
   branches/proto/v4/libs/exception/test/helper1.cpp | 23
   branches/proto/v4/libs/exception/test/helper1.hpp | 14
   branches/proto/v4/libs/exception/test/helper2.cpp | 86
   branches/proto/v4/libs/exception/test/helper2.hpp | 66
   branches/proto/v4/libs/exception/test/throw_exception_test.cpp | 100
   branches/proto/v4/libs/exception/test/to_string_test.cpp | 117
   branches/proto/v4/libs/exception/test/unknown_exception_test.cpp | 124
   branches/proto/v4/libs/exception/test/what_test.cpp | 24
   branches/proto/v4/libs/function_types/doc/function_types.qbk | 2
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/about_tag_types.html | 23
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/acknowledgements.html | 21
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/introduction.html | 36
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/rationale.html | 91
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference.html | 24
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/classification.html | 99
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html | 58
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/macros.html | 95
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/synthesis.html | 66
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/tag_types.html | 98
   branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/use_cases.html | 26
   branches/proto/v4/libs/function_types/doc/html/index.html | 16
   branches/proto/v4/libs/libraries.htm | 6
   branches/proto/v4/libs/math/test/compile_test/dist_nc_beta_incl_test.cpp | 30
   branches/proto/v4/libs/math/test/compile_test/sf_modf_incl_test.cpp | 2
   branches/proto/v4/libs/math/test/expinti_data.ipp | 5
   branches/proto/v4/libs/math/test/pow_test.cpp | 2
   branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp | 2
   branches/proto/v4/libs/math/test/test_nc_f.cpp | 4
   branches/proto/v4/libs/math/test/test_round.cpp | 2
   branches/proto/v4/libs/math/test/test_zeta.cpp | 2
   branches/proto/v4/libs/mpi/src/mpi_datatype_cache.cpp | 49
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/acknowledgements.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/examples.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/faq.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/futher.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/headers.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/history.html | 12
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/locale.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/performance.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/redist.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/standards.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/thread_safety.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/captures.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/algorithm.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/compiler.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/linkage.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/locale.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/tuning.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/format.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/format/perl_format.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/format/sed_format.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/install.html | 18
   branches/proto/v4/libs/regex/doc/html/boost_regex/introduction_and_overview.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/partial_matches.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/bad_expression.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/basic_regex.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/charT_concept.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/iterator_concepts.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/traits_concept.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/old_regex.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_format.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_grep.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_split.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/error_type.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_flag_type.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_results.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/intro.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/posix.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_iterator.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_match.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_replace.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_search.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_token_iterator.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_traits.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/sub_match.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_extended.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_syntax.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/digraphs.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/named_unicode.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/leftmost_longest_rule.html | 2
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html | 36
   branches/proto/v4/libs/regex/doc/html/boost_regex/unicode.html | 6
   branches/proto/v4/libs/regex/doc/html/index.html | 6
   branches/proto/v4/libs/regex/doc/syntax_perl.qbk | 2
   branches/proto/v4/libs/smart_ptr/test/Jamfile.v2 | 1
   branches/proto/v4/libs/smart_ptr/test/esft_constructor_test.cpp | 2
   branches/proto/v4/libs/statechart/doc/faq.html | 2
   branches/proto/v4/libs/statechart/doc/future_and_history.html | 2
   branches/proto/v4/libs/statechart/example/Jamfile.v2 | 6
   branches/proto/v4/libs/statechart/example/PingPong/PingPong.cpp | 158 -
   branches/proto/v4/libs/statechart/example/PingPong/PingPong.vcproj | 586 ++--
   branches/proto/v4/libs/statechart/test/Jamfile.v2 | 2
   branches/proto/v4/libs/thread/src/pthread/thread.cpp | 15
   branches/proto/v4/libs/thread/test/Jamfile.v2 | 1
   branches/proto/v4/libs/thread/test/shared_mutex_locking_thread.hpp | 62
   branches/proto/v4/libs/thread/test/test_condition_notify_all.cpp | 42
   branches/proto/v4/libs/thread/test/test_condition_notify_one.cpp | 42
   branches/proto/v4/libs/thread/test/test_shared_mutex_part_2.cpp | 96
   branches/proto/v4/libs/type_traits/doc/function_traits.qbk | 12
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/background.html | 22
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/category/transform.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/intrinsics.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_const.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_cv.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_pointer.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_reference.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_volatile.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/decay.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/floating_point_promotion.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html | 18
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/integral_promotion.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/make_signed.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/make_unsigned.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/promote.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_all_extents.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_const.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_cv.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_extent.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_pointer.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_reference.html | 2
   branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_volatile.html | 2
   branches/proto/v4/libs/type_traits/doc/html/index.html | 2
   branches/proto/v4/libs/utility/operators_test.cpp | 404 ++-
   branches/proto/v4/status/Jamfile.v2 | 42
   branches/proto/v4/tools/build/v2/test/BoostBuild.py | 7
   branches/proto/v4/tools/build/v2/tools/builtin.jam | 8
   branches/proto/v4/tools/build/v2/tools/common.jam | 38
   branches/proto/v4/tools/build/v2/tools/darwin.jam | 72
   branches/proto/v4/tools/build/v2/tools/gcc.jam | 4
   branches/proto/v4/tools/jam/src/lists.c | 114
   branches/proto/v4/tools/quickbook/detail/actions.cpp | 73
   371 files changed, 5723 insertions(+), 40412 deletions(-)

Modified: branches/proto/v4/boost/archive/detail/basic_serializer.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/basic_serializer.hpp (original)
+++ branches/proto/v4/boost/archive/detail/basic_serializer.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -41,11 +41,13 @@
     const boost::serialization::extended_type_info & get_eti() const {
         return m_eti;
     }
- bool operator<(const basic_serializer & rhs) const {
- return & m_eti < & rhs.get_eti();
- }
 };
 
+inline bool
+operator<(const basic_serializer & lhs, const basic_serializer & rhs) {
+ return & lhs.get_eti() < & rhs.get_eti();
+}
+
 class basic_serializer_arg : public basic_serializer {
 public:
     basic_serializer_arg(const serialization::extended_type_info & eti) :

Modified: branches/proto/v4/boost/archive/detail/basic_serializer_map.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/basic_serializer_map.hpp (original)
+++ branches/proto/v4/boost/archive/detail/basic_serializer_map.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -34,6 +34,8 @@
 
 class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_serializer;
 
+bool operator<(const basic_serializer & lhs, const basic_serializer & rhs);
+
 struct BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) type_info_pointer_compare
 {
     bool operator()(

Modified: branches/proto/v4/boost/archive/impl/archive_pointer_oserializer.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/archive_pointer_oserializer.ipp (original)
+++ branches/proto/v4/boost/archive/impl/archive_pointer_oserializer.ipp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -15,6 +15,7 @@
 
 #include <boost/archive/detail/archive_pointer_oserializer.hpp>
 #include <boost/archive/detail/basic_serializer_map.hpp>
+#include <boost/serialization/singleton.hpp>
 
 namespace boost {
 namespace archive {

Modified: branches/proto/v4/boost/config/platform/solaris.hpp
==============================================================================
--- branches/proto/v4/boost/config/platform/solaris.hpp (original)
+++ branches/proto/v4/boost/config/platform/solaris.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -16,6 +16,13 @@
 #define BOOST_HAS_UNISTD_H
 #include <boost/config/posix_features.hpp>
 
+//
+// pthreads don't actually work with gcc unless _PTHREADS is defined:
+//
+#if defined(__GNUC__) && defined(_POSIX_THREADS) && !defined(_PTHREADS)
+# undef BOOST_HAS_PTHREADS
+#endif
+
 
 
 

Modified: branches/proto/v4/boost/config/suffix.hpp
==============================================================================
--- branches/proto/v4/boost/config/suffix.hpp (original)
+++ branches/proto/v4/boost/config/suffix.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -232,6 +232,8 @@
 #ifndef BOOST_HAS_THREADS
 # undef BOOST_HAS_PTHREADS
 # undef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# undef BOOST_HAS_PTHREAD_YIELD
+# undef BOOST_HAS_PTHREAD_DELAY_NP
 # undef BOOST_HAS_WINTHREADS
 # undef BOOST_HAS_BETHREADS
 # undef BOOST_HAS_MPTASKS

Modified: branches/proto/v4/boost/detail/shared_count.hpp
==============================================================================
--- branches/proto/v4/boost/detail/shared_count.hpp (original)
+++ branches/proto/v4/boost/detail/shared_count.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -46,6 +46,8 @@
 
 #endif
 
+struct sp_nothrow_tag {};
+
 class weak_count;
 
 class shared_count
@@ -216,6 +218,7 @@
     }
 
     explicit shared_count(weak_count const & r); // throws bad_weak_ptr when r.use_count() == 0
+ shared_count( weak_count const & r, sp_nothrow_tag ); // constructs an empty *this when r.use_count() == 0
 
     shared_count & operator= (shared_count const & r) // nothrow
     {
@@ -248,6 +251,11 @@
         return use_count() == 1;
     }
 
+ bool empty() const // nothrow
+ {
+ return pi_ == 0;
+ }
+
     friend inline bool operator==(shared_count const & a, shared_count const & b)
     {
         return a.pi_ == b.pi_;
@@ -364,6 +372,17 @@
     }
 }
 
+inline shared_count::shared_count( weak_count const & r, sp_nothrow_tag ): pi_( r.pi_ )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+{
+ if( pi_ != 0 && !pi_->add_ref_lock() )
+ {
+ pi_ = 0;
+ }
+}
+
 } // namespace detail
 
 } // namespace boost

Modified: branches/proto/v4/boost/detail/sp_counted_base.hpp
==============================================================================
--- branches/proto/v4/boost/detail/sp_counted_base.hpp (original)
+++ branches/proto/v4/boost/detail/sp_counted_base.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -20,61 +20,49 @@
 #include <boost/config.hpp>
 
 #if defined( BOOST_SP_DISABLE_THREADS )
-
 # include <boost/detail/sp_counted_base_nt.hpp>
 
-#elif defined( BOOST_SP_USE_PTHREADS )
+#elif defined( BOOST_SP_USE_SPINLOCK )
+# include <boost/detail/sp_counted_base_spin.hpp>
 
+#elif defined( BOOST_SP_USE_PTHREADS )
 # include <boost/detail/sp_counted_base_pt.hpp>
 
-#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
+#elif defined( BOOST_DISABLE_THREADS ) && !defined( BOOST_SP_ENABLE_THREADS ) && !defined( BOOST_DISABLE_WIN32 )
+# include <boost/detail/sp_counted_base_nt.hpp>
 
+#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
 # include <boost/detail/sp_counted_base_gcc_x86.hpp>
 
-//~ #elif defined( __MWERKS__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
-
-//~ # include <boost/detail/sp_counted_base_cw_x86.hpp>
-
 #elif defined( __GNUC__ ) && defined( __ia64__ ) && !defined( __INTEL_COMPILER )
-
 # include <boost/detail/sp_counted_base_gcc_ia64.hpp>
 
 #elif defined(__HP_aCC) && defined(__ia64)
-
 # include <boost/detail/sp_counted_base_acc_ia64.hpp>
 
 #elif defined( __MWERKS__ ) && defined( __POWERPC__ )
-
 # include <boost/detail/sp_counted_base_cw_ppc.hpp>
 
 #elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) )
-
 # include <boost/detail/sp_counted_base_gcc_ppc.hpp>
 
-#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
+#elif defined(__GNUC__) && defined( __arm__ )
+# include <boost/detail/sp_counted_base_spin.hpp>
 
+#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
 # include <boost/detail/sp_counted_base_sync.hpp>
 
 #elif defined(__GNUC__) && ( defined( __sparcv8 ) || defined( __sparcv9 ) )
-
 # include <boost/detail/sp_counted_base_gcc_sparc.hpp>
 
 #elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ )
-
 # include <boost/detail/sp_counted_base_w32.hpp>
 
 #elif !defined( BOOST_HAS_THREADS )
-
 # include <boost/detail/sp_counted_base_nt.hpp>
 
-#elif defined( BOOST_HAS_PTHREADS )
-
-# include <boost/detail/sp_counted_base_pt.hpp>
-
 #else
-
-// Use #define BOOST_DISABLE_THREADS to avoid the error
-# error Unrecognized threading platform
+# include <boost/detail/sp_counted_base_spin.hpp>
 
 #endif
 

Modified: branches/proto/v4/boost/detail/spinlock.hpp
==============================================================================
--- branches/proto/v4/boost/detail/spinlock.hpp (original)
+++ branches/proto/v4/boost/detail/spinlock.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -30,7 +30,9 @@
 
 #include <boost/config.hpp>
 
-#if defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
+#if defined(__GNUC__) && defined( __arm__ )
+# include <boost/detail/spinlock_gcc_arm.hpp>
+#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
 # include <boost/detail/spinlock_sync.hpp>
 #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
 # include <boost/detail/spinlock_w32.hpp>

Modified: branches/proto/v4/boost/detail/spinlock_nt.hpp
==============================================================================
--- branches/proto/v4/boost/detail/spinlock_nt.hpp (original)
+++ branches/proto/v4/boost/detail/spinlock_nt.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -15,6 +15,8 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 
+#include <boost/assert.hpp>
+
 namespace boost
 {
 
@@ -25,17 +27,33 @@
 {
 public:
 
+ bool locked_;
+
+public:
+
     inline bool try_lock()
     {
- return true;
+ if( locked_ )
+ {
+ return false;
+ }
+ else
+ {
+ locked_ = true;
+ return true;
+ }
     }
 
     inline void lock()
     {
+ BOOST_ASSERT( !locked_ );
+ locked_ = true;
     }
 
     inline void unlock()
     {
+ BOOST_ASSERT( locked_ );
+ locked_ = false;
     }
 
 public:
@@ -44,17 +62,21 @@
     {
     private:
 
+ spinlock & sp_;
+
         scoped_lock( scoped_lock const & );
         scoped_lock & operator=( scoped_lock const & );
 
     public:
 
- explicit scoped_lock( spinlock & /*sp*/ )
+ explicit scoped_lock( spinlock & sp ): sp_( sp )
         {
+ sp.lock();
         }
 
         ~scoped_lock()
         {
+ sp_.unlock();
         }
     };
 };
@@ -62,6 +84,6 @@
 } // namespace detail
 } // namespace boost
 
-#define BOOST_DETAIL_SPINLOCK_INIT {}
+#define BOOST_DETAIL_SPINLOCK_INIT { false }
 
 #endif // #ifndef BOOST_DETAIL_SPINLOCK_NT_HPP_INCLUDED

Modified: branches/proto/v4/boost/detail/spinlock_pool.hpp
==============================================================================
--- branches/proto/v4/boost/detail/spinlock_pool.hpp (original)
+++ branches/proto/v4/boost/detail/spinlock_pool.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -37,7 +37,7 @@
 
 public:
 
- static spinlock & spinlock_for( void * pv )
+ static spinlock & spinlock_for( void const * pv )
     {
         size_t i = reinterpret_cast< size_t >( pv ) % 41;
         return pool_[ i ];
@@ -54,7 +54,7 @@
 
     public:
 
- explicit scoped_lock( void * pv ): sp_( spinlock_for( pv ) )
+ explicit scoped_lock( void const * pv ): sp_( spinlock_for( pv ) )
         {
             sp_.lock();
         }

Modified: branches/proto/v4/boost/enable_shared_from_this.hpp
==============================================================================
--- branches/proto/v4/boost/enable_shared_from_this.hpp (original)
+++ branches/proto/v4/boost/enable_shared_from_this.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -27,10 +27,10 @@
 // to use lazy initialization
     void init_internal_shared_once() const
     {
- if(owned() == false && _internal_shared_this == 0)
+ if( !owned() && _internal_shared_this.get() == 0 )
         {
- _internal_shared_this = shared_ptr<T>(dynamic_cast<T *>(const_cast<enable_shared_from_this*>(this)),
- detail::sp_deleter_wrapper(), detail::ignore_enable_shared_from_this_tag());
+ T * p = dynamic_cast<T *>(const_cast<enable_shared_from_this*>(this));
+ _internal_shared_this = shared_ptr<T>( p, detail::sp_deleter_wrapper() );
             BOOST_ASSERT(_internal_shared_this.get() == this);
             _internal_weak_this = _internal_shared_this;
         }
@@ -109,6 +109,26 @@
     }
 };
 
+template< class T, class Y > inline void sp_accept_owner( boost::shared_ptr<Y> * ptr, boost::enable_shared_from_this<T> const * pe )
+{
+ if( pe != 0 )
+ {
+ pe->_internal_accept_owner( *ptr );
+ }
+}
+
+template< class T, class Y > inline void sp_accept_owner( boost::shared_ptr<Y> * ptr, boost::enable_shared_from_this<T> const * pe, void * /*pd*/ )
+{
+ if( pe != 0 )
+ {
+ pe->_internal_accept_owner( *ptr );
+ }
+}
+
+template< class T, class Y > inline void sp_accept_owner( boost::shared_ptr<Y> * /*ptr*/, boost::enable_shared_from_this<T> const * /*pe*/, boost::detail::sp_deleter_wrapper * /*pd*/ )
+{
+}
+
 } // namespace boost
 
 #endif // #ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED

Modified: branches/proto/v4/boost/exception/cloning.hpp
==============================================================================
--- branches/proto/v4/boost/exception/cloning.hpp (original)
+++ branches/proto/v4/boost/exception/cloning.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -13,47 +13,47 @@
 
 namespace
 boost
- {
- class
- unknown_exception:
- public exception,
- public std::exception
- {
- public:
-
- explicit
- unknown_exception()
- {
- }
-
- explicit
- unknown_exception( boost::exception const & x ):
- boost::exception(x)
- {
- }
- };
-
- typedef intrusive_ptr<exception_detail::clone_base const> exception_ptr;
-
- template <class T>
- exception_ptr
- clone_exception( T const & e )
- {
- if( boost::exception_detail::cloning_base const * cb = dynamic_cast<boost::exception_detail::cloning_base const *>(&e) )
- if( exception_detail::clone_base const * c = cb->clone() )
- return exception_ptr(c);
- if( boost::exception const * be = dynamic_cast<boost::exception const *>(&e) )
- return exception_ptr(exception_detail::make_clone(unknown_exception(*be)));
- else
- return exception_ptr(exception_detail::make_clone(unknown_exception()));
- }
-
- inline
- void
- rethrow_exception( exception_ptr const & p )
- {
- p->rethrow();
- }
- }
+ {
+ class
+ unknown_exception:
+ public exception,
+ public std::exception
+ {
+ public:
+
+ explicit
+ unknown_exception()
+ {
+ }
+
+ explicit
+ unknown_exception( boost::exception const & x ):
+ boost::exception(x)
+ {
+ }
+ };
+
+ typedef intrusive_ptr<exception_detail::clone_base const> exception_ptr;
+
+ template <class T>
+ exception_ptr
+ clone_exception( T const & e )
+ {
+ if( boost::exception_detail::cloning_base const * cb = dynamic_cast<boost::exception_detail::cloning_base const *>(&e) )
+ if( exception_detail::clone_base const * c = cb->clone() )
+ return exception_ptr(c);
+ if( boost::exception const * be = dynamic_cast<boost::exception const *>(&e) )
+ return exception_ptr(exception_detail::make_clone(unknown_exception(*be)));
+ else
+ return exception_ptr(exception_detail::make_clone(unknown_exception()));
+ }
+
+ inline
+ void
+ rethrow_exception( exception_ptr const & p )
+ {
+ p->rethrow();
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/detail/cloning_base.hpp
==============================================================================
--- branches/proto/v4/boost/exception/detail/cloning_base.hpp (original)
+++ branches/proto/v4/boost/exception/detail/cloning_base.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,20 +8,20 @@
 
 namespace
 boost
- {
- namespace
- exception_detail
- {
- class clone_base;
+ {
+ namespace
+ exception_detail
+ {
+ class clone_base;
 
- class
- cloning_base
- {
- public:
+ class
+ cloning_base
+ {
+ public:
 
- virtual clone_base const * clone() const = 0;
- };
- }
- }
+ virtual clone_base const * clone() const = 0;
+ };
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/detail/counted_base.hpp
==============================================================================
--- branches/proto/v4/boost/exception/detail/counted_base.hpp (original)
+++ branches/proto/v4/boost/exception/detail/counted_base.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,31 +8,31 @@
 
 namespace
 boost
- {
- namespace
- exception_detail
- {
- class
- counted_base
- {
- friend
- void
- intrusive_ptr_add_ref( counted_base const * c )
- {
- c->add_ref();
- }
+ {
+ namespace
+ exception_detail
+ {
+ class
+ counted_base
+ {
+ friend
+ void
+ intrusive_ptr_add_ref( counted_base const * c )
+ {
+ c->add_ref();
+ }
 
- friend
- void
- intrusive_ptr_release( counted_base const * c )
- {
- c->release();
- }
+ friend
+ void
+ intrusive_ptr_release( counted_base const * c )
+ {
+ c->release();
+ }
 
- virtual void add_ref() const=0;
- virtual void release() const=0;
- };
- }
- }
+ virtual void add_ref() const=0;
+ virtual void release() const=0;
+ };
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/enable_error_info.hpp
==============================================================================
--- branches/proto/v4/boost/exception/enable_error_info.hpp (original)
+++ branches/proto/v4/boost/exception/enable_error_info.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -10,60 +10,60 @@
 
 namespace
 boost
- {
- namespace
- exception_detail
- {
- template <class T>
- struct
- error_info_injector:
- public T,
- public exception
- {
- explicit
- error_info_injector( T const & x ):
- T(x)
- {
- }
- };
-
- struct large_size { char c[256]; };
- large_size dispatch( exception * );
-
- struct small_size { };
- small_size dispatch( void * );
-
- template <class,size_t>
- struct enable_error_info_helper;
-
- template <class T>
- struct
- enable_error_info_helper<T,sizeof(large_size)>
- {
- typedef T type;
- };
-
- template <class T>
- struct
- enable_error_info_helper<T,sizeof(small_size)>
- {
- typedef error_info_injector<T> type;
- };
-
- template <class T>
- struct
- enable_error_info_return_type
- {
- typedef typename enable_error_info_helper<T,sizeof(dispatch((T*)0))>::type type;
- };
- }
-
- template <class T>
- typename exception_detail::enable_error_info_return_type<T>::type
- enable_error_info( T const & x )
- {
- return typename exception_detail::enable_error_info_return_type<T>::type(x);
- }
- }
+ {
+ namespace
+ exception_detail
+ {
+ template <class T>
+ struct
+ error_info_injector:
+ public T,
+ public exception
+ {
+ explicit
+ error_info_injector( T const & x ):
+ T(x)
+ {
+ }
+ };
+
+ struct large_size { char c[256]; };
+ large_size dispatch( exception * );
+
+ struct small_size { };
+ small_size dispatch( void * );
+
+ template <class,size_t>
+ struct enable_error_info_helper;
+
+ template <class T>
+ struct
+ enable_error_info_helper<T,sizeof(large_size)>
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct
+ enable_error_info_helper<T,sizeof(small_size)>
+ {
+ typedef error_info_injector<T> type;
+ };
+
+ template <class T>
+ struct
+ enable_error_info_return_type
+ {
+ typedef typename enable_error_info_helper<T,sizeof(dispatch((T*)0))>::type type;
+ };
+ }
+
+ template <class T>
+ typename exception_detail::enable_error_info_return_type<T>::type
+ enable_error_info( T const & x )
+ {
+ return typename exception_detail::enable_error_info_return_type<T>::type(x);
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/enable_exception_cloning.hpp
==============================================================================
--- branches/proto/v4/boost/exception/enable_exception_cloning.hpp (original)
+++ branches/proto/v4/boost/exception/enable_exception_cloning.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -14,135 +14,135 @@
 
 namespace
 boost
- {
- namespace
- exception_detail
- {
- class
- clone_base:
- public counted_base
- {
- public:
-
- virtual void rethrow() const=0;
- };
-
- struct
- bad_alloc_impl:
- public clone_base,
- public std::bad_alloc
- {
- void
- add_ref() const
- {
- }
-
- void
- release() const
- {
- }
-
- void
- rethrow() const
- {
- throw *this;
- }
- };
-
- template <class T>
- clone_base * make_clone( T const & );
-
- template <class T>
- class
- clone_impl:
- public T,
- public cloning_base
- {
- public:
-
- explicit
- clone_impl( T const & x ):
- T(x)
- {
- }
-
- private:
-
- clone_base const *
- clone() const
- {
- return make_clone<T>(*this);
- }
- };
-
- template <class T>
- class
- exception_clone:
- public T,
- public clone_base
- {
- public:
-
- explicit
- exception_clone( T const & x ):
- T(x),
- count_(0)
- {
- }
-
- private:
-
- detail::atomic_count mutable count_;
-
- void
- add_ref() const
- {
- ++count_;
- }
-
- void
- release() const
- {
- if( !--count_ )
- delete this;
- }
-
- void
- rethrow() const
- {
- throw clone_impl<T>(*this);
- }
- };
-
- template <class T>
- clone_base *
- make_clone( T const & x )
- {
- try
- {
- return new exception_clone<T>(x);
- }
- catch(
- std::bad_alloc & )
- {
- static bad_alloc_impl bad_alloc;
- return &bad_alloc;
- }
- catch(
- ... )
- {
- BOOST_ASSERT(0);
- return 0;
- }
- }
- }
-
- template <class T>
- exception_detail::clone_impl<T>
- enable_exception_cloning( T const & x )
- {
- return exception_detail::clone_impl<T>(x);
- }
- }
+ {
+ namespace
+ exception_detail
+ {
+ class
+ clone_base:
+ public counted_base
+ {
+ public:
+
+ virtual void rethrow() const=0;
+ };
+
+ struct
+ bad_alloc_impl:
+ public clone_base,
+ public std::bad_alloc
+ {
+ void
+ add_ref() const
+ {
+ }
+
+ void
+ release() const
+ {
+ }
+
+ void
+ rethrow() const
+ {
+ throw *this;
+ }
+ };
+
+ template <class T>
+ clone_base * make_clone( T const & );
+
+ template <class T>
+ class
+ clone_impl:
+ public T,
+ public cloning_base
+ {
+ public:
+
+ explicit
+ clone_impl( T const & x ):
+ T(x)
+ {
+ }
+
+ private:
+
+ clone_base const *
+ clone() const
+ {
+ return make_clone<T>(*this);
+ }
+ };
+
+ template <class T>
+ class
+ exception_clone:
+ public T,
+ public clone_base
+ {
+ public:
+
+ explicit
+ exception_clone( T const & x ):
+ T(x),
+ count_(0)
+ {
+ }
+
+ private:
+
+ detail::atomic_count mutable count_;
+
+ void
+ add_ref() const
+ {
+ ++count_;
+ }
+
+ void
+ release() const
+ {
+ if( !--count_ )
+ delete this;
+ }
+
+ void
+ rethrow() const
+ {
+ throw clone_impl<T>(*this);
+ }
+ };
+
+ template <class T>
+ clone_base *
+ make_clone( T const & x )
+ {
+ try
+ {
+ return new exception_clone<T>(x);
+ }
+ catch(
+ std::bad_alloc & )
+ {
+ static bad_alloc_impl bad_alloc;
+ return &bad_alloc;
+ }
+ catch(
+ ... )
+ {
+ BOOST_ASSERT(0);
+ return 0;
+ }
+ }
+ }
+
+ template <class T>
+ exception_detail::clone_impl<T>
+ enable_exception_cloning( T const & x )
+ {
+ return exception_detail::clone_impl<T>(x);
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/error_info.hpp
==============================================================================
--- branches/proto/v4/boost/exception/error_info.hpp (original)
+++ branches/proto/v4/boost/exception/error_info.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,9 +8,9 @@
 
 namespace
 boost
- {
- template <class Tag,class T>
- class error_info;
- }
+ {
+ template <class Tag,class T>
+ class error_info;
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/exception.hpp
==============================================================================
--- branches/proto/v4/boost/exception/exception.hpp (original)
+++ branches/proto/v4/boost/exception/exception.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,79 +12,79 @@
 
 namespace
 boost
- {
- template <class T>
- class shared_ptr;
-
- namespace
- exception_detail
- {
- class error_info_base;
-
- struct
- error_info_container:
- public exception_detail::counted_base
- {
- virtual char const * what( std::type_info const & ) const = 0;
- virtual shared_ptr<error_info_base const> get( std::type_info const & ) const = 0;
- virtual void set( shared_ptr<error_info_base const> const & ) = 0;
- };
- }
-
- template <class Tag,class T>
- class error_info;
-
- template <class E,class Tag,class T>
- E const & operator<<( E const &, error_info<Tag,T> const & );
-
- template <class ErrorInfo,class E>
- shared_ptr<typename ErrorInfo::value_type const> get_error_info( E const & );
-
- class
- exception
- {
- public:
-
- virtual ~exception() throw()=0;
- virtual char const * what() const throw();
-
- private:
-
- shared_ptr<exception_detail::error_info_base const> get( std::type_info const & ) const;
- void set( shared_ptr<exception_detail::error_info_base const> const & ) const;
-
- template <class E,class Tag,class T>
- friend E const & operator<<( E const &, error_info<Tag,T> const & );
-
- template <class ErrorInfo,class E>
- friend shared_ptr<typename ErrorInfo::value_type const> get_error_info( E const & );
-
- intrusive_ptr<exception_detail::error_info_container> mutable data_;
- };
-
- inline
- exception::
- ~exception() throw()
- {
- }
-
- inline
- char const *
- exception::
- what() const throw()
- {
- if( data_ )
- try
- {
- char const * w = data_->what(typeid(*this));
- BOOST_ASSERT(0!=w);
- return w;
- }
- catch(...)
- {
- }
- return typeid(*this).name();
- }
- }
+ {
+ template <class T>
+ class shared_ptr;
+
+ namespace
+ exception_detail
+ {
+ class error_info_base;
+
+ struct
+ error_info_container:
+ public exception_detail::counted_base
+ {
+ virtual char const * what( std::type_info const & ) const = 0;
+ virtual shared_ptr<error_info_base const> get( std::type_info const & ) const = 0;
+ virtual void set( shared_ptr<error_info_base const> const & ) = 0;
+ };
+ }
+
+ template <class Tag,class T>
+ class error_info;
+
+ template <class E,class Tag,class T>
+ E const & operator<<( E const &, error_info<Tag,T> const & );
+
+ template <class ErrorInfo,class E>
+ shared_ptr<typename ErrorInfo::value_type const> get_error_info( E const & );
+
+ class
+ exception
+ {
+ public:
+
+ virtual ~exception() throw()=0;
+ virtual char const * what() const throw();
+
+ private:
+
+ shared_ptr<exception_detail::error_info_base const> get( std::type_info const & ) const;
+ void set( shared_ptr<exception_detail::error_info_base const> const & ) const;
+
+ template <class E,class Tag,class T>
+ friend E const & operator<<( E const &, error_info<Tag,T> const & );
+
+ template <class ErrorInfo,class E>
+ friend shared_ptr<typename ErrorInfo::value_type const> get_error_info( E const & );
+
+ intrusive_ptr<exception_detail::error_info_container> mutable data_;
+ };
+
+ inline
+ exception::
+ ~exception() throw()
+ {
+ }
+
+ inline
+ char const *
+ exception::
+ what() const throw()
+ {
+ if( data_ )
+ try
+ {
+ char const * w = data_->what(typeid(*this));
+ BOOST_ASSERT(0!=w);
+ return w;
+ }
+ catch(...)
+ {
+ }
+ return typeid(*this).name();
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/info.hpp
==============================================================================
--- branches/proto/v4/boost/exception/info.hpp (original)
+++ branches/proto/v4/boost/exception/info.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -15,219 +15,219 @@
 #include <map>
 
 #define BOOST_ERROR_INFO\
- ::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\
- ::boost::throw_file(__FILE__) <<\
- ::boost::throw_line((int)__LINE__)
+ ::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\
+ ::boost::throw_file(__FILE__) <<\
+ ::boost::throw_line((int)__LINE__)
 
 namespace
 boost
- {
- typedef error_info<struct tag_throw_function,char const *> throw_function;
- typedef error_info<struct tag_throw_file,char const *> throw_file;
- typedef error_info<struct tag_throw_line,int> throw_line;
-
- namespace
- exception_detail
- {
- class
- error_info_base
- {
- public:
-
- virtual std::type_info const & tag_typeid() const = 0;
- virtual std::string value_as_string() const = 0;
- };
- }
-
- template <class Tag,class T>
- class
- error_info:
- public exception_detail::error_info_base
- {
- public:
-
- typedef T value_type;
-
- error_info( value_type const & value ):
- value_(value)
- {
- }
-
- value_type const &
- value() const
- {
- return value_;
- }
-
- private:
-
- std::type_info const &
- tag_typeid() const
- {
- return typeid(type<Tag>);
- }
-
- std::string
- value_as_string() const
- {
- return to_string_stub(value_);
- }
-
- value_type const value_;
- };
-
- template <class ErrorInfo>
- struct
- error_info_type
- {
- typedef typename ErrorInfo::value_type value_type;
- };
-
- template <class E,class Tag,class T>
- E const &
- operator<<( E const & x, error_info<Tag,T> const & v )
- {
- shared_ptr< error_info<Tag,T> > p( new error_info<Tag,T>(v) );
- x.set(p);
- return x;
- }
-
- template <class ErrorInfo,class E>
- shared_ptr<typename ErrorInfo::value_type const>
- get_error_info( E const & some_exception )
- {
- if( exception const * x = dynamic_cast<exception const *>(&some_exception) )
- if( shared_ptr<exception_detail::error_info_base const> eib = x->get(typeid(ErrorInfo)) )
- {
- BOOST_ASSERT( 0!=dynamic_cast<ErrorInfo const *>(eib.get()) );
- ErrorInfo const * w = static_cast<ErrorInfo const *>(eib.get());
- return shared_ptr<typename ErrorInfo::value_type const>(eib,&w->value());
- }
- return shared_ptr<typename ErrorInfo::value_type const>();
- }
-
- namespace
- exception_detail
- {
- class
- error_info_container_impl:
- public error_info_container
- {
- public:
-
- error_info_container_impl():
- count_(0)
- {
- }
-
- ~error_info_container_impl() throw()
- {
- }
-
- shared_ptr<error_info_base const>
- get( std::type_info const & ti ) const
- {
- error_info_map::const_iterator i=info_.find(typeinfo(ti));
- if( info_.end()!=i )
- {
- shared_ptr<error_info_base const> const & p = i->second;
- BOOST_ASSERT( typeid(*p)==ti );
- return p;
- }
- return shared_ptr<error_info_base const>();
- }
-
- void
- set( shared_ptr<error_info_base const> const & x )
- {
- BOOST_ASSERT(x);
- info_[typeinfo(typeid(*x))] = x;
- what_.clear();
- }
-
- char const *
- what( std::type_info const & exception_type ) const
- {
- if( what_.empty() )
- {
- std::string tmp(exception_type.name());
- tmp += '\n';
- for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i )
- {
- shared_ptr<error_info_base const> const & x = i->second;
- tmp += '[';
- tmp += x->tag_typeid().name();
- tmp += "] = ";
- tmp += x->value_as_string();
- tmp += '\n';
- }
- what_.swap(tmp);
- }
- return what_.c_str();
- }
-
- private:
-
- friend class exception;
-
- struct
- typeinfo
- {
- std::type_info const * type;
-
- explicit
- typeinfo( std::type_info const & t ):
- type(&t)
- {
- }
-
- bool
- operator<( typeinfo const & b ) const
- {
- return 0!=(type->before(*b.type));
- }
- };
-
- typedef std::map< typeinfo, shared_ptr<error_info_base const> > error_info_map;
- error_info_map info_;
- std::string mutable what_;
- int mutable count_;
-
- void
- add_ref() const
- {
- ++count_;
- }
-
- void
- release() const
- {
- if( !--count_ )
- delete this;
- }
- };
- }
-
- inline
- void
- exception::
- set( shared_ptr<exception_detail::error_info_base const> const & x ) const
- {
- if( !data_ )
- data_ = intrusive_ptr<exception_detail::error_info_container>(new exception_detail::error_info_container_impl);
- data_->set(x);
- }
-
- inline
- shared_ptr<exception_detail::error_info_base const>
- exception::
- get( std::type_info const & ti ) const
- {
- if( data_ )
- return data_->get(ti);
- else
- return shared_ptr<exception_detail::error_info_base const>();
- }
- }
+ {
+ typedef error_info<struct tag_throw_function,char const *> throw_function;
+ typedef error_info<struct tag_throw_file,char const *> throw_file;
+ typedef error_info<struct tag_throw_line,int> throw_line;
+
+ namespace
+ exception_detail
+ {
+ class
+ error_info_base
+ {
+ public:
+
+ virtual std::type_info const & tag_typeid() const = 0;
+ virtual std::string value_as_string() const = 0;
+ };
+ }
+
+ template <class Tag,class T>
+ class
+ error_info:
+ public exception_detail::error_info_base
+ {
+ public:
+
+ typedef T value_type;
+
+ error_info( value_type const & value ):
+ value_(value)
+ {
+ }
+
+ value_type const &
+ value() const
+ {
+ return value_;
+ }
+
+ private:
+
+ std::type_info const &
+ tag_typeid() const
+ {
+ return typeid(type<Tag>);
+ }
+
+ std::string
+ value_as_string() const
+ {
+ return to_string_stub(value_);
+ }
+
+ value_type const value_;
+ };
+
+ template <class ErrorInfo>
+ struct
+ error_info_type
+ {
+ typedef typename ErrorInfo::value_type value_type;
+ };
+
+ template <class E,class Tag,class T>
+ E const &
+ operator<<( E const & x, error_info<Tag,T> const & v )
+ {
+ shared_ptr< error_info<Tag,T> > p( new error_info<Tag,T>(v) );
+ x.set(p);
+ return x;
+ }
+
+ template <class ErrorInfo,class E>
+ shared_ptr<typename ErrorInfo::value_type const>
+ get_error_info( E const & some_exception )
+ {
+ if( exception const * x = dynamic_cast<exception const *>(&some_exception) )
+ if( shared_ptr<exception_detail::error_info_base const> eib = x->get(typeid(ErrorInfo)) )
+ {
+ BOOST_ASSERT( 0!=dynamic_cast<ErrorInfo const *>(eib.get()) );
+ ErrorInfo const * w = static_cast<ErrorInfo const *>(eib.get());
+ return shared_ptr<typename ErrorInfo::value_type const>(eib,&w->value());
+ }
+ return shared_ptr<typename ErrorInfo::value_type const>();
+ }
+
+ namespace
+ exception_detail
+ {
+ class
+ error_info_container_impl:
+ public error_info_container
+ {
+ public:
+
+ error_info_container_impl():
+ count_(0)
+ {
+ }
+
+ ~error_info_container_impl() throw()
+ {
+ }
+
+ shared_ptr<error_info_base const>
+ get( std::type_info const & ti ) const
+ {
+ error_info_map::const_iterator i=info_.find(typeinfo(ti));
+ if( info_.end()!=i )
+ {
+ shared_ptr<error_info_base const> const & p = i->second;
+ BOOST_ASSERT( typeid(*p)==ti );
+ return p;
+ }
+ return shared_ptr<error_info_base const>();
+ }
+
+ void
+ set( shared_ptr<error_info_base const> const & x )
+ {
+ BOOST_ASSERT(x);
+ info_[typeinfo(typeid(*x))] = x;
+ what_.clear();
+ }
+
+ char const *
+ what( std::type_info const & exception_type ) const
+ {
+ if( what_.empty() )
+ {
+ std::string tmp(exception_type.name());
+ tmp += '\n';
+ for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i )
+ {
+ shared_ptr<error_info_base const> const & x = i->second;
+ tmp += '[';
+ tmp += x->tag_typeid().name();
+ tmp += "] = ";
+ tmp += x->value_as_string();
+ tmp += '\n';
+ }
+ what_.swap(tmp);
+ }
+ return what_.c_str();
+ }
+
+ private:
+
+ friend class exception;
+
+ struct
+ typeinfo
+ {
+ std::type_info const * type;
+
+ explicit
+ typeinfo( std::type_info const & t ):
+ type(&t)
+ {
+ }
+
+ bool
+ operator<( typeinfo const & b ) const
+ {
+ return 0!=(type->before(*b.type));
+ }
+ };
+
+ typedef std::map< typeinfo, shared_ptr<error_info_base const> > error_info_map;
+ error_info_map info_;
+ std::string mutable what_;
+ int mutable count_;
+
+ void
+ add_ref() const
+ {
+ ++count_;
+ }
+
+ void
+ release() const
+ {
+ if( !--count_ )
+ delete this;
+ }
+ };
+ }
+
+ inline
+ void
+ exception::
+ set( shared_ptr<exception_detail::error_info_base const> const & x ) const
+ {
+ if( !data_ )
+ data_ = intrusive_ptr<exception_detail::error_info_container>(new exception_detail::error_info_container_impl);
+ data_->set(x);
+ }
+
+ inline
+ shared_ptr<exception_detail::error_info_base const>
+ exception::
+ get( std::type_info const & ti ) const
+ {
+ if( data_ )
+ return data_->get(ti);
+ else
+ return shared_ptr<exception_detail::error_info_base const>();
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/info_tuple.hpp
==============================================================================
--- branches/proto/v4/boost/exception/info_tuple.hpp (original)
+++ branches/proto/v4/boost/exception/info_tuple.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -11,54 +11,54 @@
 
 namespace
 boost
- {
- template <
- class E,
- class Tag1,class T1,
- class Tag2,class T2 >
- E const &
- operator<<(
- E const & x,
- tuple<
- error_info<Tag1,T1>,
- error_info<Tag2,T2> > const & v )
- {
- return x << v.template get<0>() << v.template get<1>();
- }
+ {
+ template <
+ class E,
+ class Tag1,class T1,
+ class Tag2,class T2 >
+ E const &
+ operator<<(
+ E const & x,
+ tuple<
+ error_info<Tag1,T1>,
+ error_info<Tag2,T2> > const & v )
+ {
+ return x << v.template get<0>() << v.template get<1>();
+ }
 
- template <
- class E,
- class Tag1,class T1,
- class Tag2,class T2,
- class Tag3,class T3 >
- E const &
- operator<<(
- E const & x,
- tuple<
- error_info<Tag1,T1>,
- error_info<Tag2,T2>,
- error_info<Tag3,T3> > const & v )
- {
- return x << v.template get<0>() << v.template get<1>() << v.template get<2>();
- }
+ template <
+ class E,
+ class Tag1,class T1,
+ class Tag2,class T2,
+ class Tag3,class T3 >
+ E const &
+ operator<<(
+ E const & x,
+ tuple<
+ error_info<Tag1,T1>,
+ error_info<Tag2,T2>,
+ error_info<Tag3,T3> > const & v )
+ {
+ return x << v.template get<0>() << v.template get<1>() << v.template get<2>();
+ }
 
- template <
- class E,
- class Tag1,class T1,
- class Tag2,class T2,
- class Tag3,class T3,
- class Tag4,class T4 >
- E const &
- operator<<(
- E const & x,
- tuple<
- error_info<Tag1,T1>,
- error_info<Tag2,T2>,
- error_info<Tag3,T3>,
- error_info<Tag4,T4> > const & v )
- {
- return x << v.template get<0>() << v.template get<1>() << v.template get<2>() << v.template get<3>();
- }
- }
+ template <
+ class E,
+ class Tag1,class T1,
+ class Tag2,class T2,
+ class Tag3,class T3,
+ class Tag4,class T4 >
+ E const &
+ operator<<(
+ E const & x,
+ tuple<
+ error_info<Tag1,T1>,
+ error_info<Tag2,T2>,
+ error_info<Tag3,T3>,
+ error_info<Tag4,T4> > const & v )
+ {
+ return x << v.template get<0>() << v.template get<1>() << v.template get<2>() << v.template get<3>();
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/to_string.hpp
==============================================================================
--- branches/proto/v4/boost/exception/to_string.hpp (original)
+++ branches/proto/v4/boost/exception/to_string.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -6,22 +6,52 @@
 #ifndef UUID_7E48761AD92811DC9011477D56D89593
 #define UUID_7E48761AD92811DC9011477D56D89593
 
+#include <boost/utility/enable_if.hpp>
+#include <boost/exception/detail/is_output_streamable.hpp>
 #include <sstream>
 
 namespace
 boost
- {
- namespace
- {
- template <class T>
- std::string
- to_string( T const & x )
- {
- std::ostringstream out;
- out << x;
- return out.str();
- }
- }
- }
+ {
+ namespace
+ to_string_detail
+ {
+ template <class T>
+ typename disable_if<is_output_streamable<T>,char>::type to_string( T const & );
+
+ template <class,bool IsOutputStreamable>
+ struct has_to_string_impl;
+
+ template <class T>
+ struct
+ has_to_string_impl<T,true>
+ {
+ enum e { value=1 };
+ };
+
+ template <class T>
+ struct
+ has_to_string_impl<T,false>
+ {
+ enum e { value=1!=sizeof(to_string(*(T*)0)) };
+ };
+ }
+
+ template <class T>
+ typename enable_if<is_output_streamable<T>,std::string>::type
+ to_string( T const & x )
+ {
+ std::ostringstream out;
+ out << x;
+ return out.str();
+ }
+
+ template <class T>
+ struct
+ has_to_string
+ {
+ enum e { value=to_string_detail::has_to_string_impl<T,is_output_streamable<T>::value>::value };
+ };
+ }
 
 #endif

Modified: branches/proto/v4/boost/exception/to_string_stub.hpp
==============================================================================
--- branches/proto/v4/boost/exception/to_string_stub.hpp (original)
+++ branches/proto/v4/boost/exception/to_string_stub.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,138 +12,83 @@
 
 namespace
 boost
- {
- namespace
- exception_detail
- {
- template <bool ShiftLeftAvailable>
- struct shift_left_dispatcher;
-
- template <>
- struct
- shift_left_dispatcher<true>
- {
- template <class T,class CharT,class Traits,class Stub>
- static
- void
- convert( std::basic_ostream<CharT,Traits> & out, T const & x, Stub )
- {
- out << x;
- }
- };
-
- template <>
- struct
- shift_left_dispatcher<false>
- {
- template <class T,class CharT,class Traits,class Stub>
- static
- void
- convert( std::basic_ostream<CharT,Traits> & out, T const & x, Stub s )
- {
- out << s(x);
- }
- };
-
- namespace
- shift_left_dispatch
- {
- template <class T,class CharT,class Traits>
- char operator<<( std::basic_ostream<CharT,Traits> &, T );
-
- template <class T,class CharT,class Traits,class Stub>
- void
- dispatch( std::basic_ostream<CharT,Traits> & out, T const & x, Stub s )
- {
- shift_left_dispatcher<1!=sizeof(out<<x)>::convert(out,x,s);
- }
- }
- }
-
- namespace
- exception_detail
- {
- template <bool ToStringAvailable>
- struct to_string_dispatcher;
-
- template <>
- struct
- to_string_dispatcher<true>
- {
- template <class T,class Stub>
- static
- std::string
- convert( T const & x, Stub )
- {
- return to_string(x);
- }
- };
-
- template <>
- struct
- to_string_dispatcher<false>
- {
- template <class T,class Stub>
- static
- std::string
- convert( T const & x, Stub s )
- {
- std::ostringstream out;
- shift_left_dispatch::dispatch(out,x,s);
- return out.str();
- }
- };
-
- namespace
- to_string_dispatch
- {
- template <class T>
- char to_string( T );
-
- template <class T,class Stub>
- std::string
- dispatch( T const & x, Stub s )
- {
- return to_string_dispatcher<1!=sizeof(to_string(x))>::convert(x,s);
- }
- }
-
- template <class T>
- std::string
- string_stub_dump( T const & x )
- {
- std::ostringstream s;
- s << "[ type: " << typeid(x).name() << ", size: " << sizeof(T) << ", dump: ";
- size_t n=sizeof(T)>16?16:sizeof(T);
- s.fill('0');
- s.width(2);
- for( unsigned char const * b=reinterpret_cast<unsigned char const *>(&x),* e=b+n; b!=e; ++b )
- s << std::setw(2) << std::hex << (unsigned int)*b << " ";
- s << "]";
- return s.str();
- }
- }
-
- template <class T>
- std::string
- to_string_stub( T const & x )
- {
- return exception_detail::to_string_dispatch::dispatch(x,&exception_detail::string_stub_dump<T>);
- }
-
- template <class T,class Stub>
- std::string
- to_string_stub( T const & x, Stub s )
- {
- return exception_detail::to_string_dispatch::dispatch(x,s);
- }
-
- template <class T,class U>
- std::string
- to_string( std::pair<T,U> const & x )
- {
- return std::string("(") + to_string(x.first) + ',' + to_string(x.second) + ')';
- }
- }
+ {
+ namespace
+ exception_detail
+ {
+ template <bool ToStringAvailable>
+ struct
+ to_string_dispatcher
+ {
+ template <class T,class Stub>
+ static
+ std::string
+ convert( T const & x, Stub )
+ {
+ return to_string(x);
+ }
+ };
+
+ template <>
+ struct
+ to_string_dispatcher<false>
+ {
+ template <class T,class Stub>
+ static
+ std::string
+ convert( T const & x, Stub s )
+ {
+ return s(x);
+ }
+ };
+
+ namespace
+ to_string_dispatch
+ {
+ template <class T,class Stub>
+ std::string
+ dispatch( T const & x, Stub s )
+ {
+ return to_string_dispatcher<has_to_string<T>::value>::convert(x,s);
+ }
+ }
+
+ template <class T>
+ std::string
+ string_stub_dump( T const & x )
+ {
+ std::ostringstream s;
+ s << "[ type: " << typeid(x).name() << ", size: " << sizeof(T) << ", dump: ";
+ size_t n=sizeof(T)>16?16:sizeof(T);
+ s.fill('0');
+ s.width(2);
+ for( unsigned char const * b=reinterpret_cast<unsigned char const *>(&x),* e=b+n; b!=e; ++b )
+ s << std::setw(2) << std::hex << (unsigned int)*b << " ";
+ s << "]";
+ return s.str();
+ }
+ }
+
+ template <class T>
+ std::string
+ to_string_stub( T const & x )
+ {
+ return exception_detail::to_string_dispatch::dispatch(x,&exception_detail::string_stub_dump<T>);
+ }
+
+ template <class T,class Stub>
+ std::string
+ to_string_stub( T const & x, Stub s )
+ {
+ return exception_detail::to_string_dispatch::dispatch(x,s);
+ }
+
+ template <class T,class U>
+ std::string
+ to_string( std::pair<T,U> const & x )
+ {
+ return std::string("(") + to_string(x.first) + ',' + to_string(x.second) + ')';
+ }
+ }
 
 #endif

Modified: branches/proto/v4/boost/math/distributions/fwd.hpp
==============================================================================
--- branches/proto/v4/boost/math/distributions/fwd.hpp (original)
+++ branches/proto/v4/boost/math/distributions/fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -45,6 +45,18 @@
 class negative_binomial_distribution;
 
 template <class RealType, class Policy>
+class non_central_chi_squared_distribution;
+
+template <class RealType, class Policy>
+class non_central_beta_distribution;
+
+template <class RealType, class Policy>
+class non_central_f_distribution;
+
+template <class RealType, class Policy>
+class non_central_t_distribution;
+
+template <class RealType, class Policy>
 class normal_distribution;
 
 template <class RealType, class Policy>

Modified: branches/proto/v4/boost/math/special_functions/detail/bessel_ik.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/detail/bessel_ik.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/detail/bessel_ik.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -10,6 +10,7 @@
 #pragma once
 #endif
 
+#include <boost/math/special_functions/round.hpp>
 #include <boost/math/special_functions/gamma.hpp>
 #include <boost/math/special_functions/sin_pi.hpp>
 #include <boost/math/constants/constants.hpp>

Modified: branches/proto/v4/boost/math/tools/polynomial.hpp
==============================================================================
--- branches/proto/v4/boost/math/tools/polynomial.hpp (original)
+++ branches/proto/v4/boost/math/tools/polynomial.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -16,6 +16,8 @@
 #include <boost/math/special_functions/binomial.hpp>
 
 #include <vector>
+#include <ostream>
+#include <algorithm>
 
 namespace boost{ namespace math{ namespace tools{
 

Modified: branches/proto/v4/boost/mpi/datatype.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/datatype.hpp (original)
+++ branches/proto/v4/boost/mpi/datatype.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -182,7 +182,7 @@
 template<typename T> MPI_Datatype get_mpi_datatype(const T& x)
 {
   BOOST_MPL_ASSERT((is_mpi_datatype<T>));
- return detail::mpi_datatype_cache.datatype(x);
+ return detail::mpi_datatype_cache().datatype(x);
 }
 
 // Don't parse this part when we're generating Doxygen documentation.

Modified: branches/proto/v4/boost/mpi/detail/mpi_datatype_cache.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/mpi_datatype_cache.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/mpi_datatype_cache.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -15,7 +15,6 @@
 #include <boost/utility/enable_if.hpp>
 #include <boost/mpl/assert.hpp>
 #include <boost/noncopyable.hpp>
-#include <map>
 #include <typeinfo>
 
 // The std::type_info::before function in Visual C++ 8.0 (and probably earlier)
@@ -47,21 +46,15 @@
 ///
 ///
 class BOOST_MPI_DECL mpi_datatype_map
- : private std::map<std::type_info const*,MPI_Datatype,type_info_compare>,
- public boost::noncopyable
+ : public boost::noncopyable
 {
-public:
- mpi_datatype_map()
- {}
+ struct implementation;
 
- ~mpi_datatype_map()
- {
- // do not free after call to MPI_FInalize
- int finalized=0;
- BOOST_MPI_CHECK_RESULT(MPI_Finalized,(&finalized));
- if (!finalized)
- free();
- }
+ implementation *impl;
+
+public:
+ mpi_datatype_map();
+ ~mpi_datatype_map();
 
   template <class T>
   MPI_Datatype datatype(const T& x = T(), typename boost::enable_if<is_mpi_builtin_datatype<T> >::type* =0)
@@ -76,30 +69,24 @@
 
     // check whether the type already exists
     std::type_info const* t = &typeid(T);
- const_iterator it = find(t);
- if(it ==end())
- {
+ MPI_Datatype datatype = get(t);
+ if (datatype == MPI_DATATYPE_NULL) {
       // need to create a type
       mpi_datatype_oarchive ar(x);
- insert(std::make_pair(t,ar.get_mpi_datatype()));
- it = find(t);
+ datatype = ar.get_mpi_datatype();
+ set(t, datatype);
     }
 
- return it->second;
+ return datatype;
   }
 
 private:
- // free all MPI data types
- void free()
- {
- // ignore errors in the destructor
- for (iterator it=begin(); it !=end(); ++it)
- MPI_Type_free(&(it->second));
- }
-
+ MPI_Datatype get(const std::type_info* t);
+ void set(const std::type_info* t, MPI_Datatype datatype);
 };
 
-extern mpi_datatype_map mpi_datatype_cache;
+/// Retrieve the MPI datatype cache
+mpi_datatype_map& mpi_datatype_cache();
 
 } } } // end namespace boost::mpi::detail
 

Modified: branches/proto/v4/boost/operators.hpp
==============================================================================
--- branches/proto/v4/boost/operators.hpp (original)
+++ branches/proto/v4/boost/operators.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,6 +8,8 @@
 // See http://www.boost.org/libs/utility/operators.htm for documentation.
 
 // Revision History
+// 03 Apr 08 Make sure "convertible to bool" is sufficient
+// for T::operator<, etc. (Daniel Frey)
 // 24 May 07 Changed empty_base to depend on T, see
 // http://svn.boost.org/trac/boost/ticket/979
 // 21 Oct 02 Modified implementation of operators to allow compilers with a
@@ -124,34 +126,34 @@
 template <class T, class U, class B = ::boost::detail::empty_base<T> >
 struct less_than_comparable2 : B
 {
- friend bool operator<=(const T& x, const U& y) { return !(x > y); }
- friend bool operator>=(const T& x, const U& y) { return !(x < y); }
+ friend bool operator<=(const T& x, const U& y) { return !static_cast<bool>(x > y); }
+ friend bool operator>=(const T& x, const U& y) { return !static_cast<bool>(x < y); }
      friend bool operator>(const U& x, const T& y) { return y < x; }
      friend bool operator<(const U& x, const T& y) { return y > x; }
- friend bool operator<=(const U& x, const T& y) { return !(y < x); }
- friend bool operator>=(const U& x, const T& y) { return !(y > x); }
+ friend bool operator<=(const U& x, const T& y) { return !static_cast<bool>(y < x); }
+ friend bool operator>=(const U& x, const T& y) { return !static_cast<bool>(y > x); }
 };
 
 template <class T, class B = ::boost::detail::empty_base<T> >
 struct less_than_comparable1 : B
 {
      friend bool operator>(const T& x, const T& y) { return y < x; }
- friend bool operator<=(const T& x, const T& y) { return !(y < x); }
- friend bool operator>=(const T& x, const T& y) { return !(x < y); }
+ friend bool operator<=(const T& x, const T& y) { return !static_cast<bool>(y < x); }
+ friend bool operator>=(const T& x, const T& y) { return !static_cast<bool>(x < y); }
 };
 
 template <class T, class U, class B = ::boost::detail::empty_base<T> >
 struct equality_comparable2 : B
 {
      friend bool operator==(const U& y, const T& x) { return x == y; }
- friend bool operator!=(const U& y, const T& x) { return !(x == y); }
- friend bool operator!=(const T& y, const U& x) { return !(y == x); }
+ friend bool operator!=(const U& y, const T& x) { return !static_cast<bool>(x == y); }
+ friend bool operator!=(const T& y, const U& x) { return !static_cast<bool>(y == x); }
 };
 
 template <class T, class B = ::boost::detail::empty_base<T> >
 struct equality_comparable1 : B
 {
- friend bool operator!=(const T& x, const T& y) { return !(x == y); }
+ friend bool operator!=(const T& x, const T& y) { return !static_cast<bool>(x == y); }
 };
 
 // A macro which produces "name_2left" from "name".
@@ -356,7 +358,7 @@
 {
   friend bool operator==(const T& x, const U& y)
   {
- return !(x < y) && !(x > y);
+ return !static_cast<bool>(x < y) && !static_cast<bool>(x > y);
   }
 };
 
@@ -365,7 +367,7 @@
 {
   friend bool operator==(const T&x, const T&y)
   {
- return !(x < y) && !(y < x);
+ return !static_cast<bool>(x < y) && !static_cast<bool>(y < x);
   }
 };
 
@@ -373,17 +375,17 @@
 struct partially_ordered2 : B
 {
   friend bool operator<=(const T& x, const U& y)
- { return (x < y) || (x == y); }
+ { return static_cast<bool>(x < y) || static_cast<bool>(x == y); }
   friend bool operator>=(const T& x, const U& y)
- { return (x > y) || (x == y); }
+ { return static_cast<bool>(x > y) || static_cast<bool>(x == y); }
   friend bool operator>(const U& x, const T& y)
     { return y < x; }
   friend bool operator<(const U& x, const T& y)
     { return y > x; }
   friend bool operator<=(const U& x, const T& y)
- { return (y > x) || (y == x); }
+ { return static_cast<bool>(y > x) || static_cast<bool>(y == x); }
   friend bool operator>=(const U& x, const T& y)
- { return (y < x) || (y == x); }
+ { return static_cast<bool>(y < x) || static_cast<bool>(y == x); }
 };
 
 template <class T, class B = ::boost::detail::empty_base<T> >
@@ -392,9 +394,9 @@
   friend bool operator>(const T& x, const T& y)
     { return y < x; }
   friend bool operator<=(const T& x, const T& y)
- { return (x < y) || (x == y); }
+ { return static_cast<bool>(x < y) || static_cast<bool>(x == y); }
   friend bool operator>=(const T& x, const T& y)
- { return (y < x) || (x == y); }
+ { return static_cast<bool>(y < x) || static_cast<bool>(x == y); }
 };
 
 // Combined operator classes (contributed by Daryle Walker) ----------------//

Modified: branches/proto/v4/boost/regex/concepts.hpp
==============================================================================
--- branches/proto/v4/boost/regex/concepts.hpp (original)
+++ branches/proto/v4/boost/regex/concepts.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -368,8 +368,6 @@
 
       // access:
       const Regex ce;
- bool b = ce.empty();
- ignore_unused_variable_warning(b);
       unsigned i = ce.mark_count();
       ignore_unused_variable_warning(i);
       m_flags = ce.flags();
@@ -385,7 +383,7 @@
       typedef typename sub_match_type::iterator sub_iter_type;
       BOOST_STATIC_ASSERT((::boost::is_same<sub_value_type, value_type>::value));
       BOOST_STATIC_ASSERT((::boost::is_same<sub_iter_type, BidiIterator>::value));
- b = m_sub.matched;
+ bool b = m_sub.matched;
       ignore_unused_variable_warning(b);
       BidiIterator bi = m_sub.first;
       ignore_unused_variable_warning(bi);
@@ -806,6 +804,8 @@
       ignore_unused_variable_warning(i2);
       bool b = ce == ce2;
       ignore_unused_variable_warning(b);
+ b = ce.empty();
+ ignore_unused_variable_warning(b);
       b = ce != ce2;
       ignore_unused_variable_warning(b);
       b = ce < ce2;

Modified: branches/proto/v4/boost/shared_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/shared_ptr.hpp (original)
+++ branches/proto/v4/boost/shared_ptr.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -50,7 +50,6 @@
 
 template<class T> class shared_ptr;
 template<class T> class weak_ptr;
-template<class T> class enable_shared_from_this;
 
 namespace detail
 {
@@ -89,17 +88,24 @@
 
 #endif
 
-// enable_shared_from_this support
+#if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( BOOST_NO_AUTO_PTR )
 
-struct ignore_enable_shared_from_this_tag {};
+// rvalue auto_ptr support based on a technique by Dave Abrahams
 
-template<class T, class Y> void sp_enable_shared_from_this( boost::shared_ptr<Y> * ptr, boost::enable_shared_from_this<T> const * pe )
+template< class T, class R > struct sp_enable_if_auto_ptr
 {
- if(pe != 0)
- {
- pe->_internal_accept_owner(*ptr);
- }
-}
+};
+
+template< class T, class R > struct sp_enable_if_auto_ptr< std::auto_ptr< T >, R >
+{
+ typedef R type;
+};
+
+#endif
+
+} // namespace detail
+
+// sp_accept_owner
 
 #ifdef _MANAGED
 
@@ -110,44 +116,21 @@
     template<class T> sp_any_pointer( T* ) {}
 };
 
-inline void sp_enable_shared_from_this( sp_any_pointer, sp_any_pointer )
+inline void sp_accept_owner( sp_any_pointer, sp_any_pointer )
 {
 }
 
-#else // _MANAGED
-
-#ifdef sgi
-// Turn off: the last argument of the varargs function "sp_enable_shared_from_this" is unnamed
-# pragma set woff 3506
-#endif
-
-inline void sp_enable_shared_from_this( ... )
+inline void sp_accept_owner( sp_any_pointer, sp_any_pointer, sp_any_pointer )
 {
 }
 
-#ifdef sgi
-# pragma reset woff 3506
-#endif
-
-#endif // _MANAGED
-
-#if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( BOOST_NO_AUTO_PTR )
-
-// rvalue auto_ptr support based on a technique by Dave Abrahams
+#else // _MANAGED
 
-template< class T, class R > struct sp_enable_if_auto_ptr
+inline void sp_accept_owner( ... )
 {
-};
-
-template< class T, class R > struct sp_enable_if_auto_ptr< std::auto_ptr< T >, R >
-{
- typedef R type;
-};
-
-#endif
-
-} // namespace detail
+}
 
+#endif // _MANAGED
 
 //
 // shared_ptr
@@ -178,7 +161,7 @@
     template<class Y>
     explicit shared_ptr( Y * p ): px( p ), pn( p ) // Y must be complete
     {
- boost::detail::sp_enable_shared_from_this( this, p );
+ sp_accept_owner( this, p );
     }
 
     //
@@ -187,16 +170,18 @@
     // shared_ptr will release p by calling d(p)
     //
 
- template<class Y, class D> shared_ptr(Y * p, D d): px(p), pn(p, d)
+ template<class Y, class D> shared_ptr( Y * p, D d ): px( p ), pn( p, d )
     {
- boost::detail::sp_enable_shared_from_this( this, p );
+ D * pd = static_cast<D *>( pn.get_deleter( BOOST_SP_TYPEID(D) ) );
+ sp_accept_owner( this, p, pd );
     }
 
     // As above, but with allocator. A's copy constructor shall not throw.
 
     template<class Y, class D, class A> shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a )
     {
- boost::detail::sp_enable_shared_from_this( this, p );
+ D * pd = static_cast<D *>( pn.get_deleter( BOOST_SP_TYPEID(D) ) );
+ sp_accept_owner( this, p, pd );
     }
 
 // generated copy constructor, assignment, destructor are fine...
@@ -221,6 +206,15 @@
     }
 
     template<class Y>
+ shared_ptr( weak_ptr<Y> const & r, boost::detail::sp_nothrow_tag ): px( 0 ), pn( r.pn, boost::detail::sp_nothrow_tag() ) // never throws
+ {
+ if( !pn.empty() )
+ {
+ px = r.px;
+ }
+ }
+
+ template<class Y>
     shared_ptr(shared_ptr<Y> const & r): px(r.px), pn(r.pn) // never throws
     {
     }
@@ -259,12 +253,6 @@
         }
     }
 
-// constructor that doesn't trigger enable_shared_from_this code, needed
-// for enable_shared_from_this internal implementation
- template<class Y, class D> shared_ptr(Y * p, D d, detail::ignore_enable_shared_from_this_tag):
- px(p), pn(p, d)
- {}
-
 #ifndef BOOST_NO_AUTO_PTR
 
     template<class Y>
@@ -272,7 +260,8 @@
     {
         Y * tmp = r.get();
         pn = boost::detail::shared_count(r);
- boost::detail::sp_enable_shared_from_this( this, tmp );
+
+ sp_accept_owner( this, tmp );
     }
 
 #if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
@@ -282,7 +271,8 @@
     {
         typename Ap::element_type * tmp = r.get();
         pn = boost::detail::shared_count( r );
- boost::detail::sp_enable_shared_from_this( this, tmp );
+
+ sp_accept_owner( this, tmp );
     }
 
 

Modified: branches/proto/v4/boost/spirit.hpp
==============================================================================
--- branches/proto/v4/boost/spirit.hpp (original)
+++ branches/proto/v4/boost/spirit.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,75 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2003 Hartmut Kaiser
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002 Raghavendra Satish
- Copyright (c) 2002 Jeff Westfahl
- Copyright (c) 2001 Bruce Florman
- Copyright (c) 2003 Giovanni Bajo
- Copyright (c) 2003 Vaclav Vesely
- Copyright (c) 2003 Jonathan de Halleux
- http://spirit.sourceforge.net/
- http://www.boost.org/libs/spirit
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-
- See http://www.boost.org/libs/spirit for documentation
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(SPIRIT_HPP)
-#define SPIRIT_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// If BOOST_SPIRIT_DEBUG is defined, the following header includes the
-// Spirit.Debug layer, otherwise the non-debug Spirit.Core is included.
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit.Meta
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/meta.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit.ErrorHandling
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/error_handling.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit.Iterators
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/iterator.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit.Symbols
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/symbols.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit.Utilities
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/utility.hpp>
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SPIRIT
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SPIRIT
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit.Attributes
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/attribute.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_spirit.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_spirit.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_spirit.hpp>
 
-#endif // !defined(SPIRIT_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,114 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTOR
 
-#include <boost/spirit/version.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Actors documentation and convention
-//
-// Actors
-//
-// Actors are predefined semantic action functors. They are used to do an
-// action on the parse result if the parser has had a successful match. An
-// example of actor is the append_actor described in the Spirit
-// documentation.
-//
-// The action takes place through a call to the () operator: single argument
-// () operator call for character parsers and two argument (first,last) call
-// for phrase parsers. Actors should implement at least one of the two ()
-// operator.
-//
-// Actor instances are not created direcly since they usually involve a
-// number of template parameters. Instead generator functions ("helper
-// functions") are provided to generate actors according to their arguments.
-// All helper functions have the "_a" suffix. For example, append_actor is
-// created using the append_a function.
-//
-// Policy holder actors and policy actions
-//
-// A lot of actors need to store reference to one or more objects. For
-// example, actions on container need to store a reference to the container.
-// Therefore, this kind of actor have been broken down into
-//
-// - a action policy that does the action (act method),
-// - a policy holder actor that stores the references and feeds the act
-// method.
-//
-// Policy holder actors
-//
-// Policy holder have the following naming convention:
-// <member>_ >> *<member> >> !value >> actor
-// where member are the policy stored member, they can be of type:
-//
-// - ref, a reference,
-// - const_ref, a const reference,
-// - value, by value,
-// - empty, no stored members
-// - !value states if the policy uses the parse result or not.
-//
-// The available policy holder are enumerated below:
-//
-// - empty_actor, nothing stored, feeds parse result
-// - value_actor, 1 object stored by value, feeds value
-// - ref_actor, 1 reference stored, feeds ref
-// - ref_value_actor, 1 reference stored, feeds ref and parse result
-//
-// Doc. convention
-//
-// - ref is a reference to an object stored in a policy holder actor,
-// - value_ref,value1_ref, value2_ref are a const reference stored in a
-// policy holder actor,
-// - value is the parse result in the single argument () operator,
-// - first,last are the parse result in the two argument () operator
-//
-// Actors (generator functions) and quick description
-//
-// - assign_a(ref) assign parse result to ref
-// - assign_a(ref, value_ref) assign value_ref to ref
-// - increment_a(ref) increment ref
-// - decrement_a(ref) decrement ref
-// - push_back_a(ref) push back the parse result in ref
-// - push_back_a(ref, value_ref) push back value_ref in ref
-// - push_front_a(ref) push front the parse result in ref
-// - push_front_a(ref, value_ref) push front value_ref in ref
-// - insert_key_a(ref,value_ref) insert value_ref in ref using the
-// parse result as key
-// - insert_at_a(ref, key_ref) insert the parse result in ref at key_ref
-// - insert_at_a(ref, key_ref insert value_ref in ref at key_ref
-// , value_ref)
-// - assign_key_a(ref, value_ref) assign value_ref in ref using the
-// parse result as key
-// - erase_a(ref, key) erase data at key from ref
-// - clear_a(ref) clears ref
-// - swap_a(aref, bref) swaps aref and bref
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include <boost/spirit/actor/ref_actor.hpp>
-#include <boost/spirit/actor/ref_value_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_value_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_const_ref_a.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_actor.hpp"
+#endif
 
-#include <boost/spirit/actor/assign_actor.hpp>
-#include <boost/spirit/actor/clear_actor.hpp>
-#include <boost/spirit/actor/increment_actor.hpp>
-#include <boost/spirit/actor/decrement_actor.hpp>
-#include <boost/spirit/actor/push_back_actor.hpp>
-#include <boost/spirit/actor/push_front_actor.hpp>
-#include <boost/spirit/actor/erase_actor.hpp>
-#include <boost/spirit/actor/insert_key_actor.hpp>
-#include <boost/spirit/actor/insert_at_actor.hpp>
-#include <boost/spirit/actor/assign_key_actor.hpp>
-#include <boost/spirit/actor/swap_actor.hpp>
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/assign_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/assign_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/assign_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,96 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_ASSIGN_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_ASSIGN_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSIGN_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSIGN_ACTOR
 
-#include <boost/spirit/actor/ref_value_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy that applies the assignement operator.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions (what it does):
- // ref = value;
- // ref = T(first,last);
- // ref = value_ref;
- //
- // Policy name:
- // assign_action
- //
- // Policy holder, corresponding helper method:
- // ref_value_actor, assign_a( ref );
- // ref_const_ref_actor, assign_a( ref, value_ref );
- //
- // () operators: both
- //
- // See also ref_value_actor and ref_const_ref_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct assign_action
- {
- template<
- typename T,
- typename ValueT
- >
- void act(T& ref_, ValueT const& value_) const
- {
- ref_ = value_;
- }
- template<
- typename T,
- typename IteratorT
- >
- void act(
- T& ref_,
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- typedef T value_type;
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- value_type value(first_,last_);
-#else
- value_type value;
- std::copy(first_, last_, std::inserter(value, value.end()));
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_assign_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_assign_actor.hpp"
 #endif
- ref_ = value;
- }
- };
-
- // Deprecated. Please use assign_a
- template<typename T>
- inline ref_value_actor<T,assign_action> assign(T& ref_)
- {
- return ref_value_actor<T,assign_action>(ref_);
- }
 
- template<typename T>
- inline ref_value_actor<T,assign_action> assign_a(T& ref_)
- {
- return ref_value_actor<T,assign_action>(ref_);
- }
-
- template<
- typename T,
- typename ValueT
- >
- inline ref_const_ref_actor<T,ValueT,assign_action> assign_a(
- T& ref_,
- ValueT const& value_
- )
- {
- return ref_const_ref_actor<T,ValueT,assign_action>(ref_,value_);
- }
-
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_assign_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/assign_key_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/assign_key_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/assign_key_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,92 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_ASSIGN_KEY_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_ASSIGN_KEY_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSIGN_KEY_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSIGN_KEY_ACTOR
 
-#include <boost/spirit/actor/ref_const_ref_value_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_const_ref_a.hpp>
-
-namespace boost { namespace spirit {
-
- struct assign_key_action
- {
- template<
- typename T,
- typename ValueT,
- typename KeyT
- >
- void act(T& ref_, ValueT const& value_, KeyT const& key_) const
- {
- ref_[ key_ ] = value_;
- }
-
- template<
- typename T,
- typename ValueT,
- typename IteratorT
- >
- void act(
- T& ref_,
- ValueT const& value_,
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- typedef typename T::key_type key_type;
- key_type key(first_,last_);
-
- ref_[key] = value_;
- }
- };
-
- template<
- typename T,
- typename ValueT
- >
- inline ref_const_ref_value_actor<T,ValueT,assign_key_action>
- assign_key_a(T& ref_, ValueT const& value_)
- {
- return ref_const_ref_value_actor<T,ValueT,assign_key_action>(
- ref_,
- value_
- );
- }
-
- template<
- typename T,
- typename ValueT,
- typename KeyT
- >
- inline ref_const_ref_const_ref_actor<
- T,
- ValueT,
- KeyT,
- assign_key_action
- >
- assign_key_a(
- T& ref_,
- ValueT const& value_,
- KeyT const& key_
- )
- {
- return ref_const_ref_const_ref_actor<
- T,
- ValueT,
- KeyT,
- assign_key_action
- >(
- ref_,
- value_,
- key_
- );
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_assign_key_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_assign_key_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_assign_key_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/clear_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/clear_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/clear_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,58 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_CLEAR_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_CLEAR_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLEAR_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLEAR_ACTOR
 
-#include <boost/spirit/actor/ref_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy that calls clear method.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions (what it does):
- // ref.clear();
- //
- // Policy name:
- // clear_action
- //
- // Policy holder, corresponding helper method:
- // ref_actor, clear_a( ref );
- //
- // () operators: both.
- //
- // See also ref_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct clear_action
- {
- template<
- typename T
- >
- void act(T& ref_) const
- {
- ref_.clear();
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- // helper method that creates a and_assign_actor.
- ///////////////////////////////////////////////////////////////////////////
- template<typename T>
- inline ref_actor<T,clear_action> clear_a(T& ref_)
- {
- return ref_actor<T,clear_action>(ref_);
- }
-
-
-}}
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_clear_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_clear_actor.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_clear_actor.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/actor/decrement_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/decrement_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/decrement_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,56 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_DECREMENT_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_DECREMENT_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DECREMENT_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_DECREMENT_ACTOR
 
-#include <boost/spirit/actor/ref_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy that calls the -- operator on a reference.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions:
- // --ref;
- //
- // Policy name:
- // decrement_action
- //
- // Policy holder, corresponding helper method:
- // ref_actor, decrement_a( ref );
- //
- // () operators: both.
- //
- // See also ref_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct decrement_action
- {
- template<
- typename T
- >
- void act(T& ref_) const
- {
- --ref_;
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- // helper method that creates a and_assign_actor.
- ///////////////////////////////////////////////////////////////////////////
- template<typename T>
- inline ref_actor<T,decrement_action> decrement_a(T& ref_)
- {
- return ref_actor<T,decrement_action>(ref_);
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_decrement_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_decrement_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_decrement_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/erase_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/erase_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/erase_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,85 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_ERASE_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_ERASE_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ERASE_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ERASE_ACTOR
 
-#include <boost/spirit/actor/ref_value_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy that calss the erase method.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions (what it does):
- // ref.erase( value );
- // ref.erase( T::key_type(first,last) );
- // ref.erase( key_ref );
- //
- // Policy name:
- // erase_action
- //
- // Policy holder, corresponding helper method:
- // ref_value_actor, erase_a( ref );
- // ref_const_ref_actor, erase_a( ref, key_ref );
- //
- // () operators: both
- //
- // See also ref_value_actor and ref_const_ref_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct erase_action
- {
- template<
- typename T,
- typename KeyT
- >
- void act(T& ref_, KeyT const& key_) const
- {
- ref_.erase(key_);
- }
- template<
- typename T,
- typename IteratorT
- >
- void act(
- T& ref_,
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- typedef typename T::key_type key_type;
- key_type key(first_,last_);
-
- ref_.erase(key);
- }
- };
-
- template<typename T>
- inline ref_value_actor<T,erase_action> erase_a(T& ref_)
- {
- return ref_value_actor<T,erase_action>(ref_);
- }
-
- template<
- typename T,
- typename KeyT
- >
- inline ref_const_ref_actor<T,KeyT,erase_action> erase_a(
- T& ref_,
- KeyT const& key_
- )
- {
- return ref_const_ref_actor<T,KeyT,erase_action>(ref_,key_);
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_erase_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_erase_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_erase_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/increment_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/increment_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/increment_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,56 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_INCREMENT_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_INCREMENT_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_INCREMENT_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_INCREMENT_ACTOR
 
-#include <boost/spirit/actor/ref_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy that calls the ++ operator on a reference.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions:
- // ++ref;
- //
- // Policy name:
- // increment_action
- //
- // Policy holder, corresponding helper method:
- // ref_actor, increment_a( ref );
- //
- // () operators: both.
- //
- // See also ref_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct increment_action
- {
- template<
- typename T
- >
- void act(T& ref_) const
- {
- ++ref_;
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- // helper method that creates a increment_actor.
- ///////////////////////////////////////////////////////////////////////////
- template<typename T>
- inline ref_actor<T,increment_action> increment_a(T& ref_)
- {
- return ref_actor<T,increment_action>(ref_);
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_increment_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_increment_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_increment_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/insert_at_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/insert_at_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/insert_at_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,117 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_INSERT_AT_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_INSERT_AT_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_INSERT_AT_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_INSERT_AT_ACTOR
 
-#include <boost/spirit/actor/ref_const_ref_value_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_const_ref_a.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy that insert data into an associative
- // container using a const reference to a key.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions (what it does):
- // ref.insert( T::value_type(key_ref,value) );
- // ref.insert( T::value_type(key_ref, T::mapped_type(first,last)));;
- // ref.insert( T::value_type(key_ref,value_ref) );
- //
- // Policy name:
- // insert_at_action
- //
- // Policy holder, corresponding helper method:
- // ref_const_ref_value_actor, insert_at_a( ref, key_ref );
- // ref_const_ref_const_ref_actor, insert_a( ref, key_ref, value_ref );
- //
- // () operators: both
- //
- // See also ref_const_ref_value_actor and ref_const_ref_const_ref_actor
- // for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct insert_at_action
- {
- template<
- typename T,
- typename ReferentT,
- typename ValueT
- >
- void act(
- T& ref_,
- ReferentT const& key_,
- ValueT const& value_
- ) const
- {
- typedef typename T::value_type value_type;
- ref_.insert( value_type(key_, value_) );
- }
-
- template<
- typename T,
- typename ReferentT,
- typename IteratorT
- >
- void act(
- T& ref_,
- ReferentT const& key_,
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- typedef typename T::mapped_type mapped_type;
- typedef typename T::value_type value_type;
-
- mapped_type value(first_,last_);
- value_type key_value(key_, value);
- ref_.insert( key_value );
- }
- };
-
- template<
- typename T,
- typename ReferentT
- >
- inline ref_const_ref_value_actor<T,ReferentT,insert_at_action>
- insert_at_a(
- T& ref_,
- ReferentT const& key_
- )
- {
- return ref_const_ref_value_actor<
- T,
- ReferentT,
- insert_at_action
- >(ref_,key_);
- }
-
- template<
- typename T,
- typename ReferentT,
- typename ValueT
- >
- inline ref_const_ref_const_ref_actor<T,ReferentT,ValueT,insert_at_action>
- insert_at_a(
- T& ref_,
- ReferentT const& key_,
- ValueT const& value_
- )
- {
- return ref_const_ref_const_ref_actor<
- T,
- ReferentT,
- ValueT,
- insert_at_action
- >(ref_,key_,value_);
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_insert_at_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_insert_at_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_insert_at_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/insert_key_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/insert_key_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/insert_key_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,93 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_INSERT_KEY_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_INSERT_KEY_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_INSERT_KEY_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_INSERT_KEY_ACTOR
 
-#include <boost/spirit/actor/ref_const_ref_value_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy that insert data into an associative
- // container using a const reference to data.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions (what it does):
- // ref.insert( T::value_type(value,value_ref) );
- // ref.insert( T::value_type(T::key_type(first,last), value_ref));;
- //
- // Policy name:
- // insert_key_action
- //
- // Policy holder, corresponding helper method:
- // ref_const_ref_value_actor, insert_key_a( ref, value_ref );
- //
- // () operators: both
- //
- // See also ref_const_ref_value_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct insert_key_action
- {
- template<
- typename T,
- typename ValueT,
- typename ReferentT
- >
- void act(
- T& ref_,
- ValueT const& value_,
- ReferentT const& key_
- ) const
- {
- typedef typename T::value_type value_type;
- value_type key_value(key_, value_);
- ref_.insert( key_value );
- }
-
- template<
- typename T,
- typename ValueT,
- typename IteratorT
- >
- void act(
- T& ref_,
- ValueT const& value_,
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- typedef typename T::key_type key_type;
- typedef typename T::value_type value_type;
-
- key_type key(first_,last_);
- value_type key_value(key, value_);
- ref_.insert( key_value );
- }
- };
-
- template<
- typename T,
- typename ValueT
- >
- inline ref_const_ref_value_actor<T,ValueT,insert_key_action> insert_key_a(
- T& ref_,
- ValueT const& value_
- )
- {
- return ref_const_ref_value_actor<
- T,
- ValueT,
- insert_key_action
- >(ref_,value_);
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_insert_key_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_insert_key_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_insert_key_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/push_back_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/push_back_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/push_back_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,97 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_PUSH_BACK_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_PUSH_BACK_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PUSH_BACK_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PUSH_BACK_ACTOR
 
-#include <boost/spirit/actor/ref_value_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- //
- // A semantic action policy that appends a value to the back of a
- // container.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions (what it does and what ref, value_ref must support):
- // ref.push_back( value );
- // ref.push_back( T::value_type(first,last) );
- // ref.push_back( value_ref );
- //
- // Policy name:
- // push_back_action
- //
- // Policy holder, corresponding helper method:
- // ref_value_actor, push_back_a( ref );
- // ref_const_ref_actor, push_back_a( ref, value_ref );
- //
- // () operators: both
- //
- // See also ref_value_actor and ref_const_ref_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct push_back_action
- {
- template<
- typename T,
- typename ValueT
- >
- void act(T& ref_, ValueT const& value_) const
- {
- ref_.push_back( value_ );
- }
- template<
- typename T,
- typename IteratorT
- >
- void act(
- T& ref_,
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- typedef typename T::value_type value_type;
- value_type value(first_,last_);
-
- ref_.push_back( value );
- }
- };
-
-// Deprecated interface. Use push_back_a
- template<typename T>
- inline ref_value_actor<T,push_back_action>
- append(T& ref_)
- {
- return ref_value_actor<T,push_back_action>(ref_);
- }
-
- template<typename T>
- inline ref_value_actor<T,push_back_action>
- push_back_a(T& ref_)
- {
- return ref_value_actor<T,push_back_action>(ref_);
- }
-
- template<
- typename T,
- typename ValueT
- >
- inline ref_const_ref_actor<T,ValueT,push_back_action>
- push_back_a(
- T& ref_,
- ValueT const& value_
- )
- {
- return ref_const_ref_actor<T,ValueT,push_back_action>(ref_,value_);
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_push_back_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_push_back_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_push_back_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/push_front_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/push_front_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/push_front_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,87 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_PUSH_FRONT_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_PUSH_FRONT_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PUSH_FRONT_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PUSH_FRONT_ACTOR
 
-#include <boost/spirit/actor/ref_value_actor.hpp>
-#include <boost/spirit/actor/ref_const_ref_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- //
- // A semantic action policy that appends a value to the front of a
- // container.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions (what it does and what ref, value_ref must support):
- // ref.push_front( value );
- // ref.push_front( T::value_type(first,last) );
- // ref.push_front( value_ref );
- //
- // Policy name:
- // push_front_action
- //
- // Policy holder, corresponding helper method:
- // ref_value_actor, push_front_a( ref );
- // ref_const_ref_actor, push_front_a( ref, value_ref );
- //
- // () operators: both
- //
- // See also ref_value_actor and ref_const_ref_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- struct push_front_action
- {
- template<
- typename T,
- typename ValueT
- >
- void act(T& ref_, ValueT const& value_) const
- {
- ref_.push_front( value_ );
- }
- template<
- typename T,
- typename IteratorT
- >
- void act(
- T& ref_,
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- typedef typename T::value_type value_type;
- value_type value(first_,last_);
-
- ref_.push_front( value );
- }
- };
-
- template<typename T>
- inline ref_value_actor<T,push_front_action> push_front_a(T& ref_)
- {
- return ref_value_actor<T,push_front_action>(ref_);
- }
-
- template<
- typename T,
- typename ValueT
- >
- inline ref_const_ref_actor<T,ValueT,push_front_action> push_front_a(
- T& ref_,
- ValueT const& value_
- )
- {
- return ref_const_ref_actor<T,ValueT,push_front_action>(ref_,value_);
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_push_front_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_push_front_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_push_front_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/ref_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,65 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_REF_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_REF_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_ACTOR
 
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy holder. This holder stores a reference to ref,
- // act methods are fead with this reference. The parse result is not used
- // by this holder.
- //
- // (This doc uses convention available in actors.hpp)
- //
- // Constructor:
- // ...(T& ref_);
- // where ref_ is stored.
- //
- // Action calls:
- // act(ref);
- //
- // () operators: both
- //
- ///////////////////////////////////////////////////////////////////////////
- template<
- typename T,
- typename ActionT
- >
- class ref_actor : public ActionT
- {
- private:
- T& ref;
- public:
- explicit
- ref_actor(T& ref_)
- : ref(ref_){}
-
-
- template<typename T2>
- void operator()(T2 const& /*val*/) const
- {
- this->act(ref); // defined in ActionT
- }
-
-
- template<typename IteratorT>
- void operator()(
- IteratorT const& /*first*/,
- IteratorT const& /*last*/
- ) const
- {
- this->act(ref); // defined in ActionT
- }
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_ref_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/ref_const_ref_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_const_ref_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_const_ref_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,73 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_REF_CONST_REF_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_REF_CONST_REF_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_ACTOR
 
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy holder. This holder stores a reference to ref
- // and a const reference to value_ref.
- // act methods are feed with ref and value_ref. The parse result is
- // not used by this holder.
- //
- // (This doc uses convention available in actors.hpp)
- //
- // Constructor:
- // ...(T& ref_, ValueT const& value_ref_);
- // where ref_ and value_ref_ are stored in the holder.
- //
- // Action calls:
- // act(ref, value_ref);
- //
- // () operators: both
- //
- ///////////////////////////////////////////////////////////////////////////
- template<
- typename T,
- typename ValueT,
- typename ActionT
- >
- class ref_const_ref_actor : public ActionT
- {
- private:
- T& ref;
- ValueT const& value_ref;
- public:
- ref_const_ref_actor(
- T& ref_,
- ValueT const& value_ref_
- )
- :
- ref(ref_),
- value_ref(value_ref_)
- {}
-
-
- template<typename T2>
- void operator()(T2 const& /*val*/) const
- {
- this->act(ref,value_ref); // defined in ActionT
- }
-
-
- template<typename IteratorT>
- void operator()(
- IteratorT const& /*first*/,
- IteratorT const& /*last*/
- ) const
- {
- this->act(ref,value_ref); // defined in ActionT
- }
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_ref_const_ref_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/ref_const_ref_const_ref_a.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_const_ref_const_ref_a.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_const_ref_const_ref_a.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,82 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_REF_CONST_REF_CONST_REF_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_REF_CONST_REF_CONST_REF_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_CONST_REF_A
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_CONST_REF_A
 
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy holder. This holder stores a reference to ref
- // , a const reference to value1_ref and a const reference to value2_ref.
- // Typically, value1_ref is a key and value2_ref is value for associative
- // container operations.
- // act methods are feed with ref, value1_ref, value2_ref. The parse result
- // is not used by this holder.
- //
- // (This doc uses convention available in actors.hpp)
- //
- // Constructor:
- // ...(
- // T& ref_,
- // Value1T const& value1_ref_,
- // Value2T const& value2_ref_ );
- // where ref_, value1_ref and value2_ref_ are stored in the holder.
- //
- // Action calls:
- // act(ref, value1_ref, value2_ref);
- //
- // () operators: both
- //
- ///////////////////////////////////////////////////////////////////////////
- template<
- typename T,
- typename Value1T,
- typename Value2T,
- typename ActionT
- >
- class ref_const_ref_const_ref_actor : public ActionT
- {
- private:
- T& ref;
- Value1T const& value1_ref;
- Value2T const& value2_ref;
- public:
- ref_const_ref_const_ref_actor(
- T& ref_,
- Value1T const& value1_ref_,
- Value2T const& value2_ref_
- )
- :
- ref(ref_),
- value1_ref(value1_ref_),
- value2_ref(value2_ref_)
- {}
-
-
- template<typename T2>
- void operator()(T2 const& /*val*/) const
- {
- this->act(ref,value1_ref,value2_ref); // defined in ActionT
- }
-
-
- template<typename IteratorT>
- void operator()(
- IteratorT const& /*first*/,
- IteratorT const& /*last*/
- ) const
- {
- this->act(ref,value1_ref,value2_ref); // defined in ActionT
- }
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/ref_const_ref_value_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_const_ref_value_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_const_ref_value_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,73 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_REF_CONST_REF_VALUE_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_REF_CONST_REF_VALUE_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_VALUE_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_VALUE_ACTOR
 
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy holder. This holder stores a reference to ref
- // and a const reference to value_ref.
- // act methods are feed with ref, value_ref and the parse result.
- //
- // (This doc uses convention available in actors.hpp)
- //
- // Constructor:
- // ...(T& ref_, ValueT const& value_ref_);
- // where ref_ and value_ref_ are stored in the holder.
- //
- // Action calls:
- // act(ref, value_ref, value);
- // act(ref, value_ref, first, last);
- //
- // () operators: both
- //
- ///////////////////////////////////////////////////////////////////////////
- template<
- typename T,
- typename ValueT,
- typename ActionT
- >
- class ref_const_ref_value_actor : public ActionT
- {
- private:
- T& ref;
- ValueT const& value_ref;
- public:
- ref_const_ref_value_actor(
- T& ref_,
- ValueT const& value_ref_
- )
- :
- ref(ref_),
- value_ref(value_ref_)
- {}
-
-
- template<typename T2>
- void operator()(T2 const& val_) const
- {
- this->act(ref,value_ref,val_); // defined in ActionT
- }
-
-
- template<typename IteratorT>
- void operator()(
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- this->act(ref,value_ref,first_,last_); // defined in ActionT
- }
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_value_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_value_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_ref_const_ref_value_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/ref_value_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_value_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_value_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,65 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_REF_VALUE_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_REF_VALUE_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_VALUE_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_VALUE_ACTOR
 
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy holder. This holder stores a reference to ref.
- // act methods are feed with ref and the parse result.
- //
- // (This doc uses convention available in actors.hpp)
- //
- // Constructor:
- // ...(T& ref_);
- // where ref_ is stored.
- //
- // Action calls:
- // act(ref, value);
- // act(ref, first,last);
- //
- // () operators: both
- //
- ///////////////////////////////////////////////////////////////////////////
- template<
- typename T,
- typename ActionT
- >
- class ref_value_actor : public ActionT
- {
- private:
- T& ref;
- public:
- explicit
- ref_value_actor(T& ref_)
- : ref(ref_){}
-
-
- template<typename T2>
- void operator()(T2 const& val_) const
- {
- this->act(ref,val_); // defined in ActionT
- }
-
-
- template<typename IteratorT>
- void operator()(
- IteratorT const& first_,
- IteratorT const& last_
- ) const
- {
- this->act(ref,first_,last_); // defined in ActionT
- }
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_value_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_value_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_ref_value_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/swap_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/swap_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/swap_actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,81 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux_at_[hidden])
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTOR_SWAP_ACTOR_HPP
-#define BOOST_SPIRIT_ACTOR_SWAP_ACTOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SWAP_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SWAP_ACTOR
 
-#include <boost/spirit/actor/ref_value_actor.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- // Summary:
- // A semantic action policy that swaps values.
- // (This doc uses convention available in actors.hpp)
- //
- // Actions (what it does):
- // ref.swap( value_ref );
- //
- // Policy name:
- // swap_action
- //
- // Policy holder, corresponding helper method:
- // ref_value_actor, swap_a( ref );
- // ref_const_ref_actor, swap_a( ref, value_ref );
- //
- // () operators: both
- //
- // See also ref_value_actor and ref_const_ref_actor for more details.
- ///////////////////////////////////////////////////////////////////////////
- template<
- typename T
- >
- class swap_actor
- {
- private:
- T& ref;
- T& swap_ref;
-
- public:
- swap_actor(
- T& ref_,
- T& swap_ref_)
- : ref(ref_), swap_ref(swap_ref_)
- {};
-
- template<typename T2>
- void operator()(T2 const& /*val*/) const
- {
- ref.swap(swap_ref);
- }
-
-
- template<typename IteratorT>
- void operator()(
- IteratorT const& /*first*/,
- IteratorT const& /*last*/
- ) const
- {
- ref.swap(swap_ref);
- }
- };
-
- template<
- typename T
- >
- inline swap_actor<T> swap_a(
- T& ref_,
- T& swap_ref_
- )
- {
- return swap_actor<T>(ref_,swap_ref_);
- }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_swap_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_swap_actor.hpp"
+#endif
 
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_swap_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/actor/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,70 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ACTOR_TYPEOF_HPP)
-#define BOOST_SPIRIT_ACTOR_TYPEOF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
-#include <boost/typeof/typeof.hpp>
-
-namespace boost { namespace spirit {
-
- template<typename T, typename ActionT> class ref_actor;
-
- template<typename T, typename ActionT> class ref_value_actor;
-
- template<typename T, typename ValueT, typename ActionT>
-
- class ref_const_ref_actor;
- template<typename T, typename ValueT, typename ActionT>
-
- class ref_const_ref_value_actor;
- template<typename T, typename Value1T, typename Value2T, typename ActionT>
-
- class ref_const_ref_const_ref_actor;
-
- struct assign_action;
- struct clear_action;
- struct increment_action;
- struct decrement_action;
- struct push_back_action;
- struct push_front_action;
- struct insert_key_action;
- struct insert_at_action;
- struct assign_key_action;
-
- template<typename T> class swap_actor;
-
-}} // namespace boost::spirit
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ref_actor,2)
-#if !defined(BOOST_SPIRIT_CORE_TYPEOF_HPP)
-// this part also lives in the core master header and is deprecated there...
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ref_value_actor,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ref_const_ref_actor,3)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::assign_action)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::push_back_action)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ref_const_ref_value_actor,3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ref_const_ref_const_ref_actor,4)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::clear_action)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::increment_action)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::decrement_action)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::push_front_action)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::insert_key_action)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::insert_at_action)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::assign_key_action)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::swap_actor,1)
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/attribute.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,38 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ATTRIBUTE_MAIN_HPP)
-#define BOOST_SPIRIT_ATTRIBUTE_MAIN_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ATTRIBUTE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ATTRIBUTE
 
-#include <boost/spirit/version.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_attribute.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_attribute.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_attribute.hpp>
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Master header for Spirit.Attributes
-//
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Phoenix predefined maximum limit. This limit defines the maximum
-// number of elements a tuple can hold. This number defaults to 3. The
-// actual maximum is rounded up in multiples of 3. Thus, if this value
-// is 4, the actual limit is 6. The ultimate maximum limit in this
-// implementation is 15.
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(PHOENIX_LIMIT)
-#define PHOENIX_LIMIT 3
-#endif // !defined(PHOENIX_LIMIT)
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/attribute/parametric.hpp>
-#include <boost/spirit/attribute/closure.hpp>
-
-#endif // !defined(BOOST_SPIRIT_ATTRIBUTE_MAIN_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/attribute/closure.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/closure.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/closure.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1079 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_CLOSURE_HPP
-#define BOOST_SPIRIT_CLOSURE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/core/non_terminal/parser_context.hpp>
-#include <boost/spirit/attribute/parametric.hpp>
-#include <boost/spirit/attribute/closure_context.hpp>
-#include <boost/spirit/attribute/closure_fwd.hpp>
-
-#include <boost/spirit/phoenix/closures.hpp>
-#include <boost/spirit/phoenix/primitives.hpp>
-#include <boost/spirit/phoenix/casts.hpp>
-#include <boost/spirit/phoenix/operators.hpp>
-#include <boost/spirit/phoenix/tuple_helpers.hpp>
-
-#include <boost/static_assert.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit predefined maximum closure limit. This limit defines the maximum
-// number of elements a closure can hold. This number defaults to 3. The
-// actual maximum is rounded up in multiples of 3. Thus, if this value
-// is 4, the actual limit is 6. The ultimate maximum limit in this
-// implementation is 15.
-//
-// It should NOT be greater than PHOENIX_LIMIT!
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#if !defined(BOOST_SPIRIT_CLOSURE_LIMIT)
-#define BOOST_SPIRIT_CLOSURE_LIMIT PHOENIX_LIMIT
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_closure.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_closure.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// ensure BOOST_SPIRIT_CLOSURE_LIMIT <= PHOENIX_LIMIT and SPIRIT_CLOSURE_LIMIT <= 15
-//
-///////////////////////////////////////////////////////////////////////////////
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_CLOSURE_LIMIT <= PHOENIX_LIMIT);
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_CLOSURE_LIMIT <= 15);
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // closure_context class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ClosureT>
- class closure_context : public parser_context_base
- {
- public:
-
- typedef typename phoenix::tuple_element<0,
- typename ClosureT::tuple_t>::type attr_t;
- typedef ClosureT base_t;
- typedef closure_context_linker<closure_context<ClosureT> >
- context_linker_t;
-
- closure_context(ClosureT const& clos)
- : frame(clos) {}
-
- ~closure_context() {}
-
- template <typename ParserT, typename ScannerT>
- void pre_parse(ParserT const&, ScannerT const&) {}
-
- template <typename ResultT, typename ParserT, typename ScannerT>
- ResultT& post_parse(ResultT& hit, ParserT const&, ScannerT const&)
- { hit.value(frame[phoenix::tuple_index<0>()]); return hit; }
-
- private:
-
- phoenix::closure_frame<typename ClosureT::phoenix_closure_t> frame;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // init_closure_context class
- //
- // The init_closure_context class is a special parser context type
- // which additionally initializes a closure contained in the derived
- // parser with values from a given tuple. Please note, that this
- // given tuple does not contain the required values directly, it
- // contains phoenix::actor objects. These actors have to be
- // dereferenced to gain the values to be used for initialization
- // (this is done by the help of the phoenix::convert_actors<>
- // template).
- //
- ///////////////////////////////////////////////////////////////////////////
-
- template <typename ClosureT>
- class init_closure_context : public parser_context_base
- {
- typedef typename ClosureT::tuple_t tuple_t;
- typedef typename ClosureT::closure_t closure_t;
-
- public:
-
- init_closure_context(ClosureT const& clos)
- : frame(clos.subject(), phoenix::convert_actors<tuple_t>(clos.init)) {}
-
- ~init_closure_context() {}
-
- template <typename ParserT, typename ScannerT>
- void pre_parse(ParserT const& /*p*/, ScannerT const&) {}
-
- template <typename ResultT, typename ParserT, typename ScannerT>
- ResultT& post_parse(ResultT& hit, ParserT const&, ScannerT const&)
- { hit.value(frame[phoenix::tuple_index<0>()]); return hit; }
-
- private:
-
- phoenix::closure_frame<closure_t> frame;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // init_closure_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ParserT, typename ActorTupleT>
- struct init_closure_parser
- : public unary<ParserT, parser<init_closure_parser<ParserT, ActorTupleT> > >
- {
- typedef init_closure_parser<ParserT, ActorTupleT> self_t;
- typedef unary<ParserT, parser<self_t> > base_t;
- typedef typename ParserT::phoenix_closure_t closure_t;
- typedef typename ParserT::tuple_t tuple_t;
- typedef typename phoenix::tuple_element<0, tuple_t>::type attr_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, attr_t>::type type;
- };
-
- init_closure_parser(ParserT const& p, ActorTupleT const& init_)
- : base_t(p), init(init_) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse_main(ScannerT const& scan) const
- {
- return this->subject().parse_main(scan);
- }
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef init_closure_context<self_t> init_context_t;
- typedef parser_scanner_linker<ScannerT> scanner_t;
- typedef closure_context_linker<init_context_t> context_t;
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- BOOST_SPIRIT_CONTEXT_PARSE(
- scan, *this, scanner_t, context_t, result_t);
- }
-
- ActorTupleT init;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // closure class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename DerivedT
- , typename T0
- , typename T1
- , typename T2
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
- , typename T3
- , typename T4
- , typename T5
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
- , typename T6
- , typename T7
- , typename T8
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
- , typename T9
- , typename T10
- , typename T11
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
- , typename T12
- , typename T13
- , typename T14
- #endif
- #endif
- #endif
- #endif
- >
- struct closure :
- public phoenix::closure<
- T0, T1, T2
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
- , T3, T4, T5
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
- , T6, T7, T8
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
- , T9, T10, T11
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
- , T12, T13, T14
- #endif
- #endif
- #endif
- #endif
- >
- {
- typedef phoenix::closure<
- T0, T1, T2
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
- , T3, T4, T5
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
- , T6, T7, T8
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
- , T9, T10, T11
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
- , T12, T13, T14
- #endif
- #endif
- #endif
- #endif
- > phoenix_closure_t;
-
- typedef closure_context<DerivedT> context_t;
-
- template <typename DerivedT2>
- struct aux
- {
- DerivedT2& aux_derived()
- { return *static_cast<DerivedT2*>(this); }
-
- DerivedT2 const& aux_derived() const
- { return *static_cast<DerivedT2 const*>(this); }
-
- // initialization functions
- template <typename A>
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type
- >
- >
- operator()(A const &a) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef phoenix::tuple<a_t> actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a)
- )
- );
- }
-
- template <typename A, typename B>
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type
- >
- >
- operator()(A const &a, B const &b) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef phoenix::tuple<a_t, b_t> actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b)
- )
- );
- }
-
- template <typename A, typename B, typename C>
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type
- >
- >
- operator()(A const &a, B const &b, C const &c) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef phoenix::tuple<a_t, b_t, c_t> actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c)
- )
- );
- }
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
-
- template <
- typename A, typename B, typename C, typename D
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d)
- )
- );
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e)
- )
- );
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f)
- )
- );
- }
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g)
- )
- );
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type,
- typename phoenix::as_actor<H>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g, H const &h
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef typename phoenix::as_actor<H>::type h_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g),
- phoenix::as_actor<H>::convert(h)
- )
- );
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type,
- typename phoenix::as_actor<H>::type,
- typename phoenix::as_actor<I>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g, H const &h, I const &i
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef typename phoenix::as_actor<H>::type h_t;
- typedef typename phoenix::as_actor<I>::type i_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g),
- phoenix::as_actor<H>::convert(h),
- phoenix::as_actor<I>::convert(i)
- )
- );
- }
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type,
- typename phoenix::as_actor<H>::type,
- typename phoenix::as_actor<I>::type,
- typename phoenix::as_actor<J>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g, H const &h, I const &i, J const &j
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef typename phoenix::as_actor<H>::type h_t;
- typedef typename phoenix::as_actor<I>::type i_t;
- typedef typename phoenix::as_actor<J>::type j_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g),
- phoenix::as_actor<H>::convert(h),
- phoenix::as_actor<I>::convert(i),
- phoenix::as_actor<J>::convert(j)
- )
- );
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type,
- typename phoenix::as_actor<H>::type,
- typename phoenix::as_actor<I>::type,
- typename phoenix::as_actor<J>::type,
- typename phoenix::as_actor<K>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g, H const &h, I const &i, J const &j,
- K const &k
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef typename phoenix::as_actor<H>::type h_t;
- typedef typename phoenix::as_actor<I>::type i_t;
- typedef typename phoenix::as_actor<J>::type j_t;
- typedef typename phoenix::as_actor<K>::type k_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
- k_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g),
- phoenix::as_actor<H>::convert(h),
- phoenix::as_actor<I>::convert(i),
- phoenix::as_actor<J>::convert(j),
- phoenix::as_actor<K>::convert(k)
- )
- );
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type,
- typename phoenix::as_actor<H>::type,
- typename phoenix::as_actor<I>::type,
- typename phoenix::as_actor<J>::type,
- typename phoenix::as_actor<K>::type,
- typename phoenix::as_actor<L>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g, H const &h, I const &i, J const &j,
- K const &k, L const &l
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef typename phoenix::as_actor<H>::type h_t;
- typedef typename phoenix::as_actor<I>::type i_t;
- typedef typename phoenix::as_actor<J>::type j_t;
- typedef typename phoenix::as_actor<K>::type k_t;
- typedef typename phoenix::as_actor<L>::type l_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
- k_t, l_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g),
- phoenix::as_actor<H>::convert(h),
- phoenix::as_actor<I>::convert(i),
- phoenix::as_actor<J>::convert(j),
- phoenix::as_actor<K>::convert(k),
- phoenix::as_actor<L>::convert(l)
- )
- );
- }
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type,
- typename phoenix::as_actor<H>::type,
- typename phoenix::as_actor<I>::type,
- typename phoenix::as_actor<J>::type,
- typename phoenix::as_actor<K>::type,
- typename phoenix::as_actor<L>::type,
- typename phoenix::as_actor<M>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g, H const &h, I const &i, J const &j,
- K const &k, L const &l, M const &m
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef typename phoenix::as_actor<H>::type h_t;
- typedef typename phoenix::as_actor<I>::type i_t;
- typedef typename phoenix::as_actor<J>::type j_t;
- typedef typename phoenix::as_actor<K>::type k_t;
- typedef typename phoenix::as_actor<L>::type l_t;
- typedef typename phoenix::as_actor<M>::type m_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
- k_t, l_t, m_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g),
- phoenix::as_actor<H>::convert(h),
- phoenix::as_actor<I>::convert(i),
- phoenix::as_actor<J>::convert(j),
- phoenix::as_actor<K>::convert(k),
- phoenix::as_actor<L>::convert(l),
- phoenix::as_actor<M>::convert(m)
- )
- );
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type,
- typename phoenix::as_actor<H>::type,
- typename phoenix::as_actor<I>::type,
- typename phoenix::as_actor<J>::type,
- typename phoenix::as_actor<K>::type,
- typename phoenix::as_actor<L>::type,
- typename phoenix::as_actor<M>::type,
- typename phoenix::as_actor<N>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g, H const &h, I const &i, J const &j,
- K const &k, L const &l, M const &m, N const &n
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef typename phoenix::as_actor<H>::type h_t;
- typedef typename phoenix::as_actor<I>::type i_t;
- typedef typename phoenix::as_actor<J>::type j_t;
- typedef typename phoenix::as_actor<K>::type k_t;
- typedef typename phoenix::as_actor<L>::type l_t;
- typedef typename phoenix::as_actor<M>::type m_t;
- typedef typename phoenix::as_actor<N>::type n_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
- k_t, l_t, m_t, n_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g),
- phoenix::as_actor<H>::convert(h),
- phoenix::as_actor<I>::convert(i),
- phoenix::as_actor<J>::convert(j),
- phoenix::as_actor<K>::convert(k),
- phoenix::as_actor<L>::convert(l),
- phoenix::as_actor<M>::convert(m),
- phoenix::as_actor<N>::convert(n)
- )
- );
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
- >
- init_closure_parser<
- DerivedT2,
- phoenix::tuple<
- typename phoenix::as_actor<A>::type,
- typename phoenix::as_actor<B>::type,
- typename phoenix::as_actor<C>::type,
- typename phoenix::as_actor<D>::type,
- typename phoenix::as_actor<E>::type,
- typename phoenix::as_actor<F>::type,
- typename phoenix::as_actor<G>::type,
- typename phoenix::as_actor<H>::type,
- typename phoenix::as_actor<I>::type,
- typename phoenix::as_actor<J>::type,
- typename phoenix::as_actor<K>::type,
- typename phoenix::as_actor<L>::type,
- typename phoenix::as_actor<M>::type,
- typename phoenix::as_actor<N>::type,
- typename phoenix::as_actor<O>::type
- >
- >
- operator()(
- A const &a, B const &b, C const &c, D const &d, E const &e,
- F const &f, G const &g, H const &h, I const &i, J const &j,
- K const &k, L const &l, M const &m, N const &n, O const &o
- ) const
- {
- typedef typename phoenix::as_actor<A>::type a_t;
- typedef typename phoenix::as_actor<B>::type b_t;
- typedef typename phoenix::as_actor<C>::type c_t;
- typedef typename phoenix::as_actor<D>::type d_t;
- typedef typename phoenix::as_actor<E>::type e_t;
- typedef typename phoenix::as_actor<F>::type f_t;
- typedef typename phoenix::as_actor<G>::type g_t;
- typedef typename phoenix::as_actor<H>::type h_t;
- typedef typename phoenix::as_actor<I>::type i_t;
- typedef typename phoenix::as_actor<J>::type j_t;
- typedef typename phoenix::as_actor<K>::type k_t;
- typedef typename phoenix::as_actor<L>::type l_t;
- typedef typename phoenix::as_actor<M>::type m_t;
- typedef typename phoenix::as_actor<N>::type n_t;
- typedef typename phoenix::as_actor<O>::type o_t;
- typedef phoenix::tuple<
- a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
- k_t, l_t, m_t, n_t, o_t
- > actor_tuple_t;
-
- return init_closure_parser<DerivedT2, actor_tuple_t>(
- aux_derived(),
- actor_tuple_t(
- phoenix::as_actor<A>::convert(a),
- phoenix::as_actor<B>::convert(b),
- phoenix::as_actor<C>::convert(c),
- phoenix::as_actor<D>::convert(d),
- phoenix::as_actor<E>::convert(e),
- phoenix::as_actor<F>::convert(f),
- phoenix::as_actor<G>::convert(g),
- phoenix::as_actor<H>::convert(h),
- phoenix::as_actor<I>::convert(i),
- phoenix::as_actor<J>::convert(j),
- phoenix::as_actor<K>::convert(k),
- phoenix::as_actor<L>::convert(l),
- phoenix::as_actor<M>::convert(m),
- phoenix::as_actor<N>::convert(n),
- phoenix::as_actor<O>::convert(o)
- )
- );
- }
-
- #endif
- #endif
- #endif
- #endif
- };
-
- ~closure() {}
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // overloads for chseq_p and str_p taking in phoenix actors
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ActorT>
- struct container_begin
- {
- typedef container_begin<ActorT> self_t;
-
- template <typename TupleT>
- struct result
- {
- typedef typename phoenix::actor_result<ActorT, TupleT>
- ::plain_type::iterator type;
- };
-
- container_begin(ActorT actor_)
- : actor(actor_) {}
-
- template <typename TupleT>
- typename phoenix::actor_result<self_t, TupleT>::type
- eval(TupleT const& /*args*/) const
- { return actor().begin(); }
-
- ActorT actor;
- };
-
- template <typename ActorT>
- struct container_end
- {
- typedef container_begin<ActorT> self_t;
-
- template <typename TupleT>
- struct result
- {
- typedef typename phoenix::actor_result<ActorT, TupleT>
- ::plain_type::iterator type;
- };
-
- container_end(ActorT actor_)
- : actor(actor_) {}
-
- template <typename TupleT>
- typename phoenix::actor_result<self_t, TupleT>::type
- eval(TupleT const& /*args*/) const
- { return actor().end(); }
-
- ActorT actor;
- };
-
- template <typename BaseT>
- inline f_chseq<
- phoenix::actor<container_begin<phoenix::actor<BaseT> > >,
- phoenix::actor<container_end<phoenix::actor<BaseT> > >
- >
- f_chseq_p(phoenix::actor<BaseT> const& a)
- {
- typedef phoenix::actor<container_begin<phoenix::actor<BaseT> > >
- container_begin_t;
- typedef phoenix::actor<container_end<phoenix::actor<BaseT> > >
- container_end_t;
- typedef f_chseq<container_begin_t, container_end_t> result_t;
-
- return result_t(container_begin_t(a), container_end_t(a));
- }
-
- template <typename BaseT>
- inline f_strlit<
- phoenix::actor<container_begin<phoenix::actor<BaseT> > >,
- phoenix::actor<container_end<phoenix::actor<BaseT> > >
- >
- f_str_p(phoenix::actor<BaseT> const& a)
- {
- typedef phoenix::actor<container_begin<phoenix::actor<BaseT> > >
- container_begin_t;
- typedef phoenix::actor<container_end<phoenix::actor<BaseT> > >
- container_end_t;
- typedef f_strlit<container_begin_t, container_end_t> result_t;
-
- return result_t(container_begin_t(a), container_end_t(a));
- }
-
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_closure.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/attribute/closure_context.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/closure_context.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/closure_context.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,51 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_HPP)
-#define BOOST_SPIRIT_CLOSURE_CONTEXT_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE_CONTEXT
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE_CONTEXT
 
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_closure_context.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_closure_context.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_closure_context.hpp>
 
-#if !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED)
-#define BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// closure_context_linker
-// { helper template for the closure extendability }
-//
-// This classes can be 'overloaded' (defined elsewhere), to plug
-// in additional functionality into the closure parsing process.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template<typename ContextT>
-struct closure_context_linker : public ContextT
-{
- template <typename ParserT>
- closure_context_linker(ParserT const& p)
- : ContextT(p) {}
-
- template <typename ParserT, typename ScannerT>
- void pre_parse(ParserT const& p, ScannerT const& scan)
- { ContextT::pre_parse(p, scan); }
-
- template <typename ResultT, typename ParserT, typename ScannerT>
- ResultT&
- post_parse(ResultT& hit, ParserT const& p, ScannerT const& scan)
- { return ContextT::post_parse(hit, p, scan); }
-};
-
-#endif // !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED)
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_CLOSURE_CONTEXT_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/attribute/closure_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/closure_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/closure_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,65 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_CLOSURE_FWD_HPP)
-#define BOOST_SPIRIT_CLOSURE_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE_FWD
 
-#include <boost/spirit/phoenix/tuples.hpp>
-
-#if !defined(BOOST_SPIRIT_CLOSURE_LIMIT)
-# define BOOST_SPIRIT_CLOSURE_LIMIT PHOENIX_LIMIT
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_closure_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_closure_fwd.hpp"
 #endif
 
-namespace boost { namespace spirit {
-
- template<typename ClosureT>
- class closure_context;
-
- template <typename ClosureT>
- class init_closure_context;
-
- template <typename ParserT, typename ActorTupleT>
- struct init_closure_parser;
-
- template <
- typename DerivedT
- , typename T0 = phoenix::nil_t
- , typename T1 = phoenix::nil_t
- , typename T2 = phoenix::nil_t
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
- , typename T3 = phoenix::nil_t
- , typename T4 = phoenix::nil_t
- , typename T5 = phoenix::nil_t
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
- , typename T6 = phoenix::nil_t
- , typename T7 = phoenix::nil_t
- , typename T8 = phoenix::nil_t
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
- , typename T9 = phoenix::nil_t
- , typename T10 = phoenix::nil_t
- , typename T11 = phoenix::nil_t
-
- #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
- , typename T12 = phoenix::nil_t
- , typename T13 = phoenix::nil_t
- , typename T14 = phoenix::nil_t
-
- #endif
- #endif
- #endif
- #endif
- >
- struct closure;
-
-}} // namespace boost::spirit
-
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_closure_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/attribute/parametric.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/parametric.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/parametric.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,140 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_PARAMETRIC_HPP
-#define BOOST_SPIRIT_PARAMETRIC_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARAMETRIC
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARAMETRIC
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // f_chlit class [ functional version of chlit ]
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ChGenT>
- struct f_chlit : public char_parser<f_chlit<ChGenT> >
- {
- f_chlit(ChGenT chgen_)
- : chgen(chgen_) {}
-
- template <typename T>
- bool test(T ch) const
- { return ch == chgen(); }
-
- ChGenT chgen;
- };
-
- template <typename ChGenT>
- inline f_chlit<ChGenT>
- f_ch_p(ChGenT chgen)
- { return f_chlit<ChGenT>(chgen); }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // f_range class [ functional version of range ]
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ChGenAT, typename ChGenBT>
- struct f_range : public char_parser<f_range<ChGenAT, ChGenBT> >
- {
- f_range(ChGenAT first_, ChGenBT last_)
- : first(first_), last(last_)
- {}
-
- template <typename T>
- bool test(T ch) const
- {
- BOOST_SPIRIT_ASSERT(first() <= last());
- return (ch >= first()) && (ch <= last());
- }
-
- ChGenAT first;
- ChGenBT last;
- };
-
- template <typename ChGenAT, typename ChGenBT>
- inline f_range<ChGenAT, ChGenBT>
- f_range_p(ChGenAT first, ChGenBT last)
- { return f_range<ChGenAT, ChGenBT>(first, last); }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // f_chseq class [ functional version of chseq ]
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename IterGenAT, typename IterGenBT>
- class f_chseq : public parser<f_chseq<IterGenAT, IterGenBT> >
- {
- public:
-
- typedef f_chseq<IterGenAT, IterGenBT> self_t;
-
- f_chseq(IterGenAT first_, IterGenBT last_)
- : first(first_), last(last_) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::string_parser_parse<result_t>(first(), last(), scan);
- }
-
- private:
-
- IterGenAT first;
- IterGenBT last;
- };
-
- template <typename IterGenAT, typename IterGenBT>
- inline f_chseq<IterGenAT, IterGenBT>
- f_chseq_p(IterGenAT first, IterGenBT last)
- { return f_chseq<IterGenAT, IterGenBT>(first, last); }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // f_strlit class [ functional version of strlit ]
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename IterGenAT, typename IterGenBT>
- class f_strlit : public parser<f_strlit<IterGenAT, IterGenBT> >
- {
- public:
-
- typedef f_strlit<IterGenAT, IterGenBT> self_t;
-
- f_strlit(IterGenAT first, IterGenBT last)
- : seq(first, last) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::contiguous_parser_parse<result_t>
- (seq, scan, scan);
- }
-
- private:
-
- f_chseq<IterGenAT, IterGenBT> seq;
- };
-
- template <typename IterGenAT, typename IterGenBT>
- inline f_strlit<IterGenAT, IterGenBT>
- f_str_p(IterGenAT first, IterGenBT last)
- { return f_strlit<IterGenAT, IterGenBT>(first, last); }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parametric.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parametric.hpp"
+#endif
 
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_parametric.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/attribute/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,64 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ATTRIBUTE_TYPEOF_HPP)
-#define BOOST_SPIRIT_ATTRIBUTE_TYPEOF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
-#include <boost/typeof/typeof.hpp>
-
-#include <boost/spirit/core/typeof.hpp>
-
-#include <boost/spirit/attribute/closure_fwd.hpp>
-
-namespace boost { namespace spirit {
-
- // parametric.hpp
- template<typename ChGenT> struct f_chlit;
- template<typename ChGenAT, typename ChGenBT> struct f_range;
- template<typename IterGenAT, typename IterGenBT> class f_chseq;
- template<typename IterGenAT, typename IterGenBT> class f_strlit;
-
-}} // namespace boost::spirit
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-
-// parametric.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::f_chlit,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::f_range,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::f_chseq,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::f_strlit,2)
-
-
-// closure.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::closure,BOOST_SPIRIT_CLOSURE_LIMIT)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::closure_context,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::init_closure_context,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::init_closure_parser,2)
-
-
-#if BOOST_SPIRIT_CLOSURE_LIMIT > 12
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::closure,12)
-#endif
-#if BOOST_SPIRIT_CLOSURE_LIMIT > 9
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::closure, 9)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
-#if BOOST_SPIRIT_CLOSURE_LIMIT > 6
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::closure, 6)
-#endif
-#if BOOST_SPIRIT_CLOSURE_LIMIT > 3
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::closure, 3)
-#endif
-
-
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core.hpp (original)
+++ branches/proto/v4/boost/spirit/core.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,74 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2003 Hartmut Kaiser
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2002 Raghavendra Satish
- Copyright (c) 2001 Bruce Florman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_CORE_MAIN_HPP)
-#define BOOST_SPIRIT_CORE_MAIN_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CORE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CORE
 
-#include <boost/spirit/version.hpp>
-#include <boost/spirit/debug.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit.Core includes
-//
-///////////////////////////////////////////////////////////////////////////////
-
-// Spirit.Core.Kernel
-#include <boost/spirit/core/config.hpp>
-#include <boost/spirit/core/nil.hpp>
-#include <boost/spirit/core/match.hpp>
-#include <boost/spirit/core/parser.hpp>
-
-// Spirit.Core.Primitives
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/primitives/numerics.hpp>
-
-// Spirit.Core.Scanner
-#include <boost/spirit/core/scanner/scanner.hpp>
-#include <boost/spirit/core/scanner/skipper.hpp>
-
-// Spirit.Core.NonTerminal
-#include <boost/spirit/core/non_terminal/subrule.hpp>
-#include <boost/spirit/core/non_terminal/rule.hpp>
-#include <boost/spirit/core/non_terminal/grammar.hpp>
-
-// Spirit.Core.Composite
-#include <boost/spirit/core/composite/actions.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/core/composite/directives.hpp>
-#include <boost/spirit/core/composite/epsilon.hpp>
-#include <boost/spirit/core/composite/sequence.hpp>
-#include <boost/spirit/core/composite/sequential_and.hpp>
-#include <boost/spirit/core/composite/sequential_or.hpp>
-#include <boost/spirit/core/composite/alternative.hpp>
-#include <boost/spirit/core/composite/difference.hpp>
-#include <boost/spirit/core/composite/intersection.hpp>
-#include <boost/spirit/core/composite/exclusive_or.hpp>
-#include <boost/spirit/core/composite/kleene_star.hpp>
-#include <boost/spirit/core/composite/positive.hpp>
-#include <boost/spirit/core/composite/optional.hpp>
-#include <boost/spirit/core/composite/list.hpp>
-#include <boost/spirit/core/composite/no_actions.hpp>
-
-// Deprecated interface includes
-#include <boost/spirit/actor/assign_actor.hpp>
-#include <boost/spirit/actor/push_back_actor.hpp>
-
-#if defined(BOOST_SPIRIT_DEBUG)
- //////////////////////////////////
- #include <boost/spirit/debug/parser_names.hpp>
-
-#endif // BOOST_SPIRIT_DEBUG
-
-#endif // BOOST_SPIRIT_CORE_MAIN_HPP
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_core.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_core.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_core.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/assert.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/assert.hpp (original)
+++ branches/proto/v4/boost/spirit/core/assert.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,39 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ASSERT_HPP)
-#define BOOST_SPIRIT_ASSERT_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSERT
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSERT
 
-#include <boost/config.hpp>
-#include <boost/throw_exception.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_assert.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_assert.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// BOOST_SPIRIT_ASSERT is used throughout the framework. It can be
-// overridden by the user. If BOOST_SPIRIT_ASSERT_EXCEPTION is defined,
-// then that will be thrown, otherwise, BOOST_SPIRIT_ASSERT simply turns
-// into a plain assert()
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_ASSERT)
-#if defined(NDEBUG)
- #define BOOST_SPIRIT_ASSERT(x)
-#elif defined (BOOST_SPIRIT_ASSERT_EXCEPTION)
- #define BOOST_SPIRIT_ASSERT_AUX(f, l, x) BOOST_SPIRIT_ASSERT_AUX2(f, l, x)
- #define BOOST_SPIRIT_ASSERT_AUX2(f, l, x) \
- do{ if (!(x)) boost::throw_exception( \
- BOOST_SPIRIT_ASSERT_EXCEPTION(f "(" #l "): " #x)); } while(0)
- #define BOOST_SPIRIT_ASSERT(x) BOOST_SPIRIT_ASSERT_AUX(__FILE__, __LINE__, x)
-#else
- #include <cassert>
- #define BOOST_SPIRIT_ASSERT(x) assert(x)
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
-#endif // !defined(BOOST_SPIRIT_ASSERT)
+#include <boost/spirit/include/classic_assert.hpp>
 
-#endif // BOOST_SPIRIT_ASSERT_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/actions.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/actions.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/actions.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,123 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ACTIONS_HPP
-#define BOOST_SPIRIT_ACTIONS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTIONS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTIONS
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // action class
- //
- // The action class binds a parser with a user defined semantic
- // action. Instances of action are never created manually. Instead,
- // action objects are typically created indirectly through
- // expression templates of the form:
- //
- // p[f]
- //
- // where p is a parser and f is a function or functor. The semantic
- // action may be a function or a functor. When the parser is
- // successful, the actor calls the scanner's action_policy policy
- // (see scanner.hpp):
- //
- // scan.do_action(actor, attribute, first, last);
- //
- // passing in these information:
- //
- // actor: The action's function or functor
- // attribute: The match (returned by the parser) object's
- // attribute (see match.hpp)
- // first: Iterator pointing to the start of the matching
- // portion of the input
- // last: Iterator pointing to one past the end of the
- // matching portion of the input
- //
- // It is the responsibility of the scanner's action_policy policy to
- // dispatch the function or functor as it sees fit. The expected
- // function or functor signature depends on the parser being
- // wrapped. In general, if the attribute type of the parser being
- // wrapped is a nil_t, the function or functor expect the signature:
- //
- // void func(Iterator first, Iterator last); // functions
- //
- // struct ftor // functors
- // {
- // void func(Iterator first, Iterator last) const;
- // };
- //
- // where Iterator is the type of the iterator that is being used and
- // first and last are the iterators pointing to the matching portion
- // of the input.
- //
- // If the attribute type of the parser being wrapped is not a nil_t,
- // the function or functor usually expect the signature:
- //
- // void func(T val); // functions
- //
- // struct ftor // functors
- // {
- // void func(T val) const;
- // };
- //
- // where T is the attribute type and val is the attribute value
- // returned by the parser being wrapped.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ParserT, typename ActionT>
- class action : public unary<ParserT, parser<action<ParserT, ActionT> > >
- {
- public:
-
- typedef action<ParserT, ActionT> self_t;
- typedef action_parser_category parser_category_t;
- typedef unary<ParserT, parser<self_t> > base_t;
- typedef ActionT predicate_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- action(ParserT const& p, ActionT const& a)
- : base_t(p)
- , actor(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename ScannerT::iterator_t iterator_t;
- typedef typename parser_result<self_t, ScannerT>::type result_t;
-
- scan.at_end(); // allow skipper to take effect
- iterator_t save = scan.first;
- result_t hit = this->subject().parse(scan);
- if (hit)
- {
- typename result_t::return_t val = hit.value();
- scan.do_action(actor, val, save, scan.first);
- }
- return hit;
- }
-
- ActionT const& predicate() const { return actor; }
-
- private:
-
- ActionT actor;
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_actions.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_actions.hpp"
+#endif
 
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_actions.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/composite/alternative.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/alternative.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/alternative.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,134 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ALTERNATIVE_HPP)
-#define BOOST_SPIRIT_ALTERNATIVE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ALTERNATIVE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ALTERNATIVE
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // alternative class
- //
- // Handles expressions of the form:
- //
- // a | b
- //
- // where a and b are parsers. The expression returns a composite
- // parser that matches a or b. One (not both) of the operands may
- // be a literal char, wchar_t or a primitive string char const*,
- // wchar_t const*.
- //
- // The expression is short circuit evaluated. b is never touched
- // when a is returns a successful match.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct alternative_parser_gen;
-
- template <typename A, typename B>
- struct alternative
- : public binary<A, B, parser<alternative<A, B> > >
- {
- typedef alternative<A, B> self_t;
- typedef binary_parser_category parser_category_t;
- typedef alternative_parser_gen parser_generator_t;
- typedef binary<A, B, parser<self_t> > base_t;
-
- alternative(A const& a, B const& b)
- : base_t(a, b) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
- { // scope for save
- iterator_t save = scan.first;
- if (result_t hit = this->left().parse(scan))
- return hit;
- scan.first = save;
- }
- return this->right().parse(scan);
- }
- };
-
- struct alternative_parser_gen
- {
- template <typename A, typename B>
- struct result
- {
- typedef
- alternative<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- type;
- };
-
- template <typename A, typename B>
- static alternative<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- generate(A const& a, B const& b)
- {
- return alternative<BOOST_DEDUCED_TYPENAME as_parser<A>::type,
- BOOST_DEDUCED_TYPENAME as_parser<B>::type>
- (as_parser<A>::convert(a), as_parser<B>::convert(b));
- }
- };
-
- template <typename A, typename B>
- alternative<A, B>
- operator|(parser<A> const& a, parser<B> const& b);
-
- template <typename A>
- alternative<A, chlit<char> >
- operator|(parser<A> const& a, char b);
-
- template <typename B>
- alternative<chlit<char>, B>
- operator|(char a, parser<B> const& b);
-
- template <typename A>
- alternative<A, strlit<char const*> >
- operator|(parser<A> const& a, char const* b);
-
- template <typename B>
- alternative<strlit<char const*>, B>
- operator|(char const* a, parser<B> const& b);
-
- template <typename A>
- alternative<A, chlit<wchar_t> >
- operator|(parser<A> const& a, wchar_t b);
-
- template <typename B>
- alternative<chlit<wchar_t>, B>
- operator|(wchar_t a, parser<B> const& b);
-
- template <typename A>
- alternative<A, strlit<wchar_t const*> >
- operator|(parser<A> const& a, wchar_t const* b);
-
- template <typename B>
- alternative<strlit<wchar_t const*>, B>
- operator|(wchar_t const* a, parser<B> const& b);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_alternative.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_alternative.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_alternative.hpp>
 
-#include <boost/spirit/core/composite/impl/alternative.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/composite.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/composite.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/composite.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,138 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_COMPOSITE_HPP)
-#define BOOST_SPIRIT_COMPOSITE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_COMPOSITE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_COMPOSITE
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/compressed_pair.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // unary class.
- //
- // Composite class composed of a single subject. This template class
- // is parameterized by the subject type S and a base class to
- // inherit from, BaseT. The unary class is meant to be a base class
- // to inherit from. The inheritance structure, given the BaseT
- // template parameter places the unary class in the middle of a
- // linear, single parent hierarchy. For instance, given a class S
- // and a base class B, a class D can derive from unary:
- //
- // struct D : public unary<S, B> {...};
- //
- // The inheritance structure is thus:
- //
- // B
- // |
- // unary (has S)
- // |
- // D
- //
- // The subject can be accessed from the derived class D as:
- // this->subject();
- //
- // Typically, the subject S is specified as typename S::embed_t.
- // embed_t specifies how the subject is embedded in the composite
- // (See parser.hpp for details).
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename S, typename BaseT>
- class unary : public BaseT
- {
- public:
-
- typedef BaseT base_t;
- typedef typename boost::call_traits<S>::param_type param_t;
- typedef typename boost::call_traits<S>::const_reference return_t;
- typedef S subject_t;
- typedef typename S::embed_t subject_embed_t;
-
- unary(param_t subj_)
- : base_t(), subj(subj_) {}
-
- unary(BaseT const& base, param_t subj_)
- : base_t(base), subj(subj_) {}
-
- return_t
- subject() const
- { return subj; }
-
- private:
-
- subject_embed_t subj;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // binary class.
- //
- // Composite class composed of a pair (left and right). This
- // template class is parameterized by the left and right subject
- // types A and B and a base class to inherit from, BaseT. The binary
- // class is meant to be a base class to inherit from. The
- // inheritance structure, given the BaseT template parameter places
- // the binary class in the middle of a linear, single parent
- // hierarchy. For instance, given classes X and Y and a base class
- // B, a class D can derive from binary:
- //
- // struct D : public binary<X, Y, B> {...};
- //
- // The inheritance structure is thus:
- //
- // B
- // |
- // binary (has X and Y)
- // |
- // D
- //
- // The left and right subjects can be accessed from the derived
- // class D as: this->left(); and this->right();
- //
- // Typically, the pairs X and Y are specified as typename X::embed_t
- // and typename Y::embed_t. embed_t specifies how the subject is
- // embedded in the composite (See parser.hpp for details).
- //
- ///////////////////////////////////////////////////////////////////////////////
- template <typename A, typename B, typename BaseT>
- class binary : public BaseT
- {
- public:
-
- typedef BaseT base_t;
- typedef typename boost::call_traits<A>::param_type left_param_t;
- typedef typename boost::call_traits<A>::const_reference left_return_t;
- typedef typename boost::call_traits<B>::param_type right_param_t;
- typedef typename boost::call_traits<B>::const_reference right_return_t;
- typedef A left_t;
- typedef typename A::embed_t left_embed_t;
- typedef B right_t;
- typedef typename B::embed_t right_embed_t;
-
- binary(left_param_t a, right_param_t b)
- : base_t(), subj(a, b) {}
-
- left_return_t
- left() const
- { return subj.first(); }
-
- right_return_t
- right() const
- { return subj.second(); }
-
- private:
-
- boost::compressed_pair<left_embed_t, right_embed_t> subj;
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_composite.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_composite.hpp"
+#endif
 
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_composite.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/composite/difference.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/difference.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/difference.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,137 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_DIFFERENCE_HPP)
-#define BOOST_SPIRIT_DIFFERENCE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DIFFERENCE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_DIFFERENCE
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // difference: a - b; Matches a but not b
- //
- // Handles expressions of the form:
- //
- // a - b
- //
- // where a and b are parsers. The expression returns a composite
- // parser that matches a but not b. One (not both) of the operands
- // may be a literal char, wchar_t or a primitive string char const*,
- // wchar_t const*.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct difference_parser_gen;
-
- template <typename A, typename B>
- struct difference
- : public binary<A, B, parser<difference<A, B> > >
- {
- typedef difference<A, B> self_t;
- typedef binary_parser_category parser_category_t;
- typedef difference_parser_gen parser_generator_t;
- typedef binary<A, B, parser<self_t> > base_t;
-
- difference(A const& a, B const& b)
- : base_t(a, b) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
- iterator_t save = scan.first;
- if (result_t hl = this->left().parse(scan))
- {
- std::swap(save, scan.first);
- result_t hr = this->right().parse(scan);
- if (!hr || (hr.length() < hl.length()))
- {
- scan.first = save;
- return hl;
- }
- }
-
- return scan.no_match();
- }
- };
-
- struct difference_parser_gen
- {
- template <typename A, typename B>
- struct result
- {
- typedef
- difference<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- type;
- };
-
- template <typename A, typename B>
- static difference<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- generate(A const& a, B const& b)
- {
- return difference<BOOST_DEDUCED_TYPENAME as_parser<A>::type,
- BOOST_DEDUCED_TYPENAME as_parser<B>::type>
- (as_parser<A>::convert(a), as_parser<B>::convert(b));
- }
- };
-
- template <typename A, typename B>
- difference<A, B>
- operator-(parser<A> const& a, parser<B> const& b);
-
- template <typename A>
- difference<A, chlit<char> >
- operator-(parser<A> const& a, char b);
-
- template <typename B>
- difference<chlit<char>, B>
- operator-(char a, parser<B> const& b);
-
- template <typename A>
- difference<A, strlit<char const*> >
- operator-(parser<A> const& a, char const* b);
-
- template <typename B>
- difference<strlit<char const*>, B>
- operator-(char const* a, parser<B> const& b);
-
- template <typename A>
- difference<A, chlit<wchar_t> >
- operator-(parser<A> const& a, wchar_t b);
-
- template <typename B>
- difference<chlit<wchar_t>, B>
- operator-(wchar_t a, parser<B> const& b);
-
- template <typename A>
- difference<A, strlit<wchar_t const*> >
- operator-(parser<A> const& a, wchar_t const* b);
-
- template <typename B>
- difference<strlit<wchar_t const*>, B>
- operator-(wchar_t const* a, parser<B> const& b);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_difference.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_difference.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_difference.hpp>
 
-#include <boost/spirit/core/composite/impl/difference.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/directives.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/directives.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/directives.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,603 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_DIRECTIVES_HPP)
-#define BOOST_SPIRIT_DIRECTIVES_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DIRECTIVES
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_DIRECTIVES
 
-///////////////////////////////////////////////////////////////////////////////
-#include <algorithm>
-
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/scanner/skipper.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/core/composite/impl/directives.ipp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // contiguous class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct lexeme_parser_gen;
-
- template <typename ParserT>
- struct contiguous
- : public unary<ParserT, parser<contiguous<ParserT> > >
- {
- typedef contiguous<ParserT> self_t;
- typedef unary_parser_category parser_category_t;
- typedef lexeme_parser_gen parser_generator_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- contiguous(ParserT const& p)
- : base_t(p) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::contiguous_parser_parse<result_t>
- (this->subject(), scan, scan);
- }
- };
-
- struct lexeme_parser_gen
- {
- template <typename ParserT>
- struct result {
-
- typedef contiguous<ParserT> type;
- };
-
- template <typename ParserT>
- static contiguous<ParserT>
- generate(parser<ParserT> const& subject)
- {
- return contiguous<ParserT>(subject.derived());
- }
-
- template <typename ParserT>
- contiguous<ParserT>
- operator[](parser<ParserT> const& subject) const
- {
- return contiguous<ParserT>(subject.derived());
- }
- };
-
- //////////////////////////////////
- const lexeme_parser_gen lexeme_d = lexeme_parser_gen();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // lexeme_scanner
- //
- // Given a Scanner, return the correct scanner type that
- // the lexeme_d uses. Scanner is assumed to be a phrase
- // level scanner (see skipper.hpp)
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ScannerT>
- struct lexeme_scanner
- {
- typedef scanner_policies<
- no_skipper_iteration_policy<
- typename ScannerT::iteration_policy_t>,
- typename ScannerT::match_policy_t,
- typename ScannerT::action_policy_t
- > policies_t;
-
- typedef typename
- rebind_scanner_policies<ScannerT, policies_t>::type type;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // inhibit_case_iteration_policy class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename BaseT>
- struct inhibit_case_iteration_policy : public BaseT
- {
- typedef BaseT base_t;
-
- inhibit_case_iteration_policy()
- : BaseT() {}
-
- template <typename PolicyT>
- inhibit_case_iteration_policy(PolicyT const& other)
- : BaseT(other) {}
-
- template <typename CharT>
- CharT filter(CharT ch) const
- { return impl::tolower_(ch); }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // inhibit_case class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct inhibit_case_parser_gen;
-
- template <typename ParserT>
- struct inhibit_case
- : public unary<ParserT, parser<inhibit_case<ParserT> > >
- {
- typedef inhibit_case<ParserT> self_t;
- typedef unary_parser_category parser_category_t;
- typedef inhibit_case_parser_gen parser_generator_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- inhibit_case(ParserT const& p)
- : base_t(p) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::inhibit_case_parser_parse<result_t>
- (this->subject(), scan, scan);
- }
- };
-
- template <int N>
- struct inhibit_case_parser_gen_base
- {
- // This hack is needed to make borland happy.
- // If these member operators were defined in the
- // inhibit_case_parser_gen class, or if this class
- // is non-templated, borland ICEs.
-
- static inhibit_case<strlit<char const*> >
- generate(char const* str)
- { return inhibit_case<strlit<char const*> >(str); }
-
- static inhibit_case<strlit<wchar_t const*> >
- generate(wchar_t const* str)
- { return inhibit_case<strlit<wchar_t const*> >(str); }
-
- static inhibit_case<chlit<char> >
- generate(char ch)
- { return inhibit_case<chlit<char> >(ch); }
-
- static inhibit_case<chlit<wchar_t> >
- generate(wchar_t ch)
- { return inhibit_case<chlit<wchar_t> >(ch); }
-
- template <typename ParserT>
- static inhibit_case<ParserT>
- generate(parser<ParserT> const& subject)
- { return inhibit_case<ParserT>(subject.derived()); }
-
- inhibit_case<strlit<char const*> >
- operator[](char const* str) const
- { return inhibit_case<strlit<char const*> >(str); }
-
- inhibit_case<strlit<wchar_t const*> >
- operator[](wchar_t const* str) const
- { return inhibit_case<strlit<wchar_t const*> >(str); }
-
- inhibit_case<chlit<char> >
- operator[](char ch) const
- { return inhibit_case<chlit<char> >(ch); }
-
- inhibit_case<chlit<wchar_t> >
- operator[](wchar_t ch) const
- { return inhibit_case<chlit<wchar_t> >(ch); }
-
- template <typename ParserT>
- inhibit_case<ParserT>
- operator[](parser<ParserT> const& subject) const
- { return inhibit_case<ParserT>(subject.derived()); }
- };
-
- //////////////////////////////////
- struct inhibit_case_parser_gen : public inhibit_case_parser_gen_base<0>
- {
- inhibit_case_parser_gen() {}
- };
-
- //////////////////////////////////
- // Depracated
- const inhibit_case_parser_gen nocase_d = inhibit_case_parser_gen();
-
- // Preferred syntax
- const inhibit_case_parser_gen as_lower_d = inhibit_case_parser_gen();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // as_lower_scanner
- //
- // Given a Scanner, return the correct scanner type that
- // the as_lower_d uses. Scanner is assumed to be a scanner
- // with an inhibit_case_iteration_policy.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ScannerT>
- struct as_lower_scanner
- {
- typedef scanner_policies<
- inhibit_case_iteration_policy<
- typename ScannerT::iteration_policy_t>,
- typename ScannerT::match_policy_t,
- typename ScannerT::action_policy_t
- > policies_t;
-
- typedef typename
- rebind_scanner_policies<ScannerT, policies_t>::type type;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // longest_alternative class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct longest_parser_gen;
-
- template <typename A, typename B>
- struct longest_alternative
- : public binary<A, B, parser<longest_alternative<A, B> > >
- {
- typedef longest_alternative<A, B> self_t;
- typedef binary_parser_category parser_category_t;
- typedef longest_parser_gen parser_generator_t;
- typedef binary<A, B, parser<self_t> > base_t;
-
- longest_alternative(A const& a, B const& b)
- : base_t(a, b) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typename ScannerT::iterator_t save = scan.first;
- result_t l = this->left().parse(scan);
- std::swap(scan.first, save);
- result_t r = this->right().parse(scan);
-
- if (l || r)
- {
- if (l.length() > r.length())
- {
- scan.first = save;
- return l;
- }
- return r;
- }
-
- return scan.no_match();
- }
- };
-
- struct longest_parser_gen
- {
- template <typename A, typename B>
- struct result {
-
- typedef typename
- impl::to_longest_alternative<alternative<A, B> >::result_t
- type;
- };
-
- template <typename A, typename B>
- static typename
- impl::to_longest_alternative<alternative<A, B> >::result_t
- generate(alternative<A, B> const& alt)
- {
- return impl::to_longest_alternative<alternative<A, B> >::
- convert(alt);
- }
-
- //'generate' for binary composite
- template <typename A, typename B>
- static
- longest_alternative<A, B>
- generate(A const &left, B const &right)
- {
- return longest_alternative<A, B>(left, right);
- }
-
- template <typename A, typename B>
- typename impl::to_longest_alternative<alternative<A, B> >::result_t
- operator[](alternative<A, B> const& alt) const
- {
- return impl::to_longest_alternative<alternative<A, B> >::
- convert(alt);
- }
- };
-
- const longest_parser_gen longest_d = longest_parser_gen();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // shortest_alternative class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct shortest_parser_gen;
-
- template <typename A, typename B>
- struct shortest_alternative
- : public binary<A, B, parser<shortest_alternative<A, B> > >
- {
- typedef shortest_alternative<A, B> self_t;
- typedef binary_parser_category parser_category_t;
- typedef shortest_parser_gen parser_generator_t;
- typedef binary<A, B, parser<self_t> > base_t;
-
- shortest_alternative(A const& a, B const& b)
- : base_t(a, b) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typename ScannerT::iterator_t save = scan.first;
- result_t l = this->left().parse(scan);
- std::swap(scan.first, save);
- result_t r = this->right().parse(scan);
-
- if (l || r)
- {
- if (l.length() < r.length() && l || !r)
- {
- scan.first = save;
- return l;
- }
- return r;
- }
-
- return scan.no_match();
- }
- };
-
- struct shortest_parser_gen
- {
- template <typename A, typename B>
- struct result {
-
- typedef typename
- impl::to_shortest_alternative<alternative<A, B> >::result_t
- type;
- };
-
- template <typename A, typename B>
- static typename
- impl::to_shortest_alternative<alternative<A, B> >::result_t
- generate(alternative<A, B> const& alt)
- {
- return impl::to_shortest_alternative<alternative<A, B> >::
- convert(alt);
- }
-
- //'generate' for binary composite
- template <typename A, typename B>
- static
- shortest_alternative<A, B>
- generate(A const &left, B const &right)
- {
- return shortest_alternative<A, B>(left, right);
- }
-
- template <typename A, typename B>
- typename impl::to_shortest_alternative<alternative<A, B> >::result_t
- operator[](alternative<A, B> const& alt) const
- {
- return impl::to_shortest_alternative<alternative<A, B> >::
- convert(alt);
- }
- };
-
- const shortest_parser_gen shortest_d = shortest_parser_gen();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // min_bounded class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename BoundsT>
- struct min_bounded_gen;
-
- template <typename ParserT, typename BoundsT>
- struct min_bounded
- : public unary<ParserT, parser<min_bounded<ParserT, BoundsT> > >
- {
- typedef min_bounded<ParserT, BoundsT> self_t;
- typedef unary_parser_category parser_category_t;
- typedef min_bounded_gen<BoundsT> parser_generator_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- min_bounded(ParserT const& p, BoundsT const& min__)
- : base_t(p)
- , min_(min__) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- result_t hit = this->subject().parse(scan);
- if (hit.has_valid_attribute() && hit.value() < min_)
- return scan.no_match();
- return hit;
- }
-
- BoundsT min_;
- };
-
- template <typename BoundsT>
- struct min_bounded_gen
- {
- min_bounded_gen(BoundsT const& min__)
- : min_(min__) {}
-
- template <typename DerivedT>
- min_bounded<DerivedT, BoundsT>
- operator[](parser<DerivedT> const& p) const
- { return min_bounded<DerivedT, BoundsT>(p.derived(), min_); }
-
- BoundsT min_;
- };
-
- template <typename BoundsT>
- inline min_bounded_gen<BoundsT>
- min_limit_d(BoundsT const& min_)
- { return min_bounded_gen<BoundsT>(min_); }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // max_bounded class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename BoundsT>
- struct max_bounded_gen;
-
- template <typename ParserT, typename BoundsT>
- struct max_bounded
- : public unary<ParserT, parser<max_bounded<ParserT, BoundsT> > >
- {
- typedef max_bounded<ParserT, BoundsT> self_t;
- typedef unary_parser_category parser_category_t;
- typedef max_bounded_gen<BoundsT> parser_generator_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- max_bounded(ParserT const& p, BoundsT const& max__)
- : base_t(p)
- , max_(max__) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- result_t hit = this->subject().parse(scan);
- if (hit.has_valid_attribute() && hit.value() > max_)
- return scan.no_match();
- return hit;
- }
-
- BoundsT max_;
- };
-
- template <typename BoundsT>
- struct max_bounded_gen
- {
- max_bounded_gen(BoundsT const& max__)
- : max_(max__) {}
-
- template <typename DerivedT>
- max_bounded<DerivedT, BoundsT>
- operator[](parser<DerivedT> const& p) const
- { return max_bounded<DerivedT, BoundsT>(p.derived(), max_); }
-
- BoundsT max_;
- };
-
- //////////////////////////////////
- template <typename BoundsT>
- inline max_bounded_gen<BoundsT>
- max_limit_d(BoundsT const& max_)
- { return max_bounded_gen<BoundsT>(max_); }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // bounded class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename BoundsT>
- struct bounded_gen;
-
- template <typename ParserT, typename BoundsT>
- struct bounded
- : public unary<ParserT, parser<bounded<ParserT, BoundsT> > >
- {
- typedef bounded<ParserT, BoundsT> self_t;
- typedef unary_parser_category parser_category_t;
- typedef bounded_gen<BoundsT> parser_generator_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- bounded(ParserT const& p, BoundsT const& min__, BoundsT const& max__)
- : base_t(p)
- , min_(min__)
- , max_(max__) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- result_t hit = this->subject().parse(scan);
- if (hit.has_valid_attribute() &&
- (hit.value() < min_ || hit.value() > max_))
- return scan.no_match();
- return hit;
- }
-
- BoundsT min_, max_;
- };
-
- template <typename BoundsT>
- struct bounded_gen
- {
- bounded_gen(BoundsT const& min__, BoundsT const& max__)
- : min_(min__)
- , max_(max__) {}
-
- template <typename DerivedT>
- bounded<DerivedT, BoundsT>
- operator[](parser<DerivedT> const& p) const
- { return bounded<DerivedT, BoundsT>(p.derived(), min_, max_); }
-
- BoundsT min_, max_;
- };
-
- template <typename BoundsT>
- inline bounded_gen<BoundsT>
- limit_d(BoundsT const& min_, BoundsT const& max_)
- { return bounded_gen<BoundsT>(min_, max_); }
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_directives.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_directives.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_directives.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/epsilon.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/epsilon.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/epsilon.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,272 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2002-2003 Martin Wille
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_EPSILON_HPP
-#define BOOST_SPIRIT_EPSILON_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_EPSILON
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_EPSILON
 
-////////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/meta/parser_traits.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/core/composite/no_actions.hpp>
-
-////////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// condition_parser class
-//
-// handles expresions of the form
-//
-// epsilon_p(cond)
-//
-// where cond is a function or a functor that returns a value suitable
-// to be used in boolean context. The expression returns a parser that
-// returns an empty match when the condition evaluates to true.
-//
-///////////////////////////////////////////////////////////////////////////////
- template <typename CondT, bool positive_ = true>
- struct condition_parser : parser<condition_parser<CondT, positive_> >
- {
- typedef condition_parser<CondT, positive_> self_t;
-
- // not explicit! (needed for implementation of if_p et al.)
- condition_parser(CondT const& cond_) : cond(cond_) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- if (positive_ == bool(cond())) // allow cond to return int
- return scan.empty_match();
- else
- return scan.no_match();
- }
-
- condition_parser<CondT, !positive_>
- negate() const
- { return condition_parser<CondT, !positive_>(cond); }
-
- private:
-
- CondT cond;
- };
-
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1310) || \
- BOOST_WORKAROUND(BOOST_MSVC, == 1400) || \
- BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580)
-// VC 7.1, VC8 and Sun CC <= 5.8 do not support general
-// expressions of non-type template parameters in instantiations
- template <typename CondT>
- inline condition_parser<CondT, false>
- operator~(condition_parser<CondT, true> const& p)
- { return p.negate(); }
-
- template <typename CondT>
- inline condition_parser<CondT, true>
- operator~(condition_parser<CondT, false> const& p)
- { return p.negate(); }
-#else // BOOST_WORKAROUND(BOOST_MSVC, == 1310) || == 1400
- template <typename CondT, bool positive>
- inline condition_parser<CondT, !positive>
- operator~(condition_parser<CondT, positive> const& p)
- { return p.negate(); }
-#endif // BOOST_WORKAROUND(BOOST_MSVC, == 1310) || == 1400
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// empty_match_parser class
-//
-// handles expressions of the form
-// epsilon_p(subject)
-// where subject is a parser. The expresion returns a composite
-// parser that returns an empty match if the subject parser matches.
-//
-///////////////////////////////////////////////////////////////////////////////
- struct empty_match_parser_gen;
- struct negated_empty_match_parser_gen;
-
- template <typename SubjectT>
- struct negated_empty_match_parser; // Forward declaration
-
- template<typename SubjectT>
- struct empty_match_parser
- : unary<SubjectT, parser<empty_match_parser<SubjectT> > >
- {
- typedef empty_match_parser<SubjectT> self_t;
- typedef unary<SubjectT, parser<self_t> > base_t;
- typedef unary_parser_category parser_category_t;
- typedef empty_match_parser_gen parser_genererator_t;
- typedef self_t embed_t;
-
- explicit empty_match_parser(SubjectT const& p) : base_t(p) {}
-
- template <typename ScannerT>
- struct result
- { typedef typename match_result<ScannerT, nil_t>::type type; };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typename ScannerT::iterator_t save(scan.first);
-
- typedef typename no_actions_scanner<ScannerT>::policies_t
- policies_t;
-
- bool matches = this->subject().parse(
- scan.change_policies(policies_t(scan)));
- if (matches)
- {
- scan.first = save; // reset the position
- return scan.empty_match();
- }
- else
- {
- return scan.no_match();
- }
- }
-
- negated_empty_match_parser<SubjectT>
- negate() const
- { return negated_empty_match_parser<SubjectT>(this->subject()); }
- };
-
- template<typename SubjectT>
- struct negated_empty_match_parser
- : public unary<SubjectT, parser<negated_empty_match_parser<SubjectT> > >
- {
- typedef negated_empty_match_parser<SubjectT> self_t;
- typedef unary<SubjectT, parser<self_t> > base_t;
- typedef unary_parser_category parser_category_t;
- typedef negated_empty_match_parser_gen parser_genererator_t;
-
- explicit negated_empty_match_parser(SubjectT const& p) : base_t(p) {}
-
- template <typename ScannerT>
- struct result
- { typedef typename match_result<ScannerT, nil_t>::type type; };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typename ScannerT::iterator_t save(scan.first);
-
- typedef typename no_actions_scanner<ScannerT>::policies_t
- policies_t;
-
- bool matches = this->subject().parse(
- scan.change_policies(policies_t(scan)));
- if (!matches)
- {
- scan.first = save; // reset the position
- return scan.empty_match();
- }
- else
- {
- return scan.no_match();
- }
- }
-
- empty_match_parser<SubjectT>
- negate() const
- { return empty_match_parser<SubjectT>(this->subject()); }
- };
-
- struct empty_match_parser_gen
- {
- template <typename SubjectT>
- struct result
- { typedef empty_match_parser<SubjectT> type; };
-
- template <typename SubjectT>
- static empty_match_parser<SubjectT>
- generate(parser<SubjectT> const& subject)
- { return empty_match_parser<SubjectT>(subject.derived()); }
- };
-
- struct negated_empty_match_parser_gen
- {
- template <typename SubjectT>
- struct result
- { typedef negated_empty_match_parser<SubjectT> type; };
-
- template <typename SubjectT>
- static negated_empty_match_parser<SubjectT>
- generate(parser<SubjectT> const& subject)
- { return negated_empty_match_parser<SubjectT>(subject.derived()); }
- };
-
- //////////////////////////////
- template <typename SubjectT>
- inline negated_empty_match_parser<SubjectT>
- operator~(empty_match_parser<SubjectT> const& p)
- { return p.negate(); }
-
- template <typename SubjectT>
- inline empty_match_parser<SubjectT>
- operator~(negated_empty_match_parser<SubjectT> const& p)
- { return p.negate(); }
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// epsilon_ parser and parser generator class
-//
-// Operates as primitive parser that always matches an empty sequence.
-//
-// Also operates as a parser generator. According to the type of the
-// argument an instance of empty_match_parser<> (when the argument is
-// a parser) or condition_parser<> (when the argument is not a parser)
-// is returned by operator().
-//
-///////////////////////////////////////////////////////////////////////////////
- namespace impl
- {
- template <typename SubjectT>
- struct epsilon_selector
- {
- typedef typename as_parser<SubjectT>::type subject_t;
- typedef typename
- mpl::if_<
- is_parser<subject_t>
- ,empty_match_parser<subject_t>
- ,condition_parser<subject_t>
- >::type type;
- };
- }
-
- struct epsilon_parser : public parser<epsilon_parser>
- {
- typedef epsilon_parser self_t;
-
- epsilon_parser() {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- { return scan.empty_match(); }
-
- template <typename SubjectT>
- typename impl::epsilon_selector<SubjectT>::type
- operator()(SubjectT const& subject) const
- {
- typedef typename impl::epsilon_selector<SubjectT>::type result_t;
- return result_t(subject);
- }
- };
-
- epsilon_parser const epsilon_p = epsilon_parser();
- epsilon_parser const eps_p = epsilon_parser();
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_epsilon.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_epsilon.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_epsilon.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/composite/exclusive_or.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/exclusive_or.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/exclusive_or.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,138 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_EXCLUSIVE_OR_HPP)
-#define BOOST_SPIRIT_EXCLUSIVE_OR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCLUSIVE_OR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCLUSIVE_OR
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // exclusive_or class
- //
- // Handles expressions of the form:
- //
- // a ^ b
- //
- // where a and b are parsers. The expression returns a composite
- // parser that matches a or b but not both. One (not both) of the
- // operands may be a literal char, wchar_t or a primitive string
- // char const*, wchar_t const*.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct exclusive_or_parser_gen;
-
- template <typename A, typename B>
- struct exclusive_or
- : public binary<A, B, parser<exclusive_or<A, B> > >
- {
- typedef exclusive_or<A, B> self_t;
- typedef binary_parser_category parser_category_t;
- typedef exclusive_or_parser_gen parser_generator_t;
- typedef binary<A, B, parser<self_t> > base_t;
-
- exclusive_or(A const& a, B const& b)
- : base_t(a, b) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
-
- iterator_t save = scan.first;
- result_t l = this->left().parse(scan);
- std::swap(save, scan.first);
- result_t r = this->right().parse(scan);
-
- if (l ? !bool(r) : bool(r))
- {
- if (l)
- scan.first = save;
- return l ? l : r;
- }
-
- return scan.no_match();
- }
- };
-
- struct exclusive_or_parser_gen
- {
- template <typename A, typename B>
- struct result
- {
- typedef
- exclusive_or<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- type;
- };
-
- template <typename A, typename B>
- static exclusive_or<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- generate(A const& a, B const& b)
- {
- return exclusive_or<BOOST_DEDUCED_TYPENAME as_parser<A>::type,
- BOOST_DEDUCED_TYPENAME as_parser<B>::type>
- (as_parser<A>::convert(a), as_parser<B>::convert(b));
- }
- };
-
- template <typename A, typename B>
- exclusive_or<A, B>
- operator^(parser<A> const& a, parser<B> const& b);
-
- template <typename A>
- exclusive_or<A, chlit<char> >
- operator^(parser<A> const& a, char b);
-
- template <typename B>
- exclusive_or<chlit<char>, B>
- operator^(char a, parser<B> const& b);
-
- template <typename A>
- exclusive_or<A, strlit<char const*> >
- operator^(parser<A> const& a, char const* b);
-
- template <typename B>
- exclusive_or<strlit<char const*>, B>
- operator^(char const* a, parser<B> const& b);
-
- template <typename A>
- exclusive_or<A, chlit<wchar_t> >
- operator^(parser<A> const& a, wchar_t b);
-
- template <typename B>
- exclusive_or<chlit<wchar_t>, B>
- operator^(wchar_t a, parser<B> const& b);
-
- template <typename A>
- exclusive_or<A, strlit<wchar_t const*> >
- operator^(parser<A> const& a, wchar_t const* b);
-
- template <typename B>
- exclusive_or<strlit<wchar_t const*>, B>
- operator^(wchar_t const* a, parser<B> const& b);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_exclusive_or.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_exclusive_or.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_exclusive_or.hpp>
 
-#include <boost/spirit/core/composite/impl/exclusive_or.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/intersection.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/intersection.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/intersection.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,138 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_INTERSECTION_HPP)
-#define BOOST_SPIRIT_INTERSECTION_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_INTERSECTION
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_INTERSECTION
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // intersection class
- //
- // Handles expressions of the form:
- //
- // a & b
- //
- // where a and b are parsers. The expression returns a composite
- // parser that matches a and b. One (not both) of the operands may
- // be a literal char, wchar_t or a primitive string char const*,
- // wchar_t const*.
- //
- // The expression is short circuit evaluated. b is never touched
- // when a is returns a no-match.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct intersection_parser_gen;
-
- template <typename A, typename B>
- struct intersection
- : public binary<A, B, parser<intersection<A, B> > >
- {
- typedef intersection<A, B> self_t;
- typedef binary_parser_category parser_category_t;
- typedef intersection_parser_gen parser_generator_t;
- typedef binary<A, B, parser<self_t> > base_t;
-
- intersection(A const& a, B const& b)
- : base_t(a, b) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
- iterator_t save = scan.first;
- if (result_t hl = this->left().parse(scan))
- {
- ScannerT bscan(scan.first, scan.first, scan);
- scan.first = save;
- result_t hr = this->right().parse(bscan);
- if (hl.length() == hr.length())
- return hl;
- }
-
- return scan.no_match();
- }
- };
-
- struct intersection_parser_gen
- {
- template <typename A, typename B>
- struct result
- {
- typedef
- intersection<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- type;
- };
-
- template <typename A, typename B>
- static intersection<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- generate(A const& a, B const& b)
- {
- return intersection<BOOST_DEDUCED_TYPENAME as_parser<A>::type,
- BOOST_DEDUCED_TYPENAME as_parser<B>::type>
- (as_parser<A>::convert(a), as_parser<B>::convert(b));
- }
- };
-
- template <typename A, typename B>
- intersection<A, B>
- operator&(parser<A> const& a, parser<B> const& b);
-
- template <typename A>
- intersection<A, chlit<char> >
- operator&(parser<A> const& a, char b);
-
- template <typename B>
- intersection<chlit<char>, B>
- operator&(char a, parser<B> const& b);
-
- template <typename A>
- intersection<A, strlit<char const*> >
- operator&(parser<A> const& a, char const* b);
-
- template <typename B>
- intersection<strlit<char const*>, B>
- operator&(char const* a, parser<B> const& b);
-
- template <typename A>
- intersection<A, chlit<wchar_t> >
- operator&(parser<A> const& a, wchar_t b);
-
- template <typename B>
- intersection<chlit<wchar_t>, B>
- operator&(wchar_t a, parser<B> const& b);
-
- template <typename A>
- intersection<A, strlit<wchar_t const*> >
- operator&(parser<A> const& a, wchar_t const* b);
-
- template <typename B>
- intersection<strlit<wchar_t const*>, B>
- operator&(wchar_t const* a, parser<B> const& b);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_intersection.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_intersection.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_intersection.hpp>
 
-#include <boost/spirit/core/composite/impl/intersection.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/kleene_star.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/kleene_star.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/kleene_star.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,96 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_KLEENE_STAR_HPP)
-#define BOOST_SPIRIT_KLEENE_STAR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_KLEENE_STAR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_KLEENE_STAR
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // kleene_star class
- //
- // Handles expressions of the form:
- //
- // *a
- //
- // where a is a parser. The expression returns a composite
- // parser that matches its subject zero (0) or more times.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct kleene_star_parser_gen;
-
- template <typename S>
- struct kleene_star
- : public unary<S, parser<kleene_star<S> > >
- {
- typedef kleene_star<S> self_t;
- typedef unary_parser_category parser_category_t;
- typedef kleene_star_parser_gen parser_generator_t;
- typedef unary<S, parser<self_t> > base_t;
-
- kleene_star(S const& a)
- : base_t(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
- result_t hit = scan.empty_match();
-
- for (;;)
- {
- iterator_t save = scan.first;
- if (result_t next = this->subject().parse(scan))
- {
- scan.concat_match(hit, next);
- }
- else
- {
- scan.first = save;
- return hit;
- }
- }
- }
- };
-
- struct kleene_star_parser_gen
- {
- template <typename S>
- struct result
- {
- typedef kleene_star<S> type;
- };
-
- template <typename S>
- static kleene_star<S>
- generate(parser<S> const& a)
- {
- return kleene_star<S>(a.derived());
- }
- };
-
- //////////////////////////////////
- template <typename S>
- kleene_star<S>
- operator*(parser<S> const& a);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_kleene_star.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_kleene_star.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_kleene_star.hpp>
 
-#include <boost/spirit/core/composite/impl/kleene_star.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/list.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/list.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/list.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,69 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_LIST_HPP)
-#define BOOST_SPIRIT_LIST_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LIST
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_LIST
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // operator% is defined as:
- // a % b ---> a >> *(b >> a)
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename A, typename B>
- sequence<A, kleene_star<sequence<B, A> > >
- operator%(parser<A> const& a, parser<B> const& b);
-
- template <typename A>
- sequence<A, kleene_star<sequence<chlit<char>, A> > >
- operator%(parser<A> const& a, char b);
-
- template <typename B>
- sequence<chlit<char>, kleene_star<sequence<B, chlit<char> > > >
- operator%(char a, parser<B> const& b);
-
- template <typename A>
- sequence<A, kleene_star<sequence<strlit<char const*>, A> > >
- operator%(parser<A> const& a, char const* b);
-
- template <typename B>
- sequence<strlit<char const*>,
- kleene_star<sequence<B, strlit<char const*> > > >
- operator%(char const* a, parser<B> const& b);
-
- template <typename A>
- sequence<A, kleene_star<sequence<chlit<wchar_t>, A> > >
- operator%(parser<A> const& a, wchar_t b);
-
- template <typename B>
- sequence<chlit<wchar_t>, kleene_star<sequence<B, chlit<wchar_t> > > >
- operator%(wchar_t a, parser<B> const& b);
-
- template <typename A>
- sequence<A, kleene_star<sequence<strlit<wchar_t const*>, A> > >
- operator%(parser<A> const& a, wchar_t const* b);
-
- template <typename B>
- sequence<strlit<wchar_t const*>,
- kleene_star<sequence<B, strlit<wchar_t const*> > > >
- operator%(wchar_t const* a, parser<B> const& b);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_list.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_list.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_list.hpp>
 
-#include <boost/spirit/core/composite/impl/list.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/no_actions.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/no_actions.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/no_actions.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,163 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2003 Vaclav Vesely
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_NO_ACTIONS_HPP)
-#define BOOST_SPIRIT_NO_ACTIONS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NO_ACTIONS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_NO_ACTIONS
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/core/non_terminal/rule.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_no_actions.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_no_actions.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_no_actions.hpp>
 
-namespace boost {
-namespace spirit {
-//-----------------------------------------------------------------------------
-// no_actions_action_policy
-
-template<typename BaseT = action_policy>
-struct no_actions_action_policy:
- public BaseT
-{
- typedef BaseT base_t;
-
- no_actions_action_policy():
- BaseT()
- {}
-
- template<typename PolicyT>
- no_actions_action_policy(PolicyT const& other):
- BaseT(other)
- {}
-
- template<typename ActorT, typename AttrT, typename IteratorT>
- void
- do_action(
- ActorT const& actor,
- AttrT& val,
- IteratorT const& first,
- IteratorT const& last) const
- {}
-};
-
-//-----------------------------------------------------------------------------
-// no_actions_scanner
-
-
-namespace detail
-{
- template <typename ActionPolicy>
- struct compute_no_actions_action_policy
- {
- typedef no_actions_action_policy<ActionPolicy> type;
- };
-
- template <typename ActionPolicy>
- struct compute_no_actions_action_policy<no_actions_action_policy<ActionPolicy> >
- {
- typedef no_actions_action_policy<ActionPolicy> type;
- };
-}
-
-template<typename ScannerT = scanner<> >
-struct no_actions_scanner
-{
- typedef scanner_policies<
- typename ScannerT::iteration_policy_t,
- typename ScannerT::match_policy_t,
- typename detail::compute_no_actions_action_policy<typename ScannerT::action_policy_t>::type
- > policies_t;
-
- typedef typename
- rebind_scanner_policies<ScannerT, policies_t>::type type;
-};
-
-#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1
-
-template<typename ScannerT = scanner<> >
-struct no_actions_scanner_list
-{
- typedef
- scanner_list<
- ScannerT,
- typename no_actions_scanner<ScannerT>::type
- >
- type;
-};
-
-#endif // BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1
-
-//-----------------------------------------------------------------------------
-// no_actions_parser
-
-struct no_actions_parser_gen;
-
-template<typename ParserT>
-struct no_actions_parser:
- public unary<ParserT, parser<no_actions_parser<ParserT> > >
-{
- typedef no_actions_parser<ParserT> self_t;
- typedef unary_parser_category parser_category_t;
- typedef no_actions_parser_gen parser_generator_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- template<typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- no_actions_parser(ParserT const& p)
- : base_t(p)
- {}
-
- template<typename ScannerT>
- typename result<ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename no_actions_scanner<ScannerT>::policies_t policies_t;
-
- return this->subject().parse(scan.change_policies(policies_t(scan)));
- }
-};
-
-//-----------------------------------------------------------------------------
-// no_actions_parser_gen
-
-struct no_actions_parser_gen
-{
- template<typename ParserT>
- struct result
- {
- typedef no_actions_parser<ParserT> type;
- };
-
- template<typename ParserT>
- static no_actions_parser<ParserT>
- generate(parser<ParserT> const& subject)
- {
- return no_actions_parser<ParserT>(subject.derived());
- }
-
- template<typename ParserT>
- no_actions_parser<ParserT>
- operator[](parser<ParserT> const& subject) const
- {
- return no_actions_parser<ParserT>(subject.derived());
- }
-};
-
-//-----------------------------------------------------------------------------
-// no_actions_d
-
-const no_actions_parser_gen no_actions_d = no_actions_parser_gen();
-
-//-----------------------------------------------------------------------------
-} // namespace spirit
-} // namespace boost
-
-#endif // !defined(BOOST_SPIRIT_NO_ACTIONS_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/operators.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/operators.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/operators.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,26 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_OPERATORS_HPP)
-#define BOOST_SPIRIT_OPERATORS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_OPERATORS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_OPERATORS
 
-#include <boost/spirit/core/composite/sequence.hpp>
-#include <boost/spirit/core/composite/sequential_and.hpp>
-#include <boost/spirit/core/composite/sequential_or.hpp>
-#include <boost/spirit/core/composite/alternative.hpp>
-#include <boost/spirit/core/composite/difference.hpp>
-#include <boost/spirit/core/composite/intersection.hpp>
-#include <boost/spirit/core/composite/exclusive_or.hpp>
-#include <boost/spirit/core/composite/kleene_star.hpp>
-#include <boost/spirit/core/composite/positive.hpp>
-#include <boost/spirit/core/composite/optional.hpp>
-#include <boost/spirit/core/composite/list.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_operators.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_operators.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_operators.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/composite/optional.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/optional.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/optional.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,90 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_OPTIONAL_HPP)
-#define BOOST_SPIRIT_OPTIONAL_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_OPTIONAL
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_OPTIONAL
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // optional class
- //
- // Handles expressions of the form:
- //
- // !a
- //
- // where a is a parser. The expression returns a composite
- // parser that matches its subject zero (0) or one (1) time.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct optional_parser_gen;
-
- template <typename S>
- struct optional
- : public unary<S, parser<optional<S> > >
- {
- typedef optional<S> self_t;
- typedef unary_parser_category parser_category_t;
- typedef optional_parser_gen parser_generator_t;
- typedef unary<S, parser<self_t> > base_t;
-
- optional(S const& a)
- : base_t(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
- iterator_t save = scan.first;
- if (result_t r = this->subject().parse(scan))
- {
- return r;
- }
- else
- {
- scan.first = save;
- return scan.empty_match();
- }
- }
- };
-
- struct optional_parser_gen
- {
- template <typename S>
- struct result
- {
- typedef optional<S> type;
- };
-
- template <typename S>
- static optional<S>
- generate(parser<S> const& a)
- {
- return optional<S>(a.derived());
- }
- };
-
- template <typename S>
- optional<S>
- operator!(parser<S> const& a);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_optional.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_optional.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_optional.hpp>
 
-#include <boost/spirit/core/composite/impl/optional.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/positive.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/positive.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/positive.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,99 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_POSITIVE_HPP)
-#define BOOST_SPIRIT_POSITIVE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITIVE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITIVE
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // positive class
- //
- // Handles expressions of the form:
- //
- // +a
- //
- // where a is a parser. The expression returns a composite
- // parser that matches its subject one (1) or more times.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct positive_parser_gen;
-
- template <typename S>
- struct positive
- : public unary<S, parser<positive<S> > >
- {
- typedef positive<S> self_t;
- typedef unary_parser_category parser_category_t;
- typedef positive_parser_gen parser_generator_t;
- typedef unary<S, parser<self_t> > base_t;
-
- positive(S const& a)
- : base_t(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
- result_t hit = this->subject().parse(scan);
-
- if (hit)
- {
- for (;;)
- {
- iterator_t save = scan.first;
- if (result_t next = this->subject().parse(scan))
- {
- scan.concat_match(hit, next);
- }
- else
- {
- scan.first = save;
- break;
- }
- }
- }
- return hit;
- }
- };
-
- struct positive_parser_gen
- {
- template <typename S>
- struct result
- {
- typedef positive<S> type;
- };
-
- template <typename S>
- static positive<S>
- generate(parser<S> const& a)
- {
- return positive<S>(a.derived());
- }
- };
-
- template <typename S>
- inline positive<S>
- operator+(parser<S> const& a);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_positive.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_positive.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_positive.hpp>
 
-#include <boost/spirit/core/composite/impl/positive.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/sequence.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/sequence.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/sequence.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,129 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SEQUENCE_HPP)
-#define BOOST_SPIRIT_SEQUENCE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENCE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENCE
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // sequence class
- //
- // Handles expressions of the form:
- //
- // a >> b
- //
- // where a and b are parsers. The expression returns a composite
- // parser that matches a and b in sequence. One (not both) of the
- // operands may be a literal char, wchar_t or a primitive string
- // char const*, wchar_t const*.
- //
- //////////////////////////////////////////////////////////////////////////
- struct sequence_parser_gen;
-
- template <typename A, typename B>
- struct sequence : public binary<A, B, parser<sequence<A, B> > >
- {
- typedef sequence<A, B> self_t;
- typedef binary_parser_category parser_category_t;
- typedef sequence_parser_gen parser_generator_t;
- typedef binary<A, B, parser<self_t> > base_t;
-
- sequence(A const& a, B const& b)
- : base_t(a, b) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- if (result_t ma = this->left().parse(scan))
- if (result_t mb = this->right().parse(scan))
- {
- scan.concat_match(ma, mb);
- return ma;
- }
- return scan.no_match();
- }
- };
-
- struct sequence_parser_gen
- {
- template <typename A, typename B>
- struct result
- {
- typedef
- sequence<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- type;
- };
-
- template <typename A, typename B>
- static sequence<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- generate(A const& a, B const& b)
- {
- return sequence<BOOST_DEDUCED_TYPENAME as_parser<A>::type,
- BOOST_DEDUCED_TYPENAME as_parser<B>::type>
- (as_parser<A>::convert(a), as_parser<B>::convert(b));
- }
- };
-
- template <typename A, typename B>
- sequence<A, B>
- operator>>(parser<A> const& a, parser<B> const& b);
-
- template <typename A>
- sequence<A, chlit<char> >
- operator>>(parser<A> const& a, char b);
-
- template <typename B>
- sequence<chlit<char>, B>
- operator>>(char a, parser<B> const& b);
-
- template <typename A>
- sequence<A, strlit<char const*> >
- operator>>(parser<A> const& a, char const* b);
-
- template <typename B>
- sequence<strlit<char const*>, B>
- operator>>(char const* a, parser<B> const& b);
-
- template <typename A>
- sequence<A, chlit<wchar_t> >
- operator>>(parser<A> const& a, wchar_t b);
-
- template <typename B>
- sequence<chlit<wchar_t>, B>
- operator>>(wchar_t a, parser<B> const& b);
-
- template <typename A>
- sequence<A, strlit<wchar_t const*> >
- operator>>(parser<A> const& a, wchar_t const* b);
-
- template <typename B>
- sequence<strlit<wchar_t const*>, B>
- operator>>(wchar_t const* a, parser<B> const& b);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_sequence.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_sequence.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_sequence.hpp>
 
-#include <boost/spirit/core/composite/impl/sequence.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/sequential_and.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/sequential_and.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/sequential_and.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,72 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SEQUENTIAL_AND_HPP)
-#define BOOST_SPIRIT_SEQUENTIAL_AND_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENTIAL_AND
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENTIAL_AND
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // sequential-and operators
- //
- // Handles expressions of the form:
- //
- // a && b
- //
- // Same as a >> b.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename A, typename B>
- sequence<A, B>
- operator&&(parser<A> const& a, parser<B> const& b);
-
- template <typename A>
- sequence<A, chlit<char> >
- operator&&(parser<A> const& a, char b);
-
- template <typename B>
- sequence<chlit<char>, B>
- operator&&(char a, parser<B> const& b);
-
- template <typename A>
- sequence<A, strlit<char const*> >
- operator&&(parser<A> const& a, char const* b);
-
- template <typename B>
- sequence<strlit<char const*>, B>
- operator&&(char const* a, parser<B> const& b);
-
- template <typename A>
- sequence<A, chlit<wchar_t> >
- operator&&(parser<A> const& a, wchar_t b);
-
- template <typename B>
- sequence<chlit<wchar_t>, B>
- operator&&(wchar_t a, parser<B> const& b);
-
- template <typename A>
- sequence<A, strlit<wchar_t const*> >
- operator&&(parser<A> const& a, wchar_t const* b);
-
- template <typename B>
- sequence<strlit<wchar_t const*>, B>
- operator&&(wchar_t const* a, parser<B> const& b);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_sequential_and.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_sequential_and.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_sequential_and.hpp>
 
-#include <boost/spirit/core/composite/impl/sequential_and.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/composite/sequential_or.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/sequential_or.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/sequential_or.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,150 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SEQUENTIAL_OR_HPP)
-#define BOOST_SPIRIT_SEQUENTIAL_OR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENTIAL_OR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENTIAL_OR
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // sequential-or class
- //
- // Handles expressions of the form:
- //
- // a || b
- //
- // Equivalent to
- //
- // a | b | a >> b;
- //
- // where a and b are parsers. The expression returns a composite
- // parser that matches matches a or b in sequence. One (not both) of
- // the operands may be a literal char, wchar_t or a primitive string
- // char const*, wchar_t const*.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct sequential_or_parser_gen;
-
- template <typename A, typename B>
- struct sequential_or : public binary<A, B, parser<sequential_or<A, B> > >
- {
- typedef sequential_or<A, B> self_t;
- typedef binary_parser_category parser_category_t;
- typedef sequential_or_parser_gen parser_generator_t;
- typedef binary<A, B, parser<self_t> > base_t;
-
- sequential_or(A const& a, B const& b)
- : base_t(a, b) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
- { // scope for save
- iterator_t save = scan.first;
- if (result_t ma = this->left().parse(scan))
- {
- save = scan.first;
- if (result_t mb = this->right().parse(scan))
- {
- // matched a b
- scan.concat_match(ma, mb);
- return ma;
- }
- else
- {
- // matched a
- scan.first = save;
- return ma;
- }
- }
- scan.first = save;
- }
-
- // matched b
- return this->right().parse(scan);
- }
- };
-
- struct sequential_or_parser_gen
- {
- template <typename A, typename B>
- struct result
- {
- typedef
- sequential_or<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- type;
- };
-
- template <typename A, typename B>
- static sequential_or<
- typename as_parser<A>::type
- , typename as_parser<B>::type
- >
- generate(A const& a, B const& b)
- {
- return sequential_or<BOOST_DEDUCED_TYPENAME as_parser<A>::type,
- BOOST_DEDUCED_TYPENAME as_parser<B>::type>
- (as_parser<A>::convert(a), as_parser<B>::convert(b));
- }
- };
-
- template <typename A, typename B>
- sequential_or<A, B>
- operator||(parser<A> const& a, parser<B> const& b);
-
- template <typename A>
- sequential_or<A, chlit<char> >
- operator||(parser<A> const& a, char b);
-
- template <typename B>
- sequential_or<chlit<char>, B>
- operator||(char a, parser<B> const& b);
-
- template <typename A>
- sequential_or<A, strlit<char const*> >
- operator||(parser<A> const& a, char const* b);
-
- template <typename B>
- sequential_or<strlit<char const*>, B>
- operator||(char const* a, parser<B> const& b);
-
- template <typename A>
- sequential_or<A, chlit<wchar_t> >
- operator||(parser<A> const& a, wchar_t b);
-
- template <typename B>
- sequential_or<chlit<wchar_t>, B>
- operator||(wchar_t a, parser<B> const& b);
-
- template <typename A>
- sequential_or<A, strlit<wchar_t const*> >
- operator||(parser<A> const& a, wchar_t const* b);
-
- template <typename B>
- sequential_or<strlit<wchar_t const*>, B>
- operator||(wchar_t const* a, parser<B> const& b);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_sequential_or.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_sequential_or.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_sequential_or.hpp>
 
-#include <boost/spirit/core/composite/impl/sequential_or.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/config.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/config.hpp (original)
+++ branches/proto/v4/boost/spirit/core/config.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,63 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_CONFIG_HPP)
-#define BOOST_SPIRIT_CONFIG_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIG
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIG
 
-#include <boost/config.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Compiler check:
-//
-// Historically, Spirit supported a lot of compilers, including (to some
-// extent) poorly conforming compilers such as VC6. Spirit v1.6.x will be
-// the last release that will support older poorly conforming compilers.
-// Starting from Spirit v1.8.0, ill conforming compilers will not be
-// supported. If you are still using one of these older compilers, you can
-// still use Spirit v1.6.x.
-//
-// The reason why Spirit v1.6.x worked on old non-conforming compilers is
-// that the authors laboriously took the trouble of searching for
-// workarounds to make these compilers happy. The process takes a lot of
-// time and energy, especially when one encounters the dreaded ICE or
-// "Internal Compiler Error". Sometimes searching for a single workaround
-// takes days or even weeks. Sometimes, there are no known workarounds. This
-// stifles progress a lot. And, as the library gets more progressive and
-// takes on more advanced C++ techniques, the difficulty is escalated to
-// even new heights.
-//
-// Spirit v1.6.x will still be supported. Maintenance and bug fixes will
-// still be applied. There will still be active development for the back-
-// porting of new features introduced in Spirit v1.8.0 (and Spirit 1.9.0)
-// to lesser able compilers; hopefully, fueled by contributions from the
-// community. For instance, there is already a working AST tree back-port
-// for VC6 and VC7 by Peder Holt.
-//
-// If you got here somehow, your compiler is known to be poorly conforming
-// WRT ANSI/ISO C++ standard. Library implementers get a bad reputation when
-// someone attempts to compile the code on a non-conforming compiler. She'll
-// be confronted with tons of compiler errors when she tries to compile the
-// library. Such errors will somehow make less informed users conclude that
-// the code is poorly written. It's better for the user to see a message
-// "sorry, this code has not been ported to your compiler yet", than to see
-// pages and pages of compiler error messages.
-//
-/////////////////////////////////////////////////////////////////////////////////
-#if (defined(BOOST_MSVC) && (BOOST_MSVC < 1310)) \
- || (defined(__BORLANDC__) && (__BORLANDC__ <= 0x570)) \
- || (defined(__GNUC__) && (__GNUC__ < 3)) \
- || (defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ < 1))
-# error "Compiler not supported. See note in <boost/spirit/core/config.hpp>"
-#else
-// Pass... Compiler supported.
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_config.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_config.hpp"
 #endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_config.hpp>
 
-
+#endif

Modified: branches/proto/v4/boost/spirit/core/match.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/match.hpp (original)
+++ branches/proto/v4/boost/spirit/core/match.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,181 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_MATCH_HPP)
-#define BOOST_SPIRIT_MATCH_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_MATCH
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_MATCH
 
-#include <boost/spirit/core/config.hpp>
-#include <boost/spirit/core/nil.hpp>
-#include <boost/call_traits.hpp>
-#include <boost/optional.hpp>
-#include <boost/spirit/core/assert.hpp>
-#include <boost/spirit/core/safe_bool.hpp>
-#include <boost/spirit/core/impl/match_attr_traits.ipp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/is_reference.hpp>
-
-namespace boost { namespace spirit
-{
- ///////////////////////////////////////////////////////////////////////////
- //
- // match class
- //
- // The match holds the result of a parser. A match object evaluates
- // to true when a successful match is found, otherwise false. The
- // length of the match is the number of characters (or tokens) that
- // is successfully matched. This can be queried through its length()
- // member function. A negative value means that the match is
- // unsucessful.
- //
- // Each parser may have an associated attribute. This attribute is
- // also returned back to the client on a successful parse through
- // the match object. The match's value() member function returns the
- // match's attribute.
- //
- // A match attribute is valid:
- //
- // * on a successful match
- // * when its value is set through the value(val) member function
- // * if it is assigned or copied from a compatible match object
- // (e.g. match<double> from match<int>) with a valid attribute.
- //
- // The match attribute is undefined:
- //
- // * on an unsuccessful match
- // * when an attempt to copy or assign from another match object
- // with an incompatible attribute type (e.g. match<std::string>
- // from match<int>).
- //
- // The member function has_valid_attribute() can be queried to know if
- // it is safe to get the match's attribute. The attribute may be set
- // through the member function value(v) where v is the new attribute
- // value.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename T = nil_t>
- class match : public safe_bool<match<T> >
- {
-
- public:
-
- typedef typename boost::optional<T> optional_type;
- typedef typename optional_type::argument_type ctor_param_t;
- typedef typename optional_type::reference_const_type return_t;
- typedef T attr_t;
-
- match();
- explicit match(std::size_t length);
- match(std::size_t length, ctor_param_t val);
-
- bool operator!() const;
- std::ptrdiff_t length() const;
- bool has_valid_attribute() const;
- return_t value() const;
- void swap(match& other);
-
- template <typename T2>
- match(match<T2> const& other)
- : len(other.length()), val()
- {
- impl::match_attr_traits<T>::copy(val, other);
- }
-
- template <typename T2>
- match&
- operator=(match<T2> const& other)
- {
- impl::match_attr_traits<T>::assign(val, other);
- len = other.length();
- return *this;
- }
-
- template <typename MatchT>
- void
- concat(MatchT const& other)
- {
- BOOST_SPIRIT_ASSERT(*this && other);
- len += other.length();
- }
-
- template <typename ValueT>
- void
- value(ValueT const& val_)
- {
- impl::match_attr_traits<T>::set_value(val, val_, is_reference<T>());
- }
-
- bool operator_bool() const
- {
- return len >= 0;
- }
-
- private:
-
- std::ptrdiff_t len;
- optional_type val;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // match class specialization for nil_t values
- //
- ///////////////////////////////////////////////////////////////////////////
- template <>
- class match<nil_t> : public safe_bool<match<nil_t> >
- {
- public:
-
- typedef nil_t attr_t;
- typedef nil_t return_t;
-
- match();
- explicit match(std::size_t length);
- match(std::size_t length, nil_t);
-
- bool operator!() const;
- bool has_valid_attribute() const;
- std::ptrdiff_t length() const;
- nil_t value() const;
- void value(nil_t);
- void swap(match& other);
-
- template <typename T>
- match(match<T> const& other)
- : len(other.length()) {}
-
- template <typename T>
- match<>&
- operator=(match<T> const& other)
- {
- len = other.length();
- return *this;
- }
-
- template <typename T>
- void
- concat(match<T> const& other)
- {
- BOOST_SPIRIT_ASSERT(*this && other);
- len += other.length();
- }
-
- bool operator_bool() const
- {
- return len >= 0;
- }
-
- private:
-
- std::ptrdiff_t len;
- };
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_match.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_match.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
-#include <boost/spirit/core/impl/match.ipp>
+#include <boost/spirit/include/classic_match.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/nil.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/nil.hpp (original)
+++ branches/proto/v4/boost/spirit/core/nil.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,19 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_NIL_HPP)
-#define BOOST_SPIRIT_NIL_HPP
-
-namespace boost { namespace spirit
-{
- struct nil_t {};
-}}
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NIL
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_NIL
 
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_nil.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_nil.hpp"
 #endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_nil.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/non_terminal/grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/grammar.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,81 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_GRAMMAR_HPP)
-#define BOOST_SPIRIT_GRAMMAR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR
 
-///////////////////////////////////////////////////////////////////////////////
-#if defined(BOOST_SPIRIT_THREADSAFE) && defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE)
-#undef BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_grammar.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_grammar.hpp"
 #endif
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/non_terminal/parser_context.hpp>
-#include <boost/spirit/core/non_terminal/impl/grammar.ipp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// grammar class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename DerivedT, typename ContextT = parser_context<> >
-struct grammar
- : public parser<DerivedT>
- , public ContextT::base_t
- , public context_aux<ContextT, DerivedT>
- BOOST_SPIRIT_GRAMMAR_ID
-{
- typedef grammar<DerivedT, ContextT> self_t;
- typedef DerivedT const& embed_t;
- typedef typename ContextT::context_linker_t context_t;
- typedef typename context_t::attr_t attr_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, attr_t>::type type;
- };
-
- grammar() {}
- ~grammar() { impl::grammar_destruct(this); }
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse_main(ScannerT const& scan) const
- { return impl::grammar_parser_parse<0>(this, scan); }
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef parser_scanner_linker<ScannerT> scanner_t;
- BOOST_SPIRIT_CONTEXT_PARSE(scan, *this, scanner_t, context_t, result_t)
- }
-
- template <int N>
- impl::entry_grammar<DerivedT, N, ContextT>
- use_parser() const
- { return impl::entry_grammar<DerivedT, N, ContextT>( this->derived()); }
-
- BOOST_SPIRIT_GRAMMAR_STATE
-};
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
-
-#undef BOOST_SPIRIT_GRAMMAR_ID
-#undef BOOST_SPIRIT_GRAMMAR_ACCESS
-#undef BOOST_SPIRIT_GRAMMAR_STATE
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_grammar.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/non_terminal/parser_context.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/parser_context.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/parser_context.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,147 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_PARSER_CONTEXT_HPP)
-#define BOOST_SPIRIT_PARSER_CONTEXT_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_CONTEXT
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_CONTEXT
 
-///////////////////////////////////////////////////////////////////////////////
-namespace boost
-{
- namespace spirit
- {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // default_parser_context_base class { default context base }
- //
- ///////////////////////////////////////////////////////////////////////////
- struct default_parser_context_base
- {
- template <typename DerivedT>
- struct aux {};
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_context_base class { base class of all context classes }
- //
- ///////////////////////////////////////////////////////////////////////////
- struct parser_context_base {};
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_context class { default context }
- //
- ///////////////////////////////////////////////////////////////////////////
- struct nil_t;
- template<typename ContextT> struct parser_context_linker;
-
- template<typename AttrT = nil_t>
- struct parser_context : parser_context_base
- {
- typedef AttrT attr_t;
- typedef default_parser_context_base base_t;
- typedef parser_context_linker<parser_context<AttrT> > context_linker_t;
-
- template <typename ParserT>
- parser_context(ParserT const&) {}
-
- template <typename ParserT, typename ScannerT>
- void
- pre_parse(ParserT const&, ScannerT const&) {}
-
- template <typename ResultT, typename ParserT, typename ScannerT>
- ResultT&
- post_parse(ResultT& hit, ParserT const&, ScannerT const&)
- { return hit; }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // context_aux class
- //
- // context_aux<ContextT, DerivedT> is a class derived from the
- // ContextT's nested base_t::base<DerivedT> template class. (see
- // default_parser_context_base::aux for an example).
- //
- // Basically, this class provides ContextT dependent optional
- // functionality to the derived class DerivedT through the CRTP
- // idiom (Curiously recurring template pattern).
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ContextT, typename DerivedT>
- struct context_aux : public ContextT::base_t::template aux<DerivedT> {};
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_scanner_linker and parser_scanner_linker classes
- // { helper templates for the rule extensibility }
- //
- // This classes can be 'overloaded' (defined elsewhere), to plug
- // in additional functionality into the non-terminal parsing process.
- //
- ///////////////////////////////////////////////////////////////////////////
- #if !defined(BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED)
- #define BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED
-
- template<typename ScannerT>
- struct parser_scanner_linker : public ScannerT
- {
- parser_scanner_linker(ScannerT const scan_) : ScannerT(scan_) {}
- };
-
- #endif // !defined(BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED)
-
- //////////////////////////////////
- #if !defined(BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED)
- #define BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED
-
- template<typename ContextT>
- struct parser_context_linker : public ContextT
- {
- template <typename ParserT>
- parser_context_linker(ParserT const& p)
- : ContextT(p) {}
-
- template <typename ParserT, typename ScannerT>
- void pre_parse(ParserT const& p, ScannerT const& scan)
- { ContextT::pre_parse(p, scan); }
-
- template <typename ResultT, typename ParserT, typename ScannerT>
- ResultT&
- post_parse(ResultT& hit, ParserT const& p, ScannerT const& scan)
- { return ContextT::post_parse(hit, p, scan); }
- };
-
- #endif // !defined(BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED)
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // BOOST_SPIRIT_CONTEXT_PARSE helper macro
- //
- // The original implementation uses a template class. However, we
- // need to lessen the template instantiation depth to help inferior
- // compilers that sometimes choke on deep template instantiations.
- // The objective is to avoid code redundancy. A macro, in this case
- // is an obvious solution. Sigh!
- //
- // WARNING: INTERNAL USE ONLY. NOT FOR PUBLIC CONSUMPTION.
- //
- ///////////////////////////////////////////////////////////////////////////
- #define BOOST_SPIRIT_CONTEXT_PARSE(scan, this_, scanner_t, context_t, result_t) \
- scanner_t scan_wrap(scan); \
- context_t context_wrap(this_); \
- context_wrap.pre_parse(this_, scan_wrap); \
- result_t hit = parse_main(scan); \
- return context_wrap.post_parse(hit, this_, scan_wrap);
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser_context.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parser_context.hpp"
+#endif
 
- } // namespace spirit
-} // namespace boost
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_parser_context.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/non_terminal/parser_id.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/parser_id.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/parser_id.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,118 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_PARSER_ID_HPP)
-#define BOOST_SPIRIT_PARSER_ID_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_ID
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_ID
 
-#if defined(BOOST_SPIRIT_DEBUG)
-# include <ostream>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser_id.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parser_id.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_id class
- //
- ///////////////////////////////////////////////////////////////////////////
- class parser_id
- {
- public:
- parser_id() : p(0) {}
- explicit parser_id(void const* prule) : p(prule) {}
- parser_id(std::size_t l_) : l(l_) {}
-
- bool operator==(parser_id const& x) const { return p == x.p; }
- bool operator!=(parser_id const& x) const { return !(*this == x); }
- bool operator<(parser_id const& x) const { return p < x.p; }
- std::size_t to_long() const { return l; }
-
- private:
-
- union
- {
- void const* p;
- std::size_t l;
- };
- };
-
- #if defined(BOOST_SPIRIT_DEBUG)
- inline std::ostream&
- operator<<(std::ostream& out, parser_id const& rid)
- {
- out << (unsigned int)rid.to_long();
- return out;
- }
- #endif
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_tag_base class: base class of all parser tags
- //
- ///////////////////////////////////////////////////////////////////////////
- struct parser_tag_base {};
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_address_tag class: tags a parser with its address
- //
- ///////////////////////////////////////////////////////////////////////////
- struct parser_address_tag : parser_tag_base
- {
- parser_id id() const
- { return parser_id(reinterpret_cast<std::size_t>(this)); }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_tag class: tags a parser with an integer ID
- //
- ///////////////////////////////////////////////////////////////////////////
- template <int N>
- struct parser_tag : parser_tag_base
- {
- static parser_id id()
- { return parser_id(std::size_t(N)); }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // dynamic_parser_tag class: tags a parser with a dynamically changeable
- // integer ID
- //
- ///////////////////////////////////////////////////////////////////////////
- class dynamic_parser_tag : public parser_tag_base
- {
- public:
-
- dynamic_parser_tag()
- : tag(std::size_t(0)) {}
-
- parser_id
- id() const
- {
- return
- tag.to_long()
- ? tag
- : parser_id(reinterpret_cast<std::size_t>(this));
- }
-
- void set_id(parser_id id) { tag = id; }
-
- private:
-
- parser_id tag;
- };
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
-
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_parser_id.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/non_terminal/rule.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/rule.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/rule.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,171 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_RULE_HPP)
-#define BOOST_SPIRIT_RULE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE
 
-#include <boost/static_assert.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit predefined maximum number of simultaneously usable different
-// scanner types.
-//
-// This limit defines the maximum number of of possible different scanner
-// types for which a specific rule<> may be used. If this isn't defined, a
-// rule<> may be used with one scanner type only (multiple scanner support
-// is disabled).
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT)
-# define BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT 1
-#endif
-
-// Ensure a meaningful maximum number of simultaneously usable scanner types
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 0);
-
-#include <boost/scoped_ptr.hpp>
-#include <boost/spirit/core/non_terminal/impl/rule.ipp>
-
-#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1
-# include <boost/preprocessor/enum_params.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_rule.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_rule.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scanner_list (a fake scanner)
- //
- // Typically, rules are tied to a specific scanner type and
- // a particular rule cannot be used with anything else. Sometimes
- // there's a need for rules that can accept more than one scanner
- // type. The scanner_list<S0, ...SN> can be used as a template
- // parameter to the rule class to specify up to the number of
- // scanner types defined by the BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT
- // constant. Example:
- //
- // rule<scanner_list<ScannerT0, ScannerT1> > r;
- //
- // *** This feature is available only to compilers that support
- // partial template specialization. ***
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- BOOST_PP_ENUM_PARAMS(
- BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT,
- typename ScannerT
- )
- >
- struct scanner_list : scanner_base {};
-
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // rule class
- //
- // The rule is a polymorphic parser that acts as a named place-
- // holder capturing the behavior of an EBNF expression assigned to
- // it.
- //
- // The rule is a template class parameterized by:
- //
- // 1) scanner (scanner_t, see scanner.hpp),
- // 2) the rule's context (context_t, see parser_context.hpp)
- // 3) an arbitrary tag (tag_t, see parser_id.hpp) that allows
- // a rule to be tagged for identification.
- //
- // These template parameters may be specified in any order. The
- // scanner will default to scanner<> when it is not specified.
- // The context will default to parser_context when not specified.
- // The tag will default to parser_address_tag when not specified.
- //
- // The definition of the rule (its right hand side, RHS) held by
- // the rule through a scoped_ptr. When a rule is seen in the RHS
- // of an assignment or copy construction EBNF expression, the rule
- // is held by the LHS rule by reference.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename T0 = nil_t
- , typename T1 = nil_t
- , typename T2 = nil_t
- >
- class rule
- : public impl::rule_base<
- rule<T0, T1, T2>
- , rule<T0, T1, T2> const&
- , T0, T1, T2>
- {
- public:
-
- typedef rule<T0, T1, T2> self_t;
- typedef impl::rule_base<
- self_t
- , self_t const&
- , T0, T1, T2>
- base_t;
-
- typedef typename base_t::scanner_t scanner_t;
- typedef typename base_t::attr_t attr_t;
- typedef impl::abstract_parser<scanner_t, attr_t> abstract_parser_t;
-
- rule() : ptr() {}
- ~rule() {}
-
- rule(rule const& r)
- : ptr(new impl::concrete_parser<rule, scanner_t, attr_t>(r)) {}
-
- template <typename ParserT>
- rule(ParserT const& p)
- : ptr(new impl::concrete_parser<ParserT, scanner_t, attr_t>(p)) {}
-
- template <typename ParserT>
- rule& operator=(ParserT const& p)
- {
- ptr.reset(new impl::concrete_parser<ParserT, scanner_t, attr_t>(p));
- return *this;
- }
-
- rule& operator=(rule const& r)
- {
- ptr.reset(new impl::concrete_parser<rule, scanner_t, attr_t>(r));
- return *this;
- }
-
- rule<T0, T1, T2>
- copy() const
- {
- return rule<T0, T1, T2>(ptr.get() ? ptr->clone() : 0);
- }
-
- private:
- friend class impl::rule_base_access;
-
- abstract_parser_t*
- get() const
- {
- return ptr.get();
- }
-
- rule(abstract_parser_t* ptr)
- : ptr(ptr) {}
-
- rule(abstract_parser_t const* ptr)
- : ptr(ptr) {}
-
- scoped_ptr<abstract_parser_t> ptr;
- };
-
-}} // namespace boost::spirit
+#include <boost/spirit/include/classic_rule.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/non_terminal/subrule.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/subrule.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/subrule.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,296 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SUBRULE_HPP)
-#define BOOST_SPIRIT_SUBRULE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SUBRULE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SUBRULE
 
-#include <boost/config.hpp>
-#include <boost/static_assert.hpp>
-
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/non_terminal/parser_context.hpp>
-
-#include <boost/spirit/core/non_terminal/subrule_fwd.hpp>
-#include <boost/spirit/core/non_terminal/impl/subrule.ipp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // subrules_scanner class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ScannerT, typename ListT>
- struct subrules_scanner : public ScannerT
- {
- typedef ScannerT scanner_t;
- typedef ListT list_t;
- typedef subrules_scanner<ScannerT, ListT> self_t;
-
- subrules_scanner(ScannerT const& scan, ListT const& list_)
- : ScannerT(scan), list(list_) {}
-
- template <typename PoliciesT>
- struct rebind_policies
- {
- typedef typename rebind_scanner_policies<ScannerT, PoliciesT>::type
- rebind_scanner;
- typedef subrules_scanner<rebind_scanner, ListT> type;
- };
-
- template <typename PoliciesT>
- subrules_scanner<
- typename rebind_scanner_policies<ScannerT, PoliciesT>::type,
- ListT>
- change_policies(PoliciesT const& policies) const
- {
- typedef subrules_scanner<
- BOOST_DEDUCED_TYPENAME
- rebind_scanner_policies<ScannerT, PoliciesT>::type,
- ListT>
- subrules_scanner_t;
-
- return subrules_scanner_t(
- ScannerT::change_policies(policies),
- list);
- }
-
- template <typename IteratorT>
- struct rebind_iterator
- {
- typedef typename rebind_scanner_iterator<ScannerT, IteratorT>::type
- rebind_scanner;
- typedef subrules_scanner<rebind_scanner, ListT> type;
- };
-
- template <typename IteratorT>
- subrules_scanner<
- typename rebind_scanner_iterator<ScannerT, IteratorT>::type,
- ListT>
- change_iterator(IteratorT const& first, IteratorT const &last) const
- {
- typedef subrules_scanner<
- BOOST_DEDUCED_TYPENAME
- rebind_scanner_iterator<ScannerT, IteratorT>::type,
- ListT>
- subrules_scanner_t;
-
- return subrules_scanner_t(
- ScannerT::change_iterator(first, last),
- list);
- }
-
- ListT const& list;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // subrule_scanner type computer class
- //
- // This computer ensures that the scanner will not be recursively
- // instantiated if it's not needed.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ScannerT, typename ListT>
- struct subrules_scanner_finder
- {
- typedef subrules_scanner<ScannerT, ListT> type;
- };
-
- template <typename ScannerT, typename ListT>
- struct subrules_scanner_finder<subrules_scanner<ScannerT, ListT>, ListT>
- {
- typedef subrules_scanner<ScannerT, ListT> type;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // subrule_list class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename FirstT, typename RestT>
- struct subrule_list : public parser<subrule_list<FirstT, RestT> >
- {
- typedef subrule_list<FirstT, RestT> self_t;
- typedef FirstT first_t;
- typedef RestT rest_t;
-
- subrule_list(FirstT const& first_, RestT const& rest_)
- : first(first_), rest(rest_) {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<FirstT, ScannerT>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename subrules_scanner_finder<ScannerT, self_t>::type
- subrules_scanner_t;
- subrules_scanner_t g_arg(scan, *this);
- return first.start.parse(g_arg);
- }
-
- template <int ID, typename DefT, typename ContextT>
- subrule_list<
- FirstT,
- subrule_list<
- subrule_parser<ID, DefT, ContextT>,
- RestT> >
- operator,(subrule_parser<ID, DefT, ContextT> const& rhs)
- {
- return subrule_list<
- FirstT,
- subrule_list<
- subrule_parser<ID, DefT, ContextT>,
- RestT> >(
- first,
- subrule_list<
- subrule_parser<ID, DefT, ContextT>,
- RestT>(rhs, rest));
- }
-
- FirstT first;
- RestT rest;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // subrule_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <int ID, typename DefT, typename ContextT>
- struct subrule_parser
- : public parser<subrule_parser<ID, DefT, ContextT> >
- {
- typedef subrule_parser<ID, DefT, ContextT> self_t;
- typedef subrule<ID, ContextT> subrule_t;
- typedef DefT def_t;
-
- BOOST_STATIC_CONSTANT(int, id = ID);
-
- template <typename ScannerT>
- struct result
- {
- typedef typename
- impl::get_subrule_parser_result<
- DefT, ScannerT, typename subrule_t::attr_t>::type type;
- };
-
- subrule_parser(subrule_t const& start_, DefT const& rhs_)
- : rhs(rhs_), start(start_) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- // This will only be called when parsing single subrules.
- typedef subrule_list<self_t, nil_t> list_t;
- typedef subrules_scanner<ScannerT, list_t> scanner_t;
-
- list_t list(*this, nil_t());
- scanner_t g_arg(scan, list);
- return start.parse(g_arg);
- }
-
- template <int ID2, typename DefT2, typename ContextT2>
- inline subrule_list<
- self_t,
- subrule_list<
- subrule_parser<ID2, DefT2, ContextT2>,
- nil_t> >
- operator,(subrule_parser<ID2, DefT2, ContextT2> const& rhs) const
- {
- return subrule_list<
- self_t,
- subrule_list<
- subrule_parser<ID2, DefT2, ContextT2>,
- nil_t> >(
- *this,
- subrule_list<
- subrule_parser<ID2, DefT2, ContextT2>, nil_t>(
- rhs, nil_t()));
- }
-
- typename DefT::embed_t rhs;
- subrule_t const& start;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // subrule class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <int ID, typename ContextT>
- struct subrule
- : public parser<subrule<ID, ContextT> >
- , public ContextT::base_t
- , public context_aux<ContextT, subrule<ID, ContextT> >
- {
- typedef subrule<ID, ContextT> self_t;
- typedef subrule<ID, ContextT> const& embed_t;
-
- typedef typename ContextT::context_linker_t context_t;
- typedef typename context_t::attr_t attr_t;
-
- BOOST_STATIC_CONSTANT(int, id = ID);
-
- template <typename ScannerT>
- struct result
- {
- typedef typename
- impl::get_subrule_result<ID, ScannerT, attr_t>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse_main(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- result_t result;
- impl::parse_subrule<result_t, ScannerT, ID>::
- do_(result, scan);
- return result;
- }
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef parser_scanner_linker<ScannerT> scanner_t;
- BOOST_SPIRIT_CONTEXT_PARSE(
- scan, *this, scanner_t, context_t, result_t);
- }
-
- template <typename DefT>
- subrule_parser<ID, DefT, ContextT>
- operator=(parser<DefT> const& rhs) const
- {
- return subrule_parser<ID, DefT, ContextT>(*this, rhs.derived());
- }
-
- private:
-
- // assignment of subrules is not allowed. Use subrules
- // with identical IDs if you want to have aliases.
-
- subrule& operator=(subrule const&);
-
- template <int ID2, typename ContextT2>
- subrule& operator=(subrule<ID2, ContextT2> const&);
- };
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_subrule.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_subrule.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_subrule.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/non_terminal/subrule_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/subrule_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/subrule_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,31 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SUBRULE_FWD_HPP)
-#define BOOST_SPIRIT_SUBRULE_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SUBRULE_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SUBRULE_FWD
 
-#include <boost/spirit/core/non_terminal/parser_context.hpp>
-
-namespace boost { namespace spirit {
-
- template <int ID, typename ContextT = parser_context<> >
- struct subrule;
-
- template <int ID, typename DefT, typename ContextT = parser_context<> >
- struct subrule_parser;
-
- template <typename ScannerT, typename ListT>
- struct subrules_scanner;
-
- template <typename FirstT, typename RestT>
- struct subrule_list;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_subrule_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_subrule_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_subrule_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/parser.hpp (original)
+++ branches/proto/v4/boost/spirit/core/parser.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,219 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_PARSER_HPP)
-#define BOOST_SPIRIT_PARSER_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER
 
-#include <boost/config.hpp>
-#include <boost/type_traits.hpp>
-#include <boost/spirit/core/scanner/scanner.hpp>
-#include <boost/spirit/core/nil.hpp>
-
-namespace boost { namespace spirit
-{
- template <typename ParserT, typename ActionT>
- class action; // forward declaration
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Parser categories
- //
- // Helper template classes to distinguish different types of
- // parsers. The following categories are the most generic. More
- // specific types may inherit from these. Each parser has a typedef
- // parser_category_t that defines its category. By default, if one
- // is not specified, it will inherit from the base parser class
- // which typedefs its parser_category_t as plain_parser_category.
- //
- // - plain parser has nothing special
- // - binary parser has subject a and b (e.g. alternative)
- // - unary parser has single subject (e.g. kleene star)
- // - action parser has an attached action parser
- //
- ///////////////////////////////////////////////////////////////////////////
- struct plain_parser_category {};
- struct binary_parser_category : plain_parser_category {};
- struct unary_parser_category : plain_parser_category {};
- struct action_parser_category : unary_parser_category {};
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_result metafunction
- //
- // Given a scanner type ScannerT and a parser type ParserT, the
- // parser_result metafunction provides the actual result of the
- // parser.
- //
- // Usage:
- //
- // typename parser_result<ParserT, ScannerT>::type
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ParserT, typename ScannerT>
- struct parser_result
- {
- typedef typename boost::remove_reference<ParserT>::type parser_type;
- typedef typename parser_type::template result<ScannerT>::type type;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser class
- //
- // This class is a protocol base class for all parsers. This is
- // essentially an interface contract. The parser class does not
- // really know how to parse anything but instead relies on the
- // template parameter DerivedT (which obviously is assumed to be a
- // subclass) to do the actual parsing.
- //
- // Concrete sub-classes inheriting from parser must have a
- // corresponding member function parse(...) compatible with the
- // conceptual Interface:
- //
- // template <typename ScannerT>
- // RT parse(ScannerT const& scan) const;
- //
- // where RT is the desired return type of the parser and ScannerT
- // scan is the scanner (see scanner.hpp).
- //
- // Concrete sub-classes inheriting from parser in most cases need to
- // have a nested meta-function result that returns the result type
- // of the parser's parse member function, given a scanner type. The
- // meta-function has the form:
- //
- // template <typename ScannerT>
- // struct result
- // {
- // typedef RT type;
- // };
- //
- // where RT is the desired return type of the parser. This is
- // usually, but not always, dependent on the template parameter
- // ScannerT. If a parser does not supply a result metafunction, a
- // default is provided by the base parser class.
- //
- // The parser's derived() member function returns a reference to the
- // parser as its derived object.
- //
- // An operator[] is provided. The operator returns a semantic action
- // handler (see actions.hpp).
- //
- // Each parser has a typedef embed_t. This typedef specifies how a
- // parser is embedded in a composite (see composite.hpp). By
- // default, if one is not specified, the parser will be embedded by
- // value. That is, a copy of the parser is placed as a member
- // variable of the composite. Most parsers are embedded by value. In
- // certain situations however, this is not desirable or possible.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename DerivedT>
- struct parser
- {
- typedef DerivedT embed_t;
- typedef DerivedT derived_t;
- typedef plain_parser_category parser_category_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, nil_t>::type type;
- };
-
- DerivedT& derived()
- {
- return *static_cast<DerivedT*>(this);
- }
-
- DerivedT const& derived() const
- {
- return *static_cast<DerivedT const*>(this);
- }
-
- template <typename ActionT>
- action<DerivedT, ActionT>
- operator[](ActionT const& actor) const
- {
- return action<DerivedT, ActionT>(derived(), actor);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parse_info
- //
- // Results returned by the free parse functions:
- //
- // stop: points to the final parse position (i.e parsing
- // processed the input up to this point).
- //
- // hit: true if parsing is successful. This may be full:
- // the parser consumed all the input, or partial:
- // the parser consumed only a portion of the input.
- //
- // full: true when we have a full hit (i.e the parser
- // consumed all the input.
- //
- // length: The number of characters consumed by the parser.
- // This is valid only if we have a successful hit
- // (either partial or full).
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename IteratorT = char const*>
- struct parse_info
- {
- IteratorT stop;
- bool hit;
- bool full;
- std::size_t length;
-
- parse_info(
- IteratorT const& stop_ = IteratorT(),
- bool hit_ = false,
- bool full_ = false,
- std::size_t length_ = 0)
- : stop(stop_)
- , hit(hit_)
- , full(full_)
- , length(length_) {}
-
- template <typename ParseInfoT>
- parse_info(ParseInfoT const& pi)
- : stop(pi.stop)
- , hit(pi.hit)
- , full(pi.full)
- , length(pi.length) {}
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Generic parse function
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename IteratorT, typename DerivedT>
- parse_info<IteratorT>
- parse(
- IteratorT const& first,
- IteratorT const& last,
- parser<DerivedT> const& p);
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Parse function for null terminated strings
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename CharT, typename DerivedT>
- parse_info<CharT const*>
- parse(
- CharT const* str,
- parser<DerivedT> const& p);
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parser.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_parser.hpp>
 
-#include <boost/spirit/core/impl/parser.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/core/primitives/numerics.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/primitives/numerics.hpp (original)
+++ branches/proto/v4/boost/spirit/core/primitives/numerics.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,285 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_NUMERICS_HPP
-#define BOOST_SPIRIT_NUMERICS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NUMERICS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_NUMERICS
 
-#include <boost/config.hpp>
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/directives.hpp>
-
-#include <boost/spirit/core/primitives/numerics_fwd.hpp>
-#include <boost/spirit/core/primitives/impl/numerics.ipp>
-
-namespace boost { namespace spirit
-{
- ///////////////////////////////////////////////////////////////////////////
- //
- // uint_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename T,
- int Radix,
- unsigned MinDigits,
- int MaxDigits
- >
- struct uint_parser : parser<uint_parser<T, Radix, MinDigits, MaxDigits> >
- {
- typedef uint_parser<T, Radix, MinDigits, MaxDigits> self_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, T>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef impl::uint_parser_impl<T, Radix, MinDigits, MaxDigits> impl_t;
- typedef typename parser_result<impl_t, ScannerT>::type result_t;
- return impl::contiguous_parser_parse<result_t>(impl_t(), scan, scan);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // int_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename T,
- int Radix,
- unsigned MinDigits,
- int MaxDigits
- >
- struct int_parser : parser<int_parser<T, Radix, MinDigits, MaxDigits> >
- {
- typedef int_parser<T, Radix, MinDigits, MaxDigits> self_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, T>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef impl::int_parser_impl<T, Radix, MinDigits, MaxDigits> impl_t;
- typedef typename parser_result<impl_t, ScannerT>::type result_t;
- return impl::contiguous_parser_parse<result_t>(impl_t(), scan, scan);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // uint_parser/int_parser instantiations
- //
- ///////////////////////////////////////////////////////////////////////////
- int_parser<int> const
- int_p = int_parser<int>();
-
- uint_parser<unsigned> const
- uint_p = uint_parser<unsigned>();
-
- uint_parser<unsigned, 2> const
- bin_p = uint_parser<unsigned, 2>();
-
- uint_parser<unsigned, 8> const
- oct_p = uint_parser<unsigned, 8>();
-
- uint_parser<unsigned, 16> const
- hex_p = uint_parser<unsigned, 16>();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // sign_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- namespace impl
- {
- // Utility to extract the prefix sign ('-' | '+')
- template <typename ScannerT>
- bool extract_sign(ScannerT const& scan, std::size_t& count);
- }
-
- struct sign_parser : public parser<sign_parser>
- {
- typedef sign_parser self_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, bool>::type type;
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_numerics.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_numerics.hpp"
+#endif
 
- sign_parser() {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- if (!scan.at_end())
- {
- std::size_t length;
- typename ScannerT::iterator_t save(scan.first);
- bool neg = impl::extract_sign(scan, length);
- if (length)
- return scan.create_match(1, neg, save, scan.first);
- }
- return scan.no_match();
- }
- };
-
- sign_parser const sign_p = sign_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // default real number policies
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename T>
- struct ureal_parser_policies
- {
- // trailing dot policy suggested suggested by Gustavo Guerra
- BOOST_STATIC_CONSTANT(bool, allow_leading_dot = true);
- BOOST_STATIC_CONSTANT(bool, allow_trailing_dot = true);
- BOOST_STATIC_CONSTANT(bool, expect_dot = false);
-
- typedef uint_parser<T, 10, 1, -1> uint_parser_t;
- typedef int_parser<T, 10, 1, -1> int_parser_t;
-
- template <typename ScannerT>
- static typename match_result<ScannerT, nil_t>::type
- parse_sign(ScannerT& scan)
- {
- return scan.no_match();
- }
-
- template <typename ScannerT>
- static typename parser_result<uint_parser_t, ScannerT>::type
- parse_n(ScannerT& scan)
- {
- return uint_parser_t().parse(scan);
- }
-
- template <typename ScannerT>
- static typename parser_result<chlit<>, ScannerT>::type
- parse_dot(ScannerT& scan)
- {
- return ch_p('.').parse(scan);
- }
-
- template <typename ScannerT>
- static typename parser_result<uint_parser_t, ScannerT>::type
- parse_frac_n(ScannerT& scan)
- {
- return uint_parser_t().parse(scan);
- }
-
- template <typename ScannerT>
- static typename parser_result<chlit<>, ScannerT>::type
- parse_exp(ScannerT& scan)
- {
- return as_lower_d['e'].parse(scan);
- }
-
- template <typename ScannerT>
- static typename parser_result<int_parser_t, ScannerT>::type
- parse_exp_n(ScannerT& scan)
- {
- return int_parser_t().parse(scan);
- }
- };
-
- template <typename T>
- struct real_parser_policies : public ureal_parser_policies<T>
- {
- template <typename ScannerT>
- static typename parser_result<sign_parser, ScannerT>::type
- parse_sign(ScannerT& scan)
- {
- return sign_p.parse(scan);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // real_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename T,
- typename RealPoliciesT
- >
- struct real_parser
- : public parser<real_parser<T, RealPoliciesT> >
- {
- typedef real_parser<T, RealPoliciesT> self_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, T>::type type;
- };
-
- real_parser() {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::real_parser_impl<result_t, T, RealPoliciesT>::parse(scan);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // real_parser instantiations
- //
- ///////////////////////////////////////////////////////////////////////////
- real_parser<double, ureal_parser_policies<double> > const
- ureal_p = real_parser<double, ureal_parser_policies<double> >();
-
- real_parser<double, real_parser_policies<double> > const
- real_p = real_parser<double, real_parser_policies<double> >();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // strict reals (do not allow plain integers (no decimal point))
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename T>
- struct strict_ureal_parser_policies : public ureal_parser_policies<T>
- {
- BOOST_STATIC_CONSTANT(bool, expect_dot = true);
- };
-
- template <typename T>
- struct strict_real_parser_policies : public real_parser_policies<T>
- {
- BOOST_STATIC_CONSTANT(bool, expect_dot = true);
- };
-
- real_parser<double, strict_ureal_parser_policies<double> > const
- strict_ureal_p
- = real_parser<double, strict_ureal_parser_policies<double> >();
-
- real_parser<double, strict_real_parser_policies<double> > const
- strict_real_p
- = real_parser<double, strict_real_parser_policies<double> >();
-
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_numerics.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/primitives/numerics_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/primitives/numerics_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/core/primitives/numerics_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,83 +1,23 @@
 /*=============================================================================
- Copyright (C) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_NUMERICS_FWD_HPP)
-# define BOOST_SPIRIT_NUMERICS_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NUMERICS_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_NUMERICS_FWD
 
-namespace boost { namespace spirit
-{
- ///////////////////////////////////////////////////////////////////////////
- //
- // uint_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename T = unsigned,
- int Radix = 10,
- unsigned MinDigits = 1,
- int MaxDigits = -1
- >
- struct uint_parser;
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // int_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename T = unsigned,
- int Radix = 10,
- unsigned MinDigits = 1,
- int MaxDigits = -1
- >
- struct int_parser;
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // sign_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct sign_parser;
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // default real number policies
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename T>
- struct ureal_parser_policies;
-
- template <typename T>
- struct real_parser_policies;
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // real_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename T = double,
- typename RealPoliciesT = ureal_parser_policies<T>
- >
- struct real_parser;
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // strict reals (do not allow plain integers (no decimal point))
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename T>
- struct strict_ureal_parser_policies;
-
- template <typename T>
- struct strict_real_parser_policies;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_numerics_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_numerics_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_numerics_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/primitives/primitives.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/primitives/primitives.hpp (original)
+++ branches/proto/v4/boost/spirit/core/primitives/primitives.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,650 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2003 Martin Wille
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_PRIMITIVES_HPP)
-#define BOOST_SPIRIT_PRIMITIVES_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PRIMITIVES
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PRIMITIVES
 
-#include <boost/ref.hpp>
-#include <boost/spirit/core/assert.hpp>
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/impl/directives.ipp>
-#include <boost/spirit/core/primitives/impl/primitives.ipp>
-
-#ifdef BOOST_MSVC
-#pragma warning (push)
-#pragma warning(disable : 4512)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_primitives.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_primitives.hpp"
 #endif
 
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // char_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename DerivedT>
- struct char_parser : public parser<DerivedT>
- {
- typedef DerivedT self_t;
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<
- ScannerT,
- typename ScannerT::value_t
- >::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::value_t value_t;
- typedef typename ScannerT::iterator_t iterator_t;
-
- if (!scan.at_end())
- {
- value_t ch = *scan;
- if (this->derived().test(ch))
- {
- iterator_t save(scan.first);
- ++scan.first;
- return scan.create_match(1, ch, save, scan.first);
- }
- }
- return scan.no_match();
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // negation of char_parsers
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename PositiveT>
- struct negated_char_parser
- : public char_parser<negated_char_parser<PositiveT> >
- {
- typedef negated_char_parser<PositiveT> self_t;
- typedef PositiveT positive_t;
-
- negated_char_parser(positive_t const& p)
- : positive(p.derived()) {}
-
- template <typename T>
- bool test(T ch) const
- {
- return !positive.test(ch);
- }
-
- positive_t const positive;
- };
-
- template <typename ParserT>
- inline negated_char_parser<ParserT>
- operator~(char_parser<ParserT> const& p)
- {
- return negated_char_parser<ParserT>(p.derived());
- }
-
- template <typename ParserT>
- inline ParserT
- operator~(negated_char_parser<ParserT> const& n)
- {
- return n.positive;
- }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // chlit class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename CharT = char>
- struct chlit : public char_parser<chlit<CharT> >
- {
- chlit(CharT ch_)
- : ch(ch_) {}
-
- template <typename T>
- bool test(T ch_) const
- {
- return ch_ == ch;
- }
-
- CharT ch;
- };
-
- template <typename CharT>
- inline chlit<CharT>
- ch_p(CharT ch)
- {
- return chlit<CharT>(ch);
- }
-
- // This should take care of ch_p("a") "bugs"
- template <typename CharT, std::size_t N>
- inline chlit<CharT>
- ch_p(CharT const (& str)[N])
- {
- // ch_p's argument should be a single character or a null-terminated
- // string with a single character
- BOOST_STATIC_ASSERT(N < 3);
- return chlit<CharT>(str[0]);
- }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // range class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename CharT = char>
- struct range : public char_parser<range<CharT> >
- {
- range(CharT first_, CharT last_)
- : first(first_), last(last_)
- {
- BOOST_SPIRIT_ASSERT(!(last < first));
- }
-
- template <typename T>
- bool test(T ch) const
- {
- return !(CharT(ch) < first) && !(last < CharT(ch));
- }
-
- CharT first;
- CharT last;
- };
-
- template <typename CharT>
- inline range<CharT>
- range_p(CharT first, CharT last)
- {
- return range<CharT>(first, last);
- }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // chseq class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename IteratorT = char const*>
- class chseq : public parser<chseq<IteratorT> >
- {
- public:
-
- typedef chseq<IteratorT> self_t;
-
- chseq(IteratorT first_, IteratorT last_)
- : first(first_), last(last_) {}
-
- chseq(IteratorT first_)
- : first(first_), last(impl::get_last(first_)) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename boost::unwrap_reference<IteratorT>::type striter_t;
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::string_parser_parse<result_t>(
- striter_t(first),
- striter_t(last),
- scan);
- }
-
- private:
-
- IteratorT first;
- IteratorT last;
- };
-
- template <typename CharT>
- inline chseq<CharT const*>
- chseq_p(CharT const* str)
- {
- return chseq<CharT const*>(str);
- }
-
- template <typename IteratorT>
- inline chseq<IteratorT>
- chseq_p(IteratorT first, IteratorT last)
- {
- return chseq<IteratorT>(first, last);
- }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // strlit class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename IteratorT = char const*>
- class strlit : public parser<strlit<IteratorT> >
- {
- public:
-
- typedef strlit<IteratorT> self_t;
-
- strlit(IteratorT first, IteratorT last)
- : seq(first, last) {}
-
- strlit(IteratorT first)
- : seq(first) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::contiguous_parser_parse<result_t>
- (seq, scan, scan);
- }
-
- private:
-
- chseq<IteratorT> seq;
- };
-
- template <typename CharT>
- inline strlit<CharT const*>
- str_p(CharT const* str)
- {
- return strlit<CharT const*>(str);
- }
-
- template <typename CharT>
- inline strlit<CharT *>
- str_p(CharT * str)
- {
- return strlit<CharT *>(str);
- }
-
- template <typename IteratorT>
- inline strlit<IteratorT>
- str_p(IteratorT first, IteratorT last)
- {
- return strlit<IteratorT>(first, last);
- }
-
- // This should take care of str_p('a') "bugs"
- template <typename CharT>
- inline chlit<CharT>
- str_p(CharT ch)
- {
- return chlit<CharT>(ch);
- }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // nothing_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct nothing_parser : public parser<nothing_parser>
- {
- typedef nothing_parser self_t;
-
- nothing_parser() {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- return scan.no_match();
- }
- };
-
- nothing_parser const nothing_p = nothing_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // anychar_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct anychar_parser : public char_parser<anychar_parser>
- {
- typedef anychar_parser self_t;
-
- anychar_parser() {}
-
- template <typename CharT>
- bool test(CharT) const
- {
- return true;
- }
- };
-
- anychar_parser const anychar_p = anychar_parser();
-
- inline nothing_parser
- operator~(anychar_parser)
- {
- return nothing_p;
- }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // alnum_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct alnum_parser : public char_parser<alnum_parser>
- {
- typedef alnum_parser self_t;
-
- alnum_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isalnum_(ch);
- }
- };
-
- alnum_parser const alnum_p = alnum_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // alpha_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct alpha_parser : public char_parser<alpha_parser>
- {
- typedef alpha_parser self_t;
-
- alpha_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isalpha_(ch);
- }
- };
-
- alpha_parser const alpha_p = alpha_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // cntrl_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct cntrl_parser : public char_parser<cntrl_parser>
- {
- typedef cntrl_parser self_t;
-
- cntrl_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::iscntrl_(ch);
- }
- };
-
- cntrl_parser const cntrl_p = cntrl_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // digit_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct digit_parser : public char_parser<digit_parser>
- {
- typedef digit_parser self_t;
-
- digit_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isdigit_(ch);
- }
- };
-
- digit_parser const digit_p = digit_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // graph_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct graph_parser : public char_parser<graph_parser>
- {
- typedef graph_parser self_t;
-
- graph_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isgraph_(ch);
- }
- };
-
- graph_parser const graph_p = graph_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // lower_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct lower_parser : public char_parser<lower_parser>
- {
- typedef lower_parser self_t;
-
- lower_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::islower_(ch);
- }
- };
-
- lower_parser const lower_p = lower_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // print_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct print_parser : public char_parser<print_parser>
- {
- typedef print_parser self_t;
-
- print_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isprint_(ch);
- }
- };
-
- print_parser const print_p = print_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // punct_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct punct_parser : public char_parser<punct_parser>
- {
- typedef punct_parser self_t;
-
- punct_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::ispunct_(ch);
- }
- };
-
- punct_parser const punct_p = punct_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // blank_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct blank_parser : public char_parser<blank_parser>
- {
- typedef blank_parser self_t;
-
- blank_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isblank_(ch);
- }
- };
-
- blank_parser const blank_p = blank_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // space_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct space_parser : public char_parser<space_parser>
- {
- typedef space_parser self_t;
-
- space_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isspace_(ch);
- }
- };
-
- space_parser const space_p = space_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // upper_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct upper_parser : public char_parser<upper_parser>
- {
- typedef upper_parser self_t;
-
- upper_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isupper_(ch);
- }
- };
-
- upper_parser const upper_p = upper_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // xdigit_parser class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct xdigit_parser : public char_parser<xdigit_parser>
- {
- typedef xdigit_parser self_t;
-
- xdigit_parser() {}
-
- template <typename CharT>
- bool test(CharT ch) const
- {
- return impl::isxdigit_(ch);
- }
- };
-
- xdigit_parser const xdigit_p = xdigit_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // eol_parser class (contributed by Martin Wille)
- //
- ///////////////////////////////////////////////////////////////////////////
- struct eol_parser : public parser<eol_parser>
- {
- typedef eol_parser self_t;
-
- eol_parser() {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typename ScannerT::iterator_t save = scan.first;
- std::size_t len = 0;
-
- if (!scan.at_end() && *scan == '\r') // CR
- {
- ++scan.first;
- ++len;
- }
-
- // Don't call skipper here
- if (scan.first != scan.last && *scan == '\n') // LF
- {
- ++scan.first;
- ++len;
- }
-
- if (len)
- return scan.create_match(len, nil_t(), save, scan.first);
- return scan.no_match();
- }
- };
-
- eol_parser const eol_p = eol_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // end_parser class (suggested by Markus Schoepflin)
- //
- ///////////////////////////////////////////////////////////////////////////
- struct end_parser : public parser<end_parser>
- {
- typedef end_parser self_t;
-
- end_parser() {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- if (scan.at_end())
- return scan.empty_match();
- return scan.no_match();
- }
- };
-
- end_parser const end_p = end_parser();
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // the pizza_p parser :-)
- //
- ///////////////////////////////////////////////////////////////////////////
- inline strlit<char const*> const
- pizza_p(char const* your_favorite_pizza)
- {
- return your_favorite_pizza;
- }
-
-}} // namespace boost::spirit
-
-#ifdef BOOST_MSVC
-#pragma warning (pop)
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_primitives.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/safe_bool.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/safe_bool.hpp (original)
+++ branches/proto/v4/boost/spirit/core/safe_bool.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,59 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SAFE_BOOL_HPP)
-#define BOOST_SPIRIT_SAFE_BOOL_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SAFE_BOOL
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SAFE_BOOL
 
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-namespace boost { namespace spirit
-{
- namespace impl
- {
- template <typename T>
- struct no_base {};
-
- template <typename T>
- struct safe_bool_impl
- {
-#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
- void stub(T*) {};
- typedef void (safe_bool_impl::*type)(T*);
-#else
- typedef T* TP; // workaround to make parsing easier
- TP stub;
- typedef TP safe_bool_impl::*type;
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_safe_bool.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_safe_bool.hpp"
 #endif
- };
- }
-
- template <typename DerivedT, typename BaseT = impl::no_base<DerivedT> >
- struct safe_bool : BaseT
- {
- private:
- typedef impl::safe_bool_impl<DerivedT> impl_t;
- typedef typename impl_t::type bool_type;
-
- public:
- operator bool_type() const
- {
- return static_cast<const DerivedT*>(this)->operator_bool() ?
- &impl_t::stub : 0;
- }
-
- operator bool_type()
- {
- return static_cast<DerivedT*>(this)->operator_bool() ?
- &impl_t::stub : 0;
- }
- };
-}}
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_safe_bool.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/scanner/scanner.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/scanner/scanner.hpp (original)
+++ branches/proto/v4/boost/spirit/core/scanner/scanner.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,324 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2002 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SCANNER_HPP)
-#define BOOST_SPIRIT_SCANNER_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SCANNER
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SCANNER
 
-#include <iterator>
-#include <boost/config.hpp>
-#include <boost/spirit/core/match.hpp>
-#include <boost/spirit/core/non_terminal/parser_id.hpp>
-#include <boost/detail/iterator.hpp> // for boost::detail::iterator_traits
-
-#include <boost/spirit/core/scanner/scanner_fwd.hpp>
-
-namespace boost { namespace spirit
-{
- ///////////////////////////////////////////////////////////////////////////
- //
- // iteration_policy class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct iteration_policy
- {
- template <typename ScannerT>
- void
- advance(ScannerT const& scan) const
- {
- ++scan.first;
- }
-
- template <typename ScannerT>
- bool at_end(ScannerT const& scan) const
- {
- return scan.first == scan.last;
- }
-
- template <typename T>
- T filter(T ch) const
- {
- return ch;
- }
-
- template <typename ScannerT>
- typename ScannerT::ref_t
- get(ScannerT const& scan) const
- {
- return *scan.first;
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // match_policy class
- //
- ///////////////////////////////////////////////////////////////////////////
- struct match_policy
- {
- template <typename T>
- struct result { typedef match<T> type; };
-
- const match<nil_t>
- no_match() const
- {
- return match<nil_t>();
- }
-
- const match<nil_t>
- empty_match() const
- {
- return match<nil_t>(0, nil_t());
- }
-
- template <typename AttrT, typename IteratorT>
- match<AttrT>
- create_match(
- std::size_t length,
- AttrT const& val,
- IteratorT const& /*first*/,
- IteratorT const& /*last*/) const
- {
- return match<AttrT>(length, val);
- }
-
- template <typename MatchT, typename IteratorT>
- void group_match(
- MatchT& /*m*/,
- parser_id const& /*id*/,
- IteratorT const& /*first*/,
- IteratorT const& /*last*/) const {}
-
- template <typename Match1T, typename Match2T>
- void concat_match(Match1T& l, Match2T const& r) const
- {
- l.concat(r);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // match_result class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename MatchPolicyT, typename T>
- struct match_result
- {
- typedef typename MatchPolicyT::template result<T>::type type;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // action_policy class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename AttrT>
- struct attributed_action_policy
- {
- template <typename ActorT, typename IteratorT>
- static void
- call(
- ActorT const& actor,
- AttrT& val,
- IteratorT const&,
- IteratorT const&)
- {
- actor(val);
- }
- };
-
- //////////////////////////////////
- template <>
- struct attributed_action_policy<nil_t>
- {
- template <typename ActorT, typename IteratorT>
- static void
- call(
- ActorT const& actor,
- nil_t,
- IteratorT const& first,
- IteratorT const& last)
- {
- actor(first, last);
- }
- };
-
- //////////////////////////////////
- struct action_policy
- {
- template <typename ActorT, typename AttrT, typename IteratorT>
- void
- do_action(
- ActorT const& actor,
- AttrT& val,
- IteratorT const& first,
- IteratorT const& last) const
- {
- attributed_action_policy<AttrT>::call(actor, val, first, last);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scanner_policies class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename IterationPolicyT,
- typename MatchPolicyT,
- typename ActionPolicyT>
- struct scanner_policies :
- public IterationPolicyT,
- public MatchPolicyT,
- public ActionPolicyT
- {
- typedef IterationPolicyT iteration_policy_t;
- typedef MatchPolicyT match_policy_t;
- typedef ActionPolicyT action_policy_t;
-
- scanner_policies(
- IterationPolicyT const& i_policy = IterationPolicyT(),
- MatchPolicyT const& m_policy = MatchPolicyT(),
- ActionPolicyT const& a_policy = ActionPolicyT())
- : IterationPolicyT(i_policy)
- , MatchPolicyT(m_policy)
- , ActionPolicyT(a_policy) {}
-
- template <typename ScannerPoliciesT>
- scanner_policies(ScannerPoliciesT const& policies)
- : IterationPolicyT(policies)
- , MatchPolicyT(policies)
- , ActionPolicyT(policies) {}
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scanner_policies_base class: the base class of all scanners
- //
- ///////////////////////////////////////////////////////////////////////////
- struct scanner_base {};
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scanner class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename IteratorT,
- typename PoliciesT>
- class scanner : public PoliciesT, public scanner_base
- {
- public:
-
- typedef IteratorT iterator_t;
- typedef PoliciesT policies_t;
-
- typedef typename boost::detail::
- iterator_traits<IteratorT>::value_type value_t;
- typedef typename boost::detail::
- iterator_traits<IteratorT>::reference ref_t;
- typedef typename boost::
- call_traits<IteratorT>::param_type iter_param_t;
-
- scanner(
- IteratorT& first_,
- iter_param_t last_,
- PoliciesT const& policies = PoliciesT())
- : PoliciesT(policies), first(first_), last(last_)
- {
- at_end();
- }
-
- scanner(scanner const& other)
- : PoliciesT(other), first(other.first), last(other.last) {}
-
- scanner(scanner const& other, IteratorT& first_)
- : PoliciesT(other), first(first_), last(other.last) {}
-
- template <typename PoliciesT1>
- scanner(scanner<IteratorT, PoliciesT1> const& other)
- : PoliciesT(other), first(other.first), last(other.last) {}
-
- bool
- at_end() const
- {
- typedef typename PoliciesT::iteration_policy_t iteration_policy_t;
- return iteration_policy_t::at_end(*this);
- }
-
- value_t
- operator*() const
- {
- typedef typename PoliciesT::iteration_policy_t iteration_policy_t;
- return iteration_policy_t::filter(iteration_policy_t::get(*this));
- }
-
- scanner const&
- operator++() const
- {
- typedef typename PoliciesT::iteration_policy_t iteration_policy_t;
- iteration_policy_t::advance(*this);
- return *this;
- }
-
- template <typename PoliciesT2>
- struct rebind_policies
- {
- typedef scanner<IteratorT, PoliciesT2> type;
- };
-
- template <typename PoliciesT2>
- scanner<IteratorT, PoliciesT2>
- change_policies(PoliciesT2 const& policies) const
- {
- return scanner<IteratorT, PoliciesT2>(first, last, policies);
- }
-
- template <typename IteratorT2>
- struct rebind_iterator
- {
- typedef scanner<IteratorT2, PoliciesT> type;
- };
-
- template <typename IteratorT2>
- scanner<IteratorT2, PoliciesT>
- change_iterator(IteratorT2 const& first_, IteratorT2 const &last_) const
- {
- return scanner<IteratorT2, PoliciesT>(first_, last_, *this);
- }
-
- IteratorT& first;
- IteratorT const last;
-
- private:
-
- scanner&
- operator=(scanner const& other);
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // rebind_scanner_policies class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ScannerT, typename PoliciesT>
- struct rebind_scanner_policies
- {
- typedef typename ScannerT::template
- rebind_policies<PoliciesT>::type type;
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_scanner.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_scanner.hpp"
+#endif
 
- //////////////////////////////////
- template <typename ScannerT, typename IteratorT>
- struct rebind_scanner_iterator
- {
- typedef typename ScannerT::template
- rebind_iterator<IteratorT>::type type;
- };
-}}
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_scanner.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/core/scanner/scanner_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/scanner/scanner_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/core/scanner/scanner_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,48 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SCANNER_FWD_HPP)
-#define BOOST_SPIRIT_SCANNER_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SCANNER_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SCANNER_FWD
 
-namespace boost { namespace spirit
-{
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // policy classes
- //
- ///////////////////////////////////////////////////////////////////////////
- struct iteration_policy;
- struct action_policy;
- struct match_policy;
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scanner_policies class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename IterationPolicyT = iteration_policy,
- typename MatchPolicyT = match_policy,
- typename ActionPolicyT = action_policy>
- struct scanner_policies;
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scanner class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename IteratorT = char const*,
- typename PoliciesT = scanner_policies<> >
- class scanner;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_scanner_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_scanner_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_scanner_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/scanner/skipper.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/scanner/skipper.hpp (original)
+++ branches/proto/v4/boost/spirit/core/scanner/skipper.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,192 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SKIPPER_HPP)
-#define BOOST_SPIRIT_SKIPPER_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SKIPPER
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SKIPPER
 
-///////////////////////////////////////////////////////////////////////////////
-#include <cctype>
-
-#include <boost/spirit/core/scanner/scanner.hpp>
-#include <boost/spirit/core/primitives/impl/primitives.ipp>
-
-#include <boost/spirit/core/scanner/skipper_fwd.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // skipper_iteration_policy class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename BaseT>
- struct skipper_iteration_policy : public BaseT
- {
- typedef BaseT base_t;
-
- skipper_iteration_policy()
- : BaseT() {}
-
- template <typename PolicyT>
- skipper_iteration_policy(PolicyT const& other)
- : BaseT(other) {}
-
- template <typename ScannerT>
- void
- advance(ScannerT const& scan) const
- {
- BaseT::advance(scan);
- scan.skip(scan);
- }
-
- template <typename ScannerT>
- bool
- at_end(ScannerT const& scan) const
- {
- scan.skip(scan);
- return BaseT::at_end(scan);
- }
-
- template <typename ScannerT>
- void
- skip(ScannerT const& scan) const
- {
- while (!BaseT::at_end(scan) && impl::isspace_(BaseT::get(scan)))
- BaseT::advance(scan);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // no_skipper_iteration_policy class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename BaseT>
- struct no_skipper_iteration_policy : public BaseT
- {
- typedef BaseT base_t;
-
- no_skipper_iteration_policy()
- : BaseT() {}
-
- template <typename PolicyT>
- no_skipper_iteration_policy(PolicyT const& other)
- : BaseT(other) {}
-
- template <typename ScannerT>
- void
- skip(ScannerT const& /*scan*/) const {}
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // skip_parser_iteration_policy class
- //
- ///////////////////////////////////////////////////////////////////////////
- namespace impl
- {
- template <typename ST, typename ScannerT, typename BaseT>
- void
- skipper_skip(
- ST const& s,
- ScannerT const& scan,
- skipper_iteration_policy<BaseT> const&);
-
- template <typename ST, typename ScannerT, typename BaseT>
- void
- skipper_skip(
- ST const& s,
- ScannerT const& scan,
- no_skipper_iteration_policy<BaseT> const&);
-
- template <typename ST, typename ScannerT>
- void
- skipper_skip(
- ST const& s,
- ScannerT const& scan,
- iteration_policy const&);
- }
-
- template <typename ParserT, typename BaseT>
- class skip_parser_iteration_policy : public skipper_iteration_policy<BaseT>
- {
- public:
-
- typedef skipper_iteration_policy<BaseT> base_t;
-
- skip_parser_iteration_policy(
- ParserT const& skip_parser,
- base_t const& base = base_t())
- : base_t(base), subject(skip_parser) {}
-
- template <typename PolicyT>
- skip_parser_iteration_policy(PolicyT const& other)
- : base_t(other), subject(other.skipper()) {}
-
- template <typename ScannerT>
- void
- skip(ScannerT const& scan) const
- {
- impl::skipper_skip(subject, scan, scan);
- }
-
- ParserT const&
- skipper() const
- {
- return subject;
- }
-
- private:
-
- ParserT const& subject;
- };
-
- ///////////////////////////////////////////////////////////////////////////////
- //
- // Free parse functions using the skippers
- //
- ///////////////////////////////////////////////////////////////////////////////
- template <typename IteratorT, typename ParserT, typename SkipT>
- parse_info<IteratorT>
- parse(
- IteratorT const& first,
- IteratorT const& last,
- parser<ParserT> const& p,
- parser<SkipT> const& skip);
-
- ///////////////////////////////////////////////////////////////////////////////
- //
- // Parse function for null terminated strings using the skippers
- //
- ///////////////////////////////////////////////////////////////////////////////
- template <typename CharT, typename ParserT, typename SkipT>
- parse_info<CharT const*>
- parse(
- CharT const* str,
- parser<ParserT> const& p,
- parser<SkipT> const& skip);
-
- ///////////////////////////////////////////////////////////////////////////////
- //
- // phrase_scanner_t and wide_phrase_scanner_t
- //
- // The most common scanners. Use these typedefs when you need
- // a scanner that skips white spaces.
- //
- ///////////////////////////////////////////////////////////////////////////////
- typedef skipper_iteration_policy<> iter_policy_t;
- typedef scanner_policies<iter_policy_t> scanner_policies_t;
- typedef scanner<char const*, scanner_policies_t> phrase_scanner_t;
- typedef scanner<wchar_t const*, scanner_policies_t> wide_phrase_scanner_t;
-
- ///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_skipper.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_skipper.hpp"
+#endif
 
-#include <boost/spirit/core/scanner/impl/skipper.ipp>
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_skipper.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/scanner/skipper_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/scanner/skipper_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/core/scanner/skipper_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,28 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SKIPPER_FWD_HPP)
-#define BOOST_SPIRIT_SKIPPER_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SKIPPER_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SKIPPER_FWD
 
-#include <boost/spirit/core/scanner/scanner_fwd.hpp>
-
-namespace boost { namespace spirit {
-
- template <typename BaseT = iteration_policy>
- struct skipper_iteration_policy;
-
- template <typename BaseT = iteration_policy>
- struct no_skipper_iteration_policy;
-
- template <typename ParserT, typename BaseT = iteration_policy>
- class skip_parser_iteration_policy;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_skipper_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_skipper_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_skipper_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/core/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/core/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,335 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_CORE_TYPEOF_HPP)
-#define BOOST_SPIRIT_CORE_TYPEOF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
-#include <boost/config.hpp>
-#include <boost/cstdint.hpp>
-
-#include <boost/typeof/typeof.hpp>
-
-#include <boost/spirit/core/nil.hpp>
-#include <boost/spirit/core/primitives/numerics_fwd.hpp>
-#include <boost/spirit/core/scanner/scanner_fwd.hpp>
-#include <boost/spirit/core/scanner/skipper_fwd.hpp>
-#include <boost/spirit/core/non_terminal/subrule_fwd.hpp>
-
-namespace boost { namespace spirit {
-
- // parser.hpp
- template <typename IteratorT> struct parse_info;
- struct plain_parser_category;
- struct binary_parser_category;
- struct unary_parser_category;
- struct action_parser_category;
-
- // match.hpp
- template<typename T> class match;
-
- // primitives/primitives.hpp
- template<class ParserT> struct negated_char_parser;
- template<typename CharT> struct chlit;
- template<typename CharT> struct range;
- template<typename IteratorT> class chseq;
- template<typename IteratorT> class strlit;
- struct nothing_parser;
- struct anychar_parser;
- struct alnum_parser;
- struct alpha_parser;
- struct cntrl_parser;
- struct digit_parser;
- struct xdigit_parser;
- struct graph_parser;
- struct upper_parser;
- struct lower_parser;
- struct print_parser;
- struct punct_parser;
- struct blank_parser;
- struct space_parser;
- struct eol_parser;
- struct end_parser;
-
- // non_terminal/parser_context.hpp
- template<typename T> struct parser_context;
-
- // non_terminal/parser_id.hpp
- class parser_id;
- template<int N> struct parser_tag;
- class dynamic_parser_tag;
- struct parser_address_tag;
-
- // non_terminal/rule.hpp
- template<typename T0, typename T1, typename T2> class rule;
-
- // non_terminal/grammar.hpp
- template<class DerivedT, typename ContextT> struct grammar;
-
- // composite.hpp
- template<class ParserT, typename ActionT> class action;
- template<class A, class B> struct alternative;
- template<class A, class B> struct difference;
- template<class A, class B> struct exclusive_or;
- template<class A, class B> struct intersection;
- template<class a, class b> struct sequence;
- template<class A, class B> struct sequential_or;
- template<class S> struct kleene_star;
- template<class S> struct positive;
- template<class S> struct optional;
- // composite/directives.hpp
- template<class ParserT> struct contiguous;
- template<class ParserT> struct inhibit_case;
- template<class BaseT> struct inhibit_case_iteration_policy;
- template<class A, class B> struct longest_alternative;
- template<class A, class B> struct shortest_alternative;
- template<class ParserT, typename BoundsT> struct min_bounded;
- template<class ParserT, typename BoundsT> struct max_bounded;
- template<class ParserT, typename BoundsT> struct bounded;
- // composite/no_actions.hpp
- template<class Parser> struct no_actions_parser;
- template<class Base> struct no_actions_action_policy;
- // composite/epsilon.hpp
- struct epsilon_parser;
- template<typename CondT, bool positive> struct condition_parser;
- template<typename SubjectT> struct empty_match_parser;
- template<typename SubjectT> struct negated_empty_match_parser;
-
- // deprecated assign/push_back actor -- they live somewhere else, now
- struct assign_action;
- struct push_back_action;
- template<typename T, typename ActionT> class ref_value_actor;
- template<typename T, typename ValueT, typename ActionT>
- class ref_const_ref_actor;
-
-}} // namespace boost::spirit
-
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-
-// parser.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::parse_info,1)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::plain_parser_category)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::binary_parser_category)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::unary_parser_category)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::action_parser_category)
-
-
-// nil.hpp (included directly)
-
-#if !defined(BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED)
-// registration guard to decouple the iterators from the core
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::nil_t)
-# define BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED
-#endif
-
-// match.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::match, 1)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::match<boost::spirit::nil_t>)
-
-
-// primitives/primitives.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::negated_char_parser, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::chlit, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::range, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::chseq, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::strlit, 1)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::nothing_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::anychar_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::alnum_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::alpha_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::cntrl_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::digit_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::xdigit_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::graph_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::upper_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::lower_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::print_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::punct_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::blank_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::space_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::eol_parser)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::end_parser)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::chlit<char>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::chlit<wchar_t>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::range<char>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::range<wchar_t>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::chseq<char const *>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::chseq<wchar_t const *>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::strlit<char const *>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::strlit<wchar_t const *>)
-
-
-// primitives/numerics.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::int_parser, (class)(int)(unsigned)(int))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::uint_parser, (class)(int)(unsigned)(int))
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::sign_parser)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::real_parser, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::real_parser_policies, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ureal_parser_policies, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::strict_real_parser_policies, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::strict_ureal_parser_policies, 1)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::int_parser, (class)(int))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::uint_parser, (class)(int))
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::int_parser<boost::int32_t>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::uint_parser<boost::uint32_t>)
-#if !defined(BOOST_NO_INT64_T)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::int_parser<boost::int64_t>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::uint_parser<boost::uint64_t>)
-#endif
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::real_parser_policies<float>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::real_parser_policies<double>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::ureal_parser_policies<float>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::ureal_parser_policies<double>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::strict_real_parser_policies<float>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::strict_real_parser_policies<double>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::strict_ureal_parser_policies<float>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::strict_ureal_parser_policies<double>)
-
-
-// scanner/scanner.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::scanner,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::scanner_policies,3)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::iteration_policy)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::action_policy)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::match_policy)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::scanner,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::scanner_policies,2)
-
-
-// scanner/skipper.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::skipper_iteration_policy,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::no_skipper_iteration_policy,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::skip_parser_iteration_policy,2)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::skipper_iteration_policy<>)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::skip_parser_iteration_policy,1)
-
-
-// non_terminal/parser_context.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::parser_context,1)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::parser_context<boost::spirit::nil_t>)
-
-
-// non_terminal/parser_id.hpp
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::parser_id)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::parser_tag, (int))
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::dynamic_parser_tag)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::parser_address_tag)
-
-
-// non_terminal/subrule.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::subrule,(int)(class))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::subrule_parser,(int)(class)(class))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::subrule_list,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::subrules_scanner,2)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::subrule,(int))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::subrule_parser,(int)(class))
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::subrule<0>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::subrule<1>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::subrule<2>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::subrule<3>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::subrule<4>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::subrule<5>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::subrule<6>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::subrule<7>)
-
-
-// non_terminal/rule.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::rule,3)
-#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::scanner_list,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::scanner_list,BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT)
-#endif
-
-
-// non_terminal/grammar.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::grammar,2)
-
-
-// composite.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::action, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::alternative, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::difference, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::exclusive_or, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::intersection, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::sequence, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::sequential_or, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::kleene_star, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::positive, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::optional, 1)
-
-
-// composite/directives.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::contiguous, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::inhibit_case, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::inhibit_case_iteration_policy,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::longest_alternative, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::shortest_alternative, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::min_bounded, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::max_bounded, 2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::bounded, 2)
-
-
-// composite/no_actions.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::no_actions_parser, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::no_actions_action_policy, 1)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::no_actions_action_policy<boost::spirit::action_policy>)
-
-
-// composite/epsilon.hpp
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::epsilon_parser)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::condition_parser, (class)(bool))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::empty_match_parser, 1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::negated_empty_match_parser, 1)
-
-
-#if !defined(BOOST_SPIRIT_ACTOR_TYPEOF_HPP)
-// deprecated assign/push_back actor -- they live somewhere else, now
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ref_value_actor,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ref_const_ref_actor,3)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::assign_action)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::push_back_action)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
 
-
-#if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) && BOOST_MSVC >= 1400
-namespace boost { namespace spirit {
-
- nil_t & operator* (nil_t);
- nil_t & operator+ (nil_t);
-
-} } // namespace ::boost::spirit::type_of
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
-
+#include <boost/spirit/include/classic_typeof.hpp>
 
 #endif
-

Modified: branches/proto/v4/boost/spirit/debug.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug.hpp (original)
+++ branches/proto/v4/boost/spirit/debug.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,146 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_DEBUG_MAIN_HPP)
-#define BOOST_SPIRIT_DEBUG_MAIN_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DEBUG
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_DEBUG
 
-///////////////////////////////////////////////////////////////////////////
-#if defined(BOOST_SPIRIT_DEBUG)
-
-#include <boost/spirit/version.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit.Debug includes and defines
-//
-///////////////////////////////////////////////////////////////////////////////
-
- #include <iostream>
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // The BOOST_SPIRIT_DEBUG_OUT defines the stream object, which should be used
- // for debug diagnostics. This defaults to std::cout.
- //
- ///////////////////////////////////////////////////////////////////////////
- #if !defined(BOOST_SPIRIT_DEBUG_OUT)
- #define BOOST_SPIRIT_DEBUG_OUT std::cout
- #endif
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // The BOOST_SPIRIT_DEBUG_PRINT_SOME constant defines the number of characters
- // from the stream to be printed for diagnosis. This defaults to the first
- // 20 characters.
- //
- ///////////////////////////////////////////////////////////////////////////
- #if !defined(BOOST_SPIRIT_DEBUG_PRINT_SOME)
- #define BOOST_SPIRIT_DEBUG_PRINT_SOME 20
- #endif
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Additional BOOST_SPIRIT_DEBUG_FLAGS control the level of diagnostics printed
- // Basic constants are defined in debug/minimal.hpp.
- //
- ///////////////////////////////////////////////////////////////////////////
- #define BOOST_SPIRIT_DEBUG_FLAGS_NODES 0x0001 // node diagnostics
- #define BOOST_SPIRIT_DEBUG_FLAGS_ESCAPE_CHAR 0x0002 // escape_char_parse diagnostics
- #define BOOST_SPIRIT_DEBUG_FLAGS_TREES 0x0004 // parse tree/ast diagnostics
- #define BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES 0x0008 // closure diagnostics
- #define BOOST_SPIRIT_DEBUG_FLAGS_SLEX 0x8000 // slex diagnostics
-
- #define BOOST_SPIRIT_DEBUG_FLAGS_MAX 0xFFFF // print maximal diagnostics
-
- #if !defined(BOOST_SPIRIT_DEBUG_FLAGS)
- #define BOOST_SPIRIT_DEBUG_FLAGS BOOST_SPIRIT_DEBUG_FLAGS_MAX
- #endif
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // By default all nodes are traced (even those, not registered with
- // BOOST_SPIRIT_DEBUG_RULE et.al. - see below). The following constant may be
- // used to redefine this default.
- //
- ///////////////////////////////////////////////////////////////////////////
- #if !defined(BOOST_SPIRIT_DEBUG_TRACENODE)
- #define BOOST_SPIRIT_DEBUG_TRACENODE (true)
- #endif // !defined(BOOST_SPIRIT_DEBUG_TRACENODE)
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Helper macros for giving rules and subrules a name accessible through
- // parser_name() functions (see parser_names.hpp).
- //
- // Additionally, the macros BOOST_SPIRIT_DEBUG_RULE, SPIRIT_DEBUG_NODE and
- // BOOST_SPIRIT_DEBUG_GRAMMAR enable/disable the tracing of the
- // correspondingnode accordingly to the PP constant
- // BOOST_SPIRIT_DEBUG_TRACENODE.
- //
- // The macros BOOST_SPIRIT_DEBUG_TRACE_RULE, BOOST_SPIRIT_DEBUG_TRACE_NODE
- // and BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR allow to specify a flag to define,
- // whether the corresponding node is to be traced or not.
- //
- ///////////////////////////////////////////////////////////////////////////
- #if !defined(BOOST_SPIRIT_DEBUG_RULE)
- #define BOOST_SPIRIT_DEBUG_RULE(r) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, #r, BOOST_SPIRIT_DEBUG_TRACENODE)
- #endif // !defined(BOOST_SPIRIT_DEBUG_RULE)
-
- #if !defined(BOOST_SPIRIT_DEBUG_NODE)
- #define BOOST_SPIRIT_DEBUG_NODE(r) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, #r, BOOST_SPIRIT_DEBUG_TRACENODE)
- #endif // !defined(BOOST_SPIRIT_DEBUG_NODE)
-
- #if !defined(BOOST_SPIRIT_DEBUG_GRAMMAR)
- #define BOOST_SPIRIT_DEBUG_GRAMMAR(r) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, #r, BOOST_SPIRIT_DEBUG_TRACENODE)
- #endif // !defined(BOOST_SPIRIT_DEBUG_GRAMMAR)
-
- #if !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE)
- #define BOOST_SPIRIT_DEBUG_TRACE_RULE(r, t) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, #r, (t))
- #endif // !defined(BOOST_SPIRIT_TRACE_RULE)
-
- #if !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE)
- #define BOOST_SPIRIT_DEBUG_TRACE_NODE(r, t) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, #r, (t))
- #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE)
-
- #if !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR)
- #define BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR(r, t) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, #r, (t))
- #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR)
-
- #if !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME)
- #define BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME(r, n, t) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, (n), (t))
- #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME)
-
- #if !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME)
- #define BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME(r, n, t) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, (n), (t))
- #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME)
-
- #if !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME)
- #define BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME(r, n, t) \
- ::boost::spirit::impl::get_node_registry().register_node(&r, (n), (t))
- #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME)
-
- //////////////////////////////////
- #include <boost/spirit/debug/debug_node.hpp>
-
-#else
- //////////////////////////////////
- #include <boost/spirit/debug/minimal.hpp>
-
-#endif // BOOST_SPIRIT_DEBUG
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_debug.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_debug.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_debug.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/debug/debug_node.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug/debug_node.hpp (original)
+++ branches/proto/v4/boost/spirit/debug/debug_node.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,315 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- Copyright (c) 2003 Gustavo Guerra
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_DEBUG_NODE_HPP)
-#define BOOST_SPIRIT_DEBUG_NODE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DEBUG_NODE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_DEBUG_NODE
 
-#if !defined(BOOST_SPIRIT_DEBUG_MAIN_HPP)
-#error "You must include boost/spirit/debug.hpp, not boost/spirit/debug/debug_node.hpp"
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_debug_node.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_debug_node.hpp"
 #endif
 
-#if defined(BOOST_SPIRIT_DEBUG)
-
-#include <string>
-
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp> // for iscntrl_
-
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Debug helper classes for rules, which ensure maximum non-intrusiveness of
-// the Spirit debug support
-//
-///////////////////////////////////////////////////////////////////////////////
-
-namespace impl {
-
- struct token_printer_aux_for_chars
- {
- template<typename CharT>
- static void print(std::ostream& o, CharT c)
- {
- if (c == static_cast<CharT>('\a'))
- o << "\\a";
-
- else if (c == static_cast<CharT>('\b'))
- o << "\\b";
-
- else if (c == static_cast<CharT>('\f'))
- o << "\\f";
-
- else if (c == static_cast<CharT>('\n'))
- o << "\\n";
-
- else if (c == static_cast<CharT>('\r'))
- o << "\\r";
-
- else if (c == static_cast<CharT>('\t'))
- o << "\\t";
-
- else if (c == static_cast<CharT>('\v'))
- o << "\\v";
-
- else if (iscntrl_(c))
- o << "\\" << static_cast<int>(c);
-
- else
- o << static_cast<char>(c);
- }
- };
-
- // for token types where the comparison with char constants wouldn't work
- struct token_printer_aux_for_other_types
- {
- template<typename CharT>
- static void print(std::ostream& o, CharT c)
- {
- o << c;
- }
- };
-
- template <typename CharT>
- struct token_printer_aux
- : mpl::if_<
- mpl::and_<
- is_convertible<CharT, char>,
- is_convertible<char, CharT> >,
- token_printer_aux_for_chars,
- token_printer_aux_for_other_types
- >::type
- {
- };
-
- template<typename CharT>
- inline void token_printer(std::ostream& o, CharT c)
- {
- #if !defined(BOOST_SPIRIT_DEBUG_TOKEN_PRINTER)
-
- token_printer_aux<CharT>::print(o, c);
-
- #else
-
- BOOST_SPIRIT_DEBUG_TOKEN_PRINTER(o, c);
-
- #endif
- }
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Dump infos about the parsing state of a rule
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES
- template <typename IteratorT>
- inline void
- print_node_info(bool hit, int level, bool close, std::string const& name,
- IteratorT first, IteratorT last)
- {
- if (!name.empty())
- {
- for (int i = 0; i < level; ++i)
- BOOST_SPIRIT_DEBUG_OUT << " ";
- if (close)
- {
- if (hit)
- BOOST_SPIRIT_DEBUG_OUT << "/";
- else
- BOOST_SPIRIT_DEBUG_OUT << "#";
- }
- BOOST_SPIRIT_DEBUG_OUT << name << ":\t\"";
- IteratorT iter = first;
- IteratorT ilast = last;
- for (int j = 0; j < BOOST_SPIRIT_DEBUG_PRINT_SOME; ++j)
- {
- if (iter == ilast)
- break;
-
- token_printer(BOOST_SPIRIT_DEBUG_OUT, *iter);
- ++iter;
- }
- BOOST_SPIRIT_DEBUG_OUT << "\"\n";
- }
- }
-#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES
-
-#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES
- template <typename ResultT>
- inline ResultT &
- print_closure_info(ResultT &hit, int level, std::string const& name)
- {
- if (!name.empty())
- {
- for (int i = 0; i < level-1; ++i)
- BOOST_SPIRIT_DEBUG_OUT << " ";
-
- // for now, print out the return value only
- BOOST_SPIRIT_DEBUG_OUT << "^" << name << ":\t";
- if (hit.has_valid_attribute())
- BOOST_SPIRIT_DEBUG_OUT << hit.value();
- else
- BOOST_SPIRIT_DEBUG_OUT << "undefined attribute";
- BOOST_SPIRIT_DEBUG_OUT << "\n";
- }
- return hit;
- }
-#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES
-
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Implementation note: The parser_context_linker, parser_scanner_linker and
-// closure_context_linker classes are wrapped by a PP constant to allow
-// redefinition of this classes outside of Spirit
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED)
-#define BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_context_linker is a debug wrapper for the ContextT template
- // parameter of the rule<>, subrule<> and the grammar<> classes
- //
- ///////////////////////////////////////////////////////////////////////////
- template<typename ContextT>
- struct parser_context_linker : public ContextT
- {
- typedef ContextT base_t;
-
- template <typename ParserT>
- parser_context_linker(ParserT const& p)
- : ContextT(p) {}
-
- template <typename ParserT, typename ScannerT>
- void pre_parse(ParserT const& p, ScannerT &scan)
- {
- this->base_t::pre_parse(p, scan);
-
-#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES
- if (trace_parser(p.derived())) {
- impl::print_node_info(
- false,
- scan.get_level(),
- false,
- parser_name(p.derived()),
- scan.first,
- scan.last);
- }
- scan.get_level()++;
-#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES
- }
-
- template <typename ResultT, typename ParserT, typename ScannerT>
- ResultT& post_parse(ResultT& hit, ParserT const& p, ScannerT &scan)
- {
-#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES
- --scan.get_level();
- if (trace_parser(p.derived())) {
- impl::print_node_info(
- hit,
- scan.get_level(),
- true,
- parser_name(p.derived()),
- scan.first,
- scan.last);
- }
-#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES
-
- return this->base_t::post_parse(hit, p, scan);
- }
- };
-
-#endif // !defined(BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED)
-
-#if !defined(BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED)
-#define BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED
-
-///////////////////////////////////////////////////////////////////////////////
-// This class is to avoid linker problems and to ensure a real singleton
-// 'level' variable
- struct debug_support
- {
- int& get_level()
- {
- static int level = 0;
- return level;
- }
- };
-
- template<typename ScannerT>
- struct parser_scanner_linker : public ScannerT
- {
- parser_scanner_linker(ScannerT const &scan_) : ScannerT(scan_)
- {}
-
- int &get_level()
- { return debug.get_level(); }
-
- private: debug_support debug;
- };
-
-#endif // !defined(BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED)
-
-#if !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED)
-#define BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // closure_context_linker is a debug wrapper for the closure template
- // parameter of the rule<>, subrule<> and grammar classes
- //
- ///////////////////////////////////////////////////////////////////////////
-
- template<typename ContextT>
- struct closure_context_linker : public parser_context_linker<ContextT>
- {
- typedef parser_context_linker<ContextT> base_t;
-
- template <typename ParserT>
- closure_context_linker(ParserT const& p)
- : parser_context_linker<ContextT>(p) {}
-
- template <typename ParserT, typename ScannerT>
- void pre_parse(ParserT const& p, ScannerT &scan)
- { this->base_t::pre_parse(p, scan); }
-
- template <typename ResultT, typename ParserT, typename ScannerT>
- ResultT&
- post_parse(ResultT& hit, ParserT const& p, ScannerT &scan)
- {
-#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES
- if (hit && trace_parser(p.derived())) {
- // for now, print out the return value only
- return impl::print_closure_info(
- this->base_t::post_parse(hit, p, scan),
- scan.get_level(),
- parser_name(p.derived())
- );
- }
-#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES
-
- return this->base_t::post_parse(hit, p, scan);
- }
- };
-
-#endif // !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED)
-
-}} // namespace boost::spirit
-
-#endif // defined(BOOST_SPIRIT_DEBUG)
-
-#endif // !defined(BOOST_SPIRIT_DEBUG_NODE_HPP)
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_debug_node.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/debug/minimal.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug/minimal.hpp (original)
+++ branches/proto/v4/boost/spirit/debug/minimal.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,82 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_MINIMAL_DEBUG_HPP)
-#define BOOST_SPIRIT_MINIMAL_DEBUG_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_MINIMAL
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_MINIMAL
 
-#if !defined(BOOST_SPIRIT_DEBUG_MAIN_HPP)
-#error "You must include boost/spirit/debug.hpp, not boost/spirit/debug/minimal.hpp"
-#endif
-///////////////////////////////////////////////////////////////////////////////
-//
-// Minimum debugging tools support
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_DEBUG_OUT)
-#define BOOST_SPIRIT_DEBUG_OUT std::cout
-#endif
-
-///////////////////////////////////////////////////////////////////////////
-//
-// BOOST_SPIRIT_DEBUG_FLAGS controls the level of diagnostics printed
-//
-///////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_DEBUG_FLAGS_NONE)
-#define BOOST_SPIRIT_DEBUG_FLAGS_NONE 0x0000 // no diagnostics at all
-#endif
-
-#if !defined(BOOST_SPIRIT_DEBUG_FLAGS_MAX)
-#define BOOST_SPIRIT_DEBUG_FLAGS_MAX 0xFFFF // print maximal diagnostics
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_minimal.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_minimal.hpp"
 #endif
 
-#if !defined(BOOST_SPIRIT_DEBUG_FLAGS)
-#define BOOST_SPIRIT_DEBUG_FLAGS SPIRIT_DEBUG_FLAGS_MAX
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_minimal.hpp>
 
-#if !defined(BOOST_SPIRIT_DEBUG_PRINT_SOME)
-#define BOOST_SPIRIT_DEBUG_PRINT_SOME 20
 #endif
-
-#if !defined(BOOST_SPIRIT_DEBUG_RULE)
-#define BOOST_SPIRIT_DEBUG_RULE(r)
-#endif // !defined(BOOST_SPIRIT_DEBUG_RULE)
-
-#if !defined(BOOST_SPIRIT_DEBUG_NODE)
-#define BOOST_SPIRIT_DEBUG_NODE(r)
-#endif // !defined(BOOST_SPIRIT_DEBUG_NODE)
-
-#if !defined(BOOST_SPIRIT_DEBUG_GRAMMAR)
-#define BOOST_SPIRIT_DEBUG_GRAMMAR(r)
-#endif // !defined(BOOST_SPIRIT_DEBUG_GRAMMAR)
-
-#if !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE)
-#define BOOST_SPIRIT_DEBUG_TRACE_RULE(r, t)
-#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE)
-
-#if !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE)
-#define BOOST_SPIRIT_DEBUG_TRACE_NODE(r, t)
-#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE)
-
-#if !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR)
-#define BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR(r, t)
-#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR)
-
-#if !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME)
-#define BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME(r, n, t)
-#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME)
-
-#if !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME)
-#define BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME(r, n, t)
-#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME)
-
-#if !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME)
-#define BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME(r, n, t)
-#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME)
-
-#endif // !defined(BOOST_SPIRIT_MINIMAL_DEBUG_HPP)

Modified: branches/proto/v4/boost/spirit/debug/parser_names.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug/parser_names.hpp (original)
+++ branches/proto/v4/boost/spirit/debug/parser_names.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,250 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_PARSER_NAMES_HPP)
-#define BOOST_SPIRIT_PARSER_NAMES_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_NAMES
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_NAMES
 
-#if defined(BOOST_SPIRIT_DEBUG)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser_names.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parser_names.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_parser_names.hpp>
 
-//////////////////////////////////
-#include <boost/spirit/core.hpp>
-
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Declaration of helper functions, which return the name of a concrete
-// parser instance. The functions are specialized on the parser types. The
-// functions declared in this file are for the predefined parser types from
-// the Spirit core library only, so additional functions might be provided as
-// needed.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-// from actions.hpp
- template <typename ParserT, typename ActionT>
- std::string
- parser_name(action<ParserT, ActionT> const& p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from directives.hpp
- template <typename ParserT>
- std::string
- parser_name(contiguous<ParserT> const& p);
-
- template <typename ParserT>
- std::string
- parser_name(inhibit_case<ParserT> const& p);
-
- template <typename A, typename B>
- std::string
- parser_name(longest_alternative<A, B> const& p);
-
- template <typename A, typename B>
- std::string
- parser_name(shortest_alternative<A, B> const& p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from grammar.hpp
- template <typename DerivedT, typename ContextT>
- std::string
- parser_name(grammar<DerivedT, ContextT> const& p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from numerics.hpp
- template <typename T, int Radix, unsigned MinDigits, int MaxDigits>
- std::string
- parser_name(uint_parser<T, Radix, MinDigits, MaxDigits> const& p);
-
- template <typename T, int Radix, unsigned MinDigits, int MaxDigits>
- std::string
- parser_name(int_parser<T, Radix, MinDigits, MaxDigits> const& p);
-
- template <typename T, typename RealPoliciesT>
- std::string
- parser_name(real_parser<T, RealPoliciesT> const& p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from operators.hpp
- template <typename A, typename B>
- std::string
- parser_name(sequence<A, B> const& p);
-
- template <typename A, typename B>
- std::string
- parser_name(sequential_or<A, B> const& p);
-
- template <typename A, typename B>
- std::string
- parser_name(alternative<A, B> const& p);
-
- template <typename A, typename B>
- std::string
- parser_name(intersection<A, B> const& p);
-
- template <typename A, typename B>
- std::string
- parser_name(difference<A, B> const& p);
-
- template <typename A, typename B>
- std::string
- parser_name(exclusive_or<A, B> const& p);
-
- template <typename S>
- std::string
- parser_name(optional<S> const& p);
-
- template <typename S>
- std::string
- parser_name(kleene_star<S> const& p);
-
- template <typename S>
- std::string
- parser_name(positive<S> const& p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from parser.hpp
- template <typename DerivedT>
- std::string
- parser_name(parser<DerivedT> const& p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from primitives.hpp
- template <typename DerivedT>
- std::string
- parser_name(char_parser<DerivedT> const &p);
-
- template <typename CharT>
- std::string
- parser_name(chlit<CharT> const &p);
-
- template <typename CharT>
- std::string
- parser_name(range<CharT> const &p);
-
- template <typename IteratorT>
- std::string
- parser_name(chseq<IteratorT> const &p);
-
- template <typename IteratorT>
- std::string
- parser_name(strlit<IteratorT> const &p);
-
- std::string
- parser_name(nothing_parser const &p);
-
- std::string
- parser_name(epsilon_parser const &p);
-
- std::string
- parser_name(anychar_parser const &p);
-
- std::string
- parser_name(alnum_parser const &p);
-
- std::string
- parser_name(alpha_parser const &p);
-
- std::string
- parser_name(cntrl_parser const &p);
-
- std::string
- parser_name(digit_parser const &p);
-
- std::string
- parser_name(graph_parser const &p);
-
- std::string
- parser_name(lower_parser const &p);
-
- std::string
- parser_name(print_parser const &p);
-
- std::string
- parser_name(punct_parser const &p);
-
- std::string
- parser_name(blank_parser const &p);
-
- std::string
- parser_name(space_parser const &p);
-
- std::string
- parser_name(upper_parser const &p);
-
- std::string
- parser_name(xdigit_parser const &p);
-
- std::string
- parser_name(eol_parser const &p);
-
- std::string
- parser_name(end_parser const &p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from rule.hpp
- template<typename T0, typename T1, typename T2>
- std::string
- parser_name(rule<T0, T1, T2> const& p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from subrule.hpp
- template <typename FirstT, typename RestT>
- std::string
- parser_name(subrule_list<FirstT, RestT> const &p);
-
- template <int ID, typename DefT, typename ContextT>
- std::string
- parser_name(subrule_parser<ID, DefT, ContextT> const &p);
-
- template <int ID, typename ContextT>
- std::string
- parser_name(subrule<ID, ContextT> const &p);
-
-///////////////////////////////////////////////////////////////////////////////
-// from chset.hpp
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Decide, if a node is to be traced or not
-//
-///////////////////////////////////////////////////////////////////////////////
- template<
- typename DerivedT, typename EmbedT,
- typename T0, typename T1, typename T2
- >
- bool
- trace_parser(impl::rule_base<DerivedT, EmbedT, T0, T1, T2>
- const& p);
-
- template <typename DerivedT, typename ContextT>
- bool
- trace_parser(grammar<DerivedT, ContextT> const& p);
-
- template <int ID, typename ContextT>
- bool
- trace_parser(subrule<ID, ContextT> const& p);
-
- template <typename ParserT, typename ActorTupleT>
- struct init_closure_parser;
-
- template <typename ParserT, typename ActorTupleT>
- bool
- trace_parser(init_closure_parser<ParserT, ActorTupleT> const& p);
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
-
-//////////////////////////////////
-#include <boost/spirit/debug/impl/parser_names.ipp>
-
-#endif // defined(BOOST_SPIRIT_DEBUG)
-
-#endif // !defined(BOOST_SPIRIT_PARSER_NAMES_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/debug/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/debug/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,36 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_DEBUG_TYPEOF_HPP)
-#define BOOST_SPIRIT_DEBUG_TYPEOF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
-#include <boost/typeof/typeof.hpp>
-
-#include <boost/spirit/core/typeof.hpp>
-
-
-namespace boost { namespace spirit {
-
- // debug_node.hpp
- template<typename ContextT> struct parser_context_linker;
- template<typename ScannerT> struct scanner_context_linker;
- template<typename ContextT> struct closure_context_linker;
-
-}} // namespace boost::spirit
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-
-// debug_node.hpp
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::parser_context_linker,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::scanner_context_linker,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::closure_context_linker,1)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,29 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002-2003 Martin Wille
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_DYNAMIC_HPP
-#define BOOST_SPIRIT_DYNAMIC_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DYNAMIC
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_DYNAMIC
 
-#include <boost/spirit/version.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_dynamic.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_dynamic.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Master header for Spirit.Dynamic
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/dynamic/if.hpp>
-#include <boost/spirit/dynamic/for.hpp>
-#include <boost/spirit/dynamic/while.hpp>
-#include <boost/spirit/dynamic/lazy.hpp>
-#include <boost/spirit/dynamic/stored_rule.hpp>
-#include <boost/spirit/dynamic/rule_alias.hpp>
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_dynamic.hpp>
 
-////////////////////////////////////////////////////////////////////////////////
-#endif // BOOST_SPIRIT_DYNAMIC_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic/for.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/for.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/for.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,183 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Martin Wille
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_FOR_HPP
-#define BOOST_SPIRIT_FOR_HPP
-////////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/dynamic/impl/conditions.ipp>
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_FOR
 
-////////////////////////////////////////////////////////////////////////////////
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_for.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_for.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_for.hpp>
 
-namespace boost { namespace spirit
-{
- namespace impl
- {
-
- template <typename FuncT>
- struct for_functor
- {
- typedef typename boost::call_traits<FuncT>::param_type param_t;
-
- for_functor(param_t f) : func(f) {}
- for_functor() {}
- FuncT func;
- };
-
- template <typename InitF>
- struct for_init_functor : for_functor<InitF>
- {
- typedef for_functor<InitF> base_t;
- typedef typename base_t::param_t param_t;
-
- for_init_functor(param_t f) : base_t(f) {}
- for_init_functor() : base_t() {}
- void init() const { /*return*/ this->func(); }
- };
-
- template <typename StepF>
- struct for_step_functor : for_functor<StepF>
- {
- typedef for_functor<StepF> base_t;
- typedef typename base_t::param_t param_t;
-
- for_step_functor(param_t f) : base_t(f) {}
- for_step_functor() : base_t() {}
- void step() const { /*return*/ this->func(); }
- };
-
- //////////////////////////////////
- // for_parser
- template
- <
- typename InitF, typename CondT, typename StepF,
- typename ParsableT
- >
- struct for_parser
- : private for_init_functor<InitF>
- , private for_step_functor<StepF>
- , private condition_evaluator<typename as_parser<CondT>::type>
- , public unary
- <
- typename as_parser<ParsableT>::type,
- parser< for_parser<InitF, CondT, StepF, ParsableT> >
- >
- {
- typedef for_parser<InitF, CondT, StepF, ParsableT> self_t;
- typedef as_parser<CondT> cond_as_parser_t;
- typedef typename cond_as_parser_t::type condition_t;
- typedef condition_evaluator<condition_t> eval_t;
- typedef as_parser<ParsableT> as_parser_t;
- typedef typename as_parser_t::type parser_t;
- typedef unary< parser_t, parser< self_t > > base_t;
-
-
- //////////////////////////////
- // constructor, saves init, condition and step functors
- // for later use the parse member function
- for_parser
- (
- InitF const &i, CondT const &c, StepF const &s,
- ParsableT const &p
- )
- : for_init_functor<InitF>(i)
- , for_step_functor<StepF>(s)
- , eval_t(cond_as_parser_t::convert(c))
- , base_t(as_parser_t::convert(p))
- { }
-
- for_parser()
- : for_init_functor<InitF>()
- , for_step_functor<StepF>()
- , eval_t()
- , base_t()
- {}
-
- //////////////////////////////
- // parse member function
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const &scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type
- result_t;
- typedef typename parser_result<parser_t, ScannerT>::type
- body_result_t;
-
- typename ScannerT::iterator_t save(scan.first);
-
- std::size_t length = 0;
- int eval_length = 0;
-
- this->init();
- while ((eval_length = this->evaluate(scan))>=0)
- {
- length += eval_length;
- body_result_t tmp(this->subject().parse(scan));
- if (tmp)
- {
- length+=tmp.length();
- }
- else
- {
- return scan.no_match();
- }
- this->step();
- }
-
- boost::spirit::nil_t attr;
- return scan.create_match
- (length, attr, save, scan.first);
- }
- };
-
- //////////////////////////////////
- // for_parser_gen generates takes the body parser in brackets
- // and returns the for_parser
- template <typename InitF, typename CondT, typename StepF>
- struct for_parser_gen
- {
- for_parser_gen(InitF const &i, CondT const &c, StepF const &s)
- : init(i)
- , condition(c)
- , step(s)
- {}
-
- template <typename ParsableT>
- for_parser<InitF, CondT, StepF, ParsableT>
- operator[](ParsableT const &p) const
- {
- return for_parser<InitF, CondT, StepF, ParsableT>
- (init, condition, step, p);
- }
-
- InitF const &init;
- CondT const &condition;
- StepF const &step;
- };
- } // namespace impl
-
- //////////////////////////////
- // for_p, returns for-parser generator
- // Usage: spirit::for_p(init-ftor, condition, step-ftor)[body]
- template
- <
- typename InitF, typename ConditionT, typename StepF
- >
- impl::for_parser_gen<InitF, ConditionT, StepF>
- for_p(InitF const &init_f, ConditionT const &condition, StepF const &step_f)
- {
- return impl::for_parser_gen<InitF, ConditionT, StepF>
- (init_f, condition, step_f);
- }
-
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_FOR_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic/if.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/if.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/if.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,225 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002-2003 Martin Wille
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_IF_HPP
-#define BOOST_SPIRIT_IF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_IF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_IF
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/dynamic/impl/conditions.ipp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_if.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_if.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_if.hpp>
 
-namespace boost { namespace spirit {
-
- namespace impl {
-
- //////////////////////////////////
- // if-else-parser, holds two alternative parsers and a conditional functor
- // that selects between them.
- template <typename ParsableTrueT, typename ParsableFalseT, typename CondT>
- struct if_else_parser
- : public condition_evaluator<typename as_parser<CondT>::type>
- , public binary
- <
- typename as_parser<ParsableTrueT>::type,
- typename as_parser<ParsableFalseT>::type,
- parser< if_else_parser<ParsableTrueT, ParsableFalseT, CondT> >
- >
- {
- typedef if_else_parser<ParsableTrueT, ParsableFalseT, CondT> self_t;
-
- typedef as_parser<ParsableTrueT> as_parser_true_t;
- typedef as_parser<ParsableFalseT> as_parser_false_t;
- typedef typename as_parser_true_t::type parser_true_t;
- typedef typename as_parser_false_t::type parser_false_t;
- typedef as_parser<CondT> cond_as_parser_t;
- typedef typename cond_as_parser_t::type condition_t;
-
- typedef binary<parser_true_t, parser_false_t, parser<self_t> > base_t;
- typedef condition_evaluator<condition_t> eval_t;
-
- if_else_parser
- (
- ParsableTrueT const& p_true,
- ParsableFalseT const& p_false,
- CondT const& cond_
- )
- : eval_t(cond_as_parser_t::convert(cond_))
- , base_t
- (
- as_parser_true_t::convert(p_true),
- as_parser_false_t::convert(p_false)
- )
- { }
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, nil_t>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result
- <parser_true_t, ScannerT>::type then_result_t;
- typedef typename parser_result
- <parser_false_t, ScannerT>::type else_result_t;
-
- typename ScannerT::iterator_t const save(scan.first);
-
- std::ptrdiff_t length = this->evaluate(scan);
- if (length >= 0)
- {
- then_result_t then_result(this->left().parse(scan));
- if (then_result)
- {
- length += then_result.length();
- return scan.create_match(std::size_t(length), nil_t(), save, scan.first);
- }
- }
- else
- {
- else_result_t else_result(this->right().parse(scan));
- if (else_result)
- {
- length = else_result.length();
- return scan.create_match(std::size_t(length), nil_t(), save, scan.first);
- }
- }
- return scan.no_match();
- }
- };
-
- //////////////////////////////////
- // if-else-parser generator, takes the false-parser in brackets
- // and returns the if-else-parser.
- template <typename ParsableTrueT, typename CondT>
- struct if_else_parser_gen
- {
- if_else_parser_gen(ParsableTrueT const& p_true_, CondT const& cond_)
- : p_true(p_true_)
- , cond(cond_) {}
-
- template <typename ParsableFalseT>
- if_else_parser
- <
- ParsableTrueT,
- ParsableFalseT,
- CondT
- >
- operator[](ParsableFalseT const& p_false) const
- {
- return if_else_parser<ParsableTrueT, ParsableFalseT, CondT>
- (
- p_true,
- p_false,
- cond
- );
- }
-
- ParsableTrueT const &p_true;
- CondT const &cond;
- };
-
- //////////////////////////////////
- // if-parser, conditionally runs a parser is a functor condition is true.
- // If the condition is fales, it fails the parse.
- // It can optionally become an if-else-parser through the member else_p.
- template <typename ParsableT, typename CondT>
- struct if_parser
- : public condition_evaluator<typename as_parser<CondT>::type>
- , public unary
- <
- typename as_parser<ParsableT>::type,
- parser<if_parser<ParsableT, CondT> > >
- {
- typedef if_parser<ParsableT, CondT> self_t;
- typedef as_parser<ParsableT> as_parser_t;
- typedef typename as_parser_t::type parser_t;
-
- typedef as_parser<CondT> cond_as_parser_t;
- typedef typename cond_as_parser_t::type condition_t;
- typedef condition_evaluator<condition_t> eval_t;
- typedef unary<parser_t, parser<self_t> > base_t;
-
- if_parser(ParsableT const& p, CondT const& cond_)
- : eval_t(cond_as_parser_t::convert(cond_))
- , base_t(as_parser_t::convert(p))
- , else_p(p, cond_)
- {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, nil_t>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<parser_t, ScannerT>::type t_result_t;
- typename ScannerT::iterator_t const save(scan.first);
-
- std::ptrdiff_t length = this->evaluate(scan);
- if (length >= 0)
- {
- t_result_t then_result(this->subject().parse(scan));
- if (then_result)
- {
- length += then_result.length();
- return scan.create_match(std::size_t(length), nil_t(), save, scan.first);
- }
- return scan.no_match();
- }
- return scan.empty_match();
- }
-
- if_else_parser_gen<ParsableT, CondT> else_p;
- };
-
- //////////////////////////////////
- // if-parser generator, takes the true-parser in brackets and returns the
- // if-parser.
- template <typename CondT>
- struct if_parser_gen
- {
- if_parser_gen(CondT const& cond_) : cond(cond_) {}
-
- template <typename ParsableT>
- if_parser
- <
- ParsableT,
- CondT
- >
- operator[](ParsableT const& subject) const
- {
- return if_parser<ParsableT, CondT>(subject, cond);
- }
-
- CondT const &cond;
- };
-
-} // namespace impl
-
-//////////////////////////////////
-// if_p function, returns "if" parser generator
-
-template <typename CondT>
-impl::if_parser_gen<CondT>
-if_p(CondT const& cond)
-{
- return impl::if_parser_gen<CondT>(cond);
-}
-
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_IF_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic/lazy.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/lazy.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/lazy.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,62 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Joel de Guzman
- Copyright (c) 2003 Vaclav Vesely
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_LAZY_HPP
-#define BOOST_SPIRIT_LAZY_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LAZY
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_LAZY
 
-////////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/phoenix/actor.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_lazy.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_lazy.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_lazy.hpp>
 
-////////////////////////////////////////////////////////////////////////////////
-
-namespace boost { namespace spirit
-{
- ////////////////////////////////////////////////////////////////////////////
- //
- // lazy_parser, holds phoenix actor which returns a spirit parser.
- //
- ////////////////////////////////////////////////////////////////////////////
-
- template<class ActorT>
- struct lazy_parser : parser<lazy_parser<ActorT> >
- {
- typedef lazy_parser<ActorT> self_t;
- typedef typename phoenix::actor_result<
- ActorT, phoenix::tuple<> >::plain_type actor_result_t;
-
- template<typename ScannerT>
- struct result
- {
- typedef typename
- parser_result<actor_result_t, ScannerT>::type
- type;
- };
-
- lazy_parser(ActorT const& actor_)
- : actor(actor_) {}
-
- template<typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- { return actor().parse(scan); }
-
- ActorT actor;
- };
-
- //////////////////////////////
- // lazy_p, returns lazy_parser
- // Usage: lazy_p(actor)
- template<class ActorT>
- lazy_parser<ActorT> lazy_p(ActorT const& actor)
- { return lazy_parser<ActorT>(actor); }
-
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_LAZY_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic/rule_alias.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/rule_alias.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/rule_alias.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,72 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_RULE_ALIAS_HPP)
-#define BOOST_SPIRIT_RULE_ALIAS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE_ALIAS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE_ALIAS
 
-#include <boost/spirit/core/parser.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // rule_alias class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ParserT>
- class rule_alias :
- public parser<rule_alias<ParserT> >
- {
- public:
-
- typedef rule_alias<ParserT> self_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- rule_alias()
- : ptr(0) {}
-
- rule_alias(ParserT const& p)
- : ptr(&p) {}
-
- rule_alias&
- operator=(ParserT const& p)
- {
- ptr = &p;
- return *this;
- }
-
- template <typename ScannerT>
- typename parser_result<ParserT, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- if (ptr)
- return ptr->parse(scan);
- else
- return scan.no_match();
- }
-
- ParserT const&
- get() const
- {
- assert(ptr != 0);
- return *ptr;
- }
-
- private:
-
- ParserT const* ptr; // hold it by pointer
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_rule_alias.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_rule_alias.hpp"
+#endif
 
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_rule_alias.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/dynamic/select.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/select.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/select.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,237 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_SELECT_HPP
-#define BOOST_SPIRIT_SELECT_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SELECT
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SELECT
 
-#include <boost/preprocessor/repeat.hpp>
-#include <boost/preprocessor/enum.hpp>
-#include <boost/preprocessor/enum_params.hpp>
-#include <boost/preprocessor/enum_params_with_defaults.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/facilities/intercept.hpp>
-
-#include <boost/spirit/core/parser.hpp>
-
-#include <boost/spirit/phoenix/tuples.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit predefined maximum number of possible embedded select_p parsers.
-// It should NOT be greater than PHOENIX_LIMIT!
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_SELECT_LIMIT)
-#define BOOST_SPIRIT_SELECT_LIMIT PHOENIX_LIMIT
-#endif // !defined(BOOST_SPIRIT_SELECT_LIMIT)
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// ensure BOOST_SPIRIT_SELECT_LIMIT <= PHOENIX_LIMIT and
-// BOOST_SPIRIT_SELECT_LIMIT > 0
-// BOOST_SPIRIT_SELECT_LIMIT <= 15
-//
-// [Pushed this down a little to make CW happy with BOOST_STATIC_ASSERT]
-// [Otherwise, it complains: 'boost_static_assert_test_42' redefined]
-//
-///////////////////////////////////////////////////////////////////////////////
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_SELECT_LIMIT <= PHOENIX_LIMIT);
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_SELECT_LIMIT > 0);
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_SELECT_LIMIT <= 15);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Calculate the required amount of tuple members rounded up to the nearest
-// integer dividable by 3
-//
-///////////////////////////////////////////////////////////////////////////////
-#if BOOST_SPIRIT_SELECT_LIMIT > 12
-#define BOOST_SPIRIT_SELECT_LIMIT_A 15
-#elif BOOST_SPIRIT_SELECT_LIMIT > 9
-#define BOOST_SPIRIT_SELECT_LIMIT_A 12
-#elif BOOST_SPIRIT_SELECT_LIMIT > 6
-#define BOOST_SPIRIT_SELECT_LIMIT_A 9
-#elif BOOST_SPIRIT_SELECT_LIMIT > 3
-#define BOOST_SPIRIT_SELECT_LIMIT_A 6
-#else
-#define BOOST_SPIRIT_SELECT_LIMIT_A 3
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_select.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_select.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The select_default_no_fail and select_default_fail structs are used to
-// distinguish two different behaviours for the select_parser in case that not
-// any of the given sub-parsers match.
-//
-// If the select_parser is used with the select_default_no_fail behaviour,
-// then in case of no matching sub-parser the whole select_parser returns an
-// empty match and the value -1.
-//
-// If the select_parser is used with the select_default_fail behaviour, then
-// in case of no matching sub-parser the whole select_parser fails to match at
-// all.
-//
-///////////////////////////////////////////////////////////////////////////////
-struct select_default_no_fail {};
-struct select_default_fail {};
-
-}} // namespace boost::spirit
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/dynamic/impl/select.ipp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-template <typename TupleT, typename BehaviourT, typename T>
-struct select_parser
-: public parser<select_parser<TupleT, BehaviourT, T> >
-{
- typedef select_parser<TupleT, BehaviourT, T> self_t;
-
- select_parser(TupleT const &t_)
- : t(t_)
- {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, T>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
-
- if (!scan.at_end()) {
- return impl::parse_tuple_element<
- TupleT::length, result_t, TupleT, BehaviourT>::do_(t, scan);
- }
- return impl::select_match_gen<result_t, BehaviourT>::do_(scan);
- }
-
- TupleT const t;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-template <typename BehaviourT, typename T = int>
-struct select_parser_gen {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // This generates different select_parser_gen::operator()() functions with
- // an increasing number of parser parameters:
- //
- // template <typename ParserT0, ...>
- // select_parser<
- // phoenix::tuple<
- // typename impl::as_embedded_parser<ParserT0>::type,
- // ...
- // >,
- // BehaviourT,
- // T
- // >
- // operator()(ParserT0 const &p0, ...) const
- // {
- // typedef impl::as_embedded_parser<ParserT0> parser_t0;
- // ...
- //
- // typedef phoenix::tuple<
- // parser_t0::type,
- // ...
- // > tuple_t;
- // typedef select_parser<tuple_t, BehaviourT, T> result_t;
- //
- // return result_t(tuple_t(
- // parser_t0::convert(p0),
- // ...
- // ));
- // }
- //
- // The number of generated functions depends on the maximum tuple member
- // limit defined by the PHOENIX_LIMIT pp constant.
- //
- ///////////////////////////////////////////////////////////////////////////
- #define BOOST_SPIRIT_SELECT_EMBEDDED(z, N, _) \
- typename impl::as_embedded_parser<BOOST_PP_CAT(ParserT, N)>::type \
- /**/
- #define BOOST_SPIRIT_SELECT_EMBEDDED_TYPEDEF(z, N, _) \
- typedef impl::as_embedded_parser<BOOST_PP_CAT(ParserT, N)> \
- BOOST_PP_CAT(parser_t, N); \
- /**/
- #define BOOST_SPIRIT_SELECT_CONVERT(z, N, _) \
- BOOST_PP_CAT(parser_t, N)::convert(BOOST_PP_CAT(p, N)) \
- /**/
-
- #define BOOST_SPIRIT_SELECT_PARSER(z, N, _) \
- template < \
- BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), typename ParserT) \
- > \
- select_parser< \
- phoenix::tuple< \
- BOOST_PP_ENUM_ ## z(BOOST_PP_INC(N), \
- BOOST_SPIRIT_SELECT_EMBEDDED, _) \
- >, \
- BehaviourT, \
- T \
- > \
- operator()( \
- BOOST_PP_ENUM_BINARY_PARAMS_Z(z, BOOST_PP_INC(N), \
- ParserT, const &p) \
- ) const \
- { \
- BOOST_PP_REPEAT_ ## z(BOOST_PP_INC(N), \
- BOOST_SPIRIT_SELECT_EMBEDDED_TYPEDEF, _) \
- \
- typedef phoenix::tuple< \
- BOOST_PP_ENUM_BINARY_PARAMS_Z(z, BOOST_PP_INC(N), \
- typename parser_t, ::type BOOST_PP_INTERCEPT) \
- > tuple_t; \
- typedef select_parser<tuple_t, BehaviourT, T> result_t; \
- \
- return result_t(tuple_t( \
- BOOST_PP_ENUM_ ## z(BOOST_PP_INC(N), \
- BOOST_SPIRIT_SELECT_CONVERT, _) \
- )); \
- } \
- /**/
-
- BOOST_PP_REPEAT(BOOST_SPIRIT_SELECT_LIMIT_A,
- BOOST_SPIRIT_SELECT_PARSER, _)
-
- #undef BOOST_SPIRIT_SELECT_PARSER
- #undef BOOST_SPIRIT_SELECT_CONVERT
- #undef BOOST_SPIRIT_SELECT_EMBEDDED_TYPEDEF
- #undef BOOST_SPIRIT_SELECT_EMBEDDED
- ///////////////////////////////////////////////////////////////////////////
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Predefined parser generator helper objects
-//
-///////////////////////////////////////////////////////////////////////////////
-select_parser_gen<select_default_no_fail> const select_p =
- select_parser_gen<select_default_no_fail>();
-
-select_parser_gen<select_default_fail> const select_fail_p =
- select_parser_gen<select_default_fail>();
-
-#undef BOOST_SPIRIT_SELECT_LIMIT_A
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_select.hpp>
 
-#endif // BOOST_SPIRIT_SELECT_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic/stored_rule.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/stored_rule.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/stored_rule.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,123 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_STORED_RULE_HPP)
-#define BOOST_SPIRIT_STORED_RULE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_STORED_RULE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_STORED_RULE
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core/non_terminal/impl/rule.ipp>
-#include <boost/spirit/dynamic/rule_alias.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include <boost/spirit/dynamic/stored_rule_fwd.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // stored_rule class
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename T0
- , typename T1
- , typename T2
- , bool EmbedByValue
- >
- class stored_rule
- : public impl::rule_base<
- stored_rule<T0, T1, T2, EmbedByValue>
- , typename mpl::if_c<
- EmbedByValue
- , stored_rule<T0, T1, T2, true>
- , stored_rule<T0, T1, T2> const&>::type
- , T0, T1, T2>
- {
- public:
-
- typedef stored_rule<T0, T1, T2, EmbedByValue> self_t;
- typedef impl::rule_base<
- self_t
- , typename mpl::if_c<
- EmbedByValue
- , stored_rule<T0, T1, T2, true>
- , self_t const&>::type
- , T0, T1, T2>
- base_t;
-
- typedef typename base_t::scanner_t scanner_t;
- typedef typename base_t::attr_t attr_t;
- typedef impl::abstract_parser<scanner_t, attr_t> abstract_parser_t;
- typedef rule_alias<self_t> alias_t;
-
- stored_rule() : ptr() {}
- ~stored_rule() {}
-
- stored_rule(stored_rule const& r)
- : ptr(r.ptr) {}
-
- template <typename ParserT>
- stored_rule(ParserT const& p)
- : ptr(new impl::concrete_parser<ParserT, scanner_t, attr_t>(p)) {}
-
- template <typename ParserT>
- stored_rule& operator=(ParserT const& p)
- {
- ptr.reset(new impl::concrete_parser<ParserT, scanner_t, attr_t>(p));
- return *this;
- }
-
- stored_rule& operator=(stored_rule const& r)
- {
- // If this is placed above the templatized assignment
- // operator, VC6 incorrectly complains ambiguity with
- // r1 = r2, where r1 and r2 are both rules.
- ptr = r.ptr;
- return *this;
- }
-
- stored_rule<T0, T1, T2, true>
- copy() const
- {
- return stored_rule<T0, T1, T2, true>(ptr);
- }
-
- alias_t
- alias() const
- {
- return alias_t(*this);
- }
-
- private:
-
- friend class impl::rule_base_access;
- friend class stored_rule<T0, T1, T2, !EmbedByValue>;
-
-#if defined(__GNUC__) && (__GNUC__ < 3)
- public:
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_stored_rule.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_stored_rule.hpp"
 #endif
- abstract_parser_t*
- get() const
- {
- return ptr.get();
- }
-#if defined(__GNUC__) && (__GNUC__ < 3)
- private:
-#endif
-
- stored_rule(shared_ptr<abstract_parser_t> const& ptr)
- : ptr(ptr) {}
 
- shared_ptr<abstract_parser_t> ptr;
- };
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_stored_rule.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/dynamic/stored_rule_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/stored_rule_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/stored_rule_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,27 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_STORED_RULE_FWD_HPP)
-#define BOOST_SPIRIT_STORED_RULE_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_STORED_RULE_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_STORED_RULE_FWD
 
-#include <boost/spirit/core/nil.hpp>
-
-namespace boost { namespace spirit {
-
- template <
- typename T0 = nil_t
- , typename T1 = nil_t
- , typename T2 = nil_t
- , bool EmbedByValue = false
- >
- class stored_rule;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_stored_rule_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_stored_rule_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_stored_rule_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic/switch.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/switch.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/switch.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,255 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_SWITCH_HPP
-#define BOOST_SPIRIT_SWITCH_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SWITCH
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SWITCH
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// The default_p parser generator template uses the following magic number
-// as the corresponding case label value inside the generated switch()
-// statements. If this number conflicts with your code, please pick a
-// different one.
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_DEFAULTCASE_MAGIC)
-#define BOOST_SPIRIT_DEFAULTCASE_MAGIC 0x15F97A7
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_switch.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_switch.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit predefined maximum number of possible case_p/default_p case branch
-// parsers.
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_SWITCH_CASE_LIMIT)
-#define BOOST_SPIRIT_SWITCH_CASE_LIMIT 3
-#endif // !defined(BOOST_SPIRIT_SWITCH_CASE_LIMIT)
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/static_assert.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Ensure BOOST_SPIRIT_SELECT_LIMIT > 0
-//
-///////////////////////////////////////////////////////////////////////////////
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_SWITCH_CASE_LIMIT > 0);
-
-#include <boost/spirit/core/config.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/epsilon.hpp>
-#include <boost/spirit/dynamic/impl/switch.ipp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The switch_parser allows to build switch like parsing constructs, which
-// will have much better perfomance as comparable straight solutions.
-//
-// Input stream driven syntax:
-//
-// switch_p
-// [
-// case_p<'a'>
-// (...parser to use, if the next character is 'a'...),
-// case_p<'b'>
-// (...parser to use, if the next character is 'b'...),
-// default_p
-// (...parser to use, if nothing was matched before...)
-// ]
-//
-// General syntax:
-//
-// switch_p(...lazy expression returning the switch condition value...)
-// [
-// case_p<1>
-// (...parser to use, if the switch condition value is 1...),
-// case_p<2>
-// (...parser to use, if the switch condition value is 2...),
-// default_p
-// (...parser to use, if nothing was matched before...)
-// ]
-//
-// The maximum number of possible case_p branches is defined by the p constant
-// BOOST_SPIRIT_SWITCH_CASE_LIMIT (this value defaults to 3 if not otherwise
-// defined).
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CaseT, typename CondT = impl::get_next_token_cond>
-struct switch_parser
-: public unary<CaseT, parser<switch_parser<CaseT, CondT> > >
-{
- typedef switch_parser<CaseT, CondT> self_t;
- typedef unary_parser_category parser_category_t;
- typedef unary<CaseT, parser<self_t> > base_t;
-
- switch_parser(CaseT const &case_)
- : base_t(case_), cond(CondT())
- {}
-
- switch_parser(CaseT const &case_, CondT const &cond_)
- : base_t(case_), cond(cond_)
- {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, nil_t>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- return this->subject().parse(scan,
- impl::make_cond_functor<CondT>::do_(cond));
- }
-
- CondT cond;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-template <typename CondT>
-struct switch_cond_parser
-{
- switch_cond_parser(CondT const &cond_)
- : cond(cond_)
- {}
-
- template <typename ParserT>
- switch_parser<ParserT, CondT>
- operator[](parser<ParserT> const &p) const
- {
- return switch_parser<ParserT, CondT>(p.derived(), cond);
- }
-
- CondT const &cond;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-template <int N, typename ParserT, bool IsDefault>
-struct case_parser
-: public unary<ParserT, parser<case_parser<N, ParserT, IsDefault> > >
-{
- typedef case_parser<N, ParserT, IsDefault> self_t;
- typedef unary_parser_category parser_category_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- typedef typename base_t::subject_t self_subject_t;
-
- BOOST_STATIC_CONSTANT(int, value = N);
- BOOST_STATIC_CONSTANT(bool, is_default = IsDefault);
- BOOST_STATIC_CONSTANT(bool, is_simple = true);
- BOOST_STATIC_CONSTANT(bool, is_epsilon = (
- is_default && boost::is_same<self_subject_t, epsilon_parser>::value
- ));
-
- case_parser(parser<ParserT> const &p)
- : base_t(p.derived())
- {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, nil_t>::type type;
- };
-
- template <typename ScannerT, typename CondT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan, CondT const &cond) const
- {
- typedef impl::default_case<self_t> default_t;
-
- if (!scan.at_end()) {
- typedef impl::default_delegate_parse<
- value, is_default, default_t::value> default_parse_t;
-
- typename ScannerT::iterator_t const save(scan.first);
- return default_parse_t::parse(cond(scan), *this,
- *this, scan, save);
- }
-
- return default_t::is_epsilon ? scan.empty_match() : scan.no_match();
- }
-
- template <int N1, typename ParserT1, bool IsDefault1>
- impl::compound_case_parser<
- self_t, case_parser<N1, ParserT1, IsDefault1>, IsDefault1
- >
- operator, (case_parser<N1, ParserT1, IsDefault1> const &p) const
- {
- // If the following compile time assertion fires, you've probably used
- // more than one default_p case inside the switch_p parser construct.
- BOOST_STATIC_ASSERT(!is_default || !IsDefault1);
-
- typedef case_parser<N1, ParserT1, IsDefault1> right_t;
- return impl::compound_case_parser<self_t, right_t, IsDefault1>(*this, p);
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-struct switch_parser_gen {
-
-// This generates a switch parser, which is driven by the condition value
-// returned by the lazy parameter expression 'cond'. This may be a parser,
-// which result is used or a phoenix actor, which will be dereferenced to
-// obtain the switch condition value.
- template <typename CondT>
- switch_cond_parser<CondT>
- operator()(CondT const &cond) const
- {
- return switch_cond_parser<CondT>(cond);
- }
-
-// This generates a switch parser, which is driven by the next character/token
-// found in the input stream.
- template <typename CaseT>
- switch_parser<CaseT>
- operator[](parser<CaseT> const &p) const
- {
- return switch_parser<CaseT>(p.derived());
- }
-};
-
-switch_parser_gen const switch_p = switch_parser_gen();
-
-///////////////////////////////////////////////////////////////////////////////
-template <int N, typename ParserT>
-inline case_parser<N, ParserT, false>
-case_p(parser<ParserT> const &p)
-{
- return case_parser<N, ParserT, false>(p);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-struct default_parser_gen
-: public case_parser<BOOST_SPIRIT_DEFAULTCASE_MAGIC, epsilon_parser, true>
-{
- default_parser_gen()
- : case_parser<BOOST_SPIRIT_DEFAULTCASE_MAGIC, epsilon_parser, true>
- (epsilon_p)
- {}
-
- template <typename ParserT>
- case_parser<BOOST_SPIRIT_DEFAULTCASE_MAGIC, ParserT, true>
- operator()(parser<ParserT> const &p) const
- {
- return case_parser<BOOST_SPIRIT_DEFAULTCASE_MAGIC, ParserT, true>(p);
- }
-};
-
-default_parser_gen const default_p = default_parser_gen();
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_switch.hpp>
 
-#endif // BOOST_SPIRIT_SWITCH_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,85 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_DYNAMIC_TYPEOF_HPP)
-#define BOOST_SPIRIT_DYNAMIC_TYPEOF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
-#include <boost/typeof/typeof.hpp>
-
-#include <boost/spirit/core/typeof.hpp>
-
-#include <boost/spirit/dynamic/stored_rule_fwd.hpp>
-
-namespace boost { namespace spirit {
-
- // if.hpp
- template <class ParsableT, typename CondT> struct if_parser;
- template <class ParsableTrueT, class ParsableFalseT, typename CondT>
- struct if_else_parser;
-
- // for.hpp
- namespace impl {
- template<typename InitF, typename CondT, typename StepF, class ParsableT>
- struct for_parser;
- }
-
- // while.hpp
- template<typename ParsableT, typename CondT, bool is_do_parser>
- struct while_parser;
-
- // lazy.hpp
- template<typename ActorT> struct lazy_parser;
-
- // rule_alias.hpp
- template <typename ParserT> class rule_alias;
-
- // switch.hpp
- template <typename CaseT, typename CondT> struct switch_parser;
- template <int N, class ParserT, bool IsDefault> struct case_parser;
-
- // select.hpp
- template <typename TupleT, typename BehaviourT, typename T>
- struct select_parser;
-
-}} // namespace boost::spirit
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-// if.hpp
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::if_parser,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::if_else_parser,3)
-
-// for.hpp
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::impl::for_parser,4)
-
-// while.hpp
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::while_parser,(class)(class)(bool))
-
-// lazy.hpp
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::lazy_parser,1)
-
-// stored_rule.hpp (has forward header)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::stored_rule,(typename)(typename)(typename)(bool))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::stored_rule,3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::stored_rule,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::stored_rule,1)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::stored_rule<>)
-
-// rule_alias.hpp
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::rule_alias,1)
-
-// switch.hpp
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::switch_parser,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::case_parser,(int)(class)(bool))
-
-// select.hpp
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::select_parser,3)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/dynamic/while.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/while.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/while.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,185 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Martin Wille
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_WHILE_HPP
-#define BOOST_SPIRIT_WHILE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_WHILE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_WHILE
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/dynamic/impl/conditions.ipp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_while.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_while.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_while.hpp>
 
-////////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- namespace impl {
-
- //////////////////////////////////
- // while parser
- // object are created by while_parser_gen and do_parser_gen
- template <typename ParsableT, typename CondT, bool is_do_parser>
- struct while_parser
- : public condition_evaluator< typename as_parser<CondT>::type >
- , public unary // the parent stores a copy of the body parser
- <
- typename as_parser<ParsableT>::type,
- parser<while_parser<ParsableT, CondT, is_do_parser> >
- >
- {
- typedef while_parser<ParsableT, CondT, is_do_parser> self_t;
-
- typedef as_parser<ParsableT> as_parser_t;
- typedef typename as_parser_t::type parser_t;
- typedef as_parser<CondT> cond_as_parser_t;
- typedef typename cond_as_parser_t::type condition_t;
-
- typedef unary<parser_t, parser<self_t> > base_t;
- typedef condition_evaluator<condition_t> eval_t;
-
-
- //////////////////////////////
- // constructor, saves condition and body parser
- while_parser(ParsableT const &body, CondT const &cond)
- : eval_t(cond_as_parser_t::convert(cond))
- , base_t(as_parser_t::convert(body))
- {}
-
- //////////////////////////////
- // result type computer.
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result
- <ScannerT, nil_t>::type type;
- };
-
- //////////////////////////////
- // parse member function
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<parser_t, ScannerT>::type sresult_t;
- typedef typename ScannerT::iterator_t iterator_t;
-
- iterator_t save(scan.first);
- std::size_t length = 0;
- int eval_length = 0;
-
- bool dont_check_condition = is_do_parser;
-
- while (dont_check_condition || (eval_length=this->evaluate(scan))>=0)
- {
- dont_check_condition = false;
- length += eval_length;
- sresult_t tmp(this->subject().parse(scan));
- if (tmp)
- {
- length+=tmp.length();
- }
- else
- {
- return scan.no_match();
- }
- }
- return scan.create_match(length, nil_t(), save, scan.first);
- }
- };
-
- //////////////////////////////////
- // while-parser generator, takes the body-parser in brackets
- // and returns the actual while-parser.
- template <typename CondT>
- struct while_parser_gen
- {
- //////////////////////////////
- // constructor, saves the condition for use by operator[]
- while_parser_gen(CondT const& cond_) : cond(cond_) {}
-
- //////////////////////////////
- // operator[] returns the actual while-parser object
- template <typename ParsableT>
- while_parser<ParsableT, CondT, false>
- operator[](ParsableT const &subject) const
- {
- return while_parser<ParsableT, CondT, false>(subject, cond);
- }
- private:
-
- //////////////////////////////
- // the condition is stored by reference here.
- // this should not cause any harm since object of type
- // while_parser_gen<> are only used as temporaries
- // the while-parser object constructed by the operator[]
- // stores a copy of the condition.
- CondT const &cond;
- };
-
- //////////////////////////////////
- // do-while-parser generator, takes the condition as
- // parameter to while_p member function and returns the
- // actual do-while-parser.
- template <typename ParsableT>
- struct do_while_parser_gen
- {
- //////////////////////////////
- // constructor. saves the body parser for use by while_p.
- explicit do_while_parser_gen(ParsableT const &body_parser)
- : body(body_parser)
- {}
-
- //////////////////////////////
- // while_p returns the actual while-parser object
- template <typename CondT>
- while_parser<ParsableT, CondT, true>
- while_p(CondT cond) const
- {
- return while_parser<ParsableT, CondT, true>(body, cond);
- }
- private:
-
- //////////////////////////////
- // the body is stored by reference here
- // this should not cause any harm since object of type
- // do_while_parser_gen<> are only used as temporaries
- // the while-parser object constructed by the while_p
- // member function stores a copy of the body parser.
- ParsableT const &body;
- };
-
- struct do_parser_gen
- {
- inline do_parser_gen() {}
-
- template <typename ParsableT>
- impl::do_while_parser_gen<ParsableT>
- operator[](ParsableT const& body) const
- {
- return impl::do_while_parser_gen<ParsableT>(body);
- }
- };
-} // namespace impl
-
-//////////////////////////////////
-// while_p function, while-parser generator
-// Usage: spirit::while_p(Condition)[Body]
-template <typename CondT>
-impl::while_parser_gen<CondT>
-while_p(CondT const& cond)
-{
- return impl::while_parser_gen<CondT>(cond);
-}
-
-//////////////////////////////////
-// do_p functor, do-while-parser generator
-// Usage: spirit::do_p[Body].while_p(Condition)
-impl::do_parser_gen const do_p = impl::do_parser_gen();
-
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_WHILE_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/error_handling.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/error_handling.hpp (original)
+++ branches/proto/v4/boost/spirit/error_handling.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,22 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ERROR_HANDLING_MAIN_HPP)
-#define BOOST_SPIRIT_ERROR_HANDLING_MAIN_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ERROR_HANDLING
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ERROR_HANDLING
 
-#include <boost/spirit/version.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_error_handling.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_error_handling.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Master header for Spirit.ErrorHandling
-//
-///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_error_handling.hpp>
 
-#include <boost/spirit/error_handling/exceptions.hpp>
-
-#endif // !defined(BOOST_SPIRIT_ERROR_HANDLING_MAIN_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/error_handling/exceptions.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/error_handling/exceptions.hpp (original)
+++ branches/proto/v4/boost/spirit/error_handling/exceptions.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,361 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_EXCEPTIONS_HPP
-#define BOOST_SPIRIT_EXCEPTIONS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCEPTIONS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCEPTIONS
 
-#include <boost/config.hpp>
-#include <boost/throw_exception.hpp>
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <exception>
-
-#include <boost/spirit/error_handling/exceptions_fwd.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_error_base class
- //
- // This is the base class of parser_error (see below). This may be
- // used to catch any type of parser error.
- //
- // This exception shouldn't propagate outside the parser. However to
- // avoid quirks of many platforms/implementations which fall outside
- // the C++ standard, we derive parser_error_base from std::exception
- // to allow a single catch handler to catch all exceptions.
- //
- ///////////////////////////////////////////////////////////////////////////
- class parser_error_base : public std::exception
- {
- protected:
-
- parser_error_base() {}
- virtual ~parser_error_base() throw() {}
-
- public:
-
- parser_error_base(parser_error_base const& rhs)
- : std::exception(rhs) {}
- parser_error_base& operator=(parser_error_base const&)
- {
- return *this;
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // parser_error class
- //
- // Generic parser exception class. This is the base class for all
- // parser exceptions. The exception holds the iterator position
- // where the error was encountered in its member variable "where".
- // The parser_error also holds information regarding the error
- // (error descriptor) in its member variable "descriptor".
- //
- // The throw_ function creates and throws a parser_error given
- // an iterator and an error descriptor.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ErrorDescrT, typename IteratorT>
- struct parser_error : public parser_error_base
- {
- typedef ErrorDescrT error_descr_t;
- typedef IteratorT iterator_t;
-
- parser_error(IteratorT where_, ErrorDescrT descriptor_)
- : where(where_), descriptor(descriptor_) {}
-
- parser_error(parser_error const& rhs)
- : parser_error_base(rhs)
- , where(rhs.where), descriptor(rhs.descriptor) {}
-
- parser_error&
- operator=(parser_error const& rhs)
- {
- where = rhs.where;
- descriptor = rhs.descriptor;
- return *this;
- }
-
- virtual
- ~parser_error() throw() {}
-
- virtual const char*
- what() const throw()
- {
- return "boost::spirit::parser_error";
- }
-
- IteratorT where;
- ErrorDescrT descriptor;
- };
-
- //////////////////////////////////
- template <typename ErrorDescrT, typename IteratorT>
- inline void
- throw_(IteratorT where, ErrorDescrT descriptor)
- {
- boost::throw_exception(
- parser_error<ErrorDescrT, IteratorT>(where, descriptor));
- }
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // assertive_parser class
- //
- // An assertive_parser class is a parser that throws an exception
- // in response to a parsing failure. The assertive_parser throws a
- // parser_error exception rather than returning an unsuccessful
- // match to signal that the parser failed to match the input.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ErrorDescrT, typename ParserT>
- struct assertive_parser
- : public unary<ParserT, parser<assertive_parser<ErrorDescrT, ParserT> > >
- {
- typedef assertive_parser<ErrorDescrT, ParserT> self_t;
- typedef unary<ParserT, parser<self_t> > base_t;
- typedef unary_parser_category parser_category_t;
-
- assertive_parser(ParserT const& parser, ErrorDescrT descriptor)
- : base_t(parser), descriptor(descriptor) {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<ParserT, ScannerT>::type result_t;
- typedef typename ScannerT::iterator_t iterator_t;
-
- result_t hit = this->subject().parse(scan);
- if (!hit)
- {
- throw_(scan.first, descriptor);
- }
- return hit;
- }
-
- ErrorDescrT descriptor;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // assertion class
- //
- // assertive_parsers are never instantiated directly. The assertion
- // class is used to indirectly create an assertive_parser object.
- // Before declaring the grammar, we declare some assertion objects.
- // Examples:
- //
- // enum Errors
- // {
- // program_expected, begin_expected, end_expected
- // };
- //
- // assertion<Errors> expect_program(program_expected);
- // assertion<Errors> expect_begin(begin_expected);
- // assertion<Errors> expect_end(end_expected);
- //
- // Now, we can use these assertions as wrappers around parsers:
- //
- // expect_end(str_p("end"))
- //
- // Take note that although the example uses enums to hold the
- // information regarding the error (error desccriptor), we are free
- // to use other types such as integers and strings. Enums are
- // convenient for error handlers to easily catch since C++ treats
- // enums as unique types.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ErrorDescrT>
- struct assertion
- {
- assertion(ErrorDescrT descriptor_)
- : descriptor(descriptor_) {}
-
- template <typename ParserT>
- assertive_parser<ErrorDescrT, ParserT>
- operator()(ParserT const& parser) const
- {
- return assertive_parser<ErrorDescrT, ParserT>(parser, descriptor);
- }
-
- ErrorDescrT descriptor;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // error_status<T>
- //
- // Where T is an attribute type compatible with the match attribute
- // of the fallback_parser's subject (defaults to nil_t). The class
- // error_status reports the result of an error handler (see
- // fallback_parser). result can be one of:
- //
- // fail: quit and fail (return a no_match)
- // retry: attempt error recovery, possibly moving the scanner
- // accept: force success returning a matching length, moving
- // the scanner appropriately and returning an attribute
- // value
- // rethrow: rethrows the error.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename T>
- struct error_status
- {
- enum result_t { fail, retry, accept, rethrow };
-
- error_status(
- result_t result_ = fail,
- std::ptrdiff_t length = -1,
- T const& value_ = T())
- : result(result_), length(length), value(value_) {}
-
- result_t result;
- std::ptrdiff_t length;
- T value;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // fallback_parser class
- //
- // Handles exceptions of type parser_error<ErrorDescrT, IteratorT>
- // thrown somewhere inside its embedded ParserT object. The class
- // sets up a try block before delegating parsing to its subject.
- // When an exception is caught, the catch block then calls the
- // HandlerT object. HandlerT may be a function or a functor (with
- // an operator() member function) compatible with the interface:
- //
- // error_status<T>
- // handler(ScannerT const& scan, ErrorT error);
- //
- // Where scan points to the scanner state prior to parsing and error
- // is the error that arose (see parser_error). The handler must
- // return an error_status<T> object (see above).
- //
- ///////////////////////////////////////////////////////////////////////////
- namespace impl
- {
- template <typename RT, typename ParserT, typename ScannerT>
- RT fallback_parser_parse(ParserT const& p, ScannerT const& scan);
- }
-
- template <typename ErrorDescrT, typename ParserT, typename HandlerT>
- struct fallback_parser
- : public unary<ParserT,
- parser<fallback_parser<ErrorDescrT, ParserT, HandlerT> > >
- {
- typedef fallback_parser<ErrorDescrT, ParserT, HandlerT>
- self_t;
- typedef ErrorDescrT
- error_descr_t;
- typedef unary<ParserT, parser<self_t> >
- base_t;
- typedef unary_parser_category
- parser_category_t;
-
- fallback_parser(ParserT const& parser, HandlerT const& handler_)
- : base_t(parser), handler(handler_) {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::fallback_parser_parse<result_t>(*this, scan);
- }
-
- HandlerT handler;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // guard class
- //
- // fallback_parser objects are not instantiated directly. The guard
- // class is used to indirectly create a fallback_parser object.
- // guards are typically predeclared just like assertions (see the
- // assertion class above; the example extends the previous example
- // introduced in the assertion class above):
- //
- // guard<Errors> my_guard;
- //
- // Errors, in this example is the error descriptor type we want to
- // detect; This is essentially the ErrorDescrT template parameter
- // of the fallback_parser class.
- //
- // my_guard may now be used in a grammar declaration as:
- //
- // my_guard(p)[h]
- //
- // where p is a parser, h is a function or functor compatible with
- // fallback_parser's HandlerT (see above).
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ErrorDescrT, typename ParserT>
- struct guard_gen : public unary<ParserT, nil_t>
- {
- typedef guard<ErrorDescrT> parser_generator_t;
- typedef unary_parser_category parser_category_t;
-
- guard_gen(ParserT const& p)
- : unary<ParserT, nil_t>(p) {}
-
- template <typename HandlerT>
- fallback_parser<ErrorDescrT, ParserT, HandlerT>
- operator[](HandlerT const& handler) const
- {
- return fallback_parser<ErrorDescrT, ParserT, HandlerT>
- (this->subject(), handler);
- }
- };
-
- template <typename ErrorDescrT>
- struct guard
- {
- template <typename ParserT>
- struct result
- {
- typedef guard_gen<ErrorDescrT, ParserT> type;
- };
-
- template <typename ParserT>
- static guard_gen<ErrorDescrT, ParserT>
- generate(ParserT const& parser)
- {
- return guard_gen<ErrorDescrT, ParserT>(parser);
- }
-
- template <typename ParserT>
- guard_gen<ErrorDescrT, ParserT>
- operator()(ParserT const& parser) const
- {
- return guard_gen<ErrorDescrT, ParserT>(parser);
- }
- };
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_exceptions.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_exceptions.hpp"
+#endif
 
-#include <boost/spirit/error_handling/impl/exceptions.ipp>
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_exceptions.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/error_handling/exceptions_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/error_handling/exceptions_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/error_handling/exceptions_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,37 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_EXCEPTIONS_FWD_HPP)
-#define BOOST_SPIRIT_EXCEPTIONS_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCEPTIONS_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCEPTIONS_FWD
 
-#include <boost/spirit/core/nil.hpp>
-
-namespace boost { namespace spirit {
-
- template <typename ErrorDescrT, typename IteratorT = char const*>
- struct parser_error;
-
- template <typename ErrorDescrT, typename ParserT>
- struct assertive_parser;
-
- template <typename ErrorDescrT>
- struct assertion;
-
- template <typename T = nil_t>
- struct error_status;
-
- template <typename ErrorDescrT, typename ParserT, typename HandlerT>
- struct fallback_parser;
-
- template <typename ErrorDescrT>
- struct guard;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_exceptions_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_exceptions_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_exceptions_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/error_handling/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/error_handling/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/error_handling/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,34 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ERROR_HANDLING_TYPEOF_HPP)
-#define BOOST_SPIRIT_ERROR_HANDLING_TYPEOF_HPP
-
-#include <boost/typeof/typeof.hpp>
-
-#include <boost/spirit/core/typeof.hpp>
-
-#include <boost/spirit/error_handling/exceptions_fwd.hpp>
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-
-// exceptions.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::parser_error,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::assertive_parser,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::error_status,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::fallback_parser,3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::guard,1)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::error_status<>)
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/iterator.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,26 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2003 Giovanni Bajo
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ITERATOR_MAIN_HPP)
-#define BOOST_SPIRIT_ITERATOR_MAIN_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ITERATOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ITERATOR
 
-#include <boost/spirit/version.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_iterator.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_iterator.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Master header for Spirit.Iterators
-//
-///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_iterator.hpp>
 
-#include <boost/spirit/iterator/file_iterator.hpp>
-#include <boost/spirit/iterator/fixed_size_queue.hpp>
-#include <boost/spirit/iterator/position_iterator.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
-
-#endif // !defined(BOOST_SPIRIT_ITERATOR_MAIN_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/iterator/file_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/file_iterator.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/file_iterator.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,225 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Giovanni Bajo
- Copyright (c) 2003 Thomas Witt
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FILE_ITERATOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_FILE_ITERATOR
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// File Iterator structure
-//
-// The new structure is designed on layers. The top class (used by the user)
-// is file_iterator, which implements a full random access iterator through
-// the file, and some specific member functions (constructor that opens
-// the file, make_end() to generate the end iterator, operator bool to check
-// if the file was opened correctly).
-//
-// file_iterator implements the random access iterator interface by the means
-// of boost::iterator_adaptor, that is inhering an object created with it.
-// iterator_adaptor gets a low-level file iterator implementation (with just
-// a few member functions) and a policy (that basically describes to it how
-// the low-level file iterator interface is). The advantage is that
-// with boost::iterator_adaptor only 5 functions are needed to implement
-// a fully conformant random access iterator, instead of dozens of functions
-// and operators.
-//
-// There are two low-level file iterators implemented in this module. The
-// first (std_file_iterator) uses cstdio stream functions (fopen/fread), which
-// support full buffering, and is available everywhere (it's standard C++).
-// The second (mmap_file_iterator) is currently available only on Windows
-// platforms, and uses memory mapped files, which gives a decent speed boost.
-//
-///////////////////////////////////////////////////////////////////////////////
-//
-// TODO LIST:
-//
-// - In the Win32 mmap iterator, we could check if keeping a handle to the
-// opened file is really required. If it's not, we can just store the file
-// length (for make_end()) and save performance. Notice that this should be
-// tested under different Windows versions, the behaviour might change.
-// - Add some error support (by the means of some exceptions) in case of
-// low-level I/O failure.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_SPIRIT_FILE_ITERATOR_HPP
-#define BOOST_SPIRIT_FILE_ITERATOR_HPP
-
-#include <string>
-#include <boost/config.hpp>
-#include <boost/iterator_adaptors.hpp>
-#include <boost/spirit/core/safe_bool.hpp>
-
-#include <boost/spirit/iterator/file_iterator_fwd.hpp>
-
-#if !defined(BOOST_SPIRIT_FILEITERATOR_STD)
-# if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) \
- && !defined(BOOST_DISABLE_WIN32)
-# define BOOST_SPIRIT_FILEITERATOR_WINDOWS
-# elif defined(BOOST_HAS_UNISTD_H)
-extern "C"
-{
-# include <unistd.h>
-}
-# ifdef _POSIX_MAPPED_FILES
-# define BOOST_SPIRIT_FILEITERATOR_POSIX
-# endif // _POSIX_MAPPED_FILES
-# endif // BOOST_HAS_UNISTD_H
-
-# if !defined(BOOST_SPIRIT_FILEITERATOR_WINDOWS) && \
- !defined(BOOST_SPIRIT_FILEITERATOR_POSIX)
-# define BOOST_SPIRIT_FILEITERATOR_STD
-# endif
-#endif // BOOST_SPIRIT_FILEITERATOR_STD
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-template <
- typename CharT = char,
- typename BaseIterator =
-#ifdef BOOST_SPIRIT_FILEITERATOR_STD
- fileiter_impl::std_file_iterator<CharT>
-#else
- fileiter_impl::mmap_file_iterator<CharT>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_file_iterator.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_file_iterator.hpp"
 #endif
-> class file_iterator;
-
-///////////////////////////////////////////////////////////////////////////////
-namespace fileiter_impl {
-
- /////////////////////////////////////////////////////////////////////////
- //
- // file_iter_generator
- //
- // Template meta-function to invoke boost::iterator_adaptor
- // NOTE: This cannot be moved into the implementation file because of
- // a bug of MSVC 7.0 and previous versions (base classes types are
- // looked up at compilation time, not instantion types, and
- // file_iterator would break).
- //
- /////////////////////////////////////////////////////////////////////////
-
-#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \
- BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-#error "Please use at least Boost V1.31.0 while compiling the file_iterator class!"
-#else // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
- template <typename CharT, typename BaseIteratorT>
- struct file_iter_generator
- {
- public:
- typedef BaseIteratorT adapted_t;
- typedef typename adapted_t::value_type value_type;
-
- typedef boost::iterator_adaptor <
- file_iterator<CharT, BaseIteratorT>,
- adapted_t,
- value_type const,
- std::random_access_iterator_tag,
- boost::use_default,
- std::ptrdiff_t
- > type;
- };
-
-#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
-///////////////////////////////////////////////////////////////////////////////
-} /* namespace impl */
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// file_iterator
-//
-// Iterates through an opened file.
-//
-// The main iterator interface is implemented by the iterator_adaptors
-// library, which wraps a conforming iterator interface around the
-// impl::BaseIterator class. This class merely derives the iterator_adaptors
-// generated class to implement the custom constructors and make_end()
-// member function.
-//
-///////////////////////////////////////////////////////////////////////////////
 
-template<typename CharT, typename BaseIteratorT>
-class file_iterator
- : public fileiter_impl::file_iter_generator<CharT, BaseIteratorT>::type,
- public safe_bool<file_iterator<CharT, BaseIteratorT> >
-{
-private:
- typedef typename
- fileiter_impl::file_iter_generator<CharT, BaseIteratorT>::type
- base_t;
- typedef typename
- fileiter_impl::file_iter_generator<CharT, BaseIteratorT>::adapted_t
- adapted_t;
-
-public:
- file_iterator()
- {}
-
- file_iterator(std::string fileName)
- : base_t(adapted_t(fileName))
- {}
-
- file_iterator(const base_t& iter)
- : base_t(iter)
- {}
-
- inline file_iterator& operator=(const base_t& iter);
- file_iterator make_end(void);
-
- // operator bool. This borrows a trick from boost::shared_ptr to avoid
- // to interfere with arithmetic operations.
- bool operator_bool(void) const
- { return this->base(); }
-
-private:
- friend class ::boost::iterator_core_access;
-
- typename base_t::reference dereference() const
- {
- return this->base_reference().get_cur_char();
- }
-
- void increment()
- {
- this->base_reference().next_char();
- }
-
- void decrement()
- {
- this->base_reference().prev_char();
- }
-
- void advance(typename base_t::difference_type n)
- {
- this->base_reference().advance(n);
- }
-
- template <
- typename OtherDerivedT, typename OtherIteratorT,
- typename V, typename C, typename R, typename D
- >
- typename base_t::difference_type distance_to(
- iterator_adaptor<OtherDerivedT, OtherIteratorT, V, C, R, D>
- const &x) const
- {
- return x.base().distance(this->base_reference());
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-}} /* namespace boost::spirit */
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/iterator/impl/file_iterator.ipp> /* implementation */
-
-#endif /* BOOST_SPIRIT_FILE_ITERATOR_HPP */
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_file_iterator.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/iterator/file_iterator_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/file_iterator_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/file_iterator_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,34 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FILE_ITERATOR_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_FILE_ITERATOR_FWD
 
-#if !defined(BOOST_SPIRIT_FILE_ITERATOR_FWD_HPP)
-#define BOOST_SPIRIT_FILE_ITERATOR_FWD_HPP
-
-namespace boost { namespace spirit {
-
- namespace fileiter_impl
- {
- template <typename CharT = char>
- class std_file_iterator;
-
- // may never be defined -- so what...
- template <typename CharT = char>
- class mmap_file_iterator;
- }
-
- // no defaults here -- too much dependencies
- template <
- typename CharT,
- typename BaseIterator
- > class file_iterator;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_file_iterator_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_file_iterator_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_file_iterator_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/iterator/fixed_size_queue.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/fixed_size_queue.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/fixed_size_queue.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,398 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001, Daniel C. Nuffer
- Copyright (c) 2003, Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef FIXED_SIZE_QUEUE
-#define FIXED_SIZE_QUEUE
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FIXED_SIZE_QUEUE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_FIXED_SIZE_QUEUE
 
-#include <cstdlib>
-#include <iterator>
-#include <cstddef>
-
-#include <boost/spirit/core/assert.hpp> // for BOOST_SPIRIT_ASSERT
-
-// FIXES for broken compilers
-#include <boost/config.hpp>
-#include <boost/iterator_adaptors.hpp>
-
-#define BOOST_SPIRIT_ASSERT_FSQ_SIZE \
- BOOST_SPIRIT_ASSERT(((m_tail + N + 1) - m_head) % (N+1) == m_size % (N+1)) \
- /**/
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-namespace impl {
-
-#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \
- BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-#error "Please use at least Boost V1.31.0 while compiling the fixed_size_queue class!"
-#else // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
-template <typename QueueT, typename T, typename PointerT>
-class fsq_iterator
-: public boost::iterator_adaptor<
- fsq_iterator<QueueT, T, PointerT>,
- PointerT,
- T,
- std::random_access_iterator_tag
- >
-{
-public:
- typedef typename QueueT::position_t position;
- typedef boost::iterator_adaptor<
- fsq_iterator<QueueT, T, PointerT>, PointerT, T,
- std::random_access_iterator_tag
- > base_t;
-
- fsq_iterator() {}
- fsq_iterator(position const &p_) : p(p_) {}
-
- position const &get_position() const { return p; }
-
-private:
- friend class boost::iterator_core_access;
-
- typename base_t::reference dereference() const
- {
- return p.self->m_queue[p.pos];
- }
-
- void increment()
- {
- ++p.pos;
- if (p.pos == QueueT::MAX_SIZE+1)
- p.pos = 0;
- }
-
- void decrement()
- {
- if (p.pos == 0)
- p.pos = QueueT::MAX_SIZE;
- else
- --p.pos;
- }
-
- template <
- typename OtherDerivedT, typename OtherIteratorT,
- typename V, typename C, typename R, typename D
- >
- bool equal(iterator_adaptor<OtherDerivedT, OtherIteratorT, V, C, R, D>
- const &x) const
- {
- position const &rhs_pos =
- static_cast<OtherDerivedT const &>(x).get_position();
- return (p.self == rhs_pos.self) && (p.pos == rhs_pos.pos);
- }
-
- template <
- typename OtherDerivedT, typename OtherIteratorT,
- typename V, typename C, typename R, typename D
- >
- typename base_t::difference_type distance_to(
- iterator_adaptor<OtherDerivedT, OtherIteratorT, V, C, R, D>
- const &x) const
- {
- typedef typename base_t::difference_type diff_t;
-
- position const &p2 =
- static_cast<OtherDerivedT const &>(x).get_position();
- std::size_t pos1 = p.pos;
- std::size_t pos2 = p2.pos;
-
- // Undefined behaviour if the iterators come from different
- // containers
- BOOST_SPIRIT_ASSERT(p.self == p2.self);
-
- if (pos1 < p.self->m_head)
- pos1 += QueueT::MAX_SIZE;
- if (pos2 < p2.self->m_head)
- pos2 += QueueT::MAX_SIZE;
-
- if (pos2 > pos1)
- return diff_t(pos2 - pos1);
- else
- return -diff_t(pos1 - pos2);
- }
-
- void advance(typename base_t::difference_type n)
- {
- // Notice that we don't care values of n that can
- // wrap around more than one time, since it would
- // be undefined behaviour anyway (going outside
- // the begin/end range). Negative wrapping is a bit
- // cumbersome because we don't want to case p.pos
- // to signed.
- if (n < 0)
- {
- n = -n;
- if (p.pos < (std::size_t)n)
- p.pos = QueueT::MAX_SIZE+1 - (n - p.pos);
- else
- p.pos -= n;
- }
- else
- {
- p.pos += n;
- if (p.pos >= QueueT::MAX_SIZE+1)
- p.pos -= QueueT::MAX_SIZE+1;
- }
- }
-
-private:
- position p;
-};
-
-#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
-///////////////////////////////////////////////////////////////////////////////
-} /* namespace impl */
-
-template <typename T, std::size_t N>
-class fixed_size_queue
-{
-private:
- struct position
- {
- fixed_size_queue* self;
- std::size_t pos;
-
- position() : self(0), pos(0) {}
-
- // The const_cast here is just to avoid to have two different
- // position structures for the const and non-const case.
- // The const semantic is guaranteed by the iterator itself
- position(const fixed_size_queue* s, std::size_t p)
- : self(const_cast<fixed_size_queue*>(s)), pos(p)
- {}
- };
-
-public:
- // Declare the iterators
- typedef impl::fsq_iterator<fixed_size_queue<T, N>, T, T*> iterator;
- typedef impl::fsq_iterator<fixed_size_queue<T, N>, T const, T const*>
- const_iterator;
- typedef position position_t;
-
- friend class impl::fsq_iterator<fixed_size_queue<T, N>, T, T*>;
- friend class impl::fsq_iterator<fixed_size_queue<T, N>, T const, T const*>;
-
- fixed_size_queue();
- fixed_size_queue(const fixed_size_queue& x);
- fixed_size_queue& operator=(const fixed_size_queue& x);
- ~fixed_size_queue();
-
- void push_back(const T& e);
- void push_front(const T& e);
- void serve(T& e);
- void pop_front();
-
- bool empty() const
- {
- return m_size == 0;
- }
-
- bool full() const
- {
- return m_size == N;
- }
-
- iterator begin()
- {
- return iterator(position(this, m_head));
- }
-
- const_iterator begin() const
- {
- return const_iterator(position(this, m_head));
- }
-
- iterator end()
- {
- return iterator(position(this, m_tail));
- }
-
- const_iterator end() const
- {
- return const_iterator(position(this, m_tail));
- }
-
- std::size_t size() const
- {
- return m_size;
- }
-
- T& front()
- {
- return m_queue[m_head];
- }
-
- const T& front() const
- {
- return m_queue[m_head];
- }
-
-private:
- // Redefine the template parameters to avoid using partial template
- // specialization on the iterator policy to extract N.
- BOOST_STATIC_CONSTANT(std::size_t, MAX_SIZE = N);
-
- std::size_t m_head;
- std::size_t m_tail;
- std::size_t m_size;
- T m_queue[N+1];
-};
-
-template <typename T, std::size_t N>
-inline
-fixed_size_queue<T, N>::fixed_size_queue()
- : m_head(0)
- , m_tail(0)
- , m_size(0)
-{
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-}
-
-template <typename T, std::size_t N>
-inline
-fixed_size_queue<T, N>::fixed_size_queue(const fixed_size_queue& x)
- : m_head(x.m_head)
- , m_tail(x.m_tail)
- , m_size(x.m_size)
-{
- copy(x.begin(), x.end(), begin());
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-}
-
-template <typename T, std::size_t N>
-inline fixed_size_queue<T, N>&
-fixed_size_queue<T, N>::operator=(const fixed_size_queue& x)
-{
- if (this != &x)
- {
- m_head = x.m_head;
- m_tail = x.m_tail;
- m_size = x.m_size;
- copy(x.begin(), x.end(), begin());
- }
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-
- return *this;
-}
-
-template <typename T, std::size_t N>
-inline
-fixed_size_queue<T, N>::~fixed_size_queue()
-{
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-}
-
-template <typename T, std::size_t N>
-inline void
-fixed_size_queue<T, N>::push_back(const T& e)
-{
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-
- BOOST_SPIRIT_ASSERT(!full());
-
- m_queue[m_tail] = e;
- ++m_size;
- ++m_tail;
- if (m_tail == N+1)
- m_tail = 0;
-
-
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-}
-
-template <typename T, std::size_t N>
-inline void
-fixed_size_queue<T, N>::push_front(const T& e)
-{
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-
- BOOST_SPIRIT_ASSERT(!full());
-
- if (m_head == 0)
- m_head = N;
- else
- --m_head;
-
- m_queue[m_head] = e;
- ++m_size;
-
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-}
-
-
-template <typename T, std::size_t N>
-inline void
-fixed_size_queue<T, N>::serve(T& e)
-{
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-
- e = m_queue[m_head];
- pop_front();
-}
-
-
-
-template <typename T, std::size_t N>
-inline void
-fixed_size_queue<T, N>::pop_front()
-{
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-
- ++m_head;
- if (m_head == N+1)
- m_head = 0;
- --m_size;
-
- BOOST_SPIRIT_ASSERT(m_size <= N+1);
- BOOST_SPIRIT_ASSERT_FSQ_SIZE;
- BOOST_SPIRIT_ASSERT(m_head <= N+1);
- BOOST_SPIRIT_ASSERT(m_tail <= N+1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_fixed_size_queue.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_fixed_size_queue.hpp"
+#endif
 
-#undef BOOST_SPIRIT_ASSERT_FSQ_SIZE
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_fixed_size_queue.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/iterator/multi_pass.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/multi_pass.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/multi_pass.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1299 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001, Daniel C. Nuffer
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ITERATOR_MULTI_PASS_HPP
-#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_HPP
-
-#include <boost/config.hpp>
-#include <boost/throw_exception.hpp>
-#include <deque>
-#include <iterator>
-#include <iostream>
-#include <algorithm> // for std::swap
-#include <exception> // for std::exception
-#include <boost/limits.hpp>
-#include <boost/iterator.hpp>
-
-#include <boost/spirit/core/assert.hpp> // for BOOST_SPIRIT_ASSERT
-#include <boost/spirit/iterator/fixed_size_queue.hpp>
-#include <boost/detail/iterator.hpp> // for boost::detail::iterator_traits
-
-#include <boost/spirit/iterator/multi_pass_fwd.hpp>
-
-namespace boost { namespace spirit {
-
-namespace impl {
- template <typename T>
- inline void mp_swap(T& t1, T& t2);
-}
-
-namespace multi_pass_policies
-{
-
-///////////////////////////////////////////////////////////////////////////////
-// class ref_counted
-// Implementation of an OwnershipPolicy used by multi_pass.
-//
-// Implementation modified from RefCounted class from the Loki library by
-// Andrei Alexandrescu
-///////////////////////////////////////////////////////////////////////////////
-class ref_counted
-{
- protected:
- ref_counted()
- : count(new std::size_t(1))
- {}
-
- ref_counted(ref_counted const& x)
- : count(x.count)
- {}
-
- // clone is called when a copy of the iterator is made, so increment
- // the ref-count.
- void clone()
- {
- ++*count;
- }
-
- // called when a copy is deleted. Decrement the ref-count. Return
- // value of true indicates that the last copy has been released.
- bool release()
- {
- if (!--*count)
- {
- delete count;
- count = 0;
- return true;
- }
- return false;
- }
-
- void swap(ref_counted& x)
- {
- impl::mp_swap(count, x.count);
- }
-
- public:
- // returns true if there is only one iterator in existence.
- // std_deque StoragePolicy will free it's buffered data if this
- // returns true.
- bool unique() const
- {
- return *count == 1;
- }
-
- private:
- std::size_t* count;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// class first_owner
-// Implementation of an OwnershipPolicy used by multi_pass
-// This ownership policy dictates that the first iterator created will
-// determine the lifespan of the shared components. This works well for
-// spirit, since no dynamic allocation of iterators is done, and all copies
-// are make on the stack.
-//
-// There is a caveat about using this policy together with the std_deque
-// StoragePolicy. Since first_owner always returns false from unique(),
-// std_deque will only release the queued data if clear_queue() is called.
-///////////////////////////////////////////////////////////////////////////////
-class first_owner
-{
- protected:
- first_owner()
- : first(true)
- {}
-
- first_owner(first_owner const&)
- : first(false)
- {}
-
- void clone()
- {
- }
-
- // return true to indicate deletion of resources
- bool release()
- {
- return first;
- }
-
- void swap(first_owner&)
- {
- // if we're the first, we still remain the first, even if assigned
- // to, so don't swap first_. swap is only called from operator=
- }
-
- public:
- bool unique() const
- {
- return false; // no way to know, so always return false
- }
-
- private:
- bool first;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// class illegal_backtracking
-// thrown by buf_id_check CheckingPolicy if an instance of an iterator is
-// used after another one has invalidated the queue
-///////////////////////////////////////////////////////////////////////////////
-class illegal_backtracking : public std::exception
-{
-public:
-
- illegal_backtracking() throw() {}
- ~illegal_backtracking() throw() {}
-
- virtual const char*
- what() const throw()
- { return "boost::spirit::illegal_backtracking"; }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// class buf_id_check
-// Implementation of the CheckingPolicy used by multi_pass
-// This policy is most effective when used together with the std_deque
-// StoragePolicy.
-// If used with the fixed_size_queue StoragePolicy, it will not detect
-// iterator derefereces that are out of the range of the queue.
-///////////////////////////////////////////////////////////////////////////////
-class buf_id_check
-{
- protected:
- buf_id_check()
- : shared_buf_id(new unsigned long(0))
- , buf_id(0)
- {}
-
- buf_id_check(buf_id_check const& x)
- : shared_buf_id(x.shared_buf_id)
- , buf_id(x.buf_id)
- {}
-
- // will be called from the destructor of the last iterator.
- void destroy()
- {
- delete shared_buf_id;
- shared_buf_id = 0;
- }
-
- void swap(buf_id_check& x)
- {
- impl::mp_swap(shared_buf_id, x.shared_buf_id);
- impl::mp_swap(buf_id, x.buf_id);
- }
-
- // called to verify that everything is okay.
- void check() const
- {
- if (buf_id != *shared_buf_id)
- {
- boost::throw_exception(illegal_backtracking());
- }
- }
-
- // called from multi_pass::clear_queue, so we can increment the count
- void clear_queue()
- {
- ++*shared_buf_id;
- ++buf_id;
- }
-
- private:
- unsigned long* shared_buf_id;
- unsigned long buf_id;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// class no_check
-// Implementation of the CheckingPolicy used by multi_pass
-// It does not do anything :-)
-///////////////////////////////////////////////////////////////////////////////
-class no_check
-{
- protected:
- no_check() {}
- no_check(no_check const&) {}
- void destroy() {}
- void swap(no_check&) {}
- void check() const {}
- void clear_queue() {}
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// class std_deque
-// Implementation of the StoragePolicy used by multi_pass
-// This stores all data in a std::deque, and keeps an offset to the current
-// position. It stores all the data unless there is only one
-// iterator using the queue.
-// Note: a position is used instead of an iterator, because a push_back on
-// a deque can invalidate any iterators.
-///////////////////////////////////////////////////////////////////////////////
-class std_deque
-{
- public:
-
-template <typename ValueT>
-class inner
-{
- private:
-
- typedef std::deque<ValueT> queue_type;
- queue_type* queuedElements;
- mutable typename queue_type::size_type queuePosition;
-
- protected:
- inner()
- : queuedElements(new queue_type)
- , queuePosition(0)
- {}
-
- inner(inner const& x)
- : queuedElements(x.queuedElements)
- , queuePosition(x.queuePosition)
- {}
-
- // will be called from the destructor of the last iterator.
- void destroy()
- {
- BOOST_SPIRIT_ASSERT(NULL != queuedElements);
- delete queuedElements;
- queuedElements = 0;
- }
-
- void swap(inner& x)
- {
- impl::mp_swap(queuedElements, x.queuedElements);
- impl::mp_swap(queuePosition, x.queuePosition);
- }
-
- // This is called when the iterator is dereferenced. It's a template
- // method so we can recover the type of the multi_pass iterator
- // and call unique and access the m_input data member.
- template <typename MultiPassT>
- static typename MultiPassT::reference dereference(MultiPassT const& mp)
- {
- if (mp.queuePosition == mp.queuedElements->size())
- {
- // check if this is the only iterator
- if (mp.unique())
- {
- // free up the memory used by the queue.
- if (mp.queuedElements->size() > 0)
- {
- mp.queuedElements->clear();
- mp.queuePosition = 0;
- }
- }
- return mp.get_input();
- }
- else
- {
- return (*mp.queuedElements)[mp.queuePosition];
- }
- }
-
- // This is called when the iterator is incremented. It's a template
- // method so we can recover the type of the multi_pass iterator
- // and call unique and access the m_input data member.
- template <typename MultiPassT>
- static void increment(MultiPassT& mp)
- {
- if (mp.queuePosition == mp.queuedElements->size())
- {
- // check if this is the only iterator
- if (mp.unique())
- {
- // free up the memory used by the queue.
- if (mp.queuedElements->size() > 0)
- {
- mp.queuedElements->clear();
- mp.queuePosition = 0;
- }
- }
- else
- {
- mp.queuedElements->push_back(mp.get_input());
- ++mp.queuePosition;
- }
- mp.advance_input();
- }
- else
- {
- ++mp.queuePosition;
- }
-
- }
-
- // called to forcibly clear the queue
- void clear_queue()
- {
- queuedElements->clear();
- queuePosition = 0;
- }
-
- // called to determine whether the iterator is an eof iterator
- template <typename MultiPassT>
- static bool is_eof(MultiPassT const& mp)
- {
- return mp.queuePosition == mp.queuedElements->size() &&
- mp.input_at_eof();
- }
-
- // called by operator==
- bool equal_to(inner const& x) const
- {
- return queuePosition == x.queuePosition;
- }
-
- // called by operator<
- bool less_than(inner const& x) const
- {
- return queuePosition < x.queuePosition;
- }
-}; // class inner
-
-}; // class std_deque
-
-
-///////////////////////////////////////////////////////////////////////////////
-// class fixed_size_queue
-// Implementation of the StoragePolicy used by multi_pass
-// fixed_size_queue keeps a circular buffer (implemented by
-// boost::spirit::fixed_size_queue class) that is size N+1 and stores N elements.
-// It is up to the user to ensure that there is enough look ahead for their
-// grammar. Currently there is no way to tell if an iterator is pointing
-// to forgotten data. The leading iterator will put an item in the queue
-// and remove one when it is incremented. No dynamic allocation is done,
-// except on creation of the queue (fixed_size_queue constructor).
-///////////////////////////////////////////////////////////////////////////////
-template < std::size_t N>
-class fixed_size_queue
-{
- public:
-
-template <typename ValueT>
-class inner
-{
- private:
-
- typedef boost::spirit::fixed_size_queue<ValueT, N> queue_type;
- queue_type * queuedElements;
- mutable typename queue_type::iterator queuePosition;
-
- protected:
- inner()
- : queuedElements(new queue_type)
- , queuePosition(queuedElements->begin())
- {}
-
- inner(inner const& x)
- : queuedElements(x.queuedElements)
- , queuePosition(x.queuePosition)
- {}
-
- // will be called from the destructor of the last iterator.
- void destroy()
- {
- BOOST_SPIRIT_ASSERT(NULL != queuedElements);
- delete queuedElements;
- queuedElements = 0;
- }
-
- void swap(inner& x)
- {
- impl::mp_swap(queuedElements, x.queuedElements);
- impl::mp_swap(queuePosition, x.queuePosition);
- }
-
- // This is called when the iterator is dereferenced. It's a template
- // method so we can recover the type of the multi_pass iterator
- // and access the m_input data member.
- template <typename MultiPassT>
- static typename MultiPassT::reference dereference(MultiPassT const& mp)
- {
- if (mp.queuePosition == mp.queuedElements->end())
- {
- return mp.get_input();
- }
- else
- {
- return *mp.queuePosition;
- }
- }
-
- // This is called when the iterator is incremented. It's a template
- // method so we can recover the type of the multi_pass iterator
- // and access the m_input data member.
- template <typename MultiPassT>
- static void increment(MultiPassT& mp)
- {
- if (mp.queuePosition == mp.queuedElements->end())
- {
- // don't let the queue get larger than N
- if (mp.queuedElements->size() >= N)
- mp.queuedElements->pop_front();
-
- mp.queuedElements->push_back(mp.get_input());
- mp.advance_input();
- }
- ++mp.queuePosition;
- }
-
- // no-op
- void clear_queue()
- {}
-
- // called to determine whether the iterator is an eof iterator
- template <typename MultiPassT>
- static bool is_eof(MultiPassT const& mp)
- {
- return mp.queuePosition == mp.queuedElements->end() &&
- mp.input_at_eof();
- }
-
- // called by operator==
- bool equal_to(inner const& x) const
- {
- return queuePosition == x.queuePosition;
- }
-
- // called by operator<
- bool less_than(inner const& x) const
- {
- return queuePosition < x.queuePosition;
- }
-}; // class inner
-
-}; // class fixed_size_queue
-
-
-///////////////////////////////////////////////////////////////////////////////
-// class input_iterator
-// Implementation of the InputPolicy used by multi_pass
-// input_iterator encapsulates an input iterator of type InputT
-///////////////////////////////////////////////////////////////////////////////
-class input_iterator
-{
- public:
-
-template <typename InputT>
-class inner
-{
- private:
- typedef
- typename boost::detail::iterator_traits<InputT>::value_type
- result_type;
-
- public:
- typedef result_type value_type;
-
- private:
- struct Data {
- Data(InputT const &input_)
- : input(input_), was_initialized(false)
- {}
-
- InputT input;
- value_type curtok;
- bool was_initialized;
- };
-
- // Needed by compilers not implementing the resolution to DR45. For
- // reference, see
- // http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45.
-
- friend struct Data;
-
- public:
- typedef
- typename boost::detail::iterator_traits<InputT>::difference_type
- difference_type;
- typedef
- typename boost::detail::iterator_traits<InputT>::pointer
- pointer;
- typedef
- typename boost::detail::iterator_traits<InputT>::reference
- reference;
-
- protected:
- inner()
- : data(0)
- {}
-
- inner(InputT x)
- : data(new Data(x))
- {}
-
- inner(inner const& x)
- : data(x.data)
- {}
-
- void destroy()
- {
- delete data;
- data = 0;
- }
-
- bool same_input(inner const& x) const
- {
- return data == x.data;
- }
-
- typedef
- typename boost::detail::iterator_traits<InputT>::value_type
- value_t;
- void swap(inner& x)
- {
- impl::mp_swap(data, x.data);
- }
-
- void ensure_initialized() const
- {
- if (data && !data->was_initialized) {
- data->curtok = *data->input; // get the first token
- data->was_initialized = true;
- }
- }
-
- public:
- reference get_input() const
- {
- BOOST_SPIRIT_ASSERT(NULL != data);
- ensure_initialized();
- return data->curtok;
- }
-
- void advance_input()
- {
- BOOST_SPIRIT_ASSERT(NULL != data);
- data->was_initialized = false; // should get the next token
- ++data->input;
- }
-
- bool input_at_eof() const
- {
- return !data || data->input == InputT();
- }
-
- private:
- Data *data;
-};
-
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// class lex_input
-// Implementation of the InputPolicy used by multi_pass
-// lex_input gets tokens (ints) from yylex()
-///////////////////////////////////////////////////////////////////////////////
-class lex_input
-{
- public:
-
-template <typename InputT>
-class inner
-{
- public:
- typedef int value_type;
- typedef std::ptrdiff_t difference_type;
- typedef int* pointer;
- typedef int& reference;
-
- protected:
- inner()
- : curtok(new int(0))
- {}
-
- inner(InputT x)
- : curtok(new int(x))
- {}
-
- inner(inner const& x)
- : curtok(x.curtok)
- {}
-
- void destroy()
- {
- delete curtok;
- curtok = 0;
- }
-
- bool same_input(inner const& x) const
- {
- return curtok == x.curtok;
- }
-
- void swap(inner& x)
- {
- impl::mp_swap(curtok, x.curtok);
- }
-
- public:
- reference get_input() const
- {
- return *curtok;
- }
-
- void advance_input()
- {
- extern int yylex();
- *curtok = yylex();
- }
-
- bool input_at_eof() const
- {
- return *curtok == 0;
- }
-
- private:
- int* curtok;
-
-};
-
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// class functor_input
-// Implementation of the InputPolicy used by multi_pass
-// functor_input gets tokens from a functor
-// Note: the functor must have a typedef for result_type
-// It also must have a static variable of type result_type defined to
-// represent eof that is called eof.
-///////////////////////////////////////////////////////////////////////////////
-class functor_input
-{
- public:
-
-template <typename FunctorT>
-class inner
-{
- typedef typename FunctorT::result_type result_type;
- public:
- typedef result_type value_type;
- typedef std::ptrdiff_t difference_type;
- typedef result_type* pointer;
- typedef result_type& reference;
-
- protected:
- inner()
- : ftor(0)
- , curtok(0)
- {}
-
- inner(FunctorT const& x)
- : ftor(new FunctorT(x))
- , curtok(new result_type((*ftor)()))
- {}
-
- inner(inner const& x)
- : ftor(x.ftor)
- , curtok(x.curtok)
- {}
-
- void destroy()
- {
- delete ftor;
- ftor = 0;
- delete curtok;
- curtok = 0;
- }
-
- bool same_input(inner const& x) const
- {
- return ftor == x.ftor;
- }
-
- void swap(inner& x)
- {
- impl::mp_swap(curtok, x.curtok);
- impl::mp_swap(ftor, x.ftor);
- }
-
- public:
- reference get_input() const
- {
- return *curtok;
- }
-
- void advance_input()
- {
- if (curtok) {
- *curtok = (*ftor)();
- }
- }
-
- bool input_at_eof() const
- {
- return !curtok || *curtok == ftor->eof;
- }
-
- FunctorT& get_functor() const
- {
- return *ftor;
- }
-
-
- private:
- FunctorT* ftor;
- result_type* curtok;
-
-};
-
-};
-
-} // namespace multi_pass_policies
-
-///////////////////////////////////////////////////////////////////////////////
-// iterator_base_creator
-///////////////////////////////////////////////////////////////////////////////
-
-namespace iterator_ { namespace impl {
-
-// Meta-function to generate a std::iterator<> base class for multi_pass. This
-// is used mainly to improve conformance of compilers not supporting PTS
-// and thus relying on inheritance to recognize an iterator.
-// We are using boost::iterator<> because it offers an automatic workaround
-// for broken std::iterator<> implementations.
-template <typename InputPolicyT, typename InputT>
-struct iterator_base_creator
-{
- typedef typename InputPolicyT::BOOST_NESTED_TEMPLATE inner<InputT> input_t;
-
- typedef boost::iterator
- <
- std::forward_iterator_tag,
- typename input_t::value_type,
- typename input_t::difference_type,
- typename input_t::pointer,
- typename input_t::reference
- > type;
-};
-
-}}
-
-///////////////////////////////////////////////////////////////////////////////
-// class template multi_pass
-///////////////////////////////////////////////////////////////////////////////
-
-// The default multi_pass instantiation uses a ref-counted std_deque scheme.
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-class multi_pass
- : public OwnershipPolicy
- , public CheckingPolicy
- , public StoragePolicy::template inner<
- typename InputPolicy::template inner<InputT>::value_type>
- , public InputPolicy::template inner<InputT>
- , public iterator_::impl::iterator_base_creator<InputPolicy, InputT>::type
-{
- typedef OwnershipPolicy OP;
- typedef CheckingPolicy CHP;
- typedef typename StoragePolicy::template inner<
- typename InputPolicy::template inner<InputT>::value_type> SP;
- typedef typename InputPolicy::template inner<InputT> IP;
- typedef typename
- iterator_::impl::iterator_base_creator<InputPolicy, InputT>::type
- IB;
-
- public:
- typedef typename IB::value_type value_type;
- typedef typename IB::difference_type difference_type;
- typedef typename IB::reference reference;
- typedef typename IB::pointer pointer;
- typedef InputT iterator_type;
-
- multi_pass();
- explicit multi_pass(InputT input);
-
-#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
- multi_pass(int);
-#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
-
- ~multi_pass();
-
- multi_pass(multi_pass const&);
- multi_pass& operator=(multi_pass const&);
-
- void swap(multi_pass& x);
-
- reference operator*() const;
- pointer operator->() const;
- multi_pass& operator++();
- multi_pass operator++(int);
-
- void clear_queue();
-
- bool operator==(const multi_pass& y) const;
- bool operator<(const multi_pass& y) const;
-
- private: // helper functions
- bool is_eof() const;
-};
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-multi_pass()
- : OP()
- , CHP()
- , SP()
- , IP()
-{
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-multi_pass(InputT input)
- : OP()
- , CHP()
- , SP()
- , IP(input)
-{
-}
-
-#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
- // The standard library shipped with gcc-3.1 has a bug in
- // bits/basic_string.tcc. It tries to use iter::iter(0) to
- // construct an iterator. Ironically, this happens in sanity
- // checking code that isn't required by the standard.
- // The workaround is to provide an additional constructor that
- // ignores its int argument and behaves like the default constructor.
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-multi_pass(int)
- : OP()
- , CHP()
- , SP()
- , IP()
-{
-}
-#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-~multi_pass()
-{
- if (OP::release())
- {
- CHP::destroy();
- SP::destroy();
- IP::destroy();
- }
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-multi_pass(
- multi_pass const& x)
- : OP(x)
- , CHP(x)
- , SP(x)
- , IP(x)
-{
- OP::clone();
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>&
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-operator=(
- multi_pass const& x)
-{
- multi_pass temp(x);
- temp.swap(*this);
- return *this;
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline void
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-swap(multi_pass& x)
-{
- OP::swap(x);
- CHP::swap(x);
- SP::swap(x);
- IP::swap(x);
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-typename multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-reference
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-operator*() const
-{
- CHP::check();
- return SP::dereference(*this);
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-typename multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-pointer
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-operator->() const
-{
- return &(operator*());
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>&
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-operator++()
-{
- CHP::check();
- SP::increment(*this);
- return *this;
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-operator++(int)
-{
- multi_pass
- <
- InputT,
- InputPolicy,
- OwnershipPolicy,
- CheckingPolicy,
- StoragePolicy
- > tmp(*this);
-
- ++*this;
-
- return tmp;
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline void
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-clear_queue()
-{
- SP::clear_queue();
- CHP::clear_queue();
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline bool
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-is_eof() const
-{
- return SP::is_eof(*this);
-}
-
-///// Comparisons
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline bool
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-operator==(const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& y) const
-{
- bool is_eof_ = SP::is_eof(*this);
- bool y_is_eof_ = SP::is_eof(y);
-
- if (is_eof_ && y_is_eof_)
- {
- return true; // both are EOF
- }
- else if (is_eof_ ^ y_is_eof_)
- {
- return false; // one is EOF, one isn't
- }
- else if (!IP::same_input(y))
- {
- return false;
- }
- else
- {
- return SP::equal_to(y);
- }
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline bool
-multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy>::
-operator<(const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& y) const
-{
- return SP::less_than(y);
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-bool operator!=(
- const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& x,
- const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& y)
-{
- return !(x == y);
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-bool operator>(
- const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& x,
- const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& y)
-{
- return y < x;
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-bool operator>=(
- const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& x,
- const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& y)
-{
- return !(x < y);
-}
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-inline
-bool operator<=(
- const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& x,
- const multi_pass<InputT, InputPolicy, OwnershipPolicy, CheckingPolicy,
- StoragePolicy>& y)
-{
- return !(y < x);
-}
-
-///// Generator function
-template <typename InputT>
-inline multi_pass<InputT>
-make_multi_pass(InputT i)
-{
- return multi_pass<InputT>(i);
-}
-
-// this could be a template typedef, since such a thing doesn't
-// exist in C++, we'll use inheritance to accomplish the same thing.
-
-template <typename InputT, std::size_t N>
-class look_ahead :
- public multi_pass<
- InputT,
- multi_pass_policies::input_iterator,
- multi_pass_policies::first_owner,
- multi_pass_policies::no_check,
- multi_pass_policies::fixed_size_queue<N> >
-{
- typedef multi_pass<
- InputT,
- multi_pass_policies::input_iterator,
- multi_pass_policies::first_owner,
- multi_pass_policies::no_check,
- multi_pass_policies::fixed_size_queue<N> > base_t;
- public:
- look_ahead()
- : base_t() {}
-
- explicit look_ahead(InputT x)
- : base_t(x) {}
-
- look_ahead(look_ahead const& x)
- : base_t(x) {}
-
-#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
- look_ahead(int) // workaround for a bug in the library
- : base_t() {} // shipped with gcc 3.1
-#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
-
- // default generated operators destructor and assignment operator are okay.
-};
-
-template
-<
- typename InputT,
- typename InputPolicy,
- typename OwnershipPolicy,
- typename CheckingPolicy,
- typename StoragePolicy
->
-void swap(
- multi_pass<
- InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy
- > &x,
- multi_pass<
- InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy
- > &y)
-{
- x.swap(y);
-}
-
-namespace impl {
-
- template <typename T>
- inline void mp_swap(T& t1, T& t2)
- {
- using std::swap;
- using boost::spirit::swap;
- swap(t1, t2);
- }
-}
-
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_ITERATOR_MULTI_PASS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_MULTI_PASS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_MULTI_PASS
 
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_multi_pass.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_multi_pass.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_multi_pass.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/iterator/multi_pass_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/multi_pass_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/multi_pass_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,42 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ITERATOR_MULTI_PASS_FWD_HPP)
-#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_MULTI_PASS_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_MULTI_PASS_FWD
 
-#include <cstddef>
-
-namespace boost { namespace spirit {
-
- namespace multi_pass_policies
- {
- class ref_counted;
- class first_owner;
- class buf_id_check;
- class no_check;
- class std_deque;
- template<std::size_t N> class fixed_size_queue;
- class input_iterator;
- class lex_input;
- class functor_input;
- }
-
- template
- <
- typename InputT,
- typename InputPolicy = multi_pass_policies::input_iterator,
- typename OwnershipPolicy = multi_pass_policies::ref_counted,
- typename CheckingPolicy = multi_pass_policies::buf_id_check,
- typename StoragePolicy = multi_pass_policies::std_deque
- >
- class multi_pass;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_multi_pass_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_multi_pass_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_multi_pass_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/iterator/position_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/position_iterator.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/position_iterator.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,429 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002-2006 Hartmut Kaiser
- Copyright (c) 2003 Giovanni Bajo
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_POSITION_ITERATOR_HPP
-#define BOOST_SPIRIT_POSITION_ITERATOR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITION_ITERATOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITION_ITERATOR
 
-#include <string>
-#include <boost/config.hpp>
-#include <boost/concept_check.hpp>
-
-#include <boost/spirit/iterator/position_iterator_fwd.hpp>
-
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// file_position_without_column
-//
-// A structure to hold positional information. This includes the file,
-// and the line number
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename String>
-struct file_position_without_column_base {
- String file;
- int line;
-
- file_position_without_column_base(String const& file_ = String(),
- int line_ = 1):
- file (file_),
- line (line_)
- {}
-
- bool operator==(const file_position_without_column_base& fp) const
- { return line == fp.line && file == fp.file; }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// file_position
-//
-// This structure holds complete file position, including file name,
-// line and column number
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename String>
-struct file_position_base : public file_position_without_column_base<String> {
- int column;
-
- file_position_base(String const& file_ = String(),
- int line_ = 1, int column_ = 1):
- file_position_without_column_base<String> (file_, line_),
- column (column_)
- {}
-
- bool operator==(const file_position_base& fp) const
- { return column == fp.column && this->line == fp.line && this->file == fp.file; }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// position_policy<>
-//
-// This template is the policy to handle the file position. It is specialized
-// on the position type. Providing a custom file_position also requires
-// providing a specialization of this class.
-//
-// Policy interface:
-//
-// Default constructor of the custom position class must be accessible.
-// set_tab_chars(unsigned int chars) - Set the tabstop width
-// next_char(PositionT& pos) - Notify that a new character has been
-// processed
-// tabulation(PositionT& pos) - Notify that a tab character has been
-// processed
-// next_line(PositionT& pos) - Notify that a new line delimiter has
-// been reached.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename PositionT> class position_policy;
-
-///////////////////////////////////////////////////////////////////////////////
-}} /* namespace boost::spirit */
-
-
-// This must be included here for full compatibility with old MSVC
-#include "boost/spirit/iterator/impl/position_iterator.ipp"
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// position_iterator
-//
-// It wraps an iterator, and keeps track of the current position in the input,
-// as it gets incremented.
-//
-// The wrapped iterator must be at least a Forward iterator. The position
-// iterator itself will always be a non-mutable Forward iterator.
-//
-// In order to have begin/end iterators constructed, the end iterator must be
-// empty constructed. Similar to what happens with stream iterators. The begin
-// iterator must be constructed from both, the begin and end iterators of the
-// wrapped iterator type. This is necessary to implement the lookahead of
-// characters necessary to parse CRLF sequences.
-//
-// In order to extract the current positional data from the iterator, you may
-// use the get_position member function.
-//
-// You can also use the set_position member function to reset the current
-// position to something new.
-//
-// The structure that holds the current position can be customized through a
-// template parameter, and the class position_policy must be specialized
-// on the new type to define how to handle it. Currently, it's possible
-// to choose between the file_position and file_position_without_column
-// (which saves some overhead if managing current column is not required).
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \
- BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-#error "Please use at least Boost V1.31.0 while compiling the position_iterator class!"
-#else // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Uses the newer iterator_adaptor version (should be released with
-// Boost V1.31.0)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename ForwardIteratorT,
- typename PositionT,
- typename SelfT
->
-class position_iterator
-: public iterator_::impl::position_iterator_base_generator<
- SelfT,
- ForwardIteratorT,
- PositionT
- >::type,
- public position_policy<PositionT>
-{
-private:
-
- typedef position_policy<PositionT> position_policy_t;
- typedef typename iterator_::impl::position_iterator_base_generator<
- SelfT,
- ForwardIteratorT,
- PositionT
- >::type base_t;
- typedef typename iterator_::impl::position_iterator_base_generator<
- SelfT,
- ForwardIteratorT,
- PositionT
- >::main_iter_t main_iter_t;
-
-public:
-
- typedef PositionT position_t;
-
- position_iterator()
- : _isend(true)
- {}
-
- position_iterator(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end)
- : base_t(begin), _end(end), _pos(PositionT()), _isend(begin == end)
- {}
-
- template <typename FileNameT>
- position_iterator(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end,
- FileNameT fileName)
- : base_t(begin), _end(end), _pos(PositionT(fileName)),
- _isend(begin == end)
- {}
-
- template <typename FileNameT, typename LineT>
- position_iterator(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end,
- FileNameT fileName, LineT line)
- : base_t(begin), _end(end), _pos(PositionT(fileName, line)),
- _isend(begin == end)
- {}
-
- template <typename FileNameT, typename LineT, typename ColumnT>
- position_iterator(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end,
- FileNameT fileName, LineT line, ColumnT column)
- : base_t(begin), _end(end), _pos(PositionT(fileName, line, column)),
- _isend(begin == end)
- {}
-
- position_iterator(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end,
- const PositionT& pos)
- : base_t(begin), _end(end), _pos(pos), _isend(begin == end)
- {}
-
- position_iterator(const position_iterator& iter)
- : base_t(iter.base()), position_policy_t(iter),
- _end(iter._end), _pos(iter._pos), _isend(iter._isend)
- {}
-
- position_iterator& operator=(const position_iterator& iter)
- {
- base_t::operator=(iter);
- position_policy_t::operator=(iter);
- _end = iter._end;
- _pos = iter._pos;
- _isend = iter._isend;
- return *this;
- }
-
- void set_position(PositionT const& newpos) { _pos = newpos; }
- PositionT& get_position() { return _pos; }
- PositionT const& get_position() const { return _pos; }
-
- void set_tabchars(unsigned int chars)
- {
- // This function (which comes from the position_policy) has a
- // different name on purpose, to avoid messing with using
- // declarations or qualified calls to access the base template
- // function, which might break some compilers.
- this->position_policy_t::set_tab_chars(chars);
- }
-
-private:
- friend class boost::iterator_core_access;
-
- void increment()
- {
- typename base_t::reference val = *(this->base());
- if (val == '\n' || val == '\r') {
- ++this->base_reference();
- if (this->base_reference() != _end) {
- typename base_t::reference val2 = *(this->base());
- if ((val == '\n' && val2 == '\r')
- || (val == '\r' && val2 == '\n'))
- {
- ++this->base_reference();
- }
- }
- this->next_line(_pos);
- static_cast<main_iter_t &>(*this).newline();
- }
- else if (val == '\t') {
- this->tabulation(_pos);
- ++this->base_reference();
- }
- else {
- this->next_char(_pos);
- ++this->base_reference();
- }
-
- // The iterator is at the end only if it's the same
- // of the
- _isend = (this->base_reference() == _end);
- }
-
- template <
- typename OtherDerivedT, typename OtherIteratorT,
- typename V, typename C, typename R, typename D
- >
- bool equal(iterator_adaptor<OtherDerivedT, OtherIteratorT, V, C, R, D>
- const &x) const
- {
- OtherDerivedT const &rhs = static_cast<OtherDerivedT const &>(x);
- bool x_is_end = rhs._isend;
-
- return (_isend && x_is_end) ||
- (!_isend && !x_is_end && this->base() == rhs.base());
- }
-
-protected:
-
- void newline(void)
- {}
-
- ForwardIteratorT _end;
- PositionT _pos;
- bool _isend;
-};
-
-#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// position_iterator2
-//
-// Equivalent to position_iterator, but it is able to extract the current
-// line into a string. This is very handy for error reports.
-//
-// Notice that the footprint of this class is higher than position_iterator,
-// (how much depends on how bulky the underlying iterator is), so it should
-// be used only if necessary.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template
-<
- typename ForwardIteratorT,
- typename PositionT
->
-class position_iterator2
- : public position_iterator
- <
- ForwardIteratorT,
- PositionT,
- position_iterator2<ForwardIteratorT, PositionT>
- >
-{
- typedef position_iterator
- <
- ForwardIteratorT,
- PositionT,
- position_iterator2<ForwardIteratorT, PositionT> // JDG 4-15-03
- > base_t;
-
-public:
- typedef typename base_t::value_type value_type;
- typedef PositionT position_t;
-
- position_iterator2()
- {}
-
- position_iterator2(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end):
- base_t(begin, end),
- _startline(begin)
- {}
-
- template <typename FileNameT>
- position_iterator2(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end,
- FileNameT file):
- base_t(begin, end, file),
- _startline(begin)
- {}
-
- template <typename FileNameT, typename LineT>
- position_iterator2(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end,
- FileNameT file, LineT line):
- base_t(begin, end, file, line),
- _startline(begin)
- {}
-
- template <typename FileNameT, typename LineT, typename ColumnT>
- position_iterator2(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end,
- FileNameT file, LineT line, ColumnT column):
- base_t(begin, end, file, line, column),
- _startline(begin)
- {}
-
- position_iterator2(
- const ForwardIteratorT& begin,
- const ForwardIteratorT& end,
- const PositionT& pos):
- base_t(begin, end, pos),
- _startline(begin)
- {}
-
- position_iterator2(const position_iterator2& iter)
- : base_t(iter), _startline(iter._startline)
- {}
-
- position_iterator2& operator=(const position_iterator2& iter)
- {
- base_t::operator=(iter);
- _startline = iter._startline;
- return *this;
- }
-
- ForwardIteratorT get_currentline_begin(void) const
- { return _startline; }
-
- ForwardIteratorT get_currentline_end(void) const
- { return get_endline(); }
-
- std::basic_string<value_type> get_currentline(void) const
- {
- return std::basic_string<value_type>
- (get_currentline_begin(), get_currentline_end());
- }
-
-protected:
- ForwardIteratorT _startline;
-
- friend class position_iterator<ForwardIteratorT, PositionT,
- position_iterator2<ForwardIteratorT, PositionT> >;
-
- ForwardIteratorT get_endline() const
- {
- ForwardIteratorT endline = _startline;
- while (endline != this->_end && *endline != '\r' && *endline != '\n')
- {
- ++endline;
- }
- return endline;
- }
-
- void newline(void)
- { _startline = this->base(); }
-};
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_position_iterator.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_position_iterator.hpp"
+#endif
 
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_position_iterator.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/iterator/position_iterator_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/position_iterator_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/position_iterator_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,56 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- Copyright (c) 2002-2006 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_POSITION_ITERATOR_FWD_HPP)
-#define BOOST_SPIRIT_POSITION_ITERATOR_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITION_ITERATOR_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITION_ITERATOR_FWD
 
-#include <string>
-#include <boost/detail/iterator.hpp> // for boost::detail::iterator_traits
-#include <boost/spirit/core/nil.hpp>
-
-namespace boost { namespace spirit {
-
- template <typename String = std::string>
- struct file_position_base;
-
- typedef file_position_base<std::string> file_position;
-
- template <typename String = std::string>
- struct file_position_without_column_base;
-
- typedef file_position_without_column_base<std::string> file_position_without_column;
-
- template <
- typename ForwardIteratorT,
- typename PositionT = file_position_base<
- std::basic_string<
- typename boost::detail::iterator_traits<ForwardIteratorT>::value_type
- >
- >,
- typename SelfT = nil_t
- >
- class position_iterator;
-
- template
- <
- typename ForwardIteratorT,
- typename PositionT = file_position_base<
- std::basic_string<
- typename boost::detail::iterator_traits<ForwardIteratorT>::value_type
- >
- >
- >
- class position_iterator2;
-
- template <typename PositionT> class position_policy;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_position_iterator_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_position_iterator_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_position_iterator_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/iterator/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,93 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ITERATOR_TYPEOF_HPP)
-#define BOOST_SPIRIT_ITERATOR_TYPEOF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
-#include <boost/typeof/typeof.hpp>
-#include <boost/typeof/std/string.hpp>
-
-#include <boost/spirit/iterator/multi_pass_fwd.hpp>
-#include <boost/spirit/iterator/file_iterator_fwd.hpp>
-#include <boost/spirit/iterator/position_iterator_fwd.hpp>
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-namespace boost { namespace spirit {
-
- // external (from core)
- struct nil_t;
-
- // fixed_size_queue.hpp
- template<typename T, std::size_t N> class fixed_size_queue;
- template<typename QueueT, typename T, typename PointerT>
- class fsq_iterator;
-
-}} // namespace boost::spirit
-
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-
-#if !defined(BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::nil_t)
-# define BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
 
-
-// multi_pass.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::multi_pass,5)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::multi_pass_policies::ref_counted)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::multi_pass_policies::first_owner)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::multi_pass_policies::buf_id_check)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::multi_pass_policies::no_check)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::multi_pass_policies::std_deque)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::multi_pass_policies::fixed_size_queue,(BOOST_TYPEOF_INTEGRAL(std::size_t)))
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::multi_pass_policies::input_iterator)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::multi_pass_policies::lex_input)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::multi_pass_policies::functor_input)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::multi_pass,3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::multi_pass,1)
-
-
-// file_iterator.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::file_iterator,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::fileiter_impl::std_file_iterator,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::fileiter_impl::mmap_file_iterator,1)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::fileiter_impl::std_file_iterator<char>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::fileiter_impl::std_file_iterator<wchar_t>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::fileiter_impl::mmap_file_iterator<char>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::fileiter_impl::mmap_file_iterator<wchar_t>)
-
-
-// fixed_size_queue.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::fixed_size_queue,(typename)(BOOST_TYPEOF_INTEGRAL(std::size_t)))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::fsq_iterator,3)
-
-
-// position_iterator.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::position_iterator,3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::position_iterator2,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::position_policy,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::file_position_base,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::file_position_without_column_base,1)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::file_position)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::file_position_base<std::basic_string<wchar_t> >)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::file_position_without_column)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::file_position_without_column_base<std::basic_string<wchar_t> >)
-
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/meta.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta.hpp (original)
+++ branches/proto/v4/boost/spirit/meta.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,27 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_META_MAIN_HPP)
-#define BOOST_SPIRIT_META_MAIN_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_META
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_META
 
-#include <boost/spirit/version.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Master header for Spirit.Meta
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include <boost/spirit/meta/fundamental.hpp>
-#include <boost/spirit/meta/parser_traits.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-#include <boost/spirit/meta/traverse.hpp>
-
-#endif // BOOST_SPIRIT_CORE_MAIN_HPP
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_meta.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_meta.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_meta.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/meta/as_parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/as_parser.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/as_parser.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,109 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_AS_PARSER_HPP)
-#define BOOST_SPIRIT_AS_PARSER_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_AS_PARSER
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_AS_PARSER
 
-#include <boost/spirit/core/primitives/primitives.hpp>
-
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Helper templates to derive the parser type from an auxilliary type
- // and to generate an object of the required parser type given an
- // auxilliary object. Supported types to convert are parsers,
- // single characters and character strings.
- //
- ///////////////////////////////////////////////////////////////////////////
- namespace impl
- {
- template<typename T>
- struct default_as_parser
- {
- typedef T type;
- static type const& convert(type const& p)
- {
- return p;
- }
- };
-
- struct char_as_parser
- {
- typedef chlit<char> type;
- static type convert(char ch)
- {
- return type(ch);
- }
- };
-
- struct wchar_as_parser
- {
- typedef chlit<wchar_t> type;
- static type convert(wchar_t ch)
- {
- return type(ch);
- }
- };
-
- struct string_as_parser
- {
- typedef strlit<char const*> type;
- static type convert(char const* str)
- {
- return type(str);
- }
- };
-
- struct wstring_as_parser
- {
- typedef strlit<wchar_t const*> type;
- static type convert(wchar_t const* str)
- {
- return type(str);
- }
- };
- }
-
- template<typename T>
- struct as_parser : impl::default_as_parser<T> {};
-
- template<>
- struct as_parser<char> : impl::char_as_parser {};
-
- template<>
- struct as_parser<wchar_t> : impl::wchar_as_parser {};
-
- template<>
- struct as_parser<char*> : impl::string_as_parser {};
-
- template<>
- struct as_parser<char const*> : impl::string_as_parser {};
-
- template<>
- struct as_parser<wchar_t*> : impl::wstring_as_parser {};
-
- template<>
- struct as_parser<wchar_t const*> : impl::wstring_as_parser {};
-
- template<int N>
- struct as_parser<char[N]> : impl::string_as_parser {};
-
- template<int N>
- struct as_parser<wchar_t[N]> : impl::wstring_as_parser {};
-
- template<int N>
- struct as_parser<char const[N]> : impl::string_as_parser {};
-
- template<int N>
- struct as_parser<wchar_t const[N]> : impl::wstring_as_parser {};
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_as_parser.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_as_parser.hpp"
+#endif
 
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_as_parser.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/meta/fundamental.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/fundamental.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/fundamental.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,52 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_FUNDAMENTAL_HPP)
-#define BOOST_SPIRIT_FUNDAMENTAL_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNDAMENTAL
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNDAMENTAL
 
-#include <boost/spirit/meta/impl/fundamental.ipp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_fundamental.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_fundamental.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_fundamental.hpp>
 
-namespace boost { namespace spirit
-{
- ///////////////////////////////////////////////////////////////////////////
- //
- // Helper template for counting the number of nodes contained in a
- // given parser type.
- // All parser_category type parsers are counted as nodes.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ParserT>
- struct node_count {
-
- typedef typename ParserT::parser_category_t parser_category_t;
- typedef typename impl::nodes<parser_category_t>
- ::template count<ParserT, mpl::int_<0> > count_t;
-
- BOOST_STATIC_CONSTANT(int, value = count_t::value);
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Helper template for counting the number of leaf nodes contained in a
- // given parser type.
- // Only plain_parser_category type parsers are counted as leaf nodes.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ParserT>
- struct leaf_count {
-
- typedef typename ParserT::parser_category_t parser_category_t;
- typedef typename impl::leafs<parser_category_t>
- ::template count<ParserT, mpl::int_<0> > count_t;
-
- BOOST_STATIC_CONSTANT(int, value = count_t::value);
- };
-
-}} // namespace boost::spirit
-
-#endif // !defined(BOOST_SPIRIT_FUNDAMENTAL_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/meta/parser_traits.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/parser_traits.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/parser_traits.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,316 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- Copyright (c) 2003 Martin Wille
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_PARSER_TRAITS_HPP)
-#define BOOST_SPIRIT_PARSER_TRAITS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_TRAITS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_TRAITS
 
-#include <boost/type_traits/is_base_and_derived.hpp>
-#include <boost/static_assert.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser_traits.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parser_traits.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_parser_traits.hpp>
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/meta/impl/parser_traits.ipp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Parser traits templates
-//
-// Used to determine the type and several other characteristics of a given
-// parser type.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The is_parser traits template can be used to tell wether a given
-// class is a parser.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-struct is_parser
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::is_base_and_derived<parser<T>, T>::value));
-
-// [JDG 2/3/03] simplified implementation by
-// using boost::is_base_and_derived
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The is_unary_composite traits template can be used to tell if a given
-// parser is a unary parser as for instance kleene_star or optional.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename UnaryT>
-struct is_unary_composite {
-
- BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible<
- typename UnaryT::parser_category_t, unary_parser_category>::value));
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The is_acction_parser traits template can be used to tell if a given
-// parser is a action parser, i.e. it is a composite consisting of a
-// auxilliary parser and an attached semantic action.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ActionT>
-struct is_action_parser {
-
- BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible<
- typename ActionT::parser_category_t, action_parser_category>::value));
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The is_binary_composite traits template can be used to tell if a given
-// parser is a binary parser as for instance sequence or difference.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename BinaryT>
-struct is_binary_composite {
-
- BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible<
- typename BinaryT::parser_category_t, binary_parser_category>::value));
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The is_composite_parser traits template can be used to tell if a given
-// parser is a unary or a binary parser composite type.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CompositeT>
-struct is_composite_parser {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::is_unary_composite<CompositeT>::value ||
- ::boost::spirit::is_binary_composite<CompositeT>::value));
-};
-
-///////////////////////////////////////////////////////////////////////////////
-template <typename ParserT>
-struct is_alternative {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_alternative));
-};
-
-template <typename ParserT>
-struct is_sequence {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_sequence));
-};
-
-template <typename ParserT>
-struct is_sequential_or {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_sequential_or));
-};
-
-template <typename ParserT>
-struct is_intersection {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_intersection));
-};
-
-template <typename ParserT>
-struct is_difference {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_difference));
-};
-
-template <typename ParserT>
-struct is_exclusive_or {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_exclusive_or));
-};
-
-template <typename ParserT>
-struct is_optional {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_optional));
-};
-
-template <typename ParserT>
-struct is_kleene_star {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_kleene_star));
-};
-
-template <typename ParserT>
-struct is_positive {
-
- BOOST_STATIC_CONSTANT(bool, value = (
- ::boost::spirit::impl::parser_type_traits<ParserT>::is_positive));
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Parser extraction templates
-//
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The unary_subject template can be used to return the type of the
-// parser used as the subject of an unary parser.
-// If the parser under inspection is not an unary type parser the compilation
-// will fail.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename UnaryT>
-struct unary_subject {
-
- BOOST_STATIC_ASSERT(::boost::spirit::is_unary_composite<UnaryT>::value);
- typedef typename UnaryT::subject_t type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The get_unary_subject template function returns the parser object, which
-// is used as the subject of an unary parser.
-// If the parser under inspection is not an unary type parser the compilation
-// will fail.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename UnaryT>
-inline typename unary_subject<UnaryT>::type const &
-get_unary_subject(UnaryT const &unary_)
-{
- BOOST_STATIC_ASSERT(::boost::spirit::is_unary_composite<UnaryT>::value);
- return unary_.subject();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The binary_left_subject and binary_right_subject templates can be used to
-// return the types of the parsers used as the left and right subject of an
-// binary parser.
-// If the parser under inspection is not a binary type parser the compilation
-// will fail.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename BinaryT>
-struct binary_left_subject {
-
- BOOST_STATIC_ASSERT(::boost::spirit::is_binary_composite<BinaryT>::value);
- typedef typename BinaryT::left_t type;
-};
-
-template <typename BinaryT>
-struct binary_right_subject {
-
- BOOST_STATIC_ASSERT(::boost::spirit::is_binary_composite<BinaryT>::value);
- typedef typename BinaryT::right_t type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The get_binary_left_subject and get_binary_right_subject template functions
-// return the parser object, which is used as the left or right subject of a
-// binary parser.
-// If the parser under inspection is not a binary type parser the compilation
-// will fail.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename BinaryT>
-inline typename binary_left_subject<BinaryT>::type const &
-get_binary_left_subject(BinaryT const &binary_)
-{
- BOOST_STATIC_ASSERT(::boost::spirit::is_binary_composite<BinaryT>::value);
- return binary_.left();
-}
-
-template <typename BinaryT>
-inline typename binary_right_subject<BinaryT>::type const &
-get_binary_right_subject(BinaryT const &binary_)
-{
- BOOST_STATIC_ASSERT(::boost::spirit::is_binary_composite<BinaryT>::value);
- return binary_.right();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The action_subject template can be used to return the type of the
-// parser used as the subject of an action parser.
-// If the parser under inspection is not an action type parser the compilation
-// will fail.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ActionT>
-struct action_subject {
-
- BOOST_STATIC_ASSERT(::boost::spirit::is_action_parser<ActionT>::value);
- typedef typename ActionT::subject_t type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The get_action_subject template function returns the parser object, which
-// is used as the subject of an action parser.
-// If the parser under inspection is not an action type parser the compilation
-// will fail.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ActionT>
-inline typename action_subject<ActionT>::type const &
-get_action_subject(ActionT const &action_)
-{
- BOOST_STATIC_ASSERT(::boost::spirit::is_action_parser<ActionT>::value);
- return action_.subject();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The semantic_action template can be used to return the type of the
-// attached semantic action of an action parser.
-// If the parser under inspection is not an action type parser the compilation
-// will fail.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ActionT>
-struct semantic_action {
-
- BOOST_STATIC_ASSERT(::boost::spirit::is_action_parser<ActionT>::value);
- typedef typename ActionT::predicate_t type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The get_semantic_action template function returns the attached semantic
-// action of an action parser.
-// If the parser under inspection is not an action type parser the compilation
-// will fail.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ActionT>
-inline typename semantic_action<ActionT>::type const &
-get_semantic_action(ActionT const &action_)
-{
- BOOST_STATIC_ASSERT(::boost::spirit::is_action_parser<ActionT>::value);
- return action_.predicate();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
-
-#endif // !defined(BOOST_SPIRIT_PARSER_TRAITS_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/meta/refactoring.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/refactoring.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/refactoring.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,274 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_REFACTORING_HPP
-#define BOOST_SPIRIT_REFACTORING_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REFACTORING
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_REFACTORING
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/static_assert.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-#include <boost/spirit/meta/impl/refactoring.ipp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// refactor_unary_parser class
-//
-// This helper template allows to attach an unary operation to a newly
-// constructed parser, which combines the subject of the left operand of
-// the original given parser (BinaryT) with the right operand of the
-// original binary parser through the original binary operation and
-// rewraps the resulting parser with the original unary operator.
-//
-// For instance given the parser:
-// *some_parser - another_parser
-//
-// will be refactored to:
-// *(some_parser - another_parser)
-//
-// If the parser to refactor is not a unary parser, no refactoring is done
-// at all.
-//
-// The original parser should be a binary_parser_category parser,
-// else the compilation will fail
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template <typename NestedT = non_nested_refactoring>
-class refactor_unary_gen;
-
-template <typename BinaryT, typename NestedT = non_nested_refactoring>
-class refactor_unary_parser :
- public parser<refactor_unary_parser<BinaryT, NestedT> > {
-
-public:
- // the parser to refactor has to be at least a binary_parser_category
- // parser
- BOOST_STATIC_ASSERT((
- boost::is_convertible<typename BinaryT::parser_category_t,
- binary_parser_category>::value
- ));
-
- refactor_unary_parser(BinaryT const& binary_, NestedT const& nested_)
- : binary(binary_), nested(nested_) {}
-
- typedef refactor_unary_parser<BinaryT, NestedT> self_t;
- typedef refactor_unary_gen<NestedT> parser_generator_t;
- typedef typename BinaryT::left_t::parser_category_t parser_category_t;
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- return impl::refactor_unary_type<NestedT>::
- parse(*this, scan, binary, nested);
- }
-
-private:
- typename as_parser<BinaryT>::type::embed_t binary;
- typename NestedT::embed_t nested;
-};
-
-//////////////////////////////////
-template <typename NestedT>
-class refactor_unary_gen {
-
-public:
- typedef refactor_unary_gen<NestedT> embed_t;
-
- refactor_unary_gen(NestedT const& nested_ = non_nested_refactoring())
- : nested(nested_) {}
-
- template <typename ParserT>
- refactor_unary_parser<ParserT, NestedT>
- operator[](parser<ParserT> const& subject) const
- {
- return refactor_unary_parser<ParserT, NestedT>
- (subject.derived(), nested);
- }
-
-private:
- typename NestedT::embed_t nested;
-};
-
-const refactor_unary_gen<> refactor_unary_d = refactor_unary_gen<>();
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// refactor_action_parser class
-//
-// This helper template allows to attach an action taken from the left
-// operand of the given binary parser to a newly constructed parser,
-// which combines the subject of the left operand of the original binary
-// parser with the right operand of the original binary parser by means of
-// the original binary operator parser.
-//
-// For instance the parser:
-// some_parser[some_attached_functor] - another_parser
-//
-// will be refactored to:
-// (some_parser - another_parser)[some_attached_functor]
-//
-// If the left operand to refactor is not an action parser, no refactoring
-// is done at all.
-//
-// The original parser should be a binary_parser_category parser,
-// else the compilation will fail
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template <typename NestedT = non_nested_refactoring>
-class refactor_action_gen;
-
-template <typename BinaryT, typename NestedT = non_nested_refactoring>
-class refactor_action_parser :
- public parser<refactor_action_parser<BinaryT, NestedT> > {
-
-public:
- // the parser to refactor has to be at least a binary_parser_category
- // parser
- BOOST_STATIC_ASSERT((
- boost::is_convertible<typename BinaryT::parser_category_t,
- binary_parser_category>::value
- ));
-
- refactor_action_parser(BinaryT const& binary_, NestedT const& nested_)
- : binary(binary_), nested(nested_) {}
-
- typedef refactor_action_parser<BinaryT, NestedT> self_t;
- typedef refactor_action_gen<NestedT> parser_generator_t;
- typedef typename BinaryT::left_t::parser_category_t parser_category_t;
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- return impl::refactor_action_type<NestedT>::
- parse(*this, scan, binary, nested);
- }
-
-private:
- typename as_parser<BinaryT>::type::embed_t binary;
- typename NestedT::embed_t nested;
-};
-
-//////////////////////////////////
-template <typename NestedT>
-class refactor_action_gen {
-
-public:
- typedef refactor_action_gen<NestedT> embed_t;
-
- refactor_action_gen(NestedT const& nested_ = non_nested_refactoring())
- : nested(nested_) {}
-
- template <typename ParserT>
- refactor_action_parser<ParserT, NestedT>
- operator[](parser<ParserT> const& subject) const
- {
- return refactor_action_parser<ParserT, NestedT>
- (subject.derived(), nested);
- }
-
-private:
- typename NestedT::embed_t nested;
-};
-
-const refactor_action_gen<> refactor_action_d = refactor_action_gen<>();
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// attach_action_parser class
-//
-// This helper template allows to attach an action given separately
-// to to all parsers, out of which the given parser is constructed and
-// reconstructs a new parser having the same structure.
-//
-// For instance the parser:
-// (some_parser >> another_parser)[some_attached_functor]
-//
-// will be refactored to:
-// some_parser[some_attached_functor]
-// >> another_parser[some_attached_functor]
-//
-// The original parser should be a action_parser_category parser,
-// else the compilation will fail
-//
-// If the parser, to which the action is attached is not an binary parser,
-// no refactoring is done at all.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template <typename NestedT = non_nested_refactoring>
-class attach_action_gen;
-
-template <typename ActionT, typename NestedT = non_nested_refactoring>
-class attach_action_parser :
- public parser<attach_action_parser<ActionT, NestedT> > {
-
-public:
- // the parser to refactor has to be at least a action_parser_category
- // parser
- BOOST_STATIC_ASSERT((
- boost::is_convertible<typename ActionT::parser_category_t,
- action_parser_category>::value
- ));
-
- attach_action_parser(ActionT const& actor_, NestedT const& nested_)
- : actor(actor_), nested(nested_) {}
-
- typedef attach_action_parser<ActionT, NestedT> self_t;
- typedef attach_action_gen<NestedT> parser_generator_t;
- typedef typename ActionT::parser_category_t parser_category_t;
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- return impl::attach_action_type<NestedT>::
- parse(*this, scan, actor, nested);
- }
-
-private:
- typename as_parser<ActionT>::type::embed_t actor;
- typename NestedT::embed_t nested;
-};
-
-//////////////////////////////////
-template <typename NestedT>
-class attach_action_gen {
-
-public:
- typedef attach_action_gen<NestedT> embed_t;
-
- attach_action_gen(NestedT const& nested_ = non_nested_refactoring())
- : nested(nested_) {}
-
- template <typename ParserT, typename ActionT>
- attach_action_parser<action<ParserT, ActionT>, NestedT>
- operator[](action<ParserT, ActionT> const& actor) const
- {
- return attach_action_parser<action<ParserT, ActionT>, NestedT>
- (actor, nested);
- }
-
-private:
- typename NestedT::embed_t nested;
-};
-
-const attach_action_gen<> attach_action_d = attach_action_gen<>();
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_REFACTORING_HPP
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_refactoring.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_refactoring.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_refactoring.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/meta/traverse.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/traverse.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/traverse.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,218 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_TRAVERSE_HPP)
-#define BOOST_SPIRIT_TRAVERSE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TRAVERSE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TRAVERSE
 
-#include <boost/spirit/meta/impl/traverse.ipp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_traverse.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_traverse.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_traverse.hpp>
 
-namespace boost { namespace spirit
-{
- ///////////////////////////////////////////////////////////////////////////
- //
- // Post-order traversal of auxilliary parsers.
- //
- ///////////////////////////////////////////////////////////////////////////
- struct post_order
- {
- // Return the parser type, which is generated as the result of the
- // traverse function below.
-
- template <typename MetaT, typename ParserT>
- struct result
- {
- typedef typename
- traverse_post_order_return<
- MetaT
- , ParserT
- , traverse_post_order_env<0, 0, 0, 0>
- >::type
- type;
- };
-
- // Traverse a given parser and refactor it with the help of the given
- // MetaT metafunction template.
-
- template <typename MetaT, typename ParserT>
- static typename result<MetaT, ParserT>::type
- traverse(MetaT const &meta_, ParserT const &parser_)
- {
- typedef typename ParserT::parser_category_t parser_category_t;
- return impl::traverse_post_order<parser_category_t>::generate(
- meta_, parser_, traverse_post_order_env<0, 0, 0, 0>());
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Transform policies
- //
- // The following policy classes could be used to assemble some new
- // transformation metafunction which uses identity transformations
- // for some parser_category type parsers.
- //
- ///////////////////////////////////////////////////////////////////////////
-
- ///////////////////////////////////////////////////////////////////////////
- // transform plain parsers
- template <typename TransformT>
- struct plain_identity_policy
- {
- template <typename ParserT, typename EnvT>
- struct plain_result
- {
- // plain parsers should be embedded and returned correctly
- typedef typename ParserT::embed_t type;
- };
-
- template <typename ParserT, typename EnvT>
- typename parser_traversal_plain_result<TransformT, ParserT, EnvT>::type
- generate_plain(ParserT const &parser_, EnvT const& /*env*/) const
- {
- return parser_;
- }
- };
-
- //////////////////////////////////
- // transform unary parsers
- template <typename UnaryT, typename SubjectT>
- struct unary_identity_policy_return
- {
- typedef typename UnaryT::parser_generator_t parser_generator_t;
- typedef typename parser_generator_t
- ::template result<SubjectT>::type type;
- };
-
- template <typename TransformT>
- struct unary_identity_policy
- {
- template <typename UnaryT, typename SubjectT, typename EnvT>
- struct unary_result
- {
- typedef
- typename unary_identity_policy_return<UnaryT, SubjectT>::type
- type;
- };
-
- template <typename UnaryT, typename SubjectT, typename EnvT>
- typename parser_traversal_unary_result<
- TransformT, UnaryT, SubjectT, EnvT>::type
- generate_unary(
- UnaryT const &, SubjectT const &subject_, EnvT const& /*env*/) const
- {
- typedef typename UnaryT::parser_generator_t parser_generator_t;
- return parser_generator_t::template generate<SubjectT>(subject_);
- }
- };
-
- //////////////////////////////////
- // transform action parsers
- template <typename TransformT>
- struct action_identity_policy
- {
- template <typename ActionT, typename SubjectT, typename EnvT>
- struct action_result
- {
- typedef action<SubjectT, typename ActionT::predicate_t> type;
- };
-
- template <typename ActionT, typename SubjectT, typename EnvT>
- typename parser_traversal_action_result<
- TransformT, ActionT, SubjectT, EnvT
- >::type
- generate_action(ActionT const &action_, SubjectT const &subject_,
- EnvT const& /*env*/) const
- {
- return subject_[action_.predicate()];
- }
- };
-
- //////////////////////////////////
- // transform binary parsers
- template <typename BinaryT, typename LeftT, typename RightT>
- struct binary_identity_policy_return
- {
- typedef typename BinaryT::parser_generator_t parser_generator_t;
- typedef typename parser_generator_t
- ::template result<LeftT, RightT>::type type;
- };
-
- template <typename TransformT>
- struct binary_identity_policy
- {
- template <typename BinaryT, typename LeftT
- , typename RightT, typename EnvT>
- struct binary_result {
-
- typedef typename
- binary_identity_policy_return<BinaryT, LeftT, RightT>::type
- type;
- };
-
- template <typename BinaryT, typename LeftT
- , typename RightT, typename EnvT>
- typename parser_traversal_binary_result<
- TransformT, BinaryT, LeftT, RightT, EnvT
- >::type
- generate_binary(
- BinaryT const &, LeftT const& left_
- , RightT const& right_, EnvT const& /*env*/) const
- {
- typedef typename BinaryT::parser_generator_t parser_generator_t;
- return parser_generator_t::
- template generate<LeftT, RightT>(left_, right_);
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // transform_policies template
- //
- // The transform_policies template metafunction could serve as a
- // base class for new metafunctions to be passed to the traverse meta
- // template (see above), where only minimal parts have to be
- // overwritten.
- //
- ///////////////////////////////////////////////////////////////////////////
-
- template <
- typename TransformT,
- typename PlainPolicyT = plain_identity_policy<TransformT>,
- typename UnaryPolicyT = unary_identity_policy<TransformT>,
- typename ActionPolicyT = action_identity_policy<TransformT>,
- typename BinaryPolicyT = binary_identity_policy<TransformT>
- >
- struct transform_policies :
- public PlainPolicyT,
- public UnaryPolicyT,
- public ActionPolicyT,
- public BinaryPolicyT
- {
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Identity transformation
- //
- // The identity_transform metafunction supplied to the traverse
- // template will generate a new parser, which will be exactly
- // identical to the parser given as the parameter to the traverse
- // metafunction. I.e. the following conceptual 'equation' will be
- // always true:
- //
- // some_parser ==
- // post_order::traverse(identity_transform(), some_parser)
- //
- ///////////////////////////////////////////////////////////////////////////
-
- struct identity_transform : transform_policies<identity_transform> {};
-
-}} // namespace boost::spirit
-
-#endif // !defined(BOOST_SPIRIT_TRAVERSE_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/phoenix.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,26 +1,23 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(BOOST_SPIRIT_PHOENIX_HPP)
-#define BOOST_SPIRIT_PHOENIX_HPP
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PHOENIX
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PHOENIX
 
-#include <boost/spirit/phoenix/tuples.hpp>
-#include <boost/spirit/phoenix/tuple_helpers.hpp>
-#include <boost/spirit/phoenix/actor.hpp>
-#include <boost/spirit/phoenix/primitives.hpp>
-#include <boost/spirit/phoenix/composite.hpp>
-#include <boost/spirit/phoenix/functions.hpp>
-#include <boost/spirit/phoenix/operators.hpp>
-#include <boost/spirit/phoenix/special_ops.hpp>
-#include <boost/spirit/phoenix/statements.hpp>
-#include <boost/spirit/phoenix/binders.hpp>
-#include <boost/spirit/phoenix/closures.hpp>
-#include <boost/spirit/phoenix/casts.hpp>
-#include <boost/spirit/phoenix/new.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_phoenix.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_phoenix.hpp"
+#endif
 
-#endif // !defined(BOOST_SPIRIT_PHOENIX_HPP)
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_phoenix.hpp>
+
+#endif

Modified: branches/proto/v4/boost/spirit/phoenix/actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/actor.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/actor.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,596 +1,20 @@
 /*=============================================================================
- Phoenix v1.2
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_ACTOR_HPP
-#define PHOENIX_ACTOR_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/tuples.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-// These are forward declared here because we cannot include impl.hpp
-// or operators.hpp yet but the actor's assignment operator and index
-// operator are required to be members.
-
-//////////////////////////////////
-struct assign_op;
-struct index_op;
-
-//////////////////////////////////
-namespace impl {
-
- template <typename OperationT, typename BaseT, typename B>
- struct make_binary1;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// unpack_tuple class
-//
-// This class is used to unpack a supplied tuple such, that the members of
-// this tuple will be handled as if they would be supplied separately.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename TupleT>
-struct unpack_tuple : public TupleT {
-
- typedef TupleT tuple_t;
-
- unpack_tuple() {}
- unpack_tuple(tuple_t const &tuple_) : TupleT(tuple_) {}
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// actor class
-//
-// This class is a protocol class for all actors. This class is
-// essentially an interface contract. The actor class does not
-// really know how how to act on anything but instead relies on the
-// template parameter BaseT (from which the actor will derive from)
-// to do the actual action.
-//
-// An actor is a functor that is capable of accepting arguments up
-// to a predefined maximum. It is up to the base class to do the
-// actual processing or possibly to limit the arity (no. of
-// arguments) passed in. Upon invocation of the functor through a
-// supplied operator(), the actor funnels the arguments passed in
-// by the client into a tuple and calls the base eval member
-// function.
-//
-// Schematically:
-//
-// arg0 ---------|
-// arg1 ---------|
-// arg2 ---------|---> tupled_args ---> base.eval
-// ... |
-// argN ---------|
-//
-// actor::operator()(arg0, arg1... argN)
-// ---> BaseT::eval(tupled_args);
-//
-// Actor base classes from which this class inherits from are
-// expected to have a corresponding member function eval compatible
-// with the conceptual Interface:
-//
-// template <typename TupleT>
-// actor_return_type
-// eval(TupleT const& args) const;
-//
-// where args are the actual arguments passed in by the client
-// funneled into a tuple (see tuple.hpp for details).
-//
-// The actor_return_type can be anything. Base classes are free to
-// return any type, even argument dependent types (types that are
-// deduced from the types of the arguments). After evaluating the
-// parameters and doing some computations or actions, the eval
-// member function concludes by returning something back to the
-// client. To do this, the forwarding function (the actor's
-// operator()) needs to know the return type of the eval member
-// function that it is calling. For this purpose, actor base
-// classes are required to provide a nested template class:
-//
-// template <typename TupleT>
-// struct result;
-//
-// This auxiliary class provides the result type information
-// returned by the eval member function of a base actor class. The
-// nested template class result should have a typedef 'type' that
-// reflects the return type of its member function eval. It is
-// basically a type computer that answers the question "given
-// arguments packed into a TupleT type, what will be the result
-// type of the eval member function of ActorT?". The template class
-// actor_result queries this to extract the return type of an
-// actor. Example:
-//
-// typedef typename actor_result<ActorT, TupleT>::type
-// actor_return_type;
-//
-// where actor_return_type is the actual type returned by ActorT's
-// eval member function given some arguments in a TupleT.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ActorT, typename TupleT>
-struct actor_result {
-
- typedef typename ActorT::template result<TupleT>::type type;
- typedef typename remove_reference<type>::type plain_type;
-};
-
-//////////////////////////////////
-template <typename BaseT>
-struct actor : public BaseT {
-
- actor();
- actor(BaseT const& base);
-
- typename actor_result<BaseT, tuple<> >::type
- operator()() const;
-
- template <typename A>
- typename actor_result<BaseT, tuple<A&> >::type
- operator()(A& a) const;
-
- template <typename A, typename B>
- typename actor_result<BaseT, tuple<A&, B&> >::type
- operator()(A& a, B& b) const;
-
- template <typename A, typename B, typename C>
- typename actor_result<BaseT, tuple<A&, B&, C&> >::type
- operator()(A& a, B& b, C& c) const;
-
-#if PHOENIX_LIMIT > 3
- template <typename A, typename B, typename C, typename D>
- typename actor_result<BaseT, tuple<A&, B&, C&, D&> >::type
- operator()(A& a, B& b, C& c, D& d) const;
-
- template <typename A, typename B, typename C, typename D, typename E>
- typename actor_result<BaseT, tuple<A&, B&, C&, D&, E&> >::type
- operator()(A& a, B& b, C& c, D& d, E& e) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F>
- typename actor_result<BaseT, tuple<A&, B&, C&, D&, E&, F&> >::type
- operator()(A& a, B& b, C& c, D& d, E& e, F& f) const;
-
-#if PHOENIX_LIMIT > 6
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G>
- typename actor_result<BaseT, tuple<A&, B&, C&, D&, E&, F&, G&> >::type
- operator()(A& a, B& b, C& c, D& d, E& e, F& f, G& g) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H>
- typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&>
- >::type
- operator()(A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I>
- typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&>
- >::type
- operator()(A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i) const;
-
-#if PHOENIX_LIMIT > 9
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J>
- typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&>
- >::type
- operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K>
- typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&>
- >::type
- operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L>
- typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&>
- >::type
- operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k, L& l) const;
-
-#if PHOENIX_LIMIT > 12
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M>
- typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&>
- >::type
- operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k, L& l, M& m) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N>
- typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&>
- >::type
- operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k, L& l, M& m, N& n) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O>
- typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&, O&>
- >::type
- operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k, L& l, M& m, N& n, O& o) const;
-
-#endif
-#endif
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTOR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTOR
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_actor.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_actor.hpp"
 #endif
-#endif
-
- template <typename TupleT>
- typename actor_result<BaseT, unpack_tuple<TupleT> >::type
- operator()(unpack_tuple<TupleT> const &t) const;
-
- template <typename B>
- typename impl::make_binary1<assign_op, BaseT, B>::type
- operator=(B const& b) const;
-
- template <typename B>
- typename impl::make_binary1<index_op, BaseT, B>::type
- operator[](B const& b) const;
-};
-
-///////////////////////////////////////////////////////////////////////////
-//
-// as_actor
-//
-// as_actor is a meta-program that converts an arbitrary type into
-// an actor. All participants in the framework must be first-class
-// actors. This meta-program is used all throughout the framework
-// whenever an unknown type needs to be converted to an actor.
-// as_actor specializations are expected to have a typedef 'type'.
-// This is the destination actor type. A static member function
-// 'convert' converts an object to this target type.
-//
-// The meta-program does no conversion if the object to be
-// converted is already an actor.
-//
-///////////////////////////////////////////////////////////////////////////
-template <typename T>
-struct as_actor;
-
-//////////////////////////////////
-template <typename BaseT>
-struct as_actor<actor<BaseT> > {
-
- typedef actor<BaseT> type;
- static type convert(actor<BaseT> const& x) { return x; }
-};
-
-//////////////////////////////////
-template <>
-struct as_actor<nil_t> {
-
- typedef nil_t type;
- static nil_t convert(nil_t /*x*/)
- { return nil_t(); }
-};
-
-//////////////////////////////////
-template <>
-struct as_actor<void> {
-
- typedef void type;
- // ERROR!!!
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// actor class implementation
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename BaseT>
-actor<BaseT>::actor()
-: BaseT() {}
-
-//////////////////////////////////
-template <typename BaseT>
-actor<BaseT>::actor(BaseT const& base)
-: BaseT(base) {}
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename actor_result<BaseT, tuple<> >::type
-actor<BaseT>::operator()() const
-{
- return BaseT::eval(tuple<>());
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <typename A>
-inline typename actor_result<BaseT, tuple<A&> >::type
-actor<BaseT>::operator()(A& a) const
-{
- return BaseT::eval(tuple<A&>(a));
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <typename A, typename B>
-inline typename actor_result<BaseT, tuple<A&, B&> >::type
-actor<BaseT>::operator()(A& a, B& b) const
-{
- return BaseT::eval(tuple<A&, B&>(a, b));
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <typename A, typename B, typename C>
-inline typename actor_result<BaseT, tuple<A&, B&, C&> >::type
-actor<BaseT>::operator()(A& a, B& b, C& c) const
-{
- return BaseT::eval(tuple<A&, B&, C&>(a, b, c));
-}
-
-#if PHOENIX_LIMIT > 3
-//////////////////////////////////
-template <typename BaseT>
-template <typename A, typename B, typename C, typename D>
-inline typename actor_result<BaseT, tuple<A&, B&, C&, D&> >::type
-actor<BaseT>::operator()(A& a, B& b, C& c, D& d) const
-{
- return BaseT::eval(tuple<A&, B&, C&, D&>(a, b, c, d));
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <typename A, typename B, typename C, typename D, typename E>
-inline typename actor_result<BaseT, tuple<A&, B&, C&, D&, E&> >::type
-actor<BaseT>::operator()(A& a, B& b, C& c, D& d, E& e) const
-{
- return BaseT::eval(tuple<A&, B&, C&, D&, E&>(a, b, c, d, e));
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&>
- (a, b, c, d, e, f)
- );
-}
-
-#if PHOENIX_LIMIT > 6
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&>
- (a, b, c, d, e, f, g)
- );
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&, H&>
- (a, b, c, d, e, f, g, h)
- );
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&>
- (a, b, c, d, e, f, g, h, i)
- );
-}
-
-#if PHOENIX_LIMIT > 9
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&>
- (a, b, c, d, e, f, g, h, i, j)
- );
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&>
- (a, b, c, d, e, f, g, h, i, j, k)
- );
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k, L& l
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&>
- (a, b, c, d, e, f, g, h, i, j, k, l)
- );
-}
-
-#if PHOENIX_LIMIT > 12
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k, L& l, M& m
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&>
- (a, b, c, d, e, f, g, h, i, j, k, l, m)
- );
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k, L& l, M& m, N& n
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&>
- (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
- );
-}
-
-//////////////////////////////////
-template <typename BaseT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O>
-inline typename actor_result<BaseT,
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&, O&>
->::type
-actor<BaseT>::operator()(
- A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,
- K& k, L& l, M& m, N& n, O& o
-) const
-{
- return BaseT::eval(
- tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&, O&>
- (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
- );
-}
-
-#endif
-#endif
-#endif
-#endif
-
-//////////////////////////////////
-template <typename BaseT>
-template <typename TupleT>
-typename actor_result<BaseT, unpack_tuple<TupleT> >::type
-actor<BaseT>::operator()(unpack_tuple<TupleT> const &t) const
-{
- return BaseT::eval(t);
-}
 
-///////////////////////////////////////////////////////////////////////////////
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_actor.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/binders.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/binders.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/binders.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,4067 +1,20 @@
 /*=============================================================================
- Phoenix v1.2
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_BINDERS_HPP
-#define PHOENIX_BINDERS_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/functions.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/if.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Binders
-//
-// There are times when it is desireable to bind a simple functor,
-// function, member function or member variable for deferred
-// evaluation. This can be done through the binding facilities
-// provided below. There are template classes:
-//
-// 1) function_ptr ( function pointer binder )
-// 2) functor ( functor pointer binder )
-// 3) member_function_ptr ( member function pointer binder )
-// 4) member_var_ptr ( member variable pointer binder )
-//
-// These template classes are specialized lazy function classes for
-// functors, function pointers, member function pointers and member
-// variable pointers, respectively. These are subclasses of the
-// lazy-function class (see functions.hpp). Each of these has a
-// corresponding overloaded bind(x) function. Each bind(x) function
-// generates a suitable binder object.
-//
-// Example, given a function foo:
-//
-// void foo_(int n) { std::cout << n << std::endl; }
-//
-// Here's how the function foo is bound:
-//
-// bind(&foo_)
-//
-// This bind expression results to a lazy-function (see
-// functions.hpp) that is lazily evaluated. This bind expression is
-// also equivalent to:
-//
-// function_ptr<void, int> foo = &foo_;
-//
-// The template parameter of the function_ptr is the return and
-// argument types of actual signature of the function to be bound
-// read from left to right:
-//
-// void foo_(int); ---> function_ptr<void, int>
-//
-// Either bind(&foo_) and its equivalent foo can now be used in the
-// same way a lazy function (see functions.hpp) is used:
-//
-// bind(&foo_)(arg1)
-//
-// or
-//
-// foo(arg1)
-//
-// The latter, of course, being much easier to understand. This is
-// now a full-fledged lazy function that can finally be evaluated
-// by another function call invocation. A second function call will
-// invoke the actual foo function:
-//
-// int i = 4;
-// foo(arg1)(i);
-//
-// will print out "4".
-//
-// Binding functors and member functions can be done similarly.
-// Here's how to bind a functor (e.g. std::plus<int>):
-//
-// bind(std::plus<int>())
-//
-// or
-//
-// functor<std::plus<int> > plus;
-//
-// Again, these are full-fledged lazy functions. In this case,
-// unlike the first example, expect 2 arguments (std::plus<int>
-// needs two arguments lhs and rhs). Either or both of which can be
-// lazily bound:
-//
-// plus(arg1, arg2) // arg1 + arg2
-// plus(100, arg1) // 100 + arg1
-// plus(100, 200) // 300
-//
-// A bound member function takes in a pointer or reference to an
-// object as the first argument. For instance, given:
-//
-// struct xyz { void foo(int) const; };
-//
-// xyz's foo member function can be bound as:
-//
-// bind(&xyz::foo)
-//
-// or
-//
-// member_function_ptr<void, xyz, int> xyz_foo = &xyz::foo;
-//
-// The template parameter of the member_function_ptr is the return,
-// class and argument types of actual signature of the function to
-// be bound read from left to right:
-//
-// void xyz::foo_(int); ---> member_function_ptr<void, xyz, int>
-//
-// Take note that a member_function_ptr lazy-function expects the
-// first argument to be a pointer or reference to an object. Both
-// the object (reference or pointer) and the arguments can be
-// lazily bound. Examples:
-//
-// xyz obj;
-// xyz_foo(arg1, arg2) // arg1.foo(arg2)
-// xyz_foo(obj, arg1) // obj.foo(arg1)
-// xyz_foo(obj, 100) // obj.foo(100)
-//
-// Be reminded that var(obj) must be used to call non-const member
-// functions. For example, if xyz was declared as:
-//
-// struct xyz { void foo(int); };
-//
-// the pointer or reference to the object must also be non-const.
-// Lazily bound arguments are stored as const value by default (see
-// variable class in primitives.hpp).
-//
-// xyz_foo(var(obj), 100) // obj.foo(100)
-//
-// Finally, member variables can be bound much like member
-// functions. For instance, given:
-//
-// struct xyz { int v; };
-//
-// xyz::v can be bound as:
-//
-// bind(&xyz::v)
-// or
-//
-// member_var_ptr<int, xyz> xyz_v = &xyz::v;
-//
-// The template parameter of the member_var_ptr is the type of the
-// variable followed by the class:
-//
-// int xyz::v; ---> member_var_ptr<int, xyz>
-//
-// Just like the member_function_ptr, member_var_ptr also expects
-// the first argument to be a pointer or reference to an object.
-// Both the object (reference or pointer) and the arguments can be
-// lazily bound. Examples:
-//
-// xyz obj;
-// xyz_v(arg1) // arg1.v
-// xyz_v(obj) // obj.v
-//
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Functor binder
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename FuncT>
-struct functor_action : public FuncT {
-
-#if !defined(__BORLANDC__) && (!defined(__MWERKS__) || (__MWERKS__ > 0x3002))
-
- template <
- typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
- >
- struct result { typedef typename FuncT::result_type type; };
-#endif
-
- functor_action(FuncT fptr_ = FuncT())
- : FuncT(fptr_) {}
-};
-
-#if defined(__BORLANDC__) || (defined(__MWERKS__) && (__MWERKS__ <= 0x3002))
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The following specializations are needed because Borland and CodeWarrior
-// does not accept default template arguments in nested template classes in
-// classes (i.e functor_action::result)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename FuncT, typename TupleT>
-struct composite0_result<functor_action<FuncT>, TupleT> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A>
-struct composite1_result<functor_action<FuncT>, TupleT, A> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B>
-struct composite2_result<functor_action<FuncT>, TupleT, A, B> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C>
-struct composite3_result<functor_action<FuncT>, TupleT, A, B, C> {
-
- typedef typename FuncT::result_type type;
-};
-
-#if PHOENIX_LIMIT > 3
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D>
-struct composite4_result<functor_action<FuncT>, TupleT,
- A, B, C, D> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E>
-struct composite5_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F>
-struct composite6_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F> {
-
- typedef typename FuncT::result_type type;
-};
-
-#if PHOENIX_LIMIT > 6
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G>
-struct composite7_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H>
-struct composite8_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G, H> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I>
-struct composite9_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G, H, I> {
-
- typedef typename FuncT::result_type type;
-};
-
-#if PHOENIX_LIMIT > 9
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J>
-struct composite10_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G, H, I, J> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K>
-struct composite11_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L>
-struct composite12_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L> {
-
- typedef typename FuncT::result_type type;
-};
-
-#if PHOENIX_LIMIT > 12
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M>
-struct composite13_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N>
-struct composite14_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N> {
-
- typedef typename FuncT::result_type type;
-};
-
-//////////////////////////////////
-template <typename FuncT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O>
-struct composite15_result<functor_action<FuncT>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> {
-
- typedef typename FuncT::result_type type;
-};
-
-#endif
-#endif
-#endif
-#endif
-#endif
-
-//////////////////////////////////
-template <typename FuncT>
-struct functor : public function<functor_action<FuncT> > {
-
- functor(FuncT func)
- : function<functor_action<FuncT> >(functor_action<FuncT>(func)) {};
-};
-
-//////////////////////////////////
-template <typename FuncT>
-inline functor<FuncT>
-bind(FuncT func)
-{
- return functor<FuncT>(func);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member variable pointer binder
-//
-///////////////////////////////////////////////////////////////////////////////
-namespace impl {
-
- //////////////////////////////////
- template <typename T>
- struct as_ptr {
-
- typedef T* pointer_type;
-
- static T* get(T& ref)
- { return &ref; }
- };
-
- //////////////////////////////////
- template <typename T>
- struct as_ptr<T*> {
-
- typedef T* pointer_type;
-
- static T* get(T* ptr)
- { return ptr; }
- };
-}
-
-//////////////////////////////////
-template <typename ActionT, typename ClassT>
-struct member_var_ptr_action_result {
-
- typedef typename ActionT::template result<ClassT>::type type;
-};
-
-//////////////////////////////////
-template <typename T, typename ClassT>
-struct member_var_ptr_action {
-
- typedef member_var_ptr_action<T, ClassT> self_t;
-
- template <typename CT>
- struct result {
- typedef typename boost::mpl::if_<boost::is_const<CT>, T const&, T&
- >::type type;
- };
-
- typedef T ClassT::*mem_var_ptr_t;
-
- member_var_ptr_action(mem_var_ptr_t ptr_)
- : ptr(ptr_) {}
-
- template <typename CT>
- typename member_var_ptr_action_result<self_t, CT>::type
- operator()(CT& obj) const
- { return impl::as_ptr<CT>::get(obj)->*ptr; }
-
- mem_var_ptr_t ptr;
-};
-
-//////////////////////////////////
-template <typename T, typename ClassT>
-struct member_var_ptr
-: public function<member_var_ptr_action<T, ClassT> > {
-
- member_var_ptr(T ClassT::*mp)
- : function<member_var_ptr_action<T, ClassT> >
- (member_var_ptr_action<T, ClassT>(mp)) {}
-};
-
-//////////////////////////////////
-template <typename T, typename ClassT>
-inline member_var_ptr<T, ClassT>
-bind(T ClassT::*mp)
-{
- return member_var_ptr<T, ClassT>(mp);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (main class)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename RT
- , typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
-
- , typename NU = nil_t // Not used
->
-struct function_ptr_action;
-
-//////////////////////////////////
-template <
- typename RT
- , typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
->
-struct function_ptr
-: public function<function_ptr_action<RT
- , A, B, C
-#if PHOENIX_LIMIT > 3
- , D, E, F
-#if PHOENIX_LIMIT > 6
- , G, H, I
-#if PHOENIX_LIMIT > 9
- , J, K, L
-#if PHOENIX_LIMIT > 12
- , M, N, O
-#endif
-#endif
-#endif
-#endif
- > > {
-
- typedef function_ptr_action<RT
- , A, B, C
-#if PHOENIX_LIMIT > 3
- , D, E, F
-#if PHOENIX_LIMIT > 6
- , G, H, I
-#if PHOENIX_LIMIT > 9
- , J, K, L
-#if PHOENIX_LIMIT > 12
- , M, N, O
-#endif
-#endif
-#endif
-#endif
- > action_t;
-
- template <typename FPT>
- function_ptr(FPT fp)
- : function<action_t>(action_t(fp)) {}
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 0 arg)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT>
-struct function_ptr_action<RT,
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)();
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()() const
- { return fptr(); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT>
-inline function_ptr<RT>
-bind(RT(*fptr)())
-{
- return function_ptr<RT>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 1 arg)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename A>
-struct function_ptr_action<RT,
- A, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A);
-
- template <typename A_>
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(A a) const
- { return fptr(a); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename A>
-inline function_ptr<RT, A>
-bind(RT(*fptr)(A))
-{
- return function_ptr<RT, A>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 2 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename A, typename B>
-struct function_ptr_action<RT,
- A, B, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B);
-
- template <typename A_, typename B_>
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(A a, B b) const
- { return fptr(a, b); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename A, typename B>
-inline function_ptr<RT, A, B>
-bind(RT(*fptr)(A, B))
-{
- return function_ptr<RT, A, B>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 3 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename A, typename B, typename C>
-struct function_ptr_action<RT,
- A, B, C,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C);
-
- template <typename A_, typename B_, typename C_>
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(A a, B b, C c) const
- { return fptr(a, b, c); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename A, typename B, typename C>
-inline function_ptr<RT, A, B, C>
-bind(RT(*fptr)(A, B, C))
-{
- return function_ptr<RT, A, B, C>(fptr);
-}
-
-#if PHOENIX_LIMIT > 3
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 4 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename A, typename B, typename C, typename D>
-struct function_ptr_action<RT,
- A, B, C, D, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D);
-
- template <typename A_, typename B_, typename C_, typename D_>
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(A a, B b, C c, D d) const
- { return fptr(a, b, c, d); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename A, typename B, typename C, typename D>
-inline function_ptr<RT, A, B, C, D>
-bind(RT(*fptr)(A, B, C, D))
-{
- return function_ptr<RT, A, B, C, D>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 5 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E
->
-struct function_ptr_action<RT,
- A, B, C, D, E, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e
- ) const
- { return fptr(a, b, c, d, e); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E
->
-inline function_ptr<RT, A, B, C, D, E>
-bind(RT(*fptr)(A, B, C, D, E))
-{
- return function_ptr<RT, A, B, C, D, E>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 6 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f
- ) const
- { return fptr(a, b, c, d, e, f); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F
->
-inline function_ptr<RT, A, B, C, D, E, F>
-bind(RT(*fptr)(A, B, C, D, E, F))
-{
- return function_ptr<RT, A, B, C, D, E, F>(fptr);
-}
-
-#if PHOENIX_LIMIT > 6
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 7 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g
- ) const
- { return fptr(a, b, c, d, e, f, g); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
->
-inline function_ptr<RT, A, B, C, D, E, F, G>
-bind(RT(*fptr)(A, B, C, D, E, F, G))
-{
- return function_ptr<RT, A, B, C, D, E, F, G>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 8 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, H, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_, typename H_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g, H h
- ) const
- { return fptr(a, b, c, d, e, f, g, h); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
->
-inline function_ptr<RT, A, B, C, D, E, F, G, H>
-bind(RT(*fptr)(A, B, C, D, E, F, G, H))
-{
- return function_ptr<RT, A, B, C, D, E, F, G, H>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 9 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, H, I,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_, typename H_, typename I_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g, H h, I i
- ) const
- { return fptr(a, b, c, d, e, f, g, h, i); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
->
-inline function_ptr<RT, A, B, C, D, E, F, G, H, I>
-bind(RT(*fptr)(A, B, C, D, E, F, G, H, I))
-{
- return function_ptr<RT, A, B, C, D, E, F, G, H, I>(fptr);
-}
-
-#if PHOENIX_LIMIT > 9
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 10 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_, typename H_, typename I_, typename J_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g, H h, I i, J j
- ) const
- { return fptr(a, b, c, d, e, f, g, h, i, j); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
->
-inline function_ptr<RT, A, B, C, D, E, F, G, H, I, J>
-bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J))
-{
- return function_ptr<RT, A, B, C, D, E, F, G, H, I, J>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 11 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, H, I, J, K, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_, typename H_, typename I_, typename J_,
- typename K_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g, H h, I i, J j,
- K k
- ) const
- { return fptr(a, b, c, d, e, f, g, h, i, j, k); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
->
-inline function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K>
-bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K))
-{
- return function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 12 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, H, I, J, K, L,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K, L);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_, typename H_, typename I_, typename J_,
- typename K_, typename L_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g, H h, I i, J j,
- K k, L l
- ) const
- { return fptr(a, b, c, d, e, f, g, h, i, j, k, l); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
->
-inline function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K, L>
-bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K, L))
-{
- return function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K, L>(fptr);
-}
-
-#if PHOENIX_LIMIT > 12
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 13 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, nil_t, nil_t, nil_t> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K, L, M);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_, typename H_, typename I_, typename J_,
- typename K_, typename L_, typename M_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g, H h, I i, J j,
- K k, L l, M m
- ) const
- { return fptr(a, b, c, d, e, f, g, h, i, j, k, l, m); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
->
-inline function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K, L, M>
-bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M))
-{
- return function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K, L, M>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 14 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, nil_t, nil_t> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K, L, M, N);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_, typename H_, typename I_, typename J_,
- typename K_, typename L_, typename M_, typename N_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g, H h, I i, J j,
- K k, L l, M m, N n
- ) const
- { return fptr(a, b, c, d, e, f, g, h, i, j, k, l, m, n); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
->
-inline function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>
-bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N))
-{
- return function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Function pointer binder (specialization for 15 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
->
-struct function_ptr_action<RT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, nil_t> {
-
- typedef RT result_type;
- typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O);
-
- template <
- typename A_, typename B_, typename C_, typename D_, typename E_,
- typename F_, typename G_, typename H_, typename I_, typename J_,
- typename K_, typename L_, typename M_, typename N_, typename O_
- >
- struct result { typedef result_type type; };
-
- function_ptr_action(func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e,
- F f, G g, H h, I i, J j,
- K k, L l, M m, N n, O o
- ) const
- { return fptr(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); }
-
- func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
->
-inline function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
-bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O))
-{
- return function_ptr<RT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(fptr);
-}
-
-#endif
-#endif
-#endif
-#endif
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (main class)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename RT,
- typename ClassT
- , typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
-
- , typename NU = nil_t // Not used
->
-struct member_function_ptr_action;
-
-//////////////////////////////////
-template <
- typename RT,
- typename ClassT
- , typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
->
-struct member_function_ptr
-: public function<member_function_ptr_action<RT, ClassT
- , A, B, C
-#if PHOENIX_LIMIT > 3
- , D, E, F
-#if PHOENIX_LIMIT > 6
- , G, H, I
-#if PHOENIX_LIMIT > 9
- , J, K, L
-#if PHOENIX_LIMIT > 12
- , M, N, O
-#endif
-#endif
-#endif
-#endif
- > > {
-
- typedef member_function_ptr_action<RT, ClassT
- , A, B, C
-#if PHOENIX_LIMIT > 3
- , D, E, F
-#if PHOENIX_LIMIT > 6
- , G, H, I
-#if PHOENIX_LIMIT > 9
- , J, K, L
-#if PHOENIX_LIMIT > 12
- , M, N, O
-#endif
-#endif
-#endif
-#endif
- > action_t;
-
- template <typename FPT>
- member_function_ptr(FPT fp)
- : function<action_t>(action_t(fp)) {}
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 0 arg)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT>
-struct member_function_ptr_action<RT, ClassT,
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)();
- typedef RT(ClassT::*cmf)() const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT>
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT>
-inline member_function_ptr<RT, ClassT>
-bind(RT(ClassT::*fptr)())
-{
- return member_function_ptr<RT, ClassT>(fptr);
-}
-
-template <typename RT, typename ClassT>
-inline member_function_ptr<RT, ClassT const>
-bind(RT(ClassT::*fptr)() const)
-{
- return member_function_ptr<RT, ClassT const>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 1 arg)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT, typename A>
-struct member_function_ptr_action<RT, ClassT,
- A, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A);
- typedef RT(ClassT::*cmf)(A) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT, typename A_>
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj, A a) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A>
-inline member_function_ptr<RT, ClassT, A>
-bind(RT(ClassT::*fptr)(A))
-{
- return member_function_ptr<RT, ClassT, A>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A>
-inline member_function_ptr<RT, ClassT const, A>
-bind(RT(ClassT::*fptr)(A) const)
-{
- return member_function_ptr<RT, ClassT const, A>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 2 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B>
-struct member_function_ptr_action<RT, ClassT,
- A, B, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B);
- typedef RT(ClassT::*cmf)(A, B) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT, typename A_, typename B_>
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj, A a, B b) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B>
-inline member_function_ptr<RT, ClassT, A, B>
-bind(RT(ClassT::*fptr)(A, B))
-{
- return member_function_ptr<RT, ClassT, A, B>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B>
-inline member_function_ptr<RT, ClassT const, A, B>
-bind(RT(ClassT::*fptr)(A, B) const)
-{
- return member_function_ptr<RT, ClassT const, A, B>(fptr);
-}
-
-#if PHOENIX_LIMIT > 3
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 3 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B, typename C>
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C);
- typedef RT(ClassT::*cmf)(A, B, C) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT, typename A_, typename B_, typename C_>
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj, A a, B b, C c) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B, typename C>
-inline member_function_ptr<RT, ClassT, A, B, C>
-bind(RT(ClassT::*fptr)(A, B, C))
-{
- return member_function_ptr<RT, ClassT, A, B, C>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B, typename C>
-inline member_function_ptr<RT, ClassT const, A, B, C>
-bind(RT(ClassT::*fptr)(A, B, C) const)
-{
- return member_function_ptr<RT, ClassT const, A, B, C>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 4 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D);
- typedef RT(ClassT::*cmf)(A, B, C, D) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d
- ) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D
->
-inline member_function_ptr<RT, ClassT, A, B, C, D>
-bind(RT(ClassT::*fptr)(A, B, C, D))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D>
-bind(RT(ClassT::*fptr)(A, B, C, D) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 5 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E);
- typedef RT(ClassT::*cmf)(A, B, C, D, E) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e
- ) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E>
-bind(RT(ClassT::*fptr)(A, B, C, D, E))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E>
-bind(RT(ClassT::*fptr)(A, B, C, D, E) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E>(fptr);
-}
-
-#if PHOENIX_LIMIT > 6
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 6 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f
- ) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e, f); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 7 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g
- ) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e, f, g); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 8 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, H, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g, H h
- ) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e, f, g, h); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G, H>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G, H>(fptr);
-}
-
-#if PHOENIX_LIMIT > 9
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 9 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g, H h, I i
- ) const
- { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e, f, g, h, i); }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G, H, I>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G, H, I>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 10 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j
- ) const
- {
- return (impl::as_ptr<CT>::get(obj)->*fptr)
- (a, b, c, d, e, f, g, h, i, j);
- }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I, J>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 11 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k
- ) const
- {
- return (impl::as_ptr<CT>::get(obj)->*fptr)
- (a, b, c, d, e, f, g, h, i, j, k);
- }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>(fptr);
-}
-
-#if PHOENIX_LIMIT > 12
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 12 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, L, nil_t, nil_t, nil_t, nil_t> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_, typename L_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l
- ) const
- {
- return (impl::as_ptr<CT>::get(obj)->*fptr)
- (a, b, c, d, e, f, g, h, i, j, k, l);
- }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 13 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, nil_t, nil_t, nil_t> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_, typename L_, typename M_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m
- ) const
- {
- return (impl::as_ptr<CT>::get(obj)->*fptr)
- (a, b, c, d, e, f, g, h, i, j, k, l, m);
- }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 14 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, nil_t, nil_t> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_, typename L_, typename M_, typename N_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n
- ) const
- {
- return (impl::as_ptr<CT>::get(obj)->*fptr)
- (a, b, c, d, e, f, g, h, i, j, k, l, m, n);
- }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Member function pointer binder (specialization for 15 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N,
- typename O
->
-struct member_function_ptr_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, nil_t> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT,
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_, typename L_, typename M_, typename N_,
- typename O_
- >
- struct result { typedef result_type type; };
-
- member_function_ptr_action(mem_func_ptr_t fptr_)
- : fptr(fptr_) {}
-
- template <typename CT>
- result_type operator()(CT& obj,
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, O o
- ) const
- {
- return (impl::as_ptr<CT>::get(obj)->*fptr)
- (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
- }
-
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N,
- typename O
->
-inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O))
-{
- return member_function_ptr<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N,
- typename O
->
-inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
-bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const)
-{
- return member_function_ptr<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(fptr);
-}
-
-#endif
-#endif
-#endif
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (main class)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename RT,
- typename ClassT
- , typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
-
- , typename NU = nil_t // Not used
->
-struct bound_member_action;
-
-//////////////////////////////////
-template <
- typename RT,
- typename ClassT
- , typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
->
-struct bound_member
-: public function<bound_member_action<RT, ClassT
- , A, B, C
-#if PHOENIX_LIMIT > 3
- , D, E, F
-#if PHOENIX_LIMIT > 6
- , G, H, I
-#if PHOENIX_LIMIT > 9
- , J, K, L
-#if PHOENIX_LIMIT > 12
- , M, N, O
-#endif
-#endif
-#endif
-#endif
- > > {
-
- typedef bound_member_action<RT, ClassT
- , A, B, C
-#if PHOENIX_LIMIT > 3
- , D, E, F
-#if PHOENIX_LIMIT > 6
- , G, H, I
-#if PHOENIX_LIMIT > 9
- , J, K, L
-#if PHOENIX_LIMIT > 12
- , M, N, O
-#endif
-#endif
-#endif
-#endif
- > action_t;
-
- template <typename CT, typename FPT>
- bound_member(CT & c, FPT fp)
- : function<action_t>(action_t(c,fp)) {}
-
-#if !defined(__BORLANDC__)
- template <typename CT, typename FPT>
- bound_member(CT * c, FPT fp)
- : function<action_t>(action_t(c,fp)) {}
-#endif
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 0 arg)
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template <typename RT, typename ClassT>
-struct bound_member_action<RT, ClassT,
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)();
- typedef RT(ClassT::*cmf)() const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename CT>
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()() const
- { return (obj->*fptr)(); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-
-template <typename RT, typename ClassT>
-inline bound_member<RT,ClassT>
-bind(ClassT & obj, RT(ClassT::*fptr)())
-{
- return bound_member<RT,ClassT>(obj, fptr);
-}
-
-template <typename RT, typename ClassT>
-inline bound_member<RT,ClassT>
-bind(ClassT * obj, RT(ClassT::*fptr)())
-{
-#if defined(__MWERKS__) && (__MWERKS__ < 0x3003)
- return bound_member<RT,ClassT>(*obj, fptr);
-#else
- return bound_member<RT,ClassT>(obj, fptr);
-#endif
-}
-
-template <typename RT, typename ClassT>
-inline bound_member<RT,ClassT const>
-bind(ClassT const& obj, RT(ClassT::*fptr)())
-{
- return bound_member<RT,ClassT const>(obj, fptr);
-}
-
-template <typename RT, typename ClassT>
-inline bound_member<RT,ClassT const>
-bind(ClassT const* obj, RT(ClassT::*fptr)() const)
-{
-#if defined(__MWERKS__) && (__MWERKS__ < 0x3003)
- return bound_member<RT,ClassT const>(*obj, fptr);
-#else
- return bound_member<RT,ClassT const>(obj, fptr);
-#endif
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 1 arg)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT, typename A>
-struct bound_member_action<RT, ClassT,
- A, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A);
- typedef RT(ClassT::*cmf)(A) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename A_>
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(A a) const
- { return (obj->*fptr)(a); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A>
-inline bound_member<RT, ClassT, A>
-bind(ClassT & obj, RT(ClassT::*fptr)(A))
-{
- return bound_member<RT, ClassT, A>(obj,fptr);
-}
-
-template <typename RT, typename ClassT, typename A>
-inline bound_member<RT, ClassT, A>
-bind(ClassT * obj, RT(ClassT::*fptr)(A))
-{
- return bound_member<RT, ClassT, A>(obj,fptr);
-}
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A>
-inline bound_member<RT, ClassT const, A>
-bind(ClassT const& obj, RT(ClassT::*fptr)(A) const)
-{
- return bound_member<RT, ClassT const, A>(obj,fptr);
-}
-
-template <typename RT, typename ClassT, typename A>
-inline bound_member<RT, ClassT const, A>
-bind(ClassT const* obj, RT(ClassT::*fptr)(A) const)
-{
- return bound_member<RT, ClassT const, A>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 2 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B>
-struct bound_member_action<RT, ClassT,
- A, B, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B);
- typedef RT(ClassT::*cmf)(A, B) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename A_, typename B_>
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(A a, B b) const
- { return (obj->*fptr)(a, b); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B>
-inline bound_member<RT, ClassT, A, B>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B))
-{
- return bound_member<RT, ClassT, A, B>(obj,fptr);
-}
-
-template <typename RT, typename ClassT, typename A, typename B>
-inline bound_member<RT, ClassT, A, B>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B))
-{
- return bound_member<RT, ClassT, A, B>(obj,fptr);
-}
-
-template <typename RT, typename ClassT, typename A, typename B>
-inline bound_member<RT, ClassT const, A, B>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B) const)
-{
- return bound_member<RT, ClassT const, A, B>(obj,fptr);
-}
-
-template <typename RT, typename ClassT, typename A, typename B>
-inline bound_member<RT, ClassT const, A, B>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B) const)
-{
- return bound_member<RT, ClassT const, A, B>(obj,fptr);
-}
-
-#if PHOENIX_LIMIT > 3
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 3 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B, typename C>
-struct bound_member_action<RT, ClassT,
- A, B, C, nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C);
- typedef RT(ClassT::*cmf)(A, B, C) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename A_, typename B_, typename C_>
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(A a, B b, C c) const
- { return (obj->*fptr)(a, b, c); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT, typename A, typename B, typename C>
-inline bound_member<RT, ClassT, A, B, C>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C))
-{
- return bound_member<RT, ClassT, A, B, C>(obj,fptr);
-}
-
-template <typename RT, typename ClassT, typename A, typename B, typename C>
-inline bound_member<RT, ClassT, A, B, C>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C))
-{
- return bound_member<RT, ClassT, A, B, C>(obj,fptr);
-}
-
-template <typename RT, typename ClassT, typename A, typename B, typename C>
-inline bound_member<RT, ClassT const, A, B, C>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C) const)
-{
- return bound_member<RT, ClassT const, A, B, C>(obj,fptr);
-}
-
-template <typename RT, typename ClassT, typename A, typename B, typename C>
-inline bound_member<RT, ClassT const, A, B, C>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C) const)
-{
- return bound_member<RT, ClassT const, A, B, C>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 4 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D);
- typedef RT(ClassT::*cmf)(A, B, C, D) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename A_, typename B_, typename C_, typename D_>
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(A a, B b, C c, D d) const
- { return (obj->*fptr)(a, b, c, d); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D
->
-inline bound_member<RT, ClassT, A, B, C, D>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D))
-{
- return bound_member<
- RT, ClassT, A, B, C, D>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D
->
-inline bound_member<RT, ClassT, A, B, C, D>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D))
-{
- return bound_member<
- RT, ClassT, A, B, C, D>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D
->
-inline bound_member<RT, ClassT const, A, B, C, D>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D
->
-inline bound_member<RT, ClassT const, A, B, C, D>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 5 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E);
- typedef RT(ClassT::*cmf)(A, B, C, D, E) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <typename A_, typename B_, typename C_, typename D_,
- typename E_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e
- ) const
- { return (obj->*fptr)(a, b, c, d, e); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E
->
-inline bound_member<RT, ClassT, A, B, C, D, E>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E
->
-inline bound_member<RT, ClassT, A, B, C, D, E>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E
->
-inline bound_member<RT, ClassT const, A, B, C, D, E>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E
->
-inline bound_member<RT, ClassT const, A, B, C, D, E>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E>(obj,fptr);
-}
-
-#if PHOENIX_LIMIT > 6
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 6 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f
- ) const
- { return (obj->*fptr)(a, b, c, d, e, f); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 7 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g
- ) const
- { return (obj->*fptr)(a, b, c, d, e, f, g); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 8 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, H, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g, H h
- ) const
- { return (obj->*fptr)(a, b, c, d, e, f, g, h); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H>(obj,fptr);
-}
-
-#if PHOENIX_LIMIT > 9
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 9 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g, H h, I i
- ) const
- { return (obj->*fptr)(a, b, c, d, e, f, g, h, i); }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 10 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j
- ) const
- {
- return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j);
- }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 11 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k
- ) const
- {
- return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k);
- }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>(obj,fptr);
-}
-
-#if PHOENIX_LIMIT > 12
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 12 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, L, nil_t, nil_t, nil_t, nil_t> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_, typename L_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l
- ) const
- {
- return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k, l);
- }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 13 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, nil_t, nil_t, nil_t> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_, typename L_, typename M_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m
- ) const
- {
- return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k, l, m);
- }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 14 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, nil_t, nil_t> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_, typename L_, typename M_, typename N_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n
- ) const
- {
- return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
- }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(obj,fptr);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Bound member function binder (specialization for 15 args)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N,
- typename O
->
-struct bound_member_action<RT, ClassT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, nil_t> {
-
- typedef RT result_type;
- typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O);
- typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const;
- typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type
- mem_func_ptr_t;
-
- template <
- typename A_, typename B_, typename C_, typename D_,
- typename E_, typename F_, typename G_, typename H_, typename I_,
- typename J_, typename K_, typename L_, typename M_, typename N_,
- typename O_
- >
- struct result { typedef result_type type; };
-
- template <typename CT>
- bound_member_action(CT & obj_, mem_func_ptr_t fptr_)
- : obj(impl::as_ptr<CT>::get(obj_)), fptr(fptr_) {}
-
- result_type operator()(
- A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, O o
- ) const
- {
- return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
- }
-
- typename impl::as_ptr<ClassT>::pointer_type obj;
- mem_func_ptr_t fptr;
-};
-
-//////////////////////////////////
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N,
- typename O
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
-bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N,
- typename O
->
-inline bound_member<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
-bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O))
-{
- return bound_member<
- RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N,
- typename O
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
-bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(obj,fptr);
-}
-
-template <typename RT, typename ClassT,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H, typename I,
- typename J, typename K, typename L, typename M, typename N,
- typename O
->
-inline bound_member<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
-bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const)
-{
- return bound_member<
- RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(obj,fptr);
-}
-
-#endif
-#endif
-#endif
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_BINDERS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_BINDERS
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_binders.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_binders.hpp"
 #endif
 
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_binders.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/casts.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/casts.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/casts.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1471 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2001-2003 Hartmut Kaiser
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-
-#ifndef PHOENIX_CASTS_HPP
-#define PHOENIX_CASTS_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/actor.hpp>
-#include <boost/spirit/phoenix/composite.hpp>
-#include <boost/static_assert.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Phoenix predefined maximum construct_ limit. This limit defines the maximum
-// number of parameters supported for calles to the set of construct_ template
-// functions (lazy object construction, see below). This number defaults to 3.
-// The actual maximum is rounded up in multiples of 3. Thus, if this value
-// is 4, the actual limit is 6. The ultimate maximum limit in this
-// implementation is 15.
-// PHOENIX_CONSTRUCT_LIMIT should NOT be greater than PHOENIX_LIMIT!
-
-#if !defined(PHOENIX_CONSTRUCT_LIMIT)
-#define PHOENIX_CONSTRUCT_LIMIT PHOENIX_LIMIT
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CASTS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CASTS
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_casts.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_casts.hpp"
 #endif
 
-// ensure PHOENIX_CONSTRUCT_LIMIT <= PHOENIX_LIMIT
-BOOST_STATIC_ASSERT(PHOENIX_CONSTRUCT_LIMIT <= PHOENIX_LIMIT);
-
-// ensure PHOENIX_CONSTRUCT_LIMIT <= 15
-BOOST_STATIC_ASSERT(PHOENIX_CONSTRUCT_LIMIT <= 15);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Lazy C++ casts
-//
-// The set of lazy C++ cast template classes and functions provide a way
-// of lazily casting certain type to another during parsing.
-// The lazy C++ templates are (syntactically) used very much like
-// the well known C++ casts:
-//
-// A *a = static_cast_<A *>(...actor returning a convertible type...);
-//
-// where the given parameter should be an actor, which eval() function
-// returns a convertible type.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T, typename A>
-struct static_cast_l {
-
- template <typename TupleT>
- struct result { typedef T type; };
-
- static_cast_l(A const& a_)
- : a(a_) {}
-
- template <typename TupleT>
- T
- eval(TupleT const& args) const
- {
- return static_cast<T>(a.eval(args));
- }
-
- A a;
-};
-
-//////////////////////////////////
-template <typename T, typename BaseAT>
-inline actor<static_cast_l<T, BaseAT> >
-static_cast_(actor<BaseAT> const& a)
-{
- typedef static_cast_l<T, BaseAT> cast_t;
- return actor<cast_t>(cast_t(a));
-}
-
-//////////////////////////////////
-template <typename T, typename A>
-struct dynamic_cast_l {
-
- template <typename TupleT>
- struct result { typedef T type; };
-
- dynamic_cast_l(A const& a_)
- : a(a_) {}
-
- template <typename TupleT>
- T
- eval(TupleT const& args) const
- {
- return dynamic_cast<T>(a.eval(args));
- }
-
- A a;
-};
-
-//////////////////////////////////
-template <typename T, typename BaseAT>
-inline actor<dynamic_cast_l<T, BaseAT> >
-dynamic_cast_(actor<BaseAT> const& a)
-{
- typedef dynamic_cast_l<T, BaseAT> cast_t;
- return actor<cast_t>(cast_t(a));
-}
-
-//////////////////////////////////
-template <typename T, typename A>
-struct reinterpret_cast_l {
-
- template <typename TupleT>
- struct result { typedef T type; };
-
- reinterpret_cast_l(A const& a_)
- : a(a_) {}
-
- template <typename TupleT>
- T
- eval(TupleT const& args) const
- {
- return reinterpret_cast<T>(a.eval(args));
- }
-
- A a;
-};
-
-//////////////////////////////////
-template <typename T, typename BaseAT>
-inline actor<reinterpret_cast_l<T, BaseAT> >
-reinterpret_cast_(actor<BaseAT> const& a)
-{
- typedef reinterpret_cast_l<T, BaseAT> cast_t;
- return actor<cast_t>(cast_t(a));
-}
+#include <boost/spirit/include/phoenix1_casts.hpp>
 
-//////////////////////////////////
-template <typename T, typename A>
-struct const_cast_l {
-
- template <typename TupleT>
- struct result { typedef T type; };
-
- const_cast_l(A const& a_)
- : a(a_) {}
-
- template <typename TupleT>
- T
- eval(TupleT const& args) const
- {
- return const_cast<T>(a.eval(args));
- }
-
- A a;
-};
-
-//////////////////////////////////
-template <typename T, typename BaseAT>
-inline actor<const_cast_l<T, BaseAT> >
-const_cast_(actor<BaseAT> const& a)
-{
- typedef const_cast_l<T, BaseAT> cast_t;
- return actor<cast_t>(cast_t(a));
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// construct_
-//
-// Lazy object construction
-//
-// The set of construct_<> template classes and functions provide a way
-// of lazily constructing certain object from a arbitrary set of
-// actors during parsing.
-// The construct_ templates are (syntactically) used very much like
-// the well known C++ casts:
-//
-// A a = construct_<A>(...arbitrary list of actors...);
-//
-// where the given parameters are submitted as parameters to the
-// contructor of the object of type A. (This certainly implies, that
-// type A has a constructor with a fitting set of parameter types
-// defined.)
-//
-// The maximum number of needed parameters is controlled through the
-// preprocessor constant PHOENIX_CONSTRUCT_LIMIT. Note though, that this
-// limit should not be greater than PHOENIX_LIMIT.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-struct construct_l_0 {
- typedef T result_type;
-
- T operator()() const {
- return T();
- }
-};
-
-
-template <typename T>
-struct construct_l {
-
- template <
- typename A
- , typename B
- , typename C
-
-#if PHOENIX_CONSTRUCT_LIMIT > 3
- , typename D
- , typename E
- , typename F
-
-#if PHOENIX_CONSTRUCT_LIMIT > 6
- , typename G
- , typename H
- , typename I
-
-#if PHOENIX_CONSTRUCT_LIMIT > 9
- , typename J
- , typename K
- , typename L
-
-#if PHOENIX_CONSTRUCT_LIMIT > 12
- , typename M
- , typename N
- , typename O
-#endif
-#endif
 #endif
-#endif
- >
- struct result { typedef T type; };
-
- T operator()() const
- {
- return T();
- }
-
- template <typename A>
- T operator()(A const& a) const
- {
- T t(a);
- return t;
- }
-
- template <typename A, typename B>
- T operator()(A const& a, B const& b) const
- {
- T t(a, b);
- return t;
- }
-
- template <typename A, typename B, typename C>
- T operator()(A const& a, B const& b, C const& c) const
- {
- T t(a, b, c);
- return t;
- }
-
-#if PHOENIX_CONSTRUCT_LIMIT > 3
- template <
- typename A, typename B, typename C, typename D
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d) const
- {
- T t(a, b, c, d);
- return t;
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e) const
- {
- T t(a, b, c, d, e);
- return t;
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f) const
- {
- T t(a, b, c, d, e, f);
- return t;
- }
-
-#if PHOENIX_CONSTRUCT_LIMIT > 6
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g) const
- {
- T t(a, b, c, d, e, f, g);
- return t;
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h) const
- {
- T t(a, b, c, d, e, f, g, h);
- return t;
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i) const
- {
- T t(a, b, c, d, e, f, g, h, i);
- return t;
- }
-
-#if PHOENIX_CONSTRUCT_LIMIT > 9
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j) const
- {
- T t(a, b, c, d, e, f, g, h, i, j);
- return t;
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k) const
- {
- T t(a, b, c, d, e, f, g, h, i, j, k);
- return t;
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l) const
- {
- T t(a, b, c, d, e, f, g, h, i, j, k, l);
- return t;
- }
-
-#if PHOENIX_CONSTRUCT_LIMIT > 12
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m) const
- {
- T t(a, b, c, d, e, f, g, h, i, j, k, l, m);
- return t;
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n) const
- {
- T t(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
- return t;
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n, O const& o) const
- {
- T t(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
- return t;
- }
-
-#endif
-#endif
-#endif
-#endif
-};
-
-
-template <typename T>
-struct construct_1 {
-
- template <
- typename A
- >
- struct result { typedef T type; };
-
- template <typename A>
- T operator()(A const& a) const
- {
- T t(a);
- return t;
- }
-
-};
-
-template <typename T>
-struct construct_2 {
-
- template <
- typename A
- , typename B
- >
- struct result { typedef T type; };
-
- template <typename A, typename B>
- T operator()(A const& a, B const& b) const
- {
- T t(a, b);
- return t;
- }
-
-};
-
-template <typename T>
-struct construct_3 {
-
- template <
- typename A
- , typename B
- , typename C
- >
- struct result { typedef T type; };
-
- template <typename A, typename B, typename C>
- T operator()(A const& a, B const& b, C const& c) const
- {
- T t(a, b, c);
- return t;
- }
-};
-
-#if PHOENIX_CONSTRUCT_LIMIT > 3
-template <typename T>
-struct construct_4 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d) const
- {
- T t(a, b, c, d);
- return t;
- }
-};
-
-
-template <typename T>
-struct construct_5 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e) const
- {
- T t(a, b, c, d, e);
- return t;
- }
-};
-
-
-template <typename T>
-struct construct_6 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f) const
- {
- T t(a, b, c, d, e, f);
- return t;
- }
-};
-#endif
-
-
-#if PHOENIX_CONSTRUCT_LIMIT > 6
-template <typename T>
-struct construct_7 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g) const
- {
- T t(a, b, c, d, e, f, g);
- return t;
- }
-};
-
-template <typename T>
-struct construct_8 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h) const
- {
- T t(a, b, c, d, e, f, g, h);
- return t;
- }
-};
-
-template <typename T>
-struct construct_9 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i) const
- {
- T t(a, b, c, d, e, f, g, h, i);
- return t;
- }
-};
-#endif
-
-
-#if PHOENIX_CONSTRUCT_LIMIT > 9
-template <typename T>
-struct construct_10 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j) const
- {
- T t(a, b, c, d, e, f, g, h, i, j);
- return t;
- }
-};
-
-template <typename T>
-struct construct_11 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k) const
- {
- T t(a, b, c, d, e, f, g, h, i, j, k);
- return t;
- }
-};
-
-template <typename T>
-struct construct_12 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- , typename L
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l) const
- {
- T t(a, b, c, d, f, e, g, h, i, j, k, l);
- return t;
- }
-};
-#endif
-
-#if PHOENIX_CONSTRUCT_LIMIT > 12
-template <typename T>
-struct construct_13 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- , typename L
- , typename M
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m) const
- {
- T t(a, b, c, d, e, f, g, h, i, j, k, l, m);
- return t;
- }
-};
-
-template <typename T>
-struct construct_14 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- , typename L
- , typename M
- , typename N
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n) const
- {
- T t(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
- return t;
- }
-};
-
-template <typename T>
-struct construct_15 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- , typename L
- , typename M
- , typename N
- , typename O
- >
- struct result { typedef T type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
- >
- T operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n, O const& o) const
- {
- T t(a, b, c, d, f, e, g, h, i, j, k, l, m, n, o);
- return t;
- }
-};
-#endif
-
-
-#if defined(__BORLANDC__) || (defined(__MWERKS__) && (__MWERKS__ <= 0x3002))
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The following specializations are needed because Borland and CodeWarrior
-// does not accept default template arguments in nested template classes in
-// classes (i.e construct_l::result)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T, typename TupleT>
-struct composite0_result<construct_l_0<T>, TupleT> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A>
-struct composite1_result<construct_l<T>, TupleT, A> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B>
-struct composite2_result<construct_l<T>, TupleT, A, B> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C>
-struct composite3_result<construct_l<T>, TupleT, A, B, C> {
-
- typedef T type;
-};
-
-#if PHOENIX_LIMIT > 3
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D>
-struct composite4_result<construct_l<T>, TupleT,
- A, B, C, D> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E>
-struct composite5_result<construct_l<T>, TupleT,
- A, B, C, D, E> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F>
-struct composite6_result<construct_l<T>, TupleT,
- A, B, C, D, E, F> {
-
- typedef T type;
-};
-
-#if PHOENIX_LIMIT > 6
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G>
-struct composite7_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H>
-struct composite8_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G, H> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I>
-struct composite9_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I> {
-
- typedef T type;
-};
-
-#if PHOENIX_LIMIT > 9
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J>
-struct composite10_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K>
-struct composite11_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L>
-struct composite12_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L> {
-
- typedef T type;
-};
-
-#if PHOENIX_LIMIT > 12
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M>
-struct composite13_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N>
-struct composite14_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N> {
-
- typedef T type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O>
-struct composite15_result<construct_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> {
-
- typedef T type;
-};
-
-#endif
-#endif
-#endif
-#endif
-#endif
-
-//////////////////////////////////
-template <typename T>
-inline typename impl::make_composite<construct_l_0<T> >::type
-construct_()
-{
- typedef impl::make_composite<construct_l_0<T> > make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_l_0<T>()));
-}
-
-//////////////////////////////////
-template <typename T, typename A>
-inline typename impl::make_composite<construct_1<T>, A>::type
-construct_(A const& a)
-{
- typedef impl::make_composite<construct_1<T>, A> make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_1<T>(),
- as_actor<A>::convert(a)
- ));
-}
-
-//////////////////////////////////
-template <typename T, typename A, typename B>
-inline typename impl::make_composite<construct_2<T>, A, B>::type
-construct_(A const& a, B const& b)
-{
- typedef impl::make_composite<construct_2<T>, A, B> make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_2<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b)
- ));
-}
-
-//////////////////////////////////
-template <typename T, typename A, typename B, typename C>
-inline typename impl::make_composite<construct_3<T>, A, B, C>::type
-construct_(A const& a, B const& b, C const& c)
-{
- typedef impl::make_composite<construct_3<T>, A, B, C> make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_3<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c)
- ));
-}
-
-#if PHOENIX_CONSTRUCT_LIMIT > 3
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D
->
-inline typename impl::make_composite<construct_4<T>, A, B, C, D>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d)
-{
- typedef
- impl::make_composite<construct_4<T>, A, B, C, D>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_4<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E
->
-inline typename impl::make_composite<construct_5<T>, A, B, C, D, E>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e)
-{
- typedef
- impl::make_composite<construct_5<T>, A, B, C, D, E>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_5<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F
->
-inline typename impl::make_composite<construct_6<T>, A, B, C, D, E, F>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f)
-{
- typedef
- impl::make_composite<construct_6<T>, A, B, C, D, E, F>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_6<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f)
- ));
-}
-
-#if PHOENIX_CONSTRUCT_LIMIT > 6
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
->
-inline typename impl::make_composite<construct_7<T>, A, B, C, D, E, F, G>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g)
-{
- typedef
- impl::make_composite<construct_7<T>, A, B, C, D, E, F, G>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_7<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
->
-inline typename impl::make_composite<construct_8<T>, A, B, C, D, E, F, G, H>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h)
-{
- typedef
- impl::make_composite<construct_8<T>, A, B, C, D, E, F, G, H>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_8<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
->
-inline typename impl::make_composite<construct_9<T>, A, B, C, D, E, F, G, H, I>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i)
-{
- typedef
- impl::make_composite<construct_9<T>, A, B, C, D, E, F, G, H, I>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_9<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i)
- ));
-}
-
-#if PHOENIX_CONSTRUCT_LIMIT > 9
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
->
-inline typename impl::make_composite<
- construct_10<T>, A, B, C, D, E, F, G, H, I, J>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j)
-{
- typedef
- impl::make_composite<
- construct_10<T>, A, B, C, D, E, F, G, H, I, J
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_10<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K
->
-inline typename impl::make_composite<
- construct_11<T>, A, B, C, D, E, F, G, H, I, J, K>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k)
-{
- typedef
- impl::make_composite<
- construct_11<T>, A, B, C, D, E, F, G, H, I, J, K
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_11<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K,
- typename L
->
-inline typename impl::make_composite<
- construct_12<T>, A, B, C, D, E, F, G, H, I, J, K, L>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l)
-{
- typedef
- impl::make_composite<
- construct_12<T>, A, B, C, D, E, F, G, H, I, J, K, L
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_12<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l)
- ));
-}
-
-#if PHOENIX_CONSTRUCT_LIMIT > 12
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K,
- typename L, typename M
->
-inline typename impl::make_composite<
- construct_13<T>, A, B, C, D, E, F, G, H, I, J, K, L, M>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m)
-{
- typedef
- impl::make_composite<
- construct_13<T>, A, B, C, D, E, F, G, H, I, J, K, L, M
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_13<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K,
- typename L, typename M, typename N
->
-inline typename impl::make_composite<
- construct_14<T>, A, B, C, D, E, F, G, H, I, J, K, L, M>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n)
-{
- typedef
- impl::make_composite<
- construct_14<T>, A, B, C, D, E, F, G, H, I, J, K, L, M, N
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_14<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m),
- as_actor<N>::convert(n)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K,
- typename L, typename M, typename N, typename O
->
-inline typename impl::make_composite<
- construct_15<T>, A, B, C, D, E, F, G, H, I, J, K, L, M, O>::type
-construct_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n, O const& o)
-{
- typedef
- impl::make_composite<
- construct_15<T>, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(construct_15<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m),
- as_actor<N>::convert(n),
- as_actor<O>::convert(o)
- ));
-}
-
-#endif
-#endif
-#endif
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-} // namespace phoenix
-
-#endif // PHOENIX_CASTS_HPP

Modified: branches/proto/v4/boost/spirit/phoenix/closures.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/closures.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/closures.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,440 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
- MT code Copyright (c) 2002-2003 Martin Wille
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_CLOSURES_HPP
-#define PHOENIX_CLOSURES_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/actor.hpp>
-#include <cassert>
-
-#ifdef PHOENIX_THREADSAFE
-#include <boost/thread/tss.hpp>
-#include <boost/thread/once.hpp>
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Adaptable closures
-//
-// The framework will not be complete without some form of closures
-// support. Closures encapsulate a stack frame where local
-// variables are created upon entering a function and destructed
-// upon exiting. Closures provide an environment for local
-// variables to reside. Closures can hold heterogeneous types.
-//
-// Phoenix closures are true hardware stack based closures. At the
-// very least, closures enable true reentrancy in lambda functions.
-// A closure provides access to a function stack frame where local
-// variables reside. Modeled after Pascal nested stack frames,
-// closures can be nested just like nested functions where code in
-// inner closures may access local variables from in-scope outer
-// closures (accessing inner scopes from outer scopes is an error
-// and will cause a run-time assertion failure).
-//
-// There are three (3) interacting classes:
-//
-// 1) closure:
-//
-// At the point of declaration, a closure does not yet create a
-// stack frame nor instantiate any variables. A closure declaration
-// declares the types and names[note] of the local variables. The
-// closure class is meant to be subclassed. It is the
-// responsibility of a closure subclass to supply the names for
-// each of the local variable in the closure. Example:
-//
-// struct my_closure : closure<int, string, double> {
-//
-// member1 num; // names the 1st (int) local variable
-// member2 message; // names the 2nd (string) local variable
-// member3 real; // names the 3rd (double) local variable
-// };
-//
-// my_closure clos;
-//
-// Now that we have a closure 'clos', its local variables can be
-// accessed lazily using the dot notation. Each qualified local
-// variable can be used just like any primitive actor (see
-// primitives.hpp). Examples:
-//
-// clos.num = 30
-// clos.message = arg1
-// clos.real = clos.num * 1e6
-//
-// The examples above are lazily evaluated. As usual, these
-// expressions return composite actors that will be evaluated
-// through a second function call invocation (see operators.hpp).
-// Each of the members (clos.xxx) is an actor. As such, applying
-// the operator() will reveal its identity:
-//
-// clos.num() // will return the current value of clos.num
-//
-// *** [note] Acknowledgement: Juan Carlos Arevalo-Baeza (JCAB)
-// introduced and initilally implemented the closure member names
-// that uses the dot notation.
-//
-// 2) closure_member
-//
-// The named local variables of closure 'clos' above are actually
-// closure members. The closure_member class is an actor and
-// conforms to its conceptual interface. member1..memberN are
-// predefined typedefs that correspond to each of the listed types
-// in the closure template parameters.
-//
-// 3) closure_frame
-//
-// When a closure member is finally evaluated, it should refer to
-// an actual instance of the variable in the hardware stack.
-// Without doing so, the process is not complete and the evaluated
-// member will result to an assertion failure. Remember that the
-// closure is just a declaration. The local variables that a
-// closure refers to must still be instantiated.
-//
-// The closure_frame class does the actual instantiation of the
-// local variables and links these variables with the closure and
-// all its members. There can be multiple instances of
-// closure_frames typically situated in the stack inside a
-// function. Each closure_frame instance initiates a stack frame
-// with a new set of closure local variables. Example:
-//
-// void foo()
-// {
-// closure_frame<my_closure> frame(clos);
-// /* do something */
-// }
-//
-// where 'clos' is an instance of our closure 'my_closure' above.
-// Take note that the usage above precludes locally declared
-// classes. If my_closure is a locally declared type, we can still
-// use its self_type as a paramater to closure_frame:
-//
-// closure_frame<my_closure::self_type> frame(clos);
-//
-// Upon instantiation, the closure_frame links the local variables
-// to the closure. The previous link to another closure_frame
-// instance created before is saved. Upon destruction, the
-// closure_frame unlinks itself from the closure and relinks the
-// preceding closure_frame prior to this instance.
-//
-// The local variables in the closure 'clos' above is default
-// constructed in the stack inside function 'foo'. Once 'foo' is
-// exited, all of these local variables are destructed. In some
-// cases, default construction is not desirable and we need to
-// initialize the local closure variables with some values. This
-// can be done by passing in the initializers in a compatible
-// tuple. A compatible tuple is one with the same number of
-// elements as the destination and where each element from the
-// destination can be constructed from each corresponding element
-// in the source. Example:
-//
-// tuple<int, char const*, int> init(123, "Hello", 1000);
-// closure_frame<my_closure> frame(clos, init);
-//
-// Here now, our closure_frame's variables are initialized with
-// int: 123, char const*: "Hello" and int: 1000.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-namespace impl
-{
- ///////////////////////////////////////////////////////////////////////
- // closure_frame_holder is a simple class that encapsulates the
- // storage for a frame pointer. It uses thread specific data in
- // case when multithreading is enabled, an ordinary pointer otherwise
- //
- // it has get() and set() member functions. set() has to be used
- // _after_ get(). get() contains intialisation code in the multi
- // threading case
- //
- // closure_frame_holder is used by the closure<> class to store
- // the pointer to the current frame.
- //
-#ifndef PHOENIX_THREADSAFE
- template <typename FrameT>
- struct closure_frame_holder
- {
- typedef FrameT frame_t;
- typedef frame_t *frame_ptr;
-
- closure_frame_holder() : frame(0) {}
-
- frame_ptr &get() { return frame; }
- void set(frame_t *f) { frame = f; }
-
- private:
- frame_ptr frame;
-
- // no copies, no assignments
- closure_frame_holder(closure_frame_holder const &);
- closure_frame_holder &operator=(closure_frame_holder const &);
- };
-#else
- template <typename FrameT>
- struct closure_frame_holder
- {
- typedef FrameT frame_t;
- typedef frame_t *frame_ptr;
-
- closure_frame_holder() : tsp_frame() {}
-
- frame_ptr &get()
- {
- if (!tsp_frame.get())
- tsp_frame.reset(new frame_ptr(0));
- return *tsp_frame;
- }
- void set(frame_ptr f)
- {
- *tsp_frame = f;
- }
-
- private:
- boost::thread_specific_ptr<frame_ptr> tsp_frame;
-
- // no copies, no assignments
- closure_frame_holder(closure_frame_holder const &);
- closure_frame_holder &operator=(closure_frame_holder const &);
- };
-#endif
-} // namespace phoenix::impl
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// closure_frame class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ClosureT>
-class closure_frame : public ClosureT::tuple_t {
-
-public:
-
- closure_frame(ClosureT const& clos)
- : ClosureT::tuple_t(), save(clos.frame.get()), frame(clos.frame)
- { clos.frame.set(this); }
-
- template <typename TupleT>
- closure_frame(ClosureT const& clos, TupleT const& init)
- : ClosureT::tuple_t(init), save(clos.frame.get()), frame(clos.frame)
- { clos.frame.set(this); }
-
- ~closure_frame()
- { frame.set(save); }
-
-private:
-
- closure_frame(closure_frame const&); // no copy
- closure_frame& operator=(closure_frame const&); // no assign
-
- closure_frame* save;
- impl::closure_frame_holder<closure_frame>& frame;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// closure_member class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <int N, typename ClosureT>
-class closure_member {
-
-public:
-
- typedef typename ClosureT::tuple_t tuple_t;
-
- closure_member()
- : frame(ClosureT::closure_frame_holder_ref()) {}
-
- template <typename TupleT>
- struct result {
-
- typedef typename tuple_element<
- N, typename ClosureT::tuple_t
- >::rtype type;
- };
-
- template <typename TupleT>
- typename tuple_element<N, typename ClosureT::tuple_t>::rtype
- eval(TupleT const& /*args*/) const
- {
- using namespace std;
- assert(frame.get() != 0);
- return (*frame.get())[tuple_index<N>()];
- }
-
-private:
- impl::closure_frame_holder<typename ClosureT::closure_frame_t> &frame;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// closure class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename T0 = nil_t
- , typename T1 = nil_t
- , typename T2 = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename T3 = nil_t
- , typename T4 = nil_t
- , typename T5 = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename T6 = nil_t
- , typename T7 = nil_t
- , typename T8 = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename T9 = nil_t
- , typename T10 = nil_t
- , typename T11 = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename T12 = nil_t
- , typename T13 = nil_t
- , typename T14 = nil_t
-
-#endif
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURES
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURES
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_closures.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_closures.hpp"
 #endif
-#endif
-#endif
->
-class closure {
-
-public:
-
- typedef tuple<
- T0, T1, T2
-#if PHOENIX_LIMIT > 3
- , T3, T4, T5
-#if PHOENIX_LIMIT > 6
- , T6, T7, T8
-#if PHOENIX_LIMIT > 9
- , T9, T10, T11
-#if PHOENIX_LIMIT > 12
- , T12, T13, T14
-#endif
-#endif
-#endif
-#endif
- > tuple_t;
-
- typedef closure<
- T0, T1, T2
-#if PHOENIX_LIMIT > 3
- , T3, T4, T5
-#if PHOENIX_LIMIT > 6
- , T6, T7, T8
-#if PHOENIX_LIMIT > 9
- , T9, T10, T11
-#if PHOENIX_LIMIT > 12
- , T12, T13, T14
-#endif
-#endif
-#endif
-#endif
- > self_t;
-
- typedef closure_frame<self_t> closure_frame_t;
-
- closure()
- : frame() { closure_frame_holder_ref(&frame); }
- closure_frame_t& context() { assert(frame!=0); return frame.get(); }
- closure_frame_t const& context() const { assert(frame!=0); return frame.get(); }
-
- typedef actor<closure_member<0, self_t> > member1;
- typedef actor<closure_member<1, self_t> > member2;
- typedef actor<closure_member<2, self_t> > member3;
-
-#if PHOENIX_LIMIT > 3
- typedef actor<closure_member<3, self_t> > member4;
- typedef actor<closure_member<4, self_t> > member5;
- typedef actor<closure_member<5, self_t> > member6;
-
-#if PHOENIX_LIMIT > 6
- typedef actor<closure_member<6, self_t> > member7;
- typedef actor<closure_member<7, self_t> > member8;
- typedef actor<closure_member<8, self_t> > member9;
-
-#if PHOENIX_LIMIT > 9
- typedef actor<closure_member<9, self_t> > member10;
- typedef actor<closure_member<10, self_t> > member11;
- typedef actor<closure_member<11, self_t> > member12;
-
-#if PHOENIX_LIMIT > 12
- typedef actor<closure_member<12, self_t> > member13;
- typedef actor<closure_member<13, self_t> > member14;
- typedef actor<closure_member<14, self_t> > member15;
-
-#endif
-#endif
-#endif
-#endif
-
-#if !defined(__MWERKS__) || (__MWERKS__ > 0x3002)
-private:
-#endif
-
- closure(closure const&); // no copy
- closure& operator=(closure const&); // no assign
-
-#if !defined(__MWERKS__) || (__MWERKS__ > 0x3002)
- template <int N, typename ClosureT>
- friend class closure_member;
-
- template <typename ClosureT>
- friend class closure_frame;
-#endif
-
- typedef impl::closure_frame_holder<closure_frame_t> holder_t;
-
-#ifdef PHOENIX_THREADSAFE
- static boost::thread_specific_ptr<holder_t*> &
- tsp_frame_instance()
- {
- static boost::thread_specific_ptr<holder_t*> the_instance;
- return the_instance;
- }
-
- static void
- tsp_frame_instance_init()
- {
- tsp_frame_instance();
- }
-#endif
-
- static holder_t &
- closure_frame_holder_ref(holder_t* holder_ = 0)
- {
-#ifdef PHOENIX_THREADSAFE
- static boost::once_flag been_here = BOOST_ONCE_INIT;
- boost::call_once(been_here, tsp_frame_instance_init);
- boost::thread_specific_ptr<holder_t*> &tsp_frame = tsp_frame_instance();
- if (!tsp_frame.get())
- tsp_frame.reset(new holder_t *(0));
- holder_t *& holder = *tsp_frame;
-#else
- static holder_t* holder = 0;
-#endif
- if (holder_ != 0)
- holder = holder_;
- return *holder;
- }
-
- mutable holder_t frame;
-};
 
-}
- // namespace phoenix
+#include <boost/spirit/include/phoenix1_closures.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/composite.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/composite.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/composite.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1423 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_COMPOSITE_HPP
-#define PHOENIX_COMPOSITE_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/actor.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite class
-//
-// A composite is an actor base class composed of zero or more
-// actors (see actor.hpp) and an operation. A composite is itself
-// an actor superclass and conforms to its conceptual interface.
-// Its eval member function un-funnels the tupled actual arguments
-// from the tuple by invoking each of the actors' eval member
-// function. The results of each are then passed on as arguments to
-// the operation. Specializations are provided to handle different
-// numbers of actors.
-//
-// Schematically:
-//
-// actor0.eval(tupled_args) --> arg0 --> |
-// actor1.eval(tupled_args) --> arg1 --> |
-// actor2.eval(tupled_args) --> arg3 --> | --> operation(arg0...argN)
-// ... |
-// actorN.eval(tupled_args) --> argN --> |
-//
-// The operation can be any suitable functor that can accept the
-// arguments passed in by the composite. The operation is expected
-// to have a member operator() that carries out the actual
-// operation. There should be a one to one correspondence between
-// actors of the composite and the arguments of the operation's
-// member operator().
-//
-// The operation is also expected to have a nested template class
-// result<T0...TN>. The nested template class result should have a
-// typedef 'type' that reflects the return type of its member
-// operator(). This is essentially a type computer that answers the
-// metaprogramming question "Given arguments of type T0...TN, what
-// will be its operator()'s return type?".
-//
-// There is a special case for operations that accept no arguments.
-// Such nullary operations are only required to define a typedef
-// result_type that reflects the return type of its operator().
-//
-// Here's an example of a simple operation that squares a number:
-//
-// struct square {
-//
-// template <typename ArgT>
-// struct result { typedef ArgT type; };
-//
-// template <typename ArgT>
-// ArgT operator()(ArgT n) const { return n * n; }
-// };
-//
-// As can be seen, operations can be polymorphic. Its arguments and
-// return type are not fixed to a particular type. The example
-// above for example, can handle any ArgT type as long as it has a
-// multiplication operator.
-//
-// Composites are not created directly. Instead, there are meta-
-// programs provided that indirectly create composites. See
-// operators.hpp, binders.hpp and functions.hpp for examples.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename OperationT
- , typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
-
- , typename NU = nil_t // Not used
->
-struct composite;
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <0 actor> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT>
-struct composite0_result {
-
- typedef typename OperationT::result_type type;
-};
-
-//////////////////////////////////
-template <typename OperationT>
-struct composite<OperationT,
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite0_result<
- OperationT, TupleT
- >::type type;
- };
-
- composite(OperationT const& op_)
- : op(op_) {}
-
- template <typename TupleT>
- typename OperationT::result_type
- eval(TupleT const& /*args*/) const
- {
- return op();
- }
-
- mutable OperationT op; // operation
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <1 actor> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A>
-struct composite1_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A>
-struct composite<OperationT,
- A, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite1_result<
- OperationT, TupleT, A
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_)
- : op(op_), a(a_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- return op(ra);
- }
-
- mutable OperationT op; // operation
- A a; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <2 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B>
-struct composite2_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B>
-struct composite<OperationT,
- A, B, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite2_result<
- OperationT, TupleT, A, B
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_)
- : op(op_), a(a_), b(b_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- return op(ra, rb);
- }
-
- mutable OperationT op; // operation
- A a; B b; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <3 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C>
-struct composite3_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C>
-struct composite<OperationT,
- A, B, C,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_COMPOSITE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_COMPOSITE
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_composite.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_composite.hpp"
 #endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B, C> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite3_result<
- OperationT, TupleT, A, B, C
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_)
- : op(op_), a(a_), b(b_), c(c_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- return op(ra, rb, rc);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; // actors
-};
-
-#if PHOENIX_LIMIT > 3
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <4 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D>
-struct composite4_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D>
-struct composite<OperationT,
- A, B, C, D, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B, C, D> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite4_result<
- OperationT, TupleT, A, B, C, D
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_)
- : op(op_), a(a_), b(b_), c(c_), d(d_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- return op(ra, rb, rc, rd);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <5 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E>
-struct composite5_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E>
-struct composite<OperationT,
- A, B, C, D, E, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B, C, D, E> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite5_result<
- OperationT, TupleT, A, B, C, D, E
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- return op(ra, rb, rc, rd, re);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <6 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F>
-struct composite6_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F>
-struct composite<OperationT,
- A, B, C, D, E, F,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B, C, D, E, F> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite6_result<
- OperationT, TupleT, A, B, C, D, E, F
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- return op(ra, rb, rc, rd, re, rf);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; // actors
-};
-
-#if PHOENIX_LIMIT > 6
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <7 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G>
-struct composite7_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G>
-struct composite<OperationT,
- A, B, C, D, E, F, G, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B, C, D, E, F, G> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite7_result<
- OperationT, TupleT, A, B, C, D, E, F, G
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <8 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H>
-struct composite8_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type,
- typename actor_result<H, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H>
-struct composite<OperationT,
- A, B, C, D, E, F, G, H, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B, C, D, E, F, G, H> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite8_result<
- OperationT, TupleT, A, B, C, D, E, F, G, H
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_, H const& h_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- typename actor_result<H, TupleT>::type rh = h.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg, rh);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; H h; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <9 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I>
-struct composite9_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type,
- typename actor_result<H, TupleT>::plain_type,
- typename actor_result<I, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I>
-struct composite<OperationT,
- A, B, C, D, E, F, G, H, I,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B, C, D, E, F, G, H, I> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite9_result<
- OperationT, TupleT, A, B, C, D, E, F, G, H, I
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_, H const& h_, I const& i_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- typename actor_result<H, TupleT>::type rh = h.eval(args);
- typename actor_result<I, TupleT>::type ri = i.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg, rh, ri);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; H h; I i; // actors
-};
-
-#if PHOENIX_LIMIT > 9
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <10 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J>
-struct composite10_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type,
- typename actor_result<H, TupleT>::plain_type,
- typename actor_result<I, TupleT>::plain_type,
- typename actor_result<J, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J>
-struct composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT, A, B, C, D, E, F, G, H, I, J> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite10_result<
- OperationT, TupleT, A, B, C, D, E, F, G, H, I, J
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_, H const& h_, I const& i_, J const& j_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- typename actor_result<H, TupleT>::type rh = h.eval(args);
- typename actor_result<I, TupleT>::type ri = i.eval(args);
- typename actor_result<J, TupleT>::type rj = j.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <11 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K>
-struct composite11_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type,
- typename actor_result<H, TupleT>::plain_type,
- typename actor_result<I, TupleT>::plain_type,
- typename actor_result<J, TupleT>::plain_type,
- typename actor_result<K, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K>
-struct composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite11_result<
- OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_, H const& h_, I const& i_, J const& j_,
- K const& k_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- typename actor_result<H, TupleT>::type rh = h.eval(args);
- typename actor_result<I, TupleT>::type ri = i.eval(args);
- typename actor_result<J, TupleT>::type rj = j.eval(args);
- typename actor_result<K, TupleT>::type rk = k.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; H h; I i; J j;
- K k;// actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <12 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L>
-struct composite12_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type,
- typename actor_result<H, TupleT>::plain_type,
- typename actor_result<I, TupleT>::plain_type,
- typename actor_result<J, TupleT>::plain_type,
- typename actor_result<K, TupleT>::plain_type,
- typename actor_result<L, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L>
-struct composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, L,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
-> {
-
- typedef composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, L> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite12_result<
- OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_, H const& h_, I const& i_, J const& j_,
- K const& k_, L const& l_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_), l(l_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- typename actor_result<H, TupleT>::type rh = h.eval(args);
- typename actor_result<I, TupleT>::type ri = i.eval(args);
- typename actor_result<J, TupleT>::type rj = j.eval(args);
- typename actor_result<K, TupleT>::type rk = k.eval(args);
- typename actor_result<L, TupleT>::type rl = l.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; H h; I i; J j;
- K k; L l;// actors
-};
-
-#if PHOENIX_LIMIT > 12
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <13 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M>
-struct composite13_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type,
- typename actor_result<H, TupleT>::plain_type,
- typename actor_result<I, TupleT>::plain_type,
- typename actor_result<J, TupleT>::plain_type,
- typename actor_result<K, TupleT>::plain_type,
- typename actor_result<L, TupleT>::plain_type,
- typename actor_result<M, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M>
-struct composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, nil_t, nil_t, nil_t
-> {
-
- typedef composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, L, M> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite13_result<
- OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L, M
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_, H const& h_, I const& i_, J const& j_,
- K const& k_, L const& l_, M const& m_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_), l(l_), m(m_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- typename actor_result<H, TupleT>::type rh = h.eval(args);
- typename actor_result<I, TupleT>::type ri = i.eval(args);
- typename actor_result<J, TupleT>::type rj = j.eval(args);
- typename actor_result<K, TupleT>::type rk = k.eval(args);
- typename actor_result<L, TupleT>::type rl = l.eval(args);
- typename actor_result<M, TupleT>::type rm = m.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl, rm);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; H h; I i; J j;
- K k; L l; M m; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <14 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N>
-struct composite14_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type,
- typename actor_result<H, TupleT>::plain_type,
- typename actor_result<I, TupleT>::plain_type,
- typename actor_result<J, TupleT>::plain_type,
- typename actor_result<K, TupleT>::plain_type,
- typename actor_result<L, TupleT>::plain_type,
- typename actor_result<M, TupleT>::plain_type,
- typename actor_result<N, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N>
-struct composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, nil_t, nil_t
-> {
-
- typedef composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite14_result<
- OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L, M, N
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_, H const& h_, I const& i_, J const& j_,
- K const& k_, L const& l_, M const& m_, N const& n_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_), l(l_), m(m_), n(n_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- typename actor_result<H, TupleT>::type rh = h.eval(args);
- typename actor_result<I, TupleT>::type ri = i.eval(args);
- typename actor_result<J, TupleT>::type rj = j.eval(args);
- typename actor_result<K, TupleT>::type rk = k.eval(args);
- typename actor_result<L, TupleT>::type rl = l.eval(args);
- typename actor_result<M, TupleT>::type rm = m.eval(args);
- typename actor_result<N, TupleT>::type rn = n.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl, rm, rn);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; H h; I i; J j;
- K k; L l; M m; N n; // actors
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// composite <15 actors> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O>
-struct composite15_result {
-
- typedef typename OperationT::template result<
- typename actor_result<A, TupleT>::plain_type,
- typename actor_result<B, TupleT>::plain_type,
- typename actor_result<C, TupleT>::plain_type,
- typename actor_result<D, TupleT>::plain_type,
- typename actor_result<E, TupleT>::plain_type,
- typename actor_result<F, TupleT>::plain_type,
- typename actor_result<G, TupleT>::plain_type,
- typename actor_result<H, TupleT>::plain_type,
- typename actor_result<I, TupleT>::plain_type,
- typename actor_result<J, TupleT>::plain_type,
- typename actor_result<K, TupleT>::plain_type,
- typename actor_result<L, TupleT>::plain_type,
- typename actor_result<M, TupleT>::plain_type,
- typename actor_result<N, TupleT>::plain_type,
- typename actor_result<O, TupleT>::plain_type
- >::type type;
-};
-
-//////////////////////////////////
-template <typename OperationT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O>
-struct composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, nil_t
-> {
-
- typedef composite<OperationT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename composite15_result<
- OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
- >::type type;
- };
-
- composite(OperationT const& op_,
- A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
- F const& f_, G const& g_, H const& h_, I const& i_, J const& j_,
- K const& k_, L const& l_, M const& m_, N const& n_, O const& o_)
- : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_), l(l_), m(m_), n(n_), o(o_) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- typename actor_result<A, TupleT>::type ra = a.eval(args);
- typename actor_result<B, TupleT>::type rb = b.eval(args);
- typename actor_result<C, TupleT>::type rc = c.eval(args);
- typename actor_result<D, TupleT>::type rd = d.eval(args);
- typename actor_result<E, TupleT>::type re = e.eval(args);
- typename actor_result<F, TupleT>::type rf = f.eval(args);
- typename actor_result<G, TupleT>::type rg = g.eval(args);
- typename actor_result<H, TupleT>::type rh = h.eval(args);
- typename actor_result<I, TupleT>::type ri = i.eval(args);
- typename actor_result<J, TupleT>::type rj = j.eval(args);
- typename actor_result<K, TupleT>::type rk = k.eval(args);
- typename actor_result<L, TupleT>::type rl = l.eval(args);
- typename actor_result<M, TupleT>::type rm = m.eval(args);
- typename actor_result<N, TupleT>::type rn = n.eval(args);
- typename actor_result<O, TupleT>::type ro = o.eval(args);
- return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl, rm, rn, ro);
- }
-
- mutable OperationT op; // operation
- A a; B b; C c; D d; E e; F f; G g; H h; I i; J j;
- K k; L l; M m; N n; O o; // actors
-};
-
-#endif
-#endif
-#endif
-#endif
-
-namespace impl {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // make_composite is basically a type computer that answers the
- // question "Given types T0..TN, what composite type should I
- // create <composite_type> and if I were to generate an actual
- // composite, what type <type> should I return?"
- //
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename OperationT
- , typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
- >
- struct make_composite {
-
- typedef composite<OperationT
- , typename as_actor<A>::type
- , typename as_actor<B>::type
- , typename as_actor<C>::type
-
-#if PHOENIX_LIMIT > 3
- , typename as_actor<D>::type
- , typename as_actor<E>::type
- , typename as_actor<F>::type
-
-#if PHOENIX_LIMIT > 6
- , typename as_actor<G>::type
- , typename as_actor<H>::type
- , typename as_actor<I>::type
-
-#if PHOENIX_LIMIT > 9
- , typename as_actor<J>::type
- , typename as_actor<K>::type
- , typename as_actor<L>::type
-
-#if PHOENIX_LIMIT > 12
- , typename as_actor<M>::type
- , typename as_actor<N>::type
- , typename as_actor<O>::type
-
-#endif
-#endif
-#endif
-#endif
- > composite_type;
-
- typedef actor<composite_type> type;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // make_unary, make_binary, make_binary1, make_binary2 and
- // make_binary3 utilities are provided here for easy creation of
- // unary and binary composites.
- //
- ///////////////////////////////////////////////////////////////////////////
-
- ////////////////////////////////// input is an actor
- template <typename OperationT, typename BaseT>
- struct make_unary {
-
- typedef typename make_composite
- <OperationT, actor<BaseT> >::type type;
-
- static type
- construct(actor<BaseT> const& _0)
- {
- typedef typename make_composite
- <OperationT, actor<BaseT> >::composite_type
- ret_t;
-
- return ret_t(OperationT(), _0);
- }
- };
-
- ////////////////////////////////// LHS is an actor, RHS is unknown
- template <typename OperationT, typename BaseT, typename B>
- struct make_binary1 {
-
- typedef typename make_composite
- <OperationT, actor<BaseT>, B>::type type;
-
- static type
- construct(actor<BaseT> const& _0, B const& _1)
- {
- typedef typename make_composite
- <OperationT, actor<BaseT>, B>::composite_type
- ret_t;
-
- return ret_t(OperationT(), _0, as_actor<B>::convert(_1));
- }
- };
-
- ////////////////////////////////// LHS is unknown, RHS is an actor
- template <typename OperationT, typename A, typename BaseT>
- struct make_binary2 {
-
- typedef typename make_composite
- <OperationT, A, actor<BaseT> >::type type;
-
- static type
- construct(A const& _0, actor<BaseT> const& _1)
- {
- typedef typename make_composite
- <OperationT, A, actor<BaseT> >::composite_type
- ret_t;
-
- return ret_t(OperationT(), as_actor<A>::convert(_0), _1);
- }
- };
-
- ////////////////////////////////// Both LHS and RHS are actors
- template <typename OperationT, typename BaseA, typename BaseB>
- struct make_binary3 {
-
- typedef typename make_composite
- <OperationT, actor<BaseA>, actor<BaseB> >::type type;
-
- static type
- construct(actor<BaseA> const& _0, actor<BaseB> const& _1)
- {
- typedef typename make_composite
- <OperationT, actor<BaseA>, actor<BaseB> >::composite_type
- ret_t;
-
- return ret_t(OperationT(), _0, _1);
- }
- };
-
-} // namespace impl
 
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_composite.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/functions.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/functions.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/functions.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,761 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_FUNCTIONS_HPP
-#define PHOENIX_FUNCTIONS_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/actor.hpp>
-#include <boost/spirit/phoenix/composite.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// function class
-//
-// Lazy functions
-//
-// This class provides a mechanism for lazily evaluating functions.
-// Syntactically, a lazy function looks like an ordinary C/C++
-// function. The function call looks the same. However, unlike
-// ordinary functions, the actual function execution is deferred.
-// (see actor.hpp, primitives.hpp and composite.hpp for an
-// overview). For example here are sample factorial function calls:
-//
-// factorial(4)
-// factorial(arg1)
-// factorial(arg1 * 6)
-//
-// These functions are automatically lazily bound unlike ordinary
-// function pointers or functor objects that need to be explicitly
-// bound through the bind function (see binders.hpp).
-//
-// A lazy function works in conjunction with a user defined functor
-// (as usual with a member operator()). Only special forms of
-// functor objects are allowed. This is required to enable true
-// polymorphism (STL style monomorphic functors and function
-// pointers can still be used through the bind facility in
-// binders.hpp).
-//
-// This special functor is expected to have a nested template class
-// result<A...TN> (where N is the number of arguments of its
-// member operator()). The nested template class result should have
-// a typedef 'type' that reflects the return type of its member
-// operator(). This is essentially a type computer that answers the
-// metaprogramming question "Given arguments of type A...TN, what
-// will be the operator()'s return type?".
-//
-// There is a special case for functors that accept no arguments.
-// Such nullary functors are only required to define a typedef
-// result_type that reflects the return type of its operator().
-//
-// Here's an example of a simple functor that computes the
-// factorial of a number:
-//
-// struct factorial_impl {
-//
-// template <typename Arg>
-// struct result { typedef Arg type; };
-//
-// template <typename Arg>
-// Arg operator()(Arg n) const
-// { return (n <= 0) ? 1 : n * this->operator()(n-1); }
-// };
-//
-// As can be seen, the functor can be polymorphic. Its arguments
-// and return type are not fixed to a particular type. The example
-// above for example, can handle any type as long as it can carry
-// out the required operations (i.e. <=, * and -).
-//
-// We can now declare and instantiate a lazy 'factorial' function:
-//
-// function<factorial_impl> factorial;
-//
-// Invoking a lazy function 'factorial' does not immediately
-// execute the functor factorial_impl. Instead, a composite (see
-// composite.hpp) object is created and returned to the caller.
-// Example:
-//
-// factorial(arg1)
-//
-// does nothing more than return a composite. A second function
-// call will invoke the actual factorial function. Example:
-//
-// int i = 4;
-// cout << factorial(arg1)(i);
-//
-// will print out "24".
-//
-// Take note that in certain cases (e.g. for functors with state),
-// an instance may be passed on to the constructor. Example:
-//
-// function<factorial_impl> factorial(ftor);
-//
-// where ftor is an instance of factorial_impl (this is not
-// necessary in this case since factorial is a simple stateless
-// functor). Take care though when using functors with state
-// because the functors are taken in by value. It is best to keep
-// the data manipulated by a functor outside the functor itself and
-// keep a reference to this data inside the functor. Also, it is
-// best to keep functors as small as possible.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT>
-struct function {
-
- function() : op() {}
- function(OperationT const& op_) : op(op_) {}
-
- actor<composite<OperationT> >
- operator()() const;
-
- template <typename A>
- typename impl::make_composite<OperationT, A>::type
- operator()(A const& a) const;
-
- template <typename A, typename B>
- typename impl::make_composite<OperationT, A, B>::type
- operator()(A const& a, B const& b) const;
-
- template <typename A, typename B, typename C>
- typename impl::make_composite<OperationT, A, B, C>::type
- operator()(A const& a, B const& b, C const& c) const;
-
-#if PHOENIX_LIMIT > 3
-
- template <typename A, typename B, typename C, typename D>
- typename impl::make_composite<OperationT, A, B, C, D>::type
- operator()(A const& a, B const& b, C const& c, D const& d) const;
-
- template <typename A, typename B, typename C, typename D, typename E>
- typename impl::make_composite<
- OperationT, A, B, C, D, E
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e
- ) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f
- ) const;
-
-#if PHOENIX_LIMIT > 6
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g
- ) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h
- ) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i
- ) const;
-
-#if PHOENIX_LIMIT > 9
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j
- ) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k
- ) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l
- ) const;
-
-#if PHOENIX_LIMIT > 12
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m
- ) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n
- ) const;
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
- >
- typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
- >::type
- operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n, O const& o
- ) const;
-
-#endif
-#endif
-#endif
-#endif
-
- OperationT op;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// function class implementation
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename OperationT>
-inline actor<composite<OperationT> >
-function<OperationT>::operator()() const
-{
- return actor<composite<OperationT> >(op);
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <typename A>
-inline typename impl::make_composite<OperationT, A>::type
-function<OperationT>::operator()(A const& a) const
-{
- typedef typename impl::make_composite<OperationT, A>::composite_type ret_t;
- return ret_t
- (
- op,
- as_actor<A>::convert(a)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <typename A, typename B>
-inline typename impl::make_composite<OperationT, A, B>::type
-function<OperationT>::operator()(A const& a, B const& b) const
-{
- typedef
- typename impl::make_composite<OperationT, A, B>::composite_type
- ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <typename A, typename B, typename C>
-inline typename impl::make_composite<OperationT, A, B, C>::type
-function<OperationT>::operator()(A const& a, B const& b, C const& c) const
-{
- typedef
- typename impl::make_composite<OperationT, A, B, C>::composite_type
- ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c)
- );
-}
-
-#if PHOENIX_LIMIT > 3
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f)
- );
-}
-
-#if PHOENIX_LIMIT > 6
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i)
- );
-}
-
-#if PHOENIX_LIMIT > 9
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l)
- );
-}
-
-#if PHOENIX_LIMIT > 12
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m),
- as_actor<N>::convert(n)
- );
-}
-
-//////////////////////////////////
-template <typename OperationT>
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
->
-inline typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
->::type
-function<OperationT>::operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n, O const& o
-) const
-{
- typedef typename impl::make_composite<
- OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
- >::composite_type ret_t;
-
- return ret_t(
- op,
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m),
- as_actor<N>::convert(n),
- as_actor<O>::convert(o)
- );
-}
-
-#endif
-#endif
-#endif
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNCTIONS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNCTIONS
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_functions.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_functions.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_functions.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/new.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/new.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/new.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1316 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2001-2003 Hartmut Kaiser
- Copyright (c) 2003 Vaclav Vesely
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-
-#ifndef PHOENIX_NEW_HPP
-#define PHOENIX_NEW_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/actor.hpp>
-#include <boost/spirit/phoenix/composite.hpp>
-#include <boost/static_assert.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Phoenix predefined maximum new_ limit. This limit defines the maximum
-// number of parameters supported for calles to the set of new_ template
-// functions (lazy object construction, see below). This number defaults to 3.
-// The actual maximum is rounded up in multiples of 3. Thus, if this value
-// is 4, the actual limit is 6. The ultimate maximum limit in this
-// implementation is 15.
-// PHOENIX_CONSTRUCT_LIMIT should NOT be greater than PHOENIX_LIMIT!
-
-#if !defined(PHOENIX_CONSTRUCT_LIMIT)
-#define PHOENIX_CONSTRUCT_LIMIT PHOENIX_LIMIT
-#endif
-
-// ensure PHOENIX_CONSTRUCT_LIMIT <= PHOENIX_LIMIT
-BOOST_STATIC_ASSERT(PHOENIX_CONSTRUCT_LIMIT <= PHOENIX_LIMIT);
-
-// ensure PHOENIX_CONSTRUCT_LIMIT <= 15
-BOOST_STATIC_ASSERT(PHOENIX_CONSTRUCT_LIMIT <= 15);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// new_
-//
-// Lazy object construction
-//
-// The set of new_<> template classes and functions provide a way
-// of lazily constructing certain object from a arbitrary set of
-// actors during parsing.
-// The new_ templates are (syntactically) used very much like
-// the well known C++ casts:
-//
-// A *a = new_<A>(...arbitrary list of actors...);
-//
-// where the given parameters are submitted as parameters to the
-// contructor of the object of type A. (This certainly implies, that
-// type A has a constructor with a fitting set of parameter types
-// defined.)
-//
-// The maximum number of needed parameters is controlled through the
-// preprocessor constant PHOENIX_CONSTRUCT_LIMIT. Note though, that this
-// limit should not be greater than PHOENIX_LIMIT.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-struct new_l_0
-{
- typedef T* result_type;
-
- T* operator()() const
- {
- return new T();
- }
-};
-
-template <typename T>
-struct new_l {
-
- template <
- typename A
- , typename B
- , typename C
-
-#if PHOENIX_CONSTRUCT_LIMIT > 3
- , typename D
- , typename E
- , typename F
-
-#if PHOENIX_CONSTRUCT_LIMIT > 6
- , typename G
- , typename H
- , typename I
-
-#if PHOENIX_CONSTRUCT_LIMIT > 9
- , typename J
- , typename K
- , typename L
-
-#if PHOENIX_CONSTRUCT_LIMIT > 12
- , typename M
- , typename N
- , typename O
-#endif
-#endif
-#endif
-#endif
- >
- struct result { typedef T* type; };
-
- T* operator()() const {
- return new T();
- }
-
- template <typename A>
- T* operator()(A const& a) const {
- return new T(a);
- }
-
- template <typename A, typename B>
- T* operator()(A const& a, B const& b) const {
- return new T(a, b);
- }
-
- template <typename A, typename B, typename C>
- T* operator()(A const& a, B const& b, C const& c) const {
- return new T(a, b, c);
- }
-
-#if PHOENIX_CONSTRUCT_LIMIT > 3
- template <
- typename A, typename B, typename C, typename D
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d) const
- {
- return new T(a, b, c, d);
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e) const
- {
- return new T(a, b, c, d, e);
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f) const
- {
- return new T(a, b, c, d, e, f);
- }
-
-#if PHOENIX_CONSTRUCT_LIMIT > 6
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g) const
- {
- return new T(a, b, c, d, e, f, g);
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h) const
- {
- return new T(a, b, c, d, e, f, g, h);
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i) const
- {
- return new T(a, b, c, d, e, f, g, h, i);
- }
-
-#if PHOENIX_CONSTRUCT_LIMIT > 9
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j);
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j, k);
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j, k, l);
- }
-
-#if PHOENIX_CONSTRUCT_LIMIT > 12
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j, k, l, m);
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
- }
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n, O const& o) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
- }
-
-#endif
-#endif
-#endif
-#endif
-};
-
-template <typename T>
-struct new_1 {
-
- template <
- typename A
- >
- struct result { typedef T* type; };
-
- template <typename A>
- T* operator()(A const& a) const {
- return new T(a);
- }
-
-};
-
-template <typename T>
-struct new_2 {
-
- template <
- typename A
- , typename B
- >
- struct result { typedef T* type; };
-
- template <typename A, typename B>
- T* operator()(A const& a, B const& b) const {
- return new T(a, b);
- }
-
-};
-
-template <typename T>
-struct new_3 {
-
- template <
- typename A
- , typename B
- , typename C
- >
- struct result { typedef T* type; };
-
- template <typename A, typename B, typename C>
- T* operator()(A const& a, B const& b, C const& c) const {
- return new T(a, b, c);
- }
-};
-
-#if PHOENIX_CONSTRUCT_LIMIT > 3
-template <typename T>
-struct new_4 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- >
- struct result { typedef T* type; };
-
-
- template <
- typename A, typename B, typename C, typename D
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d) const
- {
- return new T(a, b, c, d);
- }
-};
-
-
-template <typename T>
-struct new_5 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- >
- struct result { typedef T* type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e) const
- {
- return new T(a, b, c, d, e);
- }
-};
-
-
-template <typename T>
-struct new_6 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- >
- struct result { typedef T* type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f) const
- {
- return new T(a, b, c, d, e, f);
- }
-};
-#endif
-
-
-#if PHOENIX_CONSTRUCT_LIMIT > 6
-template <typename T>
-struct new_7 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- >
- struct result { typedef T* type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g) const
- {
- return new T(a, b, c, d, e, f, g);
- }
-};
-
-template <typename T>
-struct new_8 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- >
- struct result { typedef T* type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h) const
- {
- return new T(a, b, c, d, e, f, g, h);
- }
-};
-
-template <typename T>
-struct new_9 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- >
- struct result { typedef T* type; };
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i) const
- {
- return new T(a, b, c, d, e, f, g, h, i);
- }
-};
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NEW
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_NEW
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_new.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_new.hpp"
 #endif
 
+#include <boost/spirit/include/phoenix1_new.hpp>
 
-#if PHOENIX_CONSTRUCT_LIMIT > 9
-template <typename T>
-struct new_10 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- >
- struct result { typedef T* type; };
-
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j);
- }
-};
-
-template <typename T>
-struct new_11 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- >
- struct result { typedef T* type; };
-
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j, k);
- }
-
-};
-
-template <typename T>
-struct new_12 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- , typename L
- >
- struct result { typedef T* type; };
-
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l) const
- {
- return new T(a, b, c, d, f, e, g, h, i, j, k, l);
- }
-};
 #endif
-
-#if PHOENIX_CONSTRUCT_LIMIT > 12
-template <typename T>
-struct new_13 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- , typename L
- , typename M
- >
- struct result { typedef T* type; };
-
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j, k, l, m);
- }
-};
-
-template <typename T>
-struct new_14 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- , typename L
- , typename M
- , typename N
- >
- struct result { typedef T* type; };
-
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n) const
- {
- return new T(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
- }
-
-};
-
-template <typename T>
-struct new_15 {
-
- template <
- typename A
- , typename B
- , typename C
- , typename D
- , typename E
- , typename F
- , typename G
- , typename H
- , typename I
- , typename J
- , typename K
- , typename L
- , typename M
- , typename N
- , typename O
- >
- struct result { typedef T* type; };
-
-
- template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O
- >
- T* operator()(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n, O const& o) const
- {
- return new T(a, b, c, d, f, e, g, h, i, j, k, l, m, n, o);
- }
-
-};
-#endif
-
-
-#if defined(__BORLANDC__) || (defined(__MWERKS__) && (__MWERKS__ <= 0x3002))
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The following specializations are needed because Borland and CodeWarrior
-// does not accept default template arguments in nested template classes in
-// classes (i.e new_l::result)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T, typename TupleT>
-struct composite0_result<new_l_0<T>, TupleT> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A>
-struct composite1_result<new_l<T>, TupleT, A> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B>
-struct composite2_result<new_l<T>, TupleT, A, B> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C>
-struct composite3_result<new_l<T>, TupleT, A, B, C> {
-
- typedef T* type;
-};
-
-#if PHOENIX_LIMIT > 3
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D>
-struct composite4_result<new_l<T>, TupleT,
- A, B, C, D> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E>
-struct composite5_result<new_l<T>, TupleT,
- A, B, C, D, E> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F>
-struct composite6_result<new_l<T>, TupleT,
- A, B, C, D, E, F> {
-
- typedef T* type;
-};
-
-#if PHOENIX_LIMIT > 6
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G>
-struct composite7_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H>
-struct composite8_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G, H> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I>
-struct composite9_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I> {
-
- typedef T* type;
-};
-
-#if PHOENIX_LIMIT > 9
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J>
-struct composite10_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K>
-struct composite11_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L>
-struct composite12_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L> {
-
- typedef T* type;
-};
-
-#if PHOENIX_LIMIT > 12
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M>
-struct composite13_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N>
-struct composite14_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N> {
-
- typedef T* type;
-};
-
-//////////////////////////////////
-template <typename T, typename TupleT,
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O>
-struct composite15_result<new_l<T>, TupleT,
- A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> {
-
- typedef T* type;
-};
-
-#endif
-#endif
-#endif
-#endif
-#endif
-
-//////////////////////////////////
-template <typename T>
-inline typename impl::make_composite<new_l_0<T> >::type
-new_()
-{
- typedef impl::make_composite<new_l_0<T> > make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_l_0<T>()));
-}
-
-//////////////////////////////////
-template <typename T, typename A>
-inline typename impl::make_composite<new_1<T>, A>::type
-new_(A const& a)
-{
- typedef impl::make_composite<new_1<T>, A> make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_1<T>(),
- as_actor<A>::convert(a)
- ));
-}
-
-//////////////////////////////////
-template <typename T, typename A, typename B>
-inline typename impl::make_composite<new_2<T>, A, B>::type
-new_(A const& a, B const& b)
-{
- typedef impl::make_composite<new_2<T>, A, B> make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_2<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b)
- ));
-}
-
-//////////////////////////////////
-template <typename T, typename A, typename B, typename C>
-inline typename impl::make_composite<new_3<T>, A, B, C>::type
-new_(A const& a, B const& b, C const& c)
-{
- typedef impl::make_composite<new_3<T>, A, B, C> make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_3<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c)
- ));
-}
-
-#if PHOENIX_CONSTRUCT_LIMIT > 3
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D
->
-inline typename impl::make_composite<new_4<T>, A, B, C, D>::type
-new_(
- A const& a, B const& b, C const& c, D const& d)
-{
- typedef
- impl::make_composite<new_4<T>, A, B, C, D>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_4<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E
->
-inline typename impl::make_composite<new_5<T>, A, B, C, D, E>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e)
-{
- typedef
- impl::make_composite<new_5<T>, A, B, C, D, E>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_5<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F
->
-inline typename impl::make_composite<new_6<T>, A, B, C, D, E, F>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f)
-{
- typedef
- impl::make_composite<new_6<T>, A, B, C, D, E, F>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_6<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f)
- ));
-}
-
-#if PHOENIX_CONSTRUCT_LIMIT > 6
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G
->
-inline typename impl::make_composite<new_7<T>, A, B, C, D, E, F, G>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g)
-{
- typedef
- impl::make_composite<new_7<T>, A, B, C, D, E, F, G>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_7<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H
->
-inline typename impl::make_composite<new_8<T>, A, B, C, D, E, F, G, H>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h)
-{
- typedef
- impl::make_composite<new_8<T>, A, B, C, D, E, F, G, H>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_8<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I
->
-inline typename impl::make_composite<new_9<T>, A, B, C, D, E, F, G, H, I>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i)
-{
- typedef
- impl::make_composite<new_9<T>, A, B, C, D, E, F, G, H, I>
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_9<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i)
- ));
-}
-
-#if PHOENIX_CONSTRUCT_LIMIT > 9
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J
->
-inline typename impl::make_composite<
- new_10<T>, A, B, C, D, E, F, G, H, I, J>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j)
-{
- typedef
- impl::make_composite<
- new_10<T>, A, B, C, D, E, F, G, H, I, J
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_10<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K
->
-inline typename impl::make_composite<
- new_11<T>, A, B, C, D, E, F, G, H, I, J, K>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k)
-{
- typedef
- impl::make_composite<
- new_11<T>, A, B, C, D, E, F, G, H, I, J, K
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_11<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K,
- typename L
->
-inline typename impl::make_composite<
- new_12<T>, A, B, C, D, E, F, G, H, I, J, K, L>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l)
-{
- typedef
- impl::make_composite<
- new_12<T>, A, B, C, D, E, F, G, H, I, J, K, L
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_12<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l)
- ));
-}
-
-#if PHOENIX_CONSTRUCT_LIMIT > 12
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K,
- typename L, typename M
->
-inline typename impl::make_composite<
- new_13<T>, A, B, C, D, E, F, G, H, I, J, K, L, M>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m)
-{
- typedef
- impl::make_composite<
- new_13<T>, A, B, C, D, E, F, G, H, I, J, K, L, M
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_13<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K,
- typename L, typename M, typename N
->
-inline typename impl::make_composite<
- new_14<T>, A, B, C, D, E, F, G, H, I, J, K, L, M>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n)
-{
- typedef
- impl::make_composite<
- new_14<T>, A, B, C, D, E, F, G, H, I, J, K, L, M, N
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_14<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m),
- as_actor<N>::convert(n)
- ));
-}
-
-//////////////////////////////////
-template <
- typename T, typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J, typename K,
- typename L, typename M, typename N, typename O
->
-inline typename impl::make_composite<
- new_15<T>, A, B, C, D, E, F, G, H, I, J, K, L, M, O>::type
-new_(
- A const& a, B const& b, C const& c, D const& d, E const& e,
- F const& f, G const& g, H const& h, I const& i, J const& j,
- K const& k, L const& l, M const& m, N const& n, O const& o)
-{
- typedef
- impl::make_composite<
- new_15<T>, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
- >
- make_composite_t;
- typedef typename make_composite_t::type type_t;
- typedef typename make_composite_t::composite_type composite_type_t;
-
- return type_t(composite_type_t(new_15<T>(),
- as_actor<A>::convert(a),
- as_actor<B>::convert(b),
- as_actor<C>::convert(c),
- as_actor<D>::convert(d),
- as_actor<E>::convert(e),
- as_actor<F>::convert(f),
- as_actor<G>::convert(g),
- as_actor<H>::convert(h),
- as_actor<I>::convert(i),
- as_actor<J>::convert(j),
- as_actor<K>::convert(k),
- as_actor<L>::convert(l),
- as_actor<M>::convert(m),
- as_actor<N>::convert(n),
- as_actor<O>::convert(o)
- ));
-}
-
-#endif
-#endif
-#endif
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-} // namespace phoenix
-
-#endif // PHOENIX_NEW_HPP

Modified: branches/proto/v4/boost/spirit/phoenix/operators.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/operators.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/operators.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,2204 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_OPERATORS_HPP
-#define PHOENIX_OPERATORS_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_NO_CWCTYPE)
- #include <cwctype>
-#endif
-
-#if defined(__BORLANDC__) || (defined(__ICL) && __ICL >= 700)
-#define CREF const&
-#else
-#define CREF
-#endif
-
-#include <climits>
-#include <boost/spirit/phoenix/actor.hpp>
-#include <boost/spirit/phoenix/composite.hpp>
-#include <boost/config.hpp>
-#include <boost/mpl/if.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Operators
-//
-// Lazy operators
-//
-// This class provides a mechanism for lazily evaluating operators.
-// Syntactically, a lazy operator looks like an ordinary C/C++
-// infix, prefix or postfix operator. The operator application
-// looks the same. However, unlike ordinary operators, the actual
-// operator execution is deferred. (see actor.hpp, primitives.hpp
-// and composite.hpp for an overview). Samples:
-//
-// arg1 + arg2
-// 1 + arg1 * arg2
-// 1 / -arg1
-// arg1 < 150
-//
-// T1 set of classes implement all the C++ free operators. Like
-// lazy functions (see functions.hpp), lazy operators are not
-// immediately executed when invoked. Instead, a composite (see
-// composite.hpp) object is created and returned to the caller.
-// Example:
-//
-// (arg1 + arg2) * arg3
-//
-// does nothing more than return a composite. T1 second function
-// call will evaluate the actual operators. Example:
-//
-// int i = 4, j = 5, k = 6;
-// cout << ((arg1 + arg2) * arg3)(i, j, k);
-//
-// will print out "54".
-//
-// Arbitrarily complex expressions can be lazily evaluated
-// following three simple rules:
-//
-// 1) Lazy evaluated binary operators apply when at least one
-// of the operands is an actor object (see actor.hpp and
-// primitives.hpp). Consequently, if an operand is not an actor
-// object, it is implicitly converted to an object of type
-// actor<value<T> > (where T is the original type of the
-// operand).
-//
-// 2) Lazy evaluated unary operators apply only to operands
-// which are actor objects.
-//
-// 3) The result of a lazy operator is a composite actor object
-// that can in turn apply to rule 1.
-//
-// Example:
-//
-// arg1 + 3
-//
-// is a lazy expression involving the operator+. Following rule 1,
-// lazy evaluation is triggered since arg1 is an instance of an
-// actor<argument<N> > class (see primitives.hpp). The right
-// operand <3> is implicitly converted to an actor<value<int> >.
-// The result of this binary + expression is a composite object,
-// following rule 3.
-//
-// Take note that although at least one of the operands must be a
-// valid actor class in order for lazy evaluation to take effect,
-// if this is not the case and we still want to lazily evaluate an
-// expression, we can use var(x), val(x) or cref(x) to transform
-// the operand into a valid action object (see primitives.hpp).
-// Example:
-//
-// val(1) << 3;
-//
-// Supported operators:
-//
-// Unary operators:
-//
-// prefix: ~, !, -, +, ++, --, & (reference), * (dereference)
-// postfix: ++, --
-//
-// Binary operators:
-//
-// =, [], +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
-// +, -, *, /, %, &, |, ^, <<, >>
-// ==, !=, <, >, <=, >=
-// &&, ||
-//
-// Each operator has a special tag type associated with it. For
-// example the binary + operator has a plus_op tag type associated
-// with it. This is used to specialize either the unary_operator or
-// binary_operator template classes (see unary_operator and
-// binary_operator below). Specializations of these unary_operator
-// and binary_operator are the actual workhorses that implement the
-// operations. The behavior of each lazy operator depends on these
-// unary_operator and binary_operator specializations. 'preset'
-// specializations conform to the canonical operator rules modeled
-// by the behavior of integers and pointers:
-//
-// Prefix -, + and ~ accept constant arguments and return an
-// object by value.
-//
-// The ! accept constant arguments and returns a boolean
-// result.
-//
-// The & (address-of), * (dereference) both return a reference
-// to an object.
-//
-// Prefix ++ returns a reference to its mutable argument after
-// it is incremented.
-//
-// Postfix ++ returns the mutable argument by value before it
-// is incremented.
-//
-// The += and its family accept mutable right hand side (rhs)
-// operand and return a reference to the rhs operand.
-//
-// Infix + and its family accept constant arguments and return
-// an object by value.
-//
-// The == and its family accept constant arguments and return a
-// boolean result.
-//
-// Operators && and || accept constant arguments and return a
-// boolean result and are short circuit evaluated as expected.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Operator tags
-//
-// Each C++ operator has a corresponding tag type. This is
-// used as a means for specializing the unary_operator and
-// binary_operator (see below). The tag also serves as the
-// lazy operator type compatible as a composite operation
-// see (composite.hpp).
-//
-///////////////////////////////////////////////////////////////////////////////
-
-// Unary operator tags
-
-struct negative_op; struct positive_op;
-struct logical_not_op; struct invert_op;
-struct reference_op; struct dereference_op;
-struct pre_incr_op; struct pre_decr_op;
-struct post_incr_op; struct post_decr_op;
-
-// Binary operator tags
-
-struct assign_op; struct index_op;
-struct plus_assign_op; struct minus_assign_op;
-struct times_assign_op; struct divide_assign_op; struct mod_assign_op;
-struct and_assign_op; struct or_assign_op; struct xor_assign_op;
-struct shift_l_assign_op; struct shift_r_assign_op;
-
-struct plus_op; struct minus_op;
-struct times_op; struct divide_op; struct mod_op;
-struct and_op; struct or_op; struct xor_op;
-struct shift_l_op; struct shift_r_op;
-
-struct eq_op; struct not_eq_op;
-struct lt_op; struct lt_eq_op;
-struct gt_op; struct gt_eq_op;
-struct logical_and_op; struct logical_or_op;
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// unary_operator<TagT, T>
-//
-// The unary_operator class implements most of the C++ unary
-// operators. Each specialization is basically a simple static eval
-// function plus a result_type typedef that determines the return
-// type of the eval function.
-//
-// TagT is one of the unary operator tags above and T is the data
-// type (argument) involved in the operation.
-//
-// Only the behavior of C/C++ built-in types are taken into account
-// in the specializations provided below. For user-defined types,
-// these specializations may still be used provided that the
-// operator overloads of such types adhere to the standard behavior
-// of built-in types.
-//
-// T1 separate special_ops.hpp file implements more stl savvy
-// specializations. Other more specialized unary_operator
-// implementations may be defined by the client for specific
-// unary operator tags/data types.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename TagT, typename T>
-struct unary_operator;
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<negative_op, T> {
-
- typedef T const result_type;
- static result_type eval(T const& v)
- { return -v; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<positive_op, T> {
-
- typedef T const result_type;
- static result_type eval(T const& v)
- { return +v; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<logical_not_op, T> {
-
- typedef T const result_type;
- static result_type eval(T const& v)
- { return !v; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<invert_op, T> {
-
- typedef T const result_type;
- static result_type eval(T const& v)
- { return ~v; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<reference_op, T> {
-
- typedef T* result_type;
- static result_type eval(T& v)
- { return &v; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<dereference_op, T*> {
-
- typedef T& result_type;
- static result_type eval(T* v)
- { return *v; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<dereference_op, T* const> {
-
- typedef T& result_type;
- static result_type eval(T* const v)
- { return *v; }
-};
-
-//////////////////////////////////
-template <>
-struct unary_operator<dereference_op, nil_t> {
-
- // G++ eager template instantiation
- // somehow requires this.
- typedef nil_t result_type;
-};
-
-//////////////////////////////////
-#ifndef __BORLANDC__
-template <>
-struct unary_operator<dereference_op, nil_t const> {
-
- // G++ eager template instantiation
- // somehow requires this.
- typedef nil_t result_type;
-};
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_OPERATORS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_OPERATORS
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_operators.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_operators.hpp"
 #endif
 
-//////////////////////////////////
-template <typename T>
-struct unary_operator<pre_incr_op, T> {
-
- typedef T& result_type;
- static result_type eval(T& v)
- { return ++v; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<pre_decr_op, T> {
-
- typedef T& result_type;
- static result_type eval(T& v)
- { return --v; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<post_incr_op, T> {
-
- typedef T const result_type;
- static result_type eval(T& v)
- { T t(v); ++v; return t; }
-};
-
-//////////////////////////////////
-template <typename T>
-struct unary_operator<post_decr_op, T> {
-
- typedef T const result_type;
- static result_type eval(T& v)
- { T t(v); --v; return t; }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// rank<T>
-//
-// rank<T> class has a static int constant 'value' that defines the
-// absolute rank of a type. rank<T> is used to choose the result
-// type of binary operators such as +. The type with the higher
-// rank wins and is used as the operator's return type. T1 generic
-// user defined type has a very high rank and always wins when
-// compared against a user defined type. If this is not desireable,
-// one can write a rank specialization for the type.
-//
-// Take note that ranks 0..9999 are reserved for the framework.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-struct rank { static int const value = INT_MAX; };
-
-template <> struct rank<void> { static int const value = 0; };
-template <> struct rank<bool> { static int const value = 10; };
-
-template <> struct rank<char> { static int const value = 20; };
-template <> struct rank<signed char> { static int const value = 20; };
-template <> struct rank<unsigned char> { static int const value = 30; };
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-template <> struct rank<wchar_t> { static int const value = 40; };
-#endif // !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-
-template <> struct rank<short> { static int const value = 50; };
-template <> struct rank<unsigned short> { static int const value = 60; };
-
-template <> struct rank<int> { static int const value = 70; };
-template <> struct rank<unsigned int> { static int const value = 80; };
-
-template <> struct rank<long> { static int const value = 90; };
-template <> struct rank<unsigned long> { static int const value = 100; };
-
-#ifdef BOOST_HAS_LONG_LONG
-template <> struct rank< ::boost::long_long_type> { static int const value = 110; };
-template <> struct rank< ::boost::ulong_long_type> { static int const value = 120; };
-#endif
-
-template <> struct rank<float> { static int const value = 130; };
-template <> struct rank<double> { static int const value = 140; };
-template <> struct rank<long double> { static int const value = 150; };
-
-template <typename T> struct rank<T*>
-{ static int const value = 160; };
-
-template <typename T> struct rank<T* const>
-{ static int const value = 160; };
-
-template <typename T, int N> struct rank<T[N]>
-{ static int const value = 160; };
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// higher_rank<T0, T1>
-//
-// Chooses the type (T0 or T1) with the higher rank.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T0, typename T1>
-struct higher_rank {
- typedef typename boost::mpl::if_c<
- rank<T0>::value < rank<T1>::value,
- T1, T0>::type type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// binary_operator<TagT, T0, T1>
-//
-// The binary_operator class implements most of the C++ binary
-// operators. Each specialization is basically a simple static eval
-// function plus a result_type typedef that determines the return
-// type of the eval function.
-//
-// TagT is one of the binary operator tags above T0 and T1 are the
-// (arguments') data types involved in the operation.
-//
-// Only the behavior of C/C++ built-in types are taken into account
-// in the specializations provided below. For user-defined types,
-// these specializations may still be used provided that the
-// operator overloads of such types adhere to the standard behavior
-// of built-in types.
-//
-// T1 separate special_ops.hpp file implements more stl savvy
-// specializations. Other more specialized unary_operator
-// implementations may be defined by the client for specific
-// unary operator tags/data types.
-//
-// All binary_operator except the logical_and_op and logical_or_op
-// have an eval static function that carries out the actual operation.
-// The logical_and_op and logical_or_op d are special because these
-// two operators are short-circuit evaluated.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename TagT, typename T0, typename T1>
-struct binary_operator;
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs = rhs; }
-};
-
-//////////////////////////////////
-template <typename T1>
-struct binary_operator<index_op, nil_t, T1> {
-
- // G++ eager template instantiation
- // somehow requires this.
- typedef nil_t result_type;
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<index_op, T0*, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0* ptr, T1 const& index)
- { return ptr[index]; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<index_op, T0* const, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0* const ptr, T1 const& index)
- { return ptr[index]; }
-};
-
-//////////////////////////////////
-template <typename T0, int N, typename T1>
-struct binary_operator<index_op, T0[N], T1> {
-
- typedef T0& result_type;
- static result_type eval(T0* ptr, T1 const& index)
- { return ptr[index]; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<plus_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs += rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<minus_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs -= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<times_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs *= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<divide_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs /= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<mod_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs %= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<and_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs &= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<or_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs |= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<xor_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs ^= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<shift_l_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs <<= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<shift_r_assign_op, T0, T1> {
-
- typedef T0& result_type;
- static result_type eval(T0& lhs, T1 const& rhs)
- { return lhs >>= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<plus_op, T0, T1> {
-
- typedef typename higher_rank<T0, T1>::type const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs + rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<minus_op, T0, T1> {
-
- typedef typename higher_rank<T0, T1>::type const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs - rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<times_op, T0, T1> {
-
- typedef typename higher_rank<T0, T1>::type const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs * rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<divide_op, T0, T1> {
-
- typedef typename higher_rank<T0, T1>::type const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs / rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<mod_op, T0, T1> {
-
- typedef typename higher_rank<T0, T1>::type const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs % rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<and_op, T0, T1> {
-
- typedef typename higher_rank<T0, T1>::type const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs & rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<or_op, T0, T1> {
-
- typedef typename higher_rank<T0, T1>::type const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs | rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<xor_op, T0, T1> {
-
- typedef typename higher_rank<T0, T1>::type const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs ^ rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<shift_l_op, T0, T1> {
-
- typedef T0 const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs << rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<shift_r_op, T0, T1> {
-
- typedef T0 const result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs >> rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<eq_op, T0, T1> {
-
- typedef bool result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs == rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<not_eq_op, T0, T1> {
-
- typedef bool result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs != rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<lt_op, T0, T1> {
-
- typedef bool result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs < rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<lt_eq_op, T0, T1> {
-
- typedef bool result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs <= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<gt_op, T0, T1> {
-
- typedef bool result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs > rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<gt_eq_op, T0, T1> {
-
- typedef bool result_type;
- static result_type eval(T0 const& lhs, T1 const& rhs)
- { return lhs >= rhs; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<logical_and_op, T0, T1> {
-
- typedef bool result_type;
- // no eval function, see comment above.
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<logical_or_op, T0, T1> {
-
- typedef bool result_type;
- // no eval function, see comment above.
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// negative lazy operator (prefix -)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct negative_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<negative_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<negative_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<negative_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<negative_op, BaseT>::type
-operator-(actor<BaseT> const& _0)
-{
- return impl::make_unary<negative_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// positive lazy operator (prefix +)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct positive_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<positive_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<positive_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<positive_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<positive_op, BaseT>::type
-operator+(actor<BaseT> const& _0)
-{
- return impl::make_unary<positive_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// logical not lazy operator (prefix !)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct logical_not_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<logical_not_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<logical_not_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<logical_not_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<logical_not_op, BaseT>::type
-operator!(actor<BaseT> const& _0)
-{
- return impl::make_unary<logical_not_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// invert lazy operator (prefix ~)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct invert_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<invert_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<invert_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<invert_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<invert_op, BaseT>::type
-operator~(actor<BaseT> const& _0)
-{
- return impl::make_unary<invert_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// reference lazy operator (prefix &)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct reference_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<reference_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<reference_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<reference_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<reference_op, BaseT>::type
-operator&(actor<BaseT> const& _0)
-{
- return impl::make_unary<reference_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// dereference lazy operator (prefix *)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct dereference_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<dereference_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<dereference_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<dereference_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<dereference_op, BaseT>::type
-operator*(actor<BaseT> const& _0)
-{
- return impl::make_unary<dereference_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// pre increment lazy operator (prefix ++)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct pre_incr_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<pre_incr_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<pre_incr_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<pre_incr_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<pre_incr_op, BaseT>::type
-operator++(actor<BaseT> const& _0)
-{
- return impl::make_unary<pre_incr_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// pre decrement lazy operator (prefix --)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct pre_decr_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<pre_decr_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<pre_decr_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<pre_decr_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<pre_decr_op, BaseT>::type
-operator--(actor<BaseT> const& _0)
-{
- return impl::make_unary<pre_decr_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// post increment lazy operator (postfix ++)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct post_incr_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<post_incr_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<post_incr_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<post_incr_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<post_incr_op, BaseT>::type
-operator++(actor<BaseT> const& _0, int)
-{
- return impl::make_unary<post_incr_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// post decrement lazy operator (postfix --)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct post_decr_op {
-
- template <typename T0>
- struct result {
-
- typedef typename unary_operator<post_decr_op, T0>::result_type type;
- };
-
- template <typename T0>
- typename unary_operator<post_decr_op, T0>::result_type
- operator()(T0& _0) const
- { return unary_operator<post_decr_op, T0>::eval(_0); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_unary<post_decr_op, BaseT>::type
-operator--(actor<BaseT> const& _0, int)
-{
- return impl::make_unary<post_decr_op, BaseT>::construct(_0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// assignment lazy operator (infix =)
-// The acual lazy operator is a member of the actor class.
-//
-///////////////////////////////////////////////////////////////////////////////
-struct assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-template <typename B>
-inline typename impl::make_binary1<assign_op, BaseT, B>::type
-actor<BaseT>::operator=(B const& _1) const
-{
- return impl::make_binary1<assign_op, BaseT, B>::construct(*this, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// index lazy operator (array index [])
-// The acual lazy operator is a member of the actor class.
-//
-///////////////////////////////////////////////////////////////////////////////
-struct index_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<index_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<index_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<index_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-template <typename B>
-inline typename impl::make_binary1<index_op, BaseT, B>::type
-actor<BaseT>::operator[](B const& _1) const
-{
- return impl::make_binary1<index_op, BaseT, B>::construct(*this, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// plus assign lazy operator (infix +=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct plus_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<plus_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<plus_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<plus_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<plus_assign_op, BaseT, T1>::type
-operator+=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<plus_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// minus assign lazy operator (infix -=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct minus_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<minus_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<minus_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<minus_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<minus_assign_op, BaseT, T1>::type
-operator-=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<minus_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// times assign lazy operator (infix *=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct times_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<times_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<times_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<times_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<times_assign_op, BaseT, T1>::type
-operator*=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<times_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// divide assign lazy operator (infix /=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct divide_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<divide_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<divide_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<divide_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<divide_assign_op, BaseT, T1>::type
-operator/=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<divide_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// mod assign lazy operator (infix %=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct mod_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<mod_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<mod_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<mod_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<mod_assign_op, BaseT, T1>::type
-operator%=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<mod_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// and assign lazy operator (infix &=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct and_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<and_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<and_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<and_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<and_assign_op, BaseT, T1>::type
-operator&=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<and_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// or assign lazy operator (infix |=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct or_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<or_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<or_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<or_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<or_assign_op, BaseT, T1>::type
-operator|=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<or_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// xor assign lazy operator (infix ^=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct xor_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<xor_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<xor_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<xor_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<xor_assign_op, BaseT, T1>::type
-operator^=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<xor_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// shift left assign lazy operator (infix <<=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct shift_l_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<shift_l_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<shift_l_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<shift_l_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<shift_l_assign_op, BaseT, T1>::type
-operator<<=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<shift_l_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// shift right assign lazy operator (infix >>=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct shift_r_assign_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<shift_r_assign_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<shift_r_assign_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<shift_r_assign_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<shift_r_assign_op, BaseT, T1>::type
-operator>>=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<shift_r_assign_op, BaseT, T1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// plus lazy operator (infix +)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct plus_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<plus_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<plus_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<plus_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<plus_op, BaseT, T1>::type
-operator+(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<plus_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<plus_op, T0, BaseT>::type
-operator+(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<plus_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<plus_op, BaseT0, BaseT1>::type
-operator+(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<plus_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// minus lazy operator (infix -)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct minus_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<minus_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<minus_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<minus_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<minus_op, BaseT, T1>::type
-operator-(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<minus_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<minus_op, T0, BaseT>::type
-operator-(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<minus_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<minus_op, BaseT0, BaseT1>::type
-operator-(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<minus_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// times lazy operator (infix *)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct times_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<times_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<times_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<times_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<times_op, BaseT, T1>::type
-operator*(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<times_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<times_op, T0, BaseT>::type
-operator*(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<times_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<times_op, BaseT0, BaseT1>::type
-operator*(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<times_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// divide lazy operator (infix /)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct divide_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<divide_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<divide_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<divide_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<divide_op, BaseT, T1>::type
-operator/(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<divide_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<divide_op, T0, BaseT>::type
-operator/(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<divide_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<divide_op, BaseT0, BaseT1>::type
-operator/(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<divide_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// mod lazy operator (infix %)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct mod_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<mod_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<mod_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<mod_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<mod_op, BaseT, T1>::type
-operator%(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<mod_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<mod_op, T0, BaseT>::type
-operator%(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<mod_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<mod_op, BaseT0, BaseT1>::type
-operator%(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<mod_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// and lazy operator (infix &)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct and_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<and_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<and_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<and_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<and_op, BaseT, T1>::type
-operator&(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<and_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<and_op, T0, BaseT>::type
-operator&(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<and_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<and_op, BaseT0, BaseT1>::type
-operator&(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<and_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// or lazy operator (infix |)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct or_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<or_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<or_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<or_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<or_op, BaseT, T1>::type
-operator|(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<or_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<or_op, T0, BaseT>::type
-operator|(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<or_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<or_op, BaseT0, BaseT1>::type
-operator|(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<or_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// xor lazy operator (infix ^)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct xor_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<xor_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<xor_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<xor_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<xor_op, BaseT, T1>::type
-operator^(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<xor_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<xor_op, T0, BaseT>::type
-operator^(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<xor_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<xor_op, BaseT0, BaseT1>::type
-operator^(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<xor_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// shift left lazy operator (infix <<)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct shift_l_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<shift_l_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<shift_l_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<shift_l_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<shift_l_op, BaseT, T1>::type
-operator<<(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<shift_l_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<shift_l_op, T0, BaseT>::type
-operator<<(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<shift_l_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<shift_l_op, BaseT0, BaseT1>::type
-operator<<(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<shift_l_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// shift right lazy operator (infix >>)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct shift_r_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<shift_r_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<shift_r_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<shift_r_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<shift_r_op, BaseT, T1>::type
-operator>>(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<shift_r_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<shift_r_op, T0, BaseT>::type
-operator>>(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<shift_r_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<shift_r_op, BaseT0, BaseT1>::type
-operator>>(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<shift_r_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// equal lazy operator (infix ==)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct eq_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<eq_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<eq_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<eq_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<eq_op, BaseT, T1>::type
-operator==(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<eq_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<eq_op, T0, BaseT>::type
-operator==(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<eq_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<eq_op, BaseT0, BaseT1>::type
-operator==(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<eq_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// not equal lazy operator (infix !=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct not_eq_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<not_eq_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<not_eq_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<not_eq_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<not_eq_op, BaseT, T1>::type
-operator!=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<not_eq_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<not_eq_op, T0, BaseT>::type
-operator!=(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<not_eq_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<not_eq_op, BaseT0, BaseT1>::type
-operator!=(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<not_eq_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// less than lazy operator (infix <)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct lt_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<lt_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<lt_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<lt_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<lt_op, BaseT, T1>::type
-operator<(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<lt_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<lt_op, T0, BaseT>::type
-operator<(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<lt_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<lt_op, BaseT0, BaseT1>::type
-operator<(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<lt_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// less than equal lazy operator (infix <=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct lt_eq_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<lt_eq_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<lt_eq_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<lt_eq_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<lt_eq_op, BaseT, T1>::type
-operator<=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<lt_eq_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<lt_eq_op, T0, BaseT>::type
-operator<=(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<lt_eq_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<lt_eq_op, BaseT0, BaseT1>::type
-operator<=(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<lt_eq_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// greater than lazy operator (infix >)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct gt_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<gt_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<gt_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<gt_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<gt_op, BaseT, T1>::type
-operator>(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<gt_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<gt_op, T0, BaseT>::type
-operator>(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<gt_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<gt_op, BaseT0, BaseT1>::type
-operator>(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<gt_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// greater than equal lazy operator (infix >=)
-//
-///////////////////////////////////////////////////////////////////////////////
-struct gt_eq_op {
-
- template <typename T0, typename T1>
- struct result {
-
- typedef typename binary_operator<gt_eq_op, T0, T1>
- ::result_type type;
- };
-
- template <typename T0, typename T1>
- typename binary_operator<gt_eq_op, T0, T1>::result_type
- operator()(T0& _0, T1& _1) const
- { return binary_operator<gt_eq_op, T0, T1>::eval(_0, _1); }
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline typename impl::make_binary1<gt_eq_op, BaseT, T1>::type
-operator>=(actor<BaseT> const& _0, T1 CREF _1)
-{
- return impl::make_binary1<gt_eq_op, BaseT, T1>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline typename impl::make_binary2<gt_eq_op, T0, BaseT>::type
-operator>=(T0 CREF _0, actor<BaseT> const& _1)
-{
- return impl::make_binary2<gt_eq_op, T0, BaseT>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline typename impl::make_binary3<gt_eq_op, BaseT0, BaseT1>::type
-operator>=(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return impl::make_binary3<gt_eq_op, BaseT0, BaseT1>::construct(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// logical and lazy operator (infix &&)
-//
-// The logical_and_composite class and its corresponding generators are
-// provided to allow short-circuit evaluation of the operator's
-// operands.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A0, typename A1>
-struct logical_and_composite {
-
- typedef logical_and_composite<A0, A1> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename binary_operator<logical_and_op,
- typename actor_result<A0, TupleT>::plain_type,
- typename actor_result<A1, TupleT>::plain_type
- >::result_type type;
- };
-
- logical_and_composite(A0 const& _0, A1 const& _1)
- : a0(_0), a1(_1) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- return a0.eval(args) && a1.eval(args);
- }
-
- A0 a0; A1 a1; // actors
-};
-
-#if !(defined(__ICL) && __ICL <= 500)
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline actor<logical_and_composite
-<actor<BaseT>, typename as_actor<T1>::type> >
-operator&&(actor<BaseT> const& _0, T1 CREF _1)
-{
- return logical_and_composite
- <actor<BaseT>, typename as_actor<T1>::type>
- (_0, as_actor<T1>::convert(_1));
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline actor<logical_and_composite
-<typename as_actor<T0>::type, actor<BaseT> > >
-operator&&(T0 CREF _0, actor<BaseT> const& _1)
-{
- return logical_and_composite
- <typename as_actor<T0>::type, actor<BaseT> >
- (as_actor<T0>::convert(_0), _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline actor<logical_and_composite
-<actor<BaseT0>, actor<BaseT1> > >
-operator&&(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return logical_and_composite
- <actor<BaseT0>, actor<BaseT1> >
- (_0, _1);
-}
-#else
-//////////////////////////////////
-template <typename T0, typename T1>
-inline actor<logical_and_composite
-<typename as_actor<T0>::type, typename as_actor<T1>::type> >
-operator&&(T0 CREF _0, T1 CREF _1)
-{
- return logical_and_composite
- <typename as_actor<T0>::type, typename as_actor<T1>::type>
- (as_actor<T0>::convert(_0), as_actor<T1>::convert(_1));
-}
-#endif // !(__ICL && __ICL <= 500)
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// logical or lazy operator (infix ||)
-//
-// The logical_or_composite class and its corresponding generators are
-// provided to allow short-circuit evaluation of the operator's
-// operands.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A0, typename A1>
-struct logical_or_composite {
-
- typedef logical_or_composite<A0, A1> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef typename binary_operator<logical_or_op,
- typename actor_result<A0, TupleT>::plain_type,
- typename actor_result<A1, TupleT>::plain_type
- >::result_type type;
- };
-
- logical_or_composite(A0 const& _0, A1 const& _1)
- : a0(_0), a1(_1) {}
-
- template <typename TupleT>
- typename actor_result<self_t, TupleT>::type
- eval(TupleT const& args) const
- {
- return a0.eval(args) || a1.eval(args);
- }
-
- A0 a0; A1 a1; // actors
-};
-
-//////////////////////////////////
-template <typename BaseT, typename T1>
-inline actor<logical_or_composite
-<actor<BaseT>, typename as_actor<T1>::type> >
-operator||(actor<BaseT> const& _0, T1 CREF _1)
-{
- return logical_or_composite
- <actor<BaseT>, typename as_actor<T1>::type>
- (_0, as_actor<T1>::convert(_1));
-}
-
-//////////////////////////////////
-template <typename T0, typename BaseT>
-inline actor<logical_or_composite
-<typename as_actor<T0>::type, actor<BaseT> > >
-operator||(T0 CREF _0, actor<BaseT> const& _1)
-{
- return logical_or_composite
- <typename as_actor<T0>::type, actor<BaseT> >
- (as_actor<T0>::convert(_0), _1);
-}
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline actor<logical_or_composite
-<actor<BaseT0>, actor<BaseT1> > >
-operator||(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return logical_or_composite
- <actor<BaseT0>, actor<BaseT1> >
- (_0, _1);
-}
-
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_operators.hpp>
 
-#undef CREF
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/primitives.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/primitives.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/primitives.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,248 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_PRIMITIVES_HPP
-#define PHOENIX_PRIMITIVES_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/actor.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// argument class
-//
-// Lazy arguments
-//
-// An actor base class that extracts and returns the Nth argument
-// from the argument list passed in the 'args' tuple in the eval
-// member function (see actor.hpp). There are some predefined
-// argument constants that can be used as actors (arg1..argN).
-//
-// The argument actor is a place-holder for the actual arguments
-// passed by the client. For example, wherever arg1 is seen placed
-// in a lazy function (see functions.hpp) or lazy operator (see
-// operators.hpp), this will be replaced by the actual first
-// argument in the actual function evaluation. Argument actors are
-// essentially lazy arguments. A lazy argument is a full actor in
-// its own right and can be evaluated through the actor's operator().
-//
-// Example:
-//
-// char c = 'A';
-// int i = 123;
-// const char* s = "Hello World";
-//
-// cout << arg1(c) << ' ';
-// cout << arg1(i, s) << ' ';
-// cout << arg2(i, s) << ' ';
-//
-// will print out "A 123 Hello World"
-//
-///////////////////////////////////////////////////////////////////////////////
-template <int N>
-struct argument {
-
- template <typename TupleT>
- struct result { typedef typename tuple_element<N, TupleT>::type type; };
-
- template <typename TupleT>
- typename tuple_element<N, TupleT>::type
- eval(TupleT const& args) const
- {
- return args[tuple_index<N>()];
- }
-};
-
-//////////////////////////////////
-actor<argument<0> > const arg1 = argument<0>();
-actor<argument<1> > const arg2 = argument<1>();
-actor<argument<2> > const arg3 = argument<2>();
-
-#if PHOENIX_LIMIT > 3
-actor<argument<3> > const arg4 = argument<3>();
-actor<argument<4> > const arg5 = argument<4>();
-actor<argument<5> > const arg6 = argument<5>();
-
-#if PHOENIX_LIMIT > 6
-actor<argument<6> > const arg7 = argument<6>();
-actor<argument<7> > const arg8 = argument<7>();
-actor<argument<8> > const arg9 = argument<8>();
-
-#if PHOENIX_LIMIT > 9
-actor<argument<9> > const arg10 = argument<9>();
-actor<argument<10> > const arg11 = argument<10>();
-actor<argument<11> > const arg12 = argument<11>();
-
-#if PHOENIX_LIMIT > 12
-actor<argument<12> > const arg13 = argument<12>();
-actor<argument<13> > const arg14 = argument<13>();
-actor<argument<14> > const arg15 = argument<14>();
-
-#endif
-#endif
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PRIMITIVES
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PRIMITIVES
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_primitives.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_primitives.hpp"
 #endif
-#endif
-///////////////////////////////////////////////////////////////////////////////
-//
-// value class
-//
-// Lazy values
-//
-// A bound actual parameter is kept in a value class for deferred
-// access later when needed. A value object is immutable. Value
-// objects are typically created through the val(x) free function
-// which returns a value<T> with T deduced from the type of x. x is
-// held in the value<T> object by value.
-//
-// Lazy values are actors. As such, lazy values can be evaluated
-// through the actor's operator(). Such invocation gives the value's
-// identity. Example:
-//
-// cout << val(3)() << val("Hello World")();
-//
-// prints out "3 Hello World"
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-struct value {
-
- typedef typename boost::remove_reference<T>::type plain_t;
-
- template <typename TupleT>
- struct result { typedef plain_t const type; };
-
- value(plain_t val_)
- : val(val_) {}
-
- template <typename TupleT>
- plain_t const
- eval(TupleT const& /*args*/) const
- {
- return val;
- }
-
- plain_t val;
-};
-
-//////////////////////////////////
-template <typename T>
-inline actor<value<T> > const
-val(T v)
-{
- return value<T>(v);
-}
-
-//////////////////////////////////
-template <typename BaseT>
-void
-val(actor<BaseT> const& v); // This is undefined and not allowed.
-
-///////////////////////////////////////////////////////////////////////////
-//
-// Arbitrary types T are typically converted to a actor<value<T> >
-// (see as_actor<T> in actor.hpp). A specialization is also provided
-// for arrays. T[N] arrays are converted to actor<value<T const*> >.
-//
-///////////////////////////////////////////////////////////////////////////
-template <typename T>
-struct as_actor {
-
- typedef actor<value<T> > type;
- static type convert(T const& x)
- { return value<T>(x); }
-};
-
-//////////////////////////////////
-template <typename T, int N>
-struct as_actor<T[N]> {
-
- typedef actor<value<T const*> > type;
- static type convert(T const x[N])
- { return value<T const*>(x); }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// variable class
-//
-// Lazy variables
-//
-// A bound actual parameter may also be held by non-const reference
-// in a variable class for deferred access later when needed. A
-// variable object is mutable, i.e. its referenced variable can be
-// modified. Variable objects are typically created through the
-// var(x) free function which returns a variable<T> with T deduced
-// from the type of x. x is held in the value<T> object by
-// reference.
-//
-// Lazy variables are actors. As such, lazy variables can be
-// evaluated through the actor's operator(). Such invocation gives
-// the variables's identity. Example:
-//
-// int i = 3;
-// char const* s = "Hello World";
-// cout << var(i)() << var(s)();
-//
-// prints out "3 Hello World"
-//
-// Another free function const_(x) may also be used. const_(x) creates
-// a variable<T const&> object using a constant reference.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-struct variable {
-
- template <typename TupleT>
- struct result { typedef T& type; };
-
- variable(T& var_)
- : var(var_) {}
-
- template <typename TupleT>
- T&
- eval(TupleT const& /*args*/) const
- {
- return var;
- }
-
- T& var;
-};
-
-//////////////////////////////////
-template <typename T>
-inline actor<variable<T> > const
-var(T& v)
-{
- return variable<T>(v);
-}
-
-//////////////////////////////////
-template <typename T>
-inline actor<variable<T const> > const
-const_(T const& v)
-{
- return variable<T const>(v);
-}
-
-//////////////////////////////////
-template <typename BaseT>
-void
-var(actor<BaseT> const& v); // This is undefined and not allowed.
-
-//////////////////////////////////
-template <typename BaseT>
-void
-const_(actor<BaseT> const& v); // This is undefined and not allowed.
 
-///////////////////////////////////////////////////////////////////////////////
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_primitives.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/special_ops.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/special_ops.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/special_ops.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,342 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_SPECIAL_OPS_HPP
-#define PHOENIX_SPECIAL_OPS_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_NO_STRINGSTREAM
-#include <strstream>
-#define PHOENIX_SSTREAM strstream
-#else
-#include <sstream>
-#define PHOENIX_SSTREAM stringstream
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/operators.hpp>
-#include <iosfwd>
-
-///////////////////////////////////////////////////////////////////////////////
-#if defined(_STLPORT_VERSION) && defined(__STL_USE_OWN_NAMESPACE)
-#define PHOENIX_STD _STLP_STD
-#define PHOENIX_NO_STD_NAMESPACE
-#else
-#define PHOENIX_STD std
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-//#if !defined(PHOENIX_NO_STD_NAMESPACE)
-namespace PHOENIX_STD
-{
-//#endif
-
- template<typename T> class complex;
-
-//#if !defined(PHOENIX_NO_STD_NAMESPACE)
-}
-//#endif
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix
-{
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The following specializations take into account the C++ standard
-// library components. There are a couple of issues that have to be
-// dealt with to enable lazy operator overloads for the standard
-// library classes.
-//
-// *iostream (e.g. cout, cin, strstream/ stringstream) uses non-
-// canonical shift operator overloads where the lhs is taken in
-// by reference.
-//
-// *I/O manipulators overloads for the RHS of the << and >>
-// operators.
-//
-// *STL iterators can be objects that conform to pointer semantics.
-// Some operators need to be specialized for these.
-//
-// *std::complex is given a rank (see rank class in operators.hpp)
-//
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// specialization for rank<std::complex>
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T> struct rank<PHOENIX_STD::complex<T> >
-{ static int const value = 170 + rank<T>::value; };
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// specializations for std::istream
-//
-///////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUC__) && (__GNUC__ < 3)
- #if defined(_STLPORT_VERSION)
- #define PHOENIX_ISTREAM _IO_istream_withassign
- #else
- #define PHOENIX_ISTREAM PHOENIX_STD::_IO_istream_withassign
- #endif
-#else
-// #if (defined(__ICL) && defined(_STLPORT_VERSION))
-// #define PHOENIX_ISTREAM istream_withassign
-// #else
- #define PHOENIX_ISTREAM PHOENIX_STD::istream
-// #endif
-#endif
-
-//////////////////////////////////
-#if defined(__GNUC__) && (__GNUC__ < 3)
-// || (defined(__ICL) && defined(_STLPORT_VERSION))
-template <typename T1>
-struct binary_operator<shift_r_op, PHOENIX_ISTREAM, T1>
-{
- typedef PHOENIX_STD::istream& result_type;
- static result_type eval(PHOENIX_STD::istream& out, T1& rhs)
- { return out >> rhs; }
-};
-#endif
-
-//////////////////////////////////
-template <typename T1>
-struct binary_operator<shift_r_op, PHOENIX_STD::istream, T1>
-{
- typedef PHOENIX_STD::istream& result_type;
- static result_type eval(PHOENIX_STD::istream& out, T1& rhs)
- { return out >> rhs; }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_binary3
- <shift_r_op, variable<PHOENIX_ISTREAM>, BaseT>::type
-operator>>(PHOENIX_ISTREAM& _0, actor<BaseT> const& _1)
-{
- return impl::make_binary3
- <shift_r_op, variable<PHOENIX_ISTREAM>, BaseT>
- ::construct(var(_0), _1);
-}
-
-#undef PHOENIX_ISTREAM
-///////////////////////////////////////////////////////////////////////////////
-//
-// specializations for std::ostream
-//
-///////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUC__) && (__GNUC__ < 3)
- #if defined(_STLPORT_VERSION)
- #define PHOENIX_OSTREAM _IO_ostream_withassign
- #else
- #define PHOENIX_OSTREAM PHOENIX_STD::_IO_ostream_withassign
- #endif
-#else
-// #if (defined(__ICL) && defined(_STLPORT_VERSION))
-// #define PHOENIX_OSTREAM ostream_withassign
-// #else
- #define PHOENIX_OSTREAM PHOENIX_STD::ostream
-// #endif
-#endif
-
-//////////////////////////////////
-#if defined(__GNUC__) && (__GNUC__ < 3)
-// || (defined(__ICL) && defined(_STLPORT_VERSION))
-template <typename T1>
-struct binary_operator<shift_l_op, PHOENIX_OSTREAM, T1>
-{
- typedef PHOENIX_STD::ostream& result_type;
- static result_type eval(PHOENIX_STD::ostream& out, T1 const& rhs)
- { return out << rhs; }
-};
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SPECIAL_OPS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SPECIAL_OPS
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_special_ops.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_special_ops.hpp"
 #endif
 
-//////////////////////////////////
-template <typename T1>
-struct binary_operator<shift_l_op, PHOENIX_STD::ostream, T1>
-{
- typedef PHOENIX_STD::ostream& result_type;
- static result_type eval(PHOENIX_STD::ostream& out, T1 const& rhs)
- { return out << rhs; }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_binary3
- <shift_l_op, variable<PHOENIX_OSTREAM>, BaseT>::type
-operator<<(PHOENIX_OSTREAM& _0, actor<BaseT> const& _1)
-{
- return impl::make_binary3
- <shift_l_op, variable<PHOENIX_OSTREAM>, BaseT>
- ::construct(var(_0), _1);
-}
-
-#undef PHOENIX_OSTREAM
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// specializations for std::strstream / stringstream
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T1>
-struct binary_operator<shift_r_op, PHOENIX_STD::PHOENIX_SSTREAM, T1>
-{
- typedef PHOENIX_STD::istream& result_type;
- static result_type eval(PHOENIX_STD::istream& out, T1& rhs)
- { return out >> rhs; }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_binary3
- <shift_r_op, variable<PHOENIX_STD::PHOENIX_SSTREAM>, BaseT>::type
-operator>>(PHOENIX_STD::PHOENIX_SSTREAM& _0, actor<BaseT> const& _1)
-{
- return impl::make_binary3
- <shift_r_op, variable<PHOENIX_STD::PHOENIX_SSTREAM>, BaseT>
- ::construct(var(_0), _1);
-}
-
-//////////////////////////////////
-template <typename T1>
-struct binary_operator<shift_l_op, PHOENIX_STD::PHOENIX_SSTREAM, T1>
-{
- typedef PHOENIX_STD::ostream& result_type;
- static result_type eval(PHOENIX_STD::ostream& out, T1 const& rhs)
- { return out << rhs; }
-};
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_binary3
- <shift_l_op, variable<PHOENIX_STD::PHOENIX_SSTREAM>, BaseT>::type
-operator<<(PHOENIX_STD::PHOENIX_SSTREAM& _0, actor<BaseT> const& _1)
-{
- return impl::make_binary3
- <shift_l_op, variable<PHOENIX_STD::PHOENIX_SSTREAM>, BaseT>
- ::construct(var(_0), _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// I/O manipulator specializations
-//
-///////////////////////////////////////////////////////////////////////////////
-#if (!defined(__GNUC__) || (__GNUC__ > 2))
-// && !(defined(__ICL) && defined(_STLPORT_VERSION))
-
-typedef PHOENIX_STD::ios_base& (*iomanip_t)(PHOENIX_STD::ios_base&);
-typedef PHOENIX_STD::istream& (*imanip_t)(PHOENIX_STD::istream&);
-typedef PHOENIX_STD::ostream& (*omanip_t)(PHOENIX_STD::ostream&);
-
-#if defined(__BORLANDC__)
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Borland does not like i/o manipulators functions such as endl to
-// be the rhs of a lazy << operator (Borland incorrectly reports
-// ambiguity). To get around the problem, we provide function
-// pointer versions of the same name with a single trailing
-// underscore.
-//
-// You can use the same trick for other i/o manipulators.
-// Alternatively, you can prefix the manipulator with a '&'
-// operator. Example:
-//
-// cout << arg1 << &endl
-//
-///////////////////////////////////////////////////////////////////////////////
-
-imanip_t ws_ = &PHOENIX_STD::ws;
-iomanip_t dec_ = &PHOENIX_STD::dec;
-iomanip_t hex_ = &PHOENIX_STD::hex;
-iomanip_t oct_ = &PHOENIX_STD::oct;
-omanip_t endl_ = &PHOENIX_STD::endl;
-omanip_t ends_ = &PHOENIX_STD::ends;
-omanip_t flush_ = &PHOENIX_STD::flush;
-
-#else // __BORLANDC__
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The following are overloads for I/O manipulators.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_binary1<shift_l_op, BaseT, imanip_t>::type
-operator>>(actor<BaseT> const& _0, imanip_t _1)
-{
- return impl::make_binary1<shift_l_op, BaseT, imanip_t>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_binary1<shift_l_op, BaseT, iomanip_t>::type
-operator>>(actor<BaseT> const& _0, iomanip_t _1)
-{
- return impl::make_binary1<shift_l_op, BaseT, iomanip_t>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_binary1<shift_l_op, BaseT, omanip_t>::type
-operator<<(actor<BaseT> const& _0, omanip_t _1)
-{
- return impl::make_binary1<shift_l_op, BaseT, omanip_t>::construct(_0, _1);
-}
-
-//////////////////////////////////
-template <typename BaseT>
-inline typename impl::make_binary1<shift_l_op, BaseT, iomanip_t>::type
-operator<<(actor<BaseT> const& _0, iomanip_t _1)
-{
- return impl::make_binary1<shift_l_op, BaseT, iomanip_t>::construct(_0, _1);
-}
-
-#endif // __BORLANDC__
-#endif // !defined(__GNUC__) || (__GNUC__ > 2)
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// specializations for stl iterators and containers
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-struct unary_operator<dereference_op, T>
-{
- typedef typename T::reference result_type;
- static result_type eval(T const& iter)
- { return *iter; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<index_op, T0, T1>
-{
- typedef typename T0::reference result_type;
- static result_type eval(T0& container, T1 const& index)
- { return container[index]; }
-};
-
-//////////////////////////////////
-template <typename T0, typename T1>
-struct binary_operator<index_op, T0 const, T1>
-{
- typedef typename T0::const_reference result_type;
- static result_type eval(T0 const& container, T1 const& index)
- { return container[index]; }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_special_ops.hpp>
 
-#undef PHOENIX_SSTREAM
-#undef PHOENIX_STD
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/statements.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/statements.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/statements.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,444 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_STATEMENTS_HPP
-#define PHOENIX_STATEMENTS_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/phoenix/composite.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// sequential_composite
-//
-// Two or more actors separated by the comma generates a
-// sequential_composite which is a composite actor. Example:
-//
-// actor,
-// actor,
-// actor
-//
-// The actors are evaluated sequentially. The result type of this
-// is void. Note that the last actor should not have a trailing
-// comma.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A0, typename A1>
-struct sequential_composite {
-
- typedef sequential_composite<A0, A1> self_t;
-
- template <typename TupleT>
- struct result { typedef void type; };
-
- sequential_composite(A0 const& _0, A1 const& _1)
- : a0(_0), a1(_1) {}
-
- template <typename TupleT>
- void
- eval(TupleT const& args) const
- {
- a0.eval(args);
- a1.eval(args);
- }
-
- A0 a0; A1 a1; // actors
-};
-
-//////////////////////////////////
-template <typename BaseT0, typename BaseT1>
-inline actor<sequential_composite<actor<BaseT0>, actor<BaseT1> > >
-operator,(actor<BaseT0> const& _0, actor<BaseT1> const& _1)
-{
- return sequential_composite<actor<BaseT0>, actor<BaseT1> >(_0, _1);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// if_then_else_composite
-//
-// This composite has two (2) forms:
-//
-// if_(condition)
-// [
-// statement
-// ]
-//
-// and
-//
-// if_(condition)
-// [
-// true_statement
-// ]
-// .else_
-// [
-// false_statement
-// ]
-//
-// where condition is an actor that evaluates to bool. If condition
-// is true, the true_statement (again an actor) is executed
-// otherwise, the false_statement (another actor) is executed. The
-// result type of this is void. Note the trailing underscore after
-// if_ and the the leading dot and the trailing underscore before
-// and after .else_.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CondT, typename ThenT, typename ElseT>
-struct if_then_else_composite {
-
- typedef if_then_else_composite<CondT, ThenT, ElseT> self_t;
-
- template <typename TupleT>
- struct result {
-
- typedef void type;
- };
-
- if_then_else_composite(
- CondT const& cond_,
- ThenT const& then_,
- ElseT const& else__)
- : cond(cond_), then(then_), else_(else__) {}
-
- template <typename TupleT>
- void eval(TupleT const& args) const
- {
- if (cond.eval(args))
- then.eval(args);
- else
- else_.eval(args);
- }
-
- CondT cond; ThenT then; ElseT else_; // actors
-};
-
-//////////////////////////////////
-template <typename CondT, typename ThenT>
-struct else_gen {
-
- else_gen(CondT const& cond_, ThenT const& then_)
- : cond(cond_), then(then_) {}
-
- template <typename ElseT>
- actor<if_then_else_composite<CondT, ThenT,
- typename as_actor<ElseT>::type> >
- operator[](ElseT const& else_)
- {
- typedef if_then_else_composite<CondT, ThenT,
- typename as_actor<ElseT>::type>
- result;
-
- return result(cond, then, as_actor<ElseT>::convert(else_));
- }
-
- CondT cond; ThenT then;
-};
-
-//////////////////////////////////
-template <typename CondT, typename ThenT>
-struct if_then_composite {
-
- typedef if_then_composite<CondT, ThenT> self_t;
-
- template <typename TupleT>
- struct result { typedef void type; };
-
- if_then_composite(CondT const& cond_, ThenT const& then_)
- : cond(cond_), then(then_), else_(cond, then) {}
-
- template <typename TupleT>
- void eval(TupleT const& args) const
- {
- if (cond.eval(args))
- then.eval(args);
- }
-
- CondT cond; ThenT then; // actors
- else_gen<CondT, ThenT> else_;
-};
-
-//////////////////////////////////
-template <typename CondT>
-struct if_gen {
-
- if_gen(CondT const& cond_)
- : cond(cond_) {}
-
- template <typename ThenT>
- actor<if_then_composite<
- typename as_actor<CondT>::type,
- typename as_actor<ThenT>::type> >
- operator[](ThenT const& then) const
- {
- typedef if_then_composite<
- typename as_actor<CondT>::type,
- typename as_actor<ThenT>::type>
- result;
-
- return result(
- as_actor<CondT>::convert(cond),
- as_actor<ThenT>::convert(then));
- }
-
- CondT cond;
-};
-
-//////////////////////////////////
-template <typename CondT>
-inline if_gen<CondT>
-if_(CondT const& cond)
-{
- return if_gen<CondT>(cond);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// while_composite
-//
-// This composite has the form:
-//
-// while_(condition)
-// [
-// statement
-// ]
-//
-// While the condition (an actor) evaluates to true, statement
-// (another actor) is executed. The result type of this is void.
-// Note the trailing underscore after while_.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CondT, typename DoT>
-struct while_composite {
-
- typedef while_composite<CondT, DoT> self_t;
-
- template <typename TupleT>
- struct result { typedef void type; };
-
- while_composite(CondT const& cond_, DoT const& do__)
- : cond(cond_), do_(do__) {}
-
- template <typename TupleT>
- void eval(TupleT const& args) const
- {
- while (cond.eval(args))
- do_.eval(args);
- }
-
- CondT cond;
- DoT do_;
-};
-
-//////////////////////////////////
-template <typename CondT>
-struct while_gen {
-
- while_gen(CondT const& cond_)
- : cond(cond_) {}
-
- template <typename DoT>
- actor<while_composite<
- typename as_actor<CondT>::type,
- typename as_actor<DoT>::type> >
- operator[](DoT const& do_) const
- {
- typedef while_composite<
- typename as_actor<CondT>::type,
- typename as_actor<DoT>::type>
- result;
-
- return result(
- as_actor<CondT>::convert(cond),
- as_actor<DoT>::convert(do_));
- }
-
- CondT cond;
-};
-
-//////////////////////////////////
-template <typename CondT>
-inline while_gen<CondT>
-while_(CondT const& cond)
-{
- return while_gen<CondT>(cond);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// do_composite
-//
-// This composite has the form:
-//
-// do_
-// [
-// statement
-// ]
-// .while_(condition)
-//
-// While the condition (an actor) evaluates to true, statement
-// (another actor) is executed. The statement is executed at least
-// once. The result type of this is void. Note the trailing
-// underscore after do_ and the the leading dot and the trailing
-// underscore before and after .while_.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename DoT, typename CondT>
-struct do_composite {
-
- typedef do_composite<DoT, CondT> self_t;
-
- template <typename TupleT>
- struct result { typedef void type; };
-
- do_composite(DoT const& do__, CondT const& cond_)
- : do_(do__), cond(cond_) {}
-
- template <typename TupleT>
- void eval(TupleT const& args) const
- {
- do
- do_.eval(args);
- while (cond.eval(args));
- }
-
- DoT do_;
- CondT cond;
-};
-
-////////////////////////////////////
-template <typename DoT>
-struct do_gen2 {
-
- do_gen2(DoT const& do__)
- : do_(do__) {}
-
- template <typename CondT>
- actor<do_composite<
- typename as_actor<DoT>::type,
- typename as_actor<CondT>::type> >
- while_(CondT const& cond) const
- {
- typedef do_composite<
- typename as_actor<DoT>::type,
- typename as_actor<CondT>::type>
- result;
-
- return result(
- as_actor<DoT>::convert(do_),
- as_actor<CondT>::convert(cond));
- }
-
- DoT do_;
-};
-
-////////////////////////////////////
-struct do_gen {
-
- template <typename DoT>
- do_gen2<DoT>
- operator[](DoT const& do_) const
- {
- return do_gen2<DoT>(do_);
- }
-};
-
-do_gen const do_ = do_gen();
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// for_composite
-//
-// This statement has the form:
-//
-// for_(init, condition, step)
-// [
-// statement
-// ]
-//
-// Where init, condition, step and statement are all actors. init
-// is executed once before entering the for-loop. The for-loop
-// exits once condition evaluates to false. At each loop iteration,
-// step and statement is called. The result of this statement is
-// void. Note the trailing underscore after for_.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename InitT, typename CondT, typename StepT, typename DoT>
-struct for_composite {
-
- typedef composite<InitT, CondT, StepT, DoT> self_t;
-
- template <typename TupleT>
- struct result { typedef void type; };
-
- for_composite(
- InitT const& init_,
- CondT const& cond_,
- StepT const& step_,
- DoT const& do__)
- : init(init_), cond(cond_), step(step_), do_(do__) {}
-
- template <typename TupleT>
- void
- eval(TupleT const& args) const
- {
- for (init.eval(args); cond.eval(args); step.eval(args))
- do_.eval(args);
- }
-
- InitT init; CondT cond; StepT step; DoT do_; // actors
-};
-
-//////////////////////////////////
-template <typename InitT, typename CondT, typename StepT>
-struct for_gen {
-
- for_gen(
- InitT const& init_,
- CondT const& cond_,
- StepT const& step_)
- : init(init_), cond(cond_), step(step_) {}
-
- template <typename DoT>
- actor<for_composite<
- typename as_actor<InitT>::type,
- typename as_actor<CondT>::type,
- typename as_actor<StepT>::type,
- typename as_actor<DoT>::type> >
- operator[](DoT const& do_) const
- {
- typedef for_composite<
- typename as_actor<InitT>::type,
- typename as_actor<CondT>::type,
- typename as_actor<StepT>::type,
- typename as_actor<DoT>::type>
- result;
-
- return result(
- as_actor<InitT>::convert(init),
- as_actor<CondT>::convert(cond),
- as_actor<StepT>::convert(step),
- as_actor<DoT>::convert(do_));
- }
-
- InitT init; CondT cond; StepT step;
-};
-
-//////////////////////////////////
-template <typename InitT, typename CondT, typename StepT>
-inline for_gen<InitT, CondT, StepT>
-for_(InitT const& init, CondT const& cond, StepT const& step)
-{
- return for_gen<InitT, CondT, StepT>(init, cond, step);
-}
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_STATEMENTS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_STATEMENTS
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_statements.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_statements.hpp"
+#endif
 
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_statements.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/phoenix/tuple_helpers.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/tuple_helpers.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/tuple_helpers.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1076 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2002 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_TUPLEHELPERS_HPP
-#define PHOENIX_TUPLEHELPERS_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#include <cassert>
-#include <boost/spirit/phoenix/tuples.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix
-{
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// make_tuple template class
-//
-// This template class is used to calculate a tuple type required to hold
-// the given template parameter type
-//
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-// normal (non-tuple types are wrapped into a tuple)
-template <typename ResultT>
-struct make_tuple {
-
- typedef tuple<ResultT> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// nil_t is converted to an empty tuple type
-template <>
-struct make_tuple<nil_t> {
-
- typedef tuple<> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// tuple types are left alone without any refactoring
-template <
- typename A, typename B, typename C
-#if PHOENIX_LIMIT > 3
- , typename D, typename E, typename F
-#if PHOENIX_LIMIT > 6
- , typename G, typename H, typename I
-#if PHOENIX_LIMIT > 9
- , typename J, typename K, typename L
-#if PHOENIX_LIMIT > 12
- , typename M, typename N, typename O
-#endif
-#endif
-#endif
-#endif
->
-struct make_tuple<tuple<A, B, C
-#if PHOENIX_LIMIT > 3
- , D, E, F
-#if PHOENIX_LIMIT > 6
- , G, H, I
-#if PHOENIX_LIMIT > 9
- , J, K, L
-#if PHOENIX_LIMIT > 12
- , M, N, O
-#endif
-#endif
-#endif
-#endif
- > > {
-
-// the tuple parameter itself is the required tuple type
- typedef tuple<A, B, C
-#if PHOENIX_LIMIT > 3
- , D, E, F
-#if PHOENIX_LIMIT > 6
- , G, H, I
-#if PHOENIX_LIMIT > 9
- , J, K, L
-#if PHOENIX_LIMIT > 12
- , M, N, O
-#endif
-#endif
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TUPLE_HELPERS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TUPLE_HELPERS
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_tuple_helpers.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_tuple_helpers.hpp"
 #endif
-#endif
- > type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat_tuple type computer
-//
-// This class returns the type of a tuple, which is constructed by
-// concatenating a tuple with a given type
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename TupleT, typename AppendT>
-struct concat_tuple;
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <0 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename AppendT>
-struct concat_tuple<tuple<>, AppendT> {
-
- typedef tuple<AppendT> type;
-};
-
-template <>
-struct concat_tuple<tuple<>, nil_t> {
-
- typedef tuple<> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <1 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A, typename AppendT>
-struct concat_tuple<tuple<A>, AppendT> {
-
- typedef tuple<A, AppendT> type;
-};
-
-template <typename A>
-struct concat_tuple<tuple<A>, nil_t> {
-
- typedef tuple<A> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <2 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A, typename B, typename AppendT>
-struct concat_tuple<tuple<A, B>, AppendT> {
-
- typedef tuple<A, B, AppendT> type;
-};
-
-template <typename A, typename B>
-struct concat_tuple<tuple<A, B>, nil_t> {
-
- typedef tuple<A, B> type;
-};
-
-#if PHOENIX_LIMIT > 3
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <3 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C>, AppendT> {
-
- typedef tuple<A, B, C, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C
->
-struct concat_tuple<tuple<A, B, C>, nil_t> {
-
- typedef tuple<A, B, C> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <4 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D>, AppendT> {
-
- typedef tuple<A, B, C, D, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D
->
-struct concat_tuple<tuple<A, B, C, D>, nil_t> {
-
- typedef tuple<A, B, C, D> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <5 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E>, AppendT> {
-
- typedef tuple<A, B, C, D, E, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E
->
-struct concat_tuple<tuple<A, B, C, D, E>, nil_t> {
-
- typedef tuple<A, B, C, D, E> type;
-};
-
-#if PHOENIX_LIMIT > 6
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <6 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E, typename F
->
-struct concat_tuple<tuple<A, B, C, D, E, F>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <7 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, G, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F, G> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <8 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, G, H, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F, G, H> type;
-};
-
-#if PHOENIX_LIMIT > 9
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <9 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <10 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <11 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J, typename K,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, K, AppendT> type;
-};
 
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J, typename K
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, K> type;
-};
-
-#if PHOENIX_LIMIT > 12
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <12 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J, typename K, typename L,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J, typename K, typename L
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <13 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J, typename K, typename L,
- typename M,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L, M>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J, typename K, typename L,
- typename M
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L, M>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, M> type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat tuple <14 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J, typename K, typename L,
- typename M, typename N,
- typename AppendT
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N>, AppendT> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N, AppendT> type;
-};
-
-template <
- typename A, typename B, typename C, typename D, typename E, typename F,
- typename G, typename H, typename I, typename J, typename K, typename L,
- typename M, typename N
->
-struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N>, nil_t> {
-
- typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N> type;
-};
+#include <boost/spirit/include/phoenix1_tuple_helpers.hpp>
 
 #endif
-#endif
-#endif
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// concat_tuples type computer
-//
-// This template class returns the type of a tuple built from the
-// concatenation of two given tuples.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename TupleT1, typename TupleT2, int N, typename AppendT>
-struct concat_tuple_element {
-
- typedef
- typename concat_tuple_element<
- typename concat_tuple<TupleT1, AppendT>::type, TupleT2, N+1,
- typename tuple_element<N+1, TupleT2>::type
- >::type
- type;
-};
-
-template <typename TupleT1, typename TupleT2, int N>
-struct concat_tuple_element<TupleT1, TupleT2, N, nil_t> {
-
- typedef TupleT1 type;
-};
-
-template <typename TupleT1, typename TupleT2>
-struct concat_tuples {
-
- typedef
- typename concat_tuple_element<
- TupleT1, TupleT2, 0,
- typename tuple_element<0, TupleT2>::type
- >::type
- type;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// convert_actors template function
-//
-// The convert_actors template functions constructs a new tuple object
-// composed of the elements returned by the actors contained in the
-// input tuple. (i.e. the given tuple type 'actor_tuple' contains a set
-// of actors to evaluate and the resulting tuple contains the results of
-// evaluating the actors.)
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ActorT, typename TupleT>
-struct actor_result; // forward declaration
-
-namespace impl
-{
- template <unsigned N>
- struct convert_actors_ {};
-}
-
-template <typename TupleResultT, typename ActorTupleT>
-TupleResultT
-convert_actors(ActorTupleT const& actor_tuple)
-{
- BOOST_STATIC_ASSERT(ActorTupleT::length <= TupleResultT::length);
- BOOST_STATIC_CONSTANT(int, length = TupleResultT::length);
- return impl::convert_actors_<length>
- ::template apply<TupleResultT, ActorTupleT>::do_(actor_tuple);
-}
-
-namespace impl
-{
- template <int N, typename TupleResultT, typename ActorTupleT>
- struct convert_actor
- {
- typedef typename tuple_element<N, TupleResultT>::type type;
-
- template <bool C>
- struct is_default_t {};
- typedef is_default_t<true> is_default;
- typedef is_default_t<false> is_not_default;
-
- static type
- actor_element(ActorTupleT const& /*actor_tuple*/, is_default)
- {
- return type(); // default construct
- }
-
- static type
- actor_element(ActorTupleT const& actor_tuple, is_not_default)
- {
- BOOST_STATIC_ASSERT(ActorTupleT::length <= TupleResultT::length);
- return actor_tuple[tuple_index<N>()](); // apply the actor
- }
-
- static type
- do_(ActorTupleT const& actor_tuple)
- {
- return actor_element(
- actor_tuple, is_default_t<(N >= ActorTupleT::length)>());
- }
- };
-
- ///////////////////////////////////////
- template <>
- struct convert_actors_<1>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
-
- return TupleResultT(
- converter0::do_(actor_tuple)
- );
- }
- };
- };
-
- ///////////////////////////////////////
- template <>
- struct convert_actors_<2>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- );
- }
- };
- };
-
- ///////////////////////////////////////
- template <>
- struct convert_actors_<3>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- );
- }
- };
- };
-
- #if PHOENIX_LIMIT > 3
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<4>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- );
- }
- };
- };
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<5>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- );
- }
- };
- };
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<6>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- );
- }
- };
- };
-
- #if PHOENIX_LIMIT > 6
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<7>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- );
- }
- };
- };
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<8>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
- typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- , converter7::do_(actor_tuple)
- );
- }
- };
- };
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<9>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
- typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
- typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- , converter7::do_(actor_tuple)
- , converter8::do_(actor_tuple)
- );
- }
- };
- };
-
- #if PHOENIX_LIMIT > 9
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<10>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
- typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
- typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
- typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- , converter7::do_(actor_tuple)
- , converter8::do_(actor_tuple)
- , converter9::do_(actor_tuple)
- );
- }
- };
- };
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<11>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
- typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
- typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
- typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
- typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- , converter7::do_(actor_tuple)
- , converter8::do_(actor_tuple)
- , converter9::do_(actor_tuple)
- , converter10::do_(actor_tuple)
- );
- }
- };
- };
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<12>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
- typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
- typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
- typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
- typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
- typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- , converter7::do_(actor_tuple)
- , converter8::do_(actor_tuple)
- , converter9::do_(actor_tuple)
- , converter10::do_(actor_tuple)
- , converter11::do_(actor_tuple)
- );
- }
- };
- };
-
- #if PHOENIX_LIMIT > 12
-
- /////////////////////////////////////
- template <>
- struct convert_actors_<13>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
- typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
- typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
- typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
- typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
- typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11;
- typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- , converter7::do_(actor_tuple)
- , converter8::do_(actor_tuple)
- , converter9::do_(actor_tuple)
- , converter10::do_(actor_tuple)
- , converter11::do_(actor_tuple)
- , converter12::do_(actor_tuple)
- );
- }
- };
- };
-
- ///////////////////////////////////////
- template <>
- struct convert_actors_<14>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
- typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
- typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
- typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
- typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
- typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11;
- typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12;
- typedef impl::convert_actor<13, TupleResultT, ActorTupleT> converter13;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- , converter7::do_(actor_tuple)
- , converter8::do_(actor_tuple)
- , converter9::do_(actor_tuple)
- , converter10::do_(actor_tuple)
- , converter11::do_(actor_tuple)
- , converter12::do_(actor_tuple)
- , converter13::do_(actor_tuple)
- );
- }
- };
- };
-
- ///////////////////////////////////////
- template <>
- struct convert_actors_<15>
- {
- template <typename TupleResultT, typename ActorTupleT>
- struct apply
- {
- static TupleResultT
- do_(ActorTupleT const& actor_tuple)
- {
- typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
- typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
- typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
- typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
- typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
- typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
- typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
- typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
- typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
- typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
- typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
- typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11;
- typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12;
- typedef impl::convert_actor<13, TupleResultT, ActorTupleT> converter13;
- typedef impl::convert_actor<14, TupleResultT, ActorTupleT> converter14;
-
- using namespace tuple_index_names;
- return TupleResultT(
- converter0::do_(actor_tuple)
- , converter1::do_(actor_tuple)
- , converter2::do_(actor_tuple)
- , converter3::do_(actor_tuple)
- , converter4::do_(actor_tuple)
- , converter5::do_(actor_tuple)
- , converter6::do_(actor_tuple)
- , converter7::do_(actor_tuple)
- , converter8::do_(actor_tuple)
- , converter9::do_(actor_tuple)
- , converter10::do_(actor_tuple)
- , converter11::do_(actor_tuple)
- , converter12::do_(actor_tuple)
- , converter13::do_(actor_tuple)
- , converter14::do_(actor_tuple)
- );
- }
- };
- };
-
- #endif
- #endif
- #endif
- #endif
-} // namespace impl
-
-
-///////////////////////////////////////////////////////////////////////////////
-} // namespace phoenix
-
-#endif // PHOENIX_TUPLEHELPERS_HPP

Modified: branches/proto/v4/boost/spirit/phoenix/tuples.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/tuples.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/tuples.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1330 +1,20 @@
 /*=============================================================================
- Phoenix V1.2.1
- Copyright (c) 2001-2002 Joel de Guzman
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef PHOENIX_TUPLES_HPP
-#define PHOENIX_TUPLES_HPP
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
-#error "Sorry, Phoenix does not support VC6 and VC7. Please upgrade to at least VC7.1"
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Phoenix predefined maximum limit. This limit defines the maximum
-// number of elements a tuple can hold. This number defaults to 3. The
-// actual maximum is rounded up in multiples of 3. Thus, if this value
-// is 4, the actual limit is 6. The ultimate maximum limit in this
-// implementation is 15.
-//
-///////////////////////////////////////////////////////////////////////////////
-#ifndef PHOENIX_LIMIT
-#define PHOENIX_LIMIT 3
-#endif
-
-#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x561)
-namespace phoenix { namespace borland_only
-{
- namespace ftors
- {
- // We define these dummy template functions. Borland complains when
- // a template class has the same name as a template function,
- // regardless if they are in different namespaces.
-
- template <typename T> void if_(T) {}
- template <typename T> void for_(T) {}
- template <typename T> void while_(T) {}
- template <typename T> void do_(T) {}
- }
-
- namespace tmpls
- {
- // We define these dummy template functions. Borland complains when
- // a template class has the same name as a template function,
- // regardless if they are in different namespaces.
-
- template <typename T> struct if_ {};
- template <typename T> struct for_ {};
- template <typename T> struct while_ {};
- template <typename T> struct do_ {};
- }
-
-}} // namespace phoenix::borland_only
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/static_assert.hpp>
-#include <boost/call_traits.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace phoenix {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple
-//
-// Tuples hold heterogeneous types up to a predefined maximum. Only
-// the most basic functionality needed is provided. Unlike other
-// recursive list-like tuple implementations, this tuple
-// implementation uses simple structs similar to std::pair with
-// specialization for 0 to N tuple elements.
-//
-// 1) Construction
-// Here are examples on how to construct tuples:
-//
-// typedef tuple<int, char> t1_t;
-// typedef tuple<int, std::string, double> t2_t;
-//
-// // this tuple has an int and char members
-// t1_t t1(3, 'c');
-//
-// // this tuple has an int, std::string and double members
-// t2_t t2(3, "hello", 3.14);
-//
-// Tuples can also be constructed from other tuples. The
-// source and destination tuples need not have exactly the
-// same element types. The only requirement is that the
-// source tuple have the same number of elements as the
-// destination and that each element slot in the
-// destination can be copy constructed from the source
-// element. For example:
-//
-// tuple<double, double> t3(t1); // OK. Compatible tuples
-// tuple<double, double> t4(t2); // Error! Incompatible tuples
-//
-// 2) Member access
-// A member in a tuple can be accessed using the
-// tuple's [] operator by specifying the Nth
-// tuple_index. Here are some examples:
-//
-// tuple_index<0> ix0; // 0th index == 1st item
-// tuple_index<1> ix1; // 1st index == 2nd item
-// tuple_index<2> ix2; // 2nd index == 3rd item
-//
-// t1[ix0] = 33; // sets the int member of the tuple t1
-// t2[ix2] = 6e6; // sets the double member of the tuple t2
-// t1[ix1] = 'a'; // sets the char member of the tuple t1
-//
-// There are some predefined names are provided in sub-
-// namespace tuple_index_names:
-//
-// tuple_index<0> _1;
-// tuple_index<1> _2;
-// ...
-// tuple_index<N> _N;
-//
-// These indexes may be used by 'using' namespace
-// phoenix::tuple_index_names.
-//
-// Access to out of bound indexes returns a nil_t value.
-//
-// 3) Member type inquiry
-// The type of an individual member can be queried.
-// Example:
-//
-// tuple_element<1, t2_t>::type
-//
-// Refers to the type of the second member (note zero based,
-// thus 0 = 1st item, 1 = 2nd item) of the tuple.
-//
-// Aside from tuple_element<N, T>::type, there are two
-// more types that tuple_element provides: rtype and
-// crtype. While 'type' is the plain underlying type,
-// 'rtype' is the reference type, or type& and 'crtype'
-// is the constant reference type or type const&. The
-// latter two are provided to make it easy for the
-// client in dealing with the possibility of reference
-// to reference when type is already a reference, which
-// is illegal in C++.
-//
-// Access to out of bound indexes returns a nil_t type.
-//
-// 4) Tuple length
-// The number of elements in a tuple can be queried.
-// Example:
-//
-// int n = t1.length;
-//
-// gets the number of elements in tuple t1.
-//
-// length is a static constant. Thus, TupleT::length
-// also works. Example:
-//
-// int n = t1_t::length;
-//
-///////////////////////////////////////////////////////////////////////////////
-struct nil_t {};
-using boost::remove_reference;
-using boost::call_traits;
-
-//////////////////////////////////
-namespace impl {
-
- template <typename T>
- struct access {
-
- typedef const T& ctype;
- typedef T& type;
- };
-
- template <typename T>
- struct access<T&> {
-
- typedef T& ctype;
- typedef T& type;
- };
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple_element
-//
-// A query class that gets the Nth element inside a tuple.
-// Examples:
-//
-// tuple_element<1, tuple<int, char, void*> >::type // plain
-// tuple_element<1, tuple<int, char, void*> >::rtype // ref
-// tuple_element<1, tuple<int, char, void*> >::crtype // const ref
-//
-// Has type char which is the 2nd type in the tuple
-// (note zero based, thus 0 = 1st item, 1 = 2nd item).
-//
-// Given a tuple object, the static function tuple_element<N,
-// TupleT>::get(tuple) gets the Nth element in the tuple. The
-// tuple class' tuple::operator[] uses this to get its Nth
-// element.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <int N, typename TupleT>
-struct tuple_element
-{
- typedef nil_t type;
- typedef nil_t& rtype;
- typedef nil_t const& crtype;
-
- static nil_t get(TupleT const& t) { return nil_t(); }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<0, TupleT>
-{
- typedef typename TupleT::a_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.a; }
- static crtype get(TupleT const& t) { return t.a; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<1, TupleT>
-{
- typedef typename TupleT::b_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.b; }
- static crtype get(TupleT const& t) { return t.b; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<2, TupleT>
-{
- typedef typename TupleT::c_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.c; }
- static crtype get(TupleT const& t) { return t.c; }
-};
-
-#if PHOENIX_LIMIT > 3
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<3, TupleT>
-{
- typedef typename TupleT::d_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.d; }
- static crtype get(TupleT const& t) { return t.d; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<4, TupleT>
-{
- typedef typename TupleT::e_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.e; }
- static crtype get(TupleT const& t) { return t.e; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<5, TupleT>
-{
- typedef typename TupleT::f_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.f; }
- static crtype get(TupleT const& t) { return t.f; }
-};
-
-#if PHOENIX_LIMIT > 6
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<6, TupleT>
-{
- typedef typename TupleT::g_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.g; }
- static crtype get(TupleT const& t) { return t.g; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<7, TupleT>
-{
- typedef typename TupleT::h_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.h; }
- static crtype get(TupleT const& t) { return t.h; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<8, TupleT>
-{
- typedef typename TupleT::i_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.i; }
- static crtype get(TupleT const& t) { return t.i; }
-};
-
-#if PHOENIX_LIMIT > 9
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<9, TupleT>
-{
- typedef typename TupleT::j_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.j; }
- static crtype get(TupleT const& t) { return t.j; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<10, TupleT>
-{
- typedef typename TupleT::k_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.k; }
- static crtype get(TupleT const& t) { return t.k; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<11, TupleT>
-{
- typedef typename TupleT::l_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.l; }
- static crtype get(TupleT const& t) { return t.l; }
-};
-
-#if PHOENIX_LIMIT > 12
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<12, TupleT>
-{
- typedef typename TupleT::m_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.m; }
- static crtype get(TupleT const& t) { return t.m; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<13, TupleT>
-{
- typedef typename TupleT::n_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.n; }
- static crtype get(TupleT const& t) { return t.n; }
-};
-
-//////////////////////////////////
-template <typename TupleT>
-struct tuple_element<14, TupleT>
-{
- typedef typename TupleT::o_type type;
- typedef typename impl::access<type>::type rtype;
- typedef typename impl::access<type>::ctype crtype;
-
- static rtype get(TupleT& t) { return t.o; }
- static crtype get(TupleT const& t) { return t.o; }
-};
-
-#endif
-#endif
-#endif
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple forward declaration.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A = nil_t
- , typename B = nil_t
- , typename C = nil_t
-
-#if PHOENIX_LIMIT > 3
- , typename D = nil_t
- , typename E = nil_t
- , typename F = nil_t
-
-#if PHOENIX_LIMIT > 6
- , typename G = nil_t
- , typename H = nil_t
- , typename I = nil_t
-
-#if PHOENIX_LIMIT > 9
- , typename J = nil_t
- , typename K = nil_t
- , typename L = nil_t
-
-#if PHOENIX_LIMIT > 12
- , typename M = nil_t
- , typename N = nil_t
- , typename O = nil_t
-
-#endif
-#endif
-#endif
-#endif
-
- , typename NU = nil_t // Not used
->
-struct tuple;
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple_index
-//
-// This class wraps an integer in a type to be used for indexing
-// the Nth element in a tuple. See tuple operator[]. Some
-// predefined names are provided in sub-namespace
-// tuple_index_names.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <int N>
-struct tuple_index {};
-
-//////////////////////////////////
-namespace tuple_index_names {
-
- tuple_index<0> const _1 = tuple_index<0>();
- tuple_index<1> const _2 = tuple_index<1>();
- tuple_index<2> const _3 = tuple_index<2>();
-
-#if PHOENIX_LIMIT > 3
- tuple_index<3> const _4 = tuple_index<3>();
- tuple_index<4> const _5 = tuple_index<4>();
- tuple_index<5> const _6 = tuple_index<5>();
-
-#if PHOENIX_LIMIT > 6
- tuple_index<6> const _7 = tuple_index<6>();
- tuple_index<7> const _8 = tuple_index<7>();
- tuple_index<8> const _9 = tuple_index<8>();
-
-#if PHOENIX_LIMIT > 9
- tuple_index<9> const _10 = tuple_index<9>();
- tuple_index<10> const _11 = tuple_index<10>();
- tuple_index<11> const _12 = tuple_index<11>();
-
-#if PHOENIX_LIMIT > 12
- tuple_index<12> const _13 = tuple_index<12>();
- tuple_index<13> const _14 = tuple_index<13>();
- tuple_index<14> const _15 = tuple_index<14>();
-
-#endif
-#endif
-#endif
-#endif
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple_common class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename DerivedT>
-struct tuple_base {
-
- typedef nil_t a_type;
- typedef nil_t b_type;
- typedef nil_t c_type;
-
-#if PHOENIX_LIMIT > 3
- typedef nil_t d_type;
- typedef nil_t e_type;
- typedef nil_t f_type;
-
-#if PHOENIX_LIMIT > 6
- typedef nil_t g_type;
- typedef nil_t h_type;
- typedef nil_t i_type;
-
-#if PHOENIX_LIMIT > 9
- typedef nil_t j_type;
- typedef nil_t k_type;
- typedef nil_t l_type;
-
-#if PHOENIX_LIMIT > 12
- typedef nil_t m_type;
- typedef nil_t n_type;
- typedef nil_t o_type;
-
-#endif
-#endif
-#endif
-#endif
-
- template <int N>
- typename tuple_element<N, DerivedT>::crtype
- operator[](tuple_index<N>) const
- {
- return tuple_element<N, DerivedT>
- ::get(*static_cast<DerivedT const*>(this));
- }
-
- template <int N>
- typename tuple_element<N, DerivedT>::rtype
- operator[](tuple_index<N>)
- {
- return tuple_element<N, DerivedT>
- ::get(*static_cast<DerivedT*>(this));
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <0 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <>
-struct tuple<>
-: public tuple_base<tuple<> > {
-
- BOOST_STATIC_CONSTANT(int, length = 0);
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <1 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A>
-struct tuple<A, nil_t, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A> > {
-
- BOOST_STATIC_CONSTANT(int, length = 1);
- typedef A a_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_
- ): a(a_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <2 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A, typename B>
-struct tuple<A, B, nil_t,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B> > {
-
- BOOST_STATIC_CONSTANT(int, length = 2);
- typedef A a_type; typedef B b_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_
- ): a(a_), b(b_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <3 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A, typename B, typename C>
-struct tuple<A, B, C,
-#if PHOENIX_LIMIT > 3
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C> > {
-
- BOOST_STATIC_CONSTANT(int, length = 3);
- typedef A a_type; typedef B b_type;
- typedef C c_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_
- ): a(a_), b(b_), c(c_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c;
-};
-
-#if PHOENIX_LIMIT > 3
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <4 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A, typename B, typename C, typename D>
-struct tuple<A, B, C, D, nil_t, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D> > {
-
- BOOST_STATIC_CONSTANT(int, length = 4);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_
- ): a(a_), b(b_), c(c_), d(d_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <5 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename A, typename B, typename C, typename D, typename E>
-struct tuple<A, B, C, D, E, nil_t,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D, E> > {
-
- BOOST_STATIC_CONSTANT(int, length = 5);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_
- ): a(a_), b(b_), c(c_), d(d_), e(e_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <6 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F>
-struct tuple<A, B, C, D, E, F,
-#if PHOENIX_LIMIT > 6
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D, E, F> > {
-
- BOOST_STATIC_CONSTANT(int, length = 6);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f;
-};
-
-#if PHOENIX_LIMIT > 6
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <7 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G>
-struct tuple<A, B, C, D, E, F, G, nil_t, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D, E, F, G> > {
-
- BOOST_STATIC_CONSTANT(int, length = 7);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <8 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H>
-struct tuple<A, B, C, D, E, F, G, H, nil_t,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D, E, F, G, H> > {
-
- BOOST_STATIC_CONSTANT(int, length = 8);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type; typedef H h_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_,
- typename call_traits<H>::param_type h_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()]), h(init[tuple_index<7>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g; H h;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <9 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I>
-struct tuple<A, B, C, D, E, F, G, H, I,
-#if PHOENIX_LIMIT > 9
- nil_t, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D, E, F, G, H, I> > {
-
- BOOST_STATIC_CONSTANT(int, length = 9);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type; typedef H h_type;
- typedef I i_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_,
- typename call_traits<H>::param_type h_,
- typename call_traits<I>::param_type i_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),
- i(init[tuple_index<8>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g; H h; I i;
-};
-
-#if PHOENIX_LIMIT > 9
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <10 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J>
-struct tuple<A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D, E, F, G, H, I, J> > {
-
- BOOST_STATIC_CONSTANT(int, length = 10);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type; typedef H h_type;
- typedef I i_type; typedef J j_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_,
- typename call_traits<H>::param_type h_,
- typename call_traits<I>::param_type i_,
- typename call_traits<J>::param_type j_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),
- i(init[tuple_index<8>()]), j(init[tuple_index<9>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g; H h; I i; J j;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <11 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K>
-struct tuple<A, B, C, D, E, F, G, H, I, J, K, nil_t,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D, E, F, G, H, I, J, K> > {
-
- BOOST_STATIC_CONSTANT(int, length = 11);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type; typedef H h_type;
- typedef I i_type; typedef J j_type;
- typedef K k_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_,
- typename call_traits<H>::param_type h_,
- typename call_traits<I>::param_type i_,
- typename call_traits<J>::param_type j_,
- typename call_traits<K>::param_type k_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),
- i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),
- k(init[tuple_index<10>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g; H h; I i; J j;
- K k;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <12 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L>
-struct tuple<A, B, C, D, E, F, G, H, I, J, K, L,
-#if PHOENIX_LIMIT > 12
- nil_t, nil_t, nil_t,
-#endif
- nil_t // Unused
->
-: public tuple_base<tuple<A, B, C, D, E, F, G, H, I, J, K, L> > {
-
- BOOST_STATIC_CONSTANT(int, length = 12);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type; typedef H h_type;
- typedef I i_type; typedef J j_type;
- typedef K k_type; typedef L l_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_,
- typename call_traits<H>::param_type h_,
- typename call_traits<I>::param_type i_,
- typename call_traits<J>::param_type j_,
- typename call_traits<K>::param_type k_,
- typename call_traits<L>::param_type l_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_), l(l_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),
- i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),
- k(init[tuple_index<10>()]), l(init[tuple_index<11>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g; H h; I i; J j;
- K k; L l;
-};
-
-#if PHOENIX_LIMIT > 12
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <13 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M>
-struct tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, nil_t, nil_t, nil_t>
-: public tuple_base<
- tuple<A, B, C, D, E, F, G, H, I, J, K, L, M> > {
-
- BOOST_STATIC_CONSTANT(int, length = 13);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type; typedef H h_type;
- typedef I i_type; typedef J j_type;
- typedef K k_type; typedef L l_type;
- typedef M m_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_,
- typename call_traits<H>::param_type h_,
- typename call_traits<I>::param_type i_,
- typename call_traits<J>::param_type j_,
- typename call_traits<K>::param_type k_,
- typename call_traits<L>::param_type l_,
- typename call_traits<M>::param_type m_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_), l(l_), m(m_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),
- i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),
- k(init[tuple_index<10>()]), l(init[tuple_index<11>()]),
- m(init[tuple_index<12>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g; H h; I i; J j;
- K k; L l; M m;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <14 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N>
-struct tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N, nil_t, nil_t>
-: public tuple_base<
- tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N> > {
-
- BOOST_STATIC_CONSTANT(int, length = 14);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type; typedef H h_type;
- typedef I i_type; typedef J j_type;
- typedef K k_type; typedef L l_type;
- typedef M m_type; typedef N n_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_,
- typename call_traits<H>::param_type h_,
- typename call_traits<I>::param_type i_,
- typename call_traits<J>::param_type j_,
- typename call_traits<K>::param_type k_,
- typename call_traits<L>::param_type l_,
- typename call_traits<M>::param_type m_,
- typename call_traits<N>::param_type n_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_), l(l_), m(m_), n(n_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),
- i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),
- k(init[tuple_index<10>()]), l(init[tuple_index<11>()]),
- m(init[tuple_index<12>()]), n(init[tuple_index<13>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g; H h; I i; J j;
- K k; L l; M m; N n;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tuple <15 member> class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename A, typename B, typename C, typename D, typename E,
- typename F, typename G, typename H, typename I, typename J,
- typename K, typename L, typename M, typename N, typename O>
-struct tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, nil_t>
-: public tuple_base<
- tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> > {
-
- BOOST_STATIC_CONSTANT(int, length = 15);
- typedef A a_type; typedef B b_type;
- typedef C c_type; typedef D d_type;
- typedef E e_type; typedef F f_type;
- typedef G g_type; typedef H h_type;
- typedef I i_type; typedef J j_type;
- typedef K k_type; typedef L l_type;
- typedef M m_type; typedef N n_type;
- typedef O o_type;
-
- tuple() {}
-
- tuple(
- typename call_traits<A>::param_type a_,
- typename call_traits<B>::param_type b_,
- typename call_traits<C>::param_type c_,
- typename call_traits<D>::param_type d_,
- typename call_traits<E>::param_type e_,
- typename call_traits<F>::param_type f_,
- typename call_traits<G>::param_type g_,
- typename call_traits<H>::param_type h_,
- typename call_traits<I>::param_type i_,
- typename call_traits<J>::param_type j_,
- typename call_traits<K>::param_type k_,
- typename call_traits<L>::param_type l_,
- typename call_traits<M>::param_type m_,
- typename call_traits<N>::param_type n_,
- typename call_traits<O>::param_type o_
- ): a(a_), b(b_), c(c_), d(d_), e(e_),
- f(f_), g(g_), h(h_), i(i_), j(j_),
- k(k_), l(l_), m(m_), n(n_), o(o_) {}
-
- template <typename TupleT>
- tuple(TupleT const& init)
- : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),
- c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),
- e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),
- g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),
- i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),
- k(init[tuple_index<10>()]), l(init[tuple_index<11>()]),
- m(init[tuple_index<12>()]), n(init[tuple_index<13>()]),
- o(init[tuple_index<14>()])
- { BOOST_STATIC_ASSERT(TupleT::length == length); }
-
- A a; B b; C c; D d; E e;
- F f; G g; H h; I i; J j;
- K k; L l; M m; N n; O o;
-};
-
-#endif
-#endif
-#endif
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TUPLES
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TUPLES
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_tuples.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_tuples.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-} // namespace phoenix
+#include <boost/spirit/include/phoenix1_tuples.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/symbols.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/symbols.hpp (original)
+++ branches/proto/v4/boost/spirit/symbols.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,22 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SYMBOLS_MAIN_HPP)
-#define BOOST_SPIRIT_SYMBOLS_MAIN_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS
 
-#include <boost/spirit/version.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_symbols.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_symbols.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Master header for Spirit.Symbols
-//
-///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_symbols.hpp>
 
-#include <boost/spirit/symbols/symbols.hpp>
-
-#endif // !defined(BOOST_SPIRIT_SYMBOLS_MAIN_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/symbols/symbols.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/symbols/symbols.hpp (original)
+++ branches/proto/v4/boost/spirit/symbols/symbols.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,225 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_SYMBOLS_HPP
-#define BOOST_SPIRIT_SYMBOLS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS
 
-///////////////////////////////////////////////////////////////////////////////
-#include <string>
-
-#include <boost/ref.hpp>
-
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/directives.hpp>
-
-#include <boost/spirit/symbols/symbols_fwd.hpp>
-
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// symbols class
-//
-// This class implements a symbol table. The symbol table holds a
-// dictionary of symbols where each symbol is a sequence of CharTs.
-// The template class can work efficiently with 8, 16 and 32 bit
-// characters. Mutable data of type T is associated with each
-// symbol.
-//
-// The class is a parser. The parse member function returns
-// additional information in the symbol_match class (see below).
-// The additional data is a pointer to some data associated with
-// the matching symbol.
-//
-// The actual set implementation is supplied by the SetT template
-// parameter. By default, this uses the tst class (see tst.ipp).
-//
-// Symbols are added into the symbol table statically using the
-// construct:
-//
-// sym = a, b, c, d ...;
-//
-// where sym is a symbol table and a..d are strings. Example:
-//
-// sym = "pineapple", "orange", "banana", "apple";
-//
-// Alternatively, symbols may be added dynamically through the
-// member functor 'add' (see symbol_inserter below). The member
-// functor 'add' may be attached to a parser as a semantic action
-// taking in a begin/end pair:
-//
-// p[sym.add]
-//
-// where p is a parser (and sym is a symbol table). On success,
-// the matching portion of the input is added to the symbol table.
-//
-// 'add' may also be used to directly initialize data. Examples:
-//
-// sym.add("hello", 1)("crazy", 2)("world", 3);
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T, typename CharT, typename SetT>
-class symbols
-: private SetT
-, public parser<symbols<T, CharT, SetT> >
-{
-public:
-
- typedef parser<symbols<T, CharT, SetT> > parser_base_t;
- typedef symbols<T, CharT, SetT> self_t;
- typedef self_t const& embed_t;
- typedef T symbol_data_t;
- typedef boost::reference_wrapper<T> symbol_ref_t;
-
- symbols();
- symbols(symbols const& other);
- ~symbols();
-
- symbols&
- operator=(symbols const& other);
-
- symbol_inserter<T, SetT> const&
- operator=(CharT const* str);
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, symbol_ref_t>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse_main(ScannerT const& scan) const
- {
- typedef typename ScannerT::iterator_t iterator_t;
- iterator_t first = scan.first;
- typename SetT::search_info result = SetT::find(scan);
-
- if (result.data)
- return scan.
- create_match(
- result.length,
- symbol_ref_t(*result.data),
- first,
- scan.first);
- else
- return scan.no_match();
- }
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::implicit_lexeme_parse<result_t>
- (*this, scan, scan);
- }
-
- template < typename ScannerT >
- T* find(ScannerT const& scan) const
- { return SetT::find(scan).data; }
-
- symbol_inserter<T, SetT> const add;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Symbol table utilities
-//
-// add
-//
-// adds a symbol 'sym' (string) to a symbol table 'table' plus an
-// optional data 'data' associated with the symbol. Returns a pointer to
-// the data associated with the symbol or NULL if add failed (e.g. when
-// the symbol is already added before).
-//
-// find
-//
-// finds a symbol 'sym' (string) from a symbol table 'table'. Returns a
-// pointer to the data associated with the symbol or NULL if not found
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T, typename CharT, typename SetT>
-T* add(symbols<T, CharT, SetT>& table, CharT const* sym, T const& data = T());
-
-template <typename T, typename CharT, typename SetT>
-T* find(symbols<T, CharT, SetT> const& table, CharT const* sym);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// symbol_inserter class
-//
-// The symbols class holds an instance of this class named 'add'.
-// This can be called directly just like a member function,
-// passing in a first/last iterator and optional data:
-//
-// sym.add(first, last, data);
-//
-// Or, passing in a C string and optional data:
-//
-// sym.add(c_string, data);
-//
-// where sym is a symbol table. The 'data' argument is optional.
-// This may also be used as a semantic action since it conforms
-// to the action interface (see action.hpp):
-//
-// p[sym.add]
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T, typename SetT>
-class symbol_inserter
-{
-public:
-
- symbol_inserter(SetT& set_)
- : set(set_) {}
-
- typedef symbol_inserter const & result_type;
-
- template <typename IteratorT>
- symbol_inserter const&
- operator()(IteratorT first, IteratorT const& last, T const& data = T()) const
- {
- set.add(first, last, data);
- return *this;
- }
-
- template <typename CharT>
- symbol_inserter const&
- operator()(CharT const* str, T const& data = T()) const
- {
- CharT const* last = str;
- while (*last)
- last++;
- set.add(str, last, data);
- return *this;
- }
-
- template <typename CharT>
- symbol_inserter const&
- operator,(CharT const* str) const
- {
- CharT const* last = str;
- while (*last)
- last++;
- set.add(str, last, T());
- return *this;
- }
-
-private:
-
- SetT& set;
-};
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_symbols.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_symbols.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_symbols.hpp>
 
-#include <boost/spirit/symbols/impl/symbols.ipp>
 #endif

Modified: branches/proto/v4/boost/spirit/symbols/symbols_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/symbols/symbols_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/symbols/symbols_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,34 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SYMBOLS_FWD_HPP)
-#define BOOST_SPIRIT_SYMBOLS_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS_FWD
 
-namespace boost { namespace spirit {
-
- namespace impl
- {
- template <typename CharT, typename T>
- class tst;
- }
-
- template
- <
- typename T = int,
- typename CharT = char,
- typename SetT = impl::tst<T, CharT>
- >
- class symbols;
-
- template <typename T, typename SetT>
- class symbol_inserter;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_symbols_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_symbols_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_symbols_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/symbols/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/symbols/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/symbols/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,26 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_SYMBOLS_TYPEOF_HPP)
-#define BOOST_SPIRIT_SYMBOLS_TYPEOF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
-#include <boost/typeof/typeof.hpp>
-
-#include <boost/spirit/symbols/symbols_fwd.hpp>
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::symbols,3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::symbol_inserter,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::impl::tst,2)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::symbols,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::symbols,1)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/tree/ast.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/ast.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/ast.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,384 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_TREE_AST_HPP
-#define BOOST_SPIRIT_TREE_AST_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_AST
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_AST
 
-#include <boost/spirit/tree/common.hpp>
-#include <boost/spirit/core/scanner/scanner.hpp>
-
-#include <boost/spirit/tree/ast_fwd.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-
-//////////////////////////////////
-// ast_match_policy is simply an id so the correct specialization of
-// tree_policy can be found.
-template <
- typename IteratorT,
- typename NodeFactoryT,
- typename T
->
-struct ast_match_policy :
- public common_tree_match_policy<
- ast_match_policy<IteratorT, NodeFactoryT, T>,
- IteratorT,
- NodeFactoryT,
- ast_tree_policy<
- ast_match_policy<IteratorT, NodeFactoryT, T>,
- NodeFactoryT,
- T
- >,
- T
- >
-{
- typedef
- common_tree_match_policy<
- ast_match_policy<IteratorT, NodeFactoryT, T>,
- IteratorT,
- NodeFactoryT,
- ast_tree_policy<
- ast_match_policy<IteratorT, NodeFactoryT, T>,
- NodeFactoryT,
- T
- >,
- T
- >
- common_tree_match_policy_;
-
- ast_match_policy()
- {
- }
-
- template <typename PolicyT>
- ast_match_policy(PolicyT const & policies)
- : common_tree_match_policy_(policies)
- {
- }
-};
-
-//////////////////////////////////
-template <typename MatchPolicyT, typename NodeFactoryT, typename T>
-struct ast_tree_policy :
- public common_tree_tree_policy<MatchPolicyT, NodeFactoryT>
-{
- typedef typename MatchPolicyT::match_t match_t;
- typedef typename MatchPolicyT::iterator_t iterator_t;
-
- template<typename MatchAT, typename MatchBT>
- static void concat(MatchAT& a, MatchBT const& b)
- {
- BOOST_SPIRIT_ASSERT(a && b);
-
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
- BOOST_SPIRIT_DEBUG_OUT << "\n>>>AST concat. a = " << a <<
- "\n\tb = " << b << "<<<\n";
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ast.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_ast.hpp"
 #endif
- typedef typename tree_match<iterator_t, NodeFactoryT, T>::container_t
- container_t;
-
- // test for size() is nessecary, because no_tree_gen_node leaves a.trees
- // and/or b.trees empty
- if (0 != b.trees.size() && b.trees.begin()->value.is_root())
- {
- BOOST_SPIRIT_ASSERT(b.trees.size() == 1);
 
- container_t tmp;
- std::swap(a.trees, tmp); // save a into tmp
- std::swap(b.trees, a.trees); // make b.trees[0] be new root (a.trees[0])
- container_t* pnon_root_trees = &a.trees;
- while (pnon_root_trees->size() > 0 &&
- pnon_root_trees->begin()->value.is_root())
- {
- pnon_root_trees = & pnon_root_trees->begin()->children;
- }
- pnon_root_trees->insert(pnon_root_trees->begin(),
- tmp.begin(), tmp.end());
- }
- else if (0 != a.trees.size() && a.trees.begin()->value.is_root())
- {
- BOOST_SPIRIT_ASSERT(a.trees.size() == 1);
-
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- a.trees.begin()->children.reserve(a.trees.begin()->children.size() + b.trees.size());
-#endif
- std::copy(b.trees.begin(),
- b.trees.end(),
- std::back_insert_iterator<container_t>(
- a.trees.begin()->children));
- }
- else
- {
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- a.trees.reserve(a.trees.size() + b.trees.size());
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
- std::copy(b.trees.begin(),
- b.trees.end(),
- std::back_insert_iterator<container_t>(a.trees));
- }
+#include <boost/spirit/include/classic_ast.hpp>
 
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
- BOOST_SPIRIT_DEBUG_OUT << ">>>after AST concat. a = " << a << "<<<\n\n";
 #endif
-
- return;
- }
-
- template <typename MatchT, typename Iterator1T, typename Iterator2T>
- static void group_match(MatchT& m, parser_id const& id,
- Iterator1T const& first, Iterator2T const& last)
- {
- if (!m)
- return;
-
- typedef typename tree_match<iterator_t, NodeFactoryT, T>::container_t
- container_t;
- typedef typename container_t::iterator cont_iterator_t;
- typedef typename NodeFactoryT::template factory<iterator_t> factory_t;
-
- if (m.trees.size() == 1
-#ifdef BOOST_SPIRIT_NO_TREE_NODE_COLLAPSING
- && !(id.to_long() && m.trees.begin()->value.id().to_long())
-#endif
- )
- {
- // set rule_id's. There may have been multiple nodes created.
- // Because of root_node[] they may be left-most children of the top
- // node.
- container_t* punset_id = &m.trees;
- while (punset_id->size() > 0 &&
- punset_id->begin()->value.id() == 0)
- {
- punset_id->begin()->value.id(id);
- punset_id = &punset_id->begin()->children;
- }
-
- m.trees.begin()->value.is_root(false);
- }
- else
- {
- match_t newmatch(m.length(),
- m.trees.empty() ?
- factory_t::empty_node() :
- factory_t::create_node(first, last, false));
-
- std::swap(newmatch.trees.begin()->children, m.trees);
- // set this node and all it's unset children's rule_id
- newmatch.trees.begin()->value.id(id);
- for (cont_iterator_t i = newmatch.trees.begin();
- i != newmatch.trees.end();
- ++i)
- {
- if (i->value.id() == 0)
- i->value.id(id);
- }
- m = newmatch;
- }
- }
-
- template <typename FunctorT, typename MatchT>
- static void apply_op_to_match(FunctorT const& op, MatchT& m)
- {
- op(m);
- }
-};
-
-namespace impl {
-
- template <typename IteratorT, typename NodeFactoryT, typename T>
- struct tree_policy_selector<ast_match_policy<IteratorT, NodeFactoryT, T> >
- {
- typedef ast_tree_policy<
- ast_match_policy<IteratorT, NodeFactoryT, T>,
- NodeFactoryT,
- T
- > type;
- };
-
-} // namespace impl
-
-
-//////////////////////////////////
-struct gen_ast_node_parser_gen;
-
-template <typename T>
-struct gen_ast_node_parser
-: public unary<T, parser<gen_ast_node_parser<T> > >
-{
- typedef gen_ast_node_parser<T> self_t;
- typedef gen_ast_node_parser_gen parser_generator_t;
- typedef unary_parser_category parser_category_t;
-
- gen_ast_node_parser(T const& a)
- : unary<T, parser<gen_ast_node_parser<T> > >(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename ScannerT::iteration_policy_t iteration_policy_t;
- typedef typename ScannerT::match_policy_t::iterator_t iterator_t;
- typedef typename ScannerT::match_policy_t::factory_t factory_t;
- typedef ast_match_policy<iterator_t, factory_t> match_policy_t;
- typedef typename ScannerT::action_policy_t action_policy_t;
- typedef scanner_policies<
- iteration_policy_t,
- match_policy_t,
- action_policy_t
- > policies_t;
-
- return this->subject().parse(scan.change_policies(policies_t(scan)));
- }
-};
-
-//////////////////////////////////
-struct gen_ast_node_parser_gen
-{
- template <typename T>
- struct result {
-
- typedef gen_ast_node_parser<T> type;
- };
-
- template <typename T>
- static gen_ast_node_parser<T>
- generate(parser<T> const& s)
- {
- return gen_ast_node_parser<T>(s.derived());
- }
-
- template <typename T>
- gen_ast_node_parser<T>
- operator[](parser<T> const& s) const
- {
- return gen_ast_node_parser<T>(s.derived());
- }
-};
-
-//////////////////////////////////
-const gen_ast_node_parser_gen gen_ast_node_d = gen_ast_node_parser_gen();
-
-
-//////////////////////////////////
-struct root_node_op
-{
- template <typename MatchT>
- void operator()(MatchT& m) const
- {
- BOOST_SPIRIT_ASSERT(m.trees.size() > 0);
- m.trees.begin()->value.is_root(true);
- }
-};
-
-const node_parser_gen<root_node_op> root_node_d =
- node_parser_gen<root_node_op>();
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Parse functions for ASTs
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename AstFactoryT, typename IteratorT, typename ParserT,
- typename SkipT
->
-inline tree_parse_info<IteratorT, AstFactoryT>
-ast_parse(
- IteratorT const& first_,
- IteratorT const& last_,
- parser<ParserT> const& parser,
- SkipT const& skip_,
- AstFactoryT const & /*dummy_*/ = AstFactoryT())
-{
- typedef skip_parser_iteration_policy<SkipT> iter_policy_t;
- typedef ast_match_policy<IteratorT, AstFactoryT> ast_match_policy_t;
- typedef
- scanner_policies<iter_policy_t, ast_match_policy_t>
- scanner_policies_t;
- typedef scanner<IteratorT, scanner_policies_t> scanner_t;
-
- iter_policy_t iter_policy(skip_);
- scanner_policies_t policies(iter_policy);
- IteratorT first = first_;
- scanner_t scan(first, last_, policies);
- tree_match<IteratorT, AstFactoryT> hit = parser.derived().parse(scan);
- return tree_parse_info<IteratorT, AstFactoryT>(
- first, hit, hit && (first == last_), hit.length(), hit.trees);
-}
-
-//////////////////////////////////
-template <typename IteratorT, typename ParserT, typename SkipT>
-inline tree_parse_info<IteratorT>
-ast_parse(
- IteratorT const& first_,
- IteratorT const& last_,
- parser<ParserT> const& parser,
- SkipT const& skip_)
-{
- typedef node_val_data_factory<nil_t> default_factory_t;
- return ast_parse(first_, last_, parser, skip_, default_factory_t());
-}
-
-//////////////////////////////////
-template <typename IteratorT, typename ParserT>
-inline tree_parse_info<IteratorT>
-ast_parse(
- IteratorT const& first_,
- IteratorT const& last,
- parser<ParserT> const& parser)
-{
- typedef ast_match_policy<IteratorT> ast_match_policy_t;
- IteratorT first = first_;
- scanner<
- IteratorT,
- scanner_policies<iteration_policy, ast_match_policy_t>
- > scan(first, last);
- tree_match<IteratorT> hit = parser.derived().parse(scan);
- return tree_parse_info<IteratorT>(
- first, hit, hit && (first == last), hit.length(), hit.trees);
-}
-
-//////////////////////////////////
-template <typename CharT, typename ParserT, typename SkipT>
-inline tree_parse_info<CharT const*>
-ast_parse(
- CharT const* str,
- parser<ParserT> const& parser,
- SkipT const& skip)
-{
- CharT const* last = str;
- while (*last)
- last++;
- return ast_parse(str, last, parser, skip);
-}
-
-//////////////////////////////////
-template <typename CharT, typename ParserT>
-inline tree_parse_info<CharT const*>
-ast_parse(
- CharT const* str,
- parser<ParserT> const& parser)
-{
- CharT const* last = str;
- while (*last)
- {
- last++;
- }
- return ast_parse(str, last, parser);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
-
-#endif
-

Modified: branches/proto/v4/boost/spirit/tree/ast_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/ast_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/ast_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,38 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_TREE_AST_FWD_HPP)
-#define BOOST_SPIRIT_TREE_AST_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_AST_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_AST_FWD
 
-#include <boost/spirit/core/nil.hpp>
-
-namespace boost { namespace spirit {
-
- template <
- typename MatchPolicyT,
- typename NodeFactoryT,
- typename T = nil_t
- >
- struct ast_tree_policy;
-
- template <
- typename IteratorT,
- typename NodeFactoryT = node_val_data_factory<nil_t>,
- typename T = nil_t
- >
- struct ast_match_policy;
-
- template <typename T>
- struct gen_ast_node_parser;
-
- struct root_node_op;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ast_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_ast_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_ast_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/tree/common.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/common.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/common.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1583 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- Revised 2007, Copyright (c) Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_TREE_COMMON_HPP
-#define BOOST_SPIRIT_TREE_COMMON_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_COMMON
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_COMMON
 
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
-#include <vector>
-#else
-#include <list>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_common.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_common.hpp"
 #endif
 
-#if defined(BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES)
-#include <boost/pool/pool_alloc.hpp>
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_common.hpp>
 
-#include <algorithm>
-
-#include <boost/ref.hpp>
-#include <boost/call_traits.hpp>
-#include <boost/spirit/core.hpp>
-#include <boost/detail/iterator.hpp> // for boost::detail::iterator_traits
-
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
-#include <iostream>
-#include <boost/spirit/debug/debug_node.hpp>
-#endif
-
-#include <boost/spirit/tree/common_fwd.hpp>
-
-namespace boost { namespace spirit {
-
-template <typename T>
-void swap(tree_node<T>& a, tree_node<T>& b);
-
-template <typename T, typename V>
-void swap(node_iter_data<T, V>& a, node_iter_data<T, V>& b);
-
-namespace impl {
- template <typename T>
- inline void cp_swap(T& t1, T& t2);
-}
-
-template <typename T>
-struct tree_node
-{
- typedef T parse_node_t;
-
-#if !defined(BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES)
- typedef std::allocator<tree_node<T> > allocator_type;
-#elif !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- typedef boost::pool_allocator<tree_node<T> > allocator_type;
-#else
- typedef boost::fast_pool_allocator<tree_node<T> > allocator_type;
 #endif
-
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- typedef std::vector<tree_node<T>, allocator_type> children_t;
-#else
- typedef std::list<tree_node<T>, allocator_type> children_t;
-#endif // BOOST_SPIRIT_USE_LIST_FOR_TREES
-
- typedef typename children_t::iterator tree_iterator;
- typedef typename children_t::const_iterator const_tree_iterator;
-
- T value;
- children_t children;
-
- tree_node()
- : value()
- , children()
- {}
-
- explicit tree_node(T const& v)
- : value(v)
- , children()
- {}
-
- tree_node(T const& v, children_t const& c)
- : value(v)
- , children(c)
- {}
-
- void swap(tree_node<T>& x)
- {
- impl::cp_swap(value, x.value);
- impl::cp_swap(children, x.children);
- }
-
-// Intel V5.0.1 has a problem without this explicit operator=
- tree_node &operator= (tree_node const &rhs)
- {
- tree_node(rhs).swap(*this);
- return *this;
- }
-};
-
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
-template <typename T>
-inline std::ostream&
-operator<<(std::ostream& o, tree_node<T> const& n)
-{
- static int depth = 0;
- o << "\n";
- for (int i = 0; i <= depth; ++i)
- {
- o << "\t";
- }
- o << "(depth = " << depth++ << " value = " << n.value;
- int c = 0;
- for (typename tree_node<T>::children_t::const_iterator it = n.children.begin();
- it != n.children.end(); ++it)
- {
- o << " children[" << c++ << "] = " << *it;
- }
- o << ")";
- --depth;
- return o;
-}
-#endif
-
-//////////////////////////////////
-template <typename IteratorT, typename ValueT>
-struct node_iter_data
-{
- typedef IteratorT iterator_t;
- typedef IteratorT /*const*/ const_iterator_t;
-
- node_iter_data()
- : first(), last(), is_root_(false), parser_id_(), value_()
- {}
-
- node_iter_data(IteratorT const& _first, IteratorT const& _last)
- : first(_first), last(_last), is_root_(false), parser_id_(), value_()
- {}
-
- void swap(node_iter_data& x)
- {
- impl::cp_swap(first, x.first);
- impl::cp_swap(last, x.last);
- impl::cp_swap(parser_id_, x.parser_id_);
- impl::cp_swap(is_root_, x.is_root_);
- impl::cp_swap(value_, x.value_);
- }
-
- IteratorT begin()
- {
- return first;
- }
-
- IteratorT const& begin() const
- {
- return first;
- }
-
- IteratorT end()
- {
- return last;
- }
-
- IteratorT const& end() const
- {
- return last;
- }
-
- bool is_root() const
- {
- return is_root_;
- }
-
- void is_root(bool b)
- {
- is_root_ = b;
- }
-
- parser_id id() const
- {
- return parser_id_;
- }
-
- void id(parser_id r)
- {
- parser_id_ = r;
- }
-
- ValueT const& value() const
- {
- return value_;
- }
-
- void value(ValueT const& v)
- {
- value_ = v;
- }
-private:
- IteratorT first, last;
- bool is_root_;
- parser_id parser_id_;
- ValueT value_;
-
-public:
-};
-
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
-// value is default nil_t, so provide an operator<< for nil_t
-inline std::ostream&
-operator<<(std::ostream& o, nil_t const&)
-{
- return o;
-}
-
-template <typename IteratorT, typename ValueT>
-inline std::ostream&
-operator<<(std::ostream& o, node_iter_data<IteratorT, ValueT> const& n)
-{
- o << "(id = " << n.id() << " text = \"";
- typedef typename node_iter_data<IteratorT, ValueT>::const_iterator_t
- iterator_t;
- for (iterator_t it = n.begin(); it != n.end(); ++it)
- impl::token_printer(o, *it);
- o << "\" is_root = " << n.is_root()
- << /*" value = " << n.value() << */")";
- return o;
-}
-#endif
-
-//////////////////////////////////
-template <typename IteratorT = char const*, typename ValueT = nil_t>
-struct node_val_data
-{
- typedef
- typename boost::detail::iterator_traits<IteratorT>::value_type
- value_type;
-
-#if !defined(BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES)
- typedef std::allocator<value_type> allocator_type;
-#elif !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- typedef boost::pool_allocator<value_type> allocator_type;
-#else
- typedef boost::fast_pool_allocator<value_type> allocator_type;
-#endif
-
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- typedef std::vector<value_type, allocator_type> container_t;
-#else
- typedef std::list<value_type, allocator_type> container_t;
-#endif
-
- typedef typename container_t::iterator iterator_t;
- typedef typename container_t::const_iterator const_iterator_t;
-
- node_val_data()
- : text(), is_root_(false), parser_id_(), value_()
- {}
-
-#if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
- node_val_data(IteratorT const& _first, IteratorT const& _last)
- : text(), is_root_(false), parser_id_(), value_()
- {
- std::copy(_first, _last, std::inserter(text, text.end()));
- }
-
- // This constructor is for building text out of iterators
- template <typename IteratorT2>
- node_val_data(IteratorT2 const& _first, IteratorT2 const& _last)
- : text(), is_root_(false), parser_id_(), value_()
- {
- std::copy(_first, _last, std::inserter(text, text.end()));
- }
-#else
- node_val_data(IteratorT const& _first, IteratorT const& _last)
- : text(_first, _last), is_root_(false), parser_id_(), value_()
- {}
-
- // This constructor is for building text out of iterators
- template <typename IteratorT2>
- node_val_data(IteratorT2 const& _first, IteratorT2 const& _last)
- : text(_first, _last), is_root_(false), parser_id_(), value_()
- {}
-#endif
-
- void swap(node_val_data& x)
- {
- impl::cp_swap(text, x.text);
- impl::cp_swap(is_root_, x.is_root_);
- impl::cp_swap(parser_id_, x.parser_id_);
- impl::cp_swap(value_, x.value_);
- }
-
- typename container_t::iterator begin()
- {
- return text.begin();
- }
-
- typename container_t::const_iterator begin() const
- {
- return text.begin();
- }
-
- typename container_t::iterator end()
- {
- return text.end();
- }
-
- typename container_t::const_iterator end() const
- {
- return text.end();
- }
-
- bool is_root() const
- {
- return is_root_;
- }
-
- void is_root(bool b)
- {
- is_root_ = b;
- }
-
- parser_id id() const
- {
- return parser_id_;
- }
-
- void id(parser_id r)
- {
- parser_id_ = r;
- }
-
- ValueT const& value() const
- {
- return value_;
- }
-
- void value(ValueT const& v)
- {
- value_ = v;
- }
-
-private:
- container_t text;
- bool is_root_;
- parser_id parser_id_;
- ValueT value_;
-};
-
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
-template <typename IteratorT, typename ValueT>
-inline std::ostream&
-operator<<(std::ostream& o, node_val_data<IteratorT, ValueT> const& n)
-{
- o << "(id = " << n.id() << " text = \"";
- typedef typename node_val_data<IteratorT, ValueT>::const_iterator_t
- iterator_t;
- for (iterator_t it = n.begin(); it != n.end(); ++it)
- impl::token_printer(o, *it);
- o << "\" is_root = " << n.is_root()
- << " value = " << n.value() << ")";
- return o;
-}
-#endif
-
-template <typename T>
-inline void
-swap(tree_node<T>& a, tree_node<T>& b)
-{
- a.swap(b);
-}
-
-template <typename T, typename V>
-inline void
-swap(node_iter_data<T, V>& a, node_iter_data<T, V>& b)
-{
- a.swap(b);
-}
-
-//////////////////////////////////
-template <typename ValueT>
-class node_iter_data_factory
-{
-public:
- // This inner class is so that node_iter_data_factory can simulate
- // a template template parameter
- template <typename IteratorT>
- class factory
- {
- public:
- typedef IteratorT iterator_t;
- typedef node_iter_data<iterator_t, ValueT> node_t;
-
- static node_t create_node(iterator_t const& first, iterator_t const& last,
- bool /*is_leaf_node*/)
- {
- return node_t(first, last);
- }
-
- static node_t empty_node()
- {
- return node_t();
- }
-
- // precondition: ContainerT contains a tree_node<node_t>. And all
- // iterators in the container point to the same sequence.
- template <typename ContainerT>
- static node_t group_nodes(ContainerT const& nodes)
- {
- return node_t(nodes.begin()->value.begin(),
- nodes.back().value.end());
- }
- };
-};
-
-//////////////////////////////////
-template <typename ValueT>
-class node_val_data_factory
-{
-public:
- // This inner class is so that node_val_data_factory can simulate
- // a template template parameter
- template <typename IteratorT>
- class factory
- {
- public:
- typedef IteratorT iterator_t;
- typedef node_val_data<iterator_t, ValueT> node_t;
-
- static node_t create_node(iterator_t const& first, iterator_t const& last,
- bool is_leaf_node)
- {
- if (is_leaf_node)
- return node_t(first, last);
- else
- return node_t();
- }
-
- static node_t empty_node()
- {
- return node_t();
- }
-
- template <typename ContainerT>
- static node_t group_nodes(ContainerT const& nodes)
- {
- typename node_t::container_t c;
- typename ContainerT::const_iterator i_end = nodes.end();
- // copy all the nodes text into a new one
- for (typename ContainerT::const_iterator i = nodes.begin();
- i != i_end; ++i)
- {
- // See docs: reduced_node_d cannot be used with a
- // rule inside the [].
- assert(i->children.size() == 0);
- c.insert(c.end(), i->value.begin(), i->value.end());
- }
- return node_t(c.begin(), c.end());
- }
- };
-};
-
-//////////////////////////////////
-template <typename ValueT>
-class node_all_val_data_factory
-{
-public:
- // This inner class is so that node_all_val_data_factory can simulate
- // a template template parameter
- template <typename IteratorT>
- class factory
- {
- public:
- typedef IteratorT iterator_t;
- typedef node_val_data<iterator_t, ValueT> node_t;
-
- static node_t create_node(iterator_t const& first, iterator_t const& last,
- bool /*is_leaf_node*/)
- {
- return node_t(first, last);
- }
-
- static node_t empty_node()
- {
- return node_t();
- }
-
- template <typename ContainerT>
- static node_t group_nodes(ContainerT const& nodes)
- {
- typename node_t::container_t c;
- typename ContainerT::const_iterator i_end = nodes.end();
- // copy all the nodes text into a new one
- for (typename ContainerT::const_iterator i = nodes.begin();
- i != i_end; ++i)
- {
- assert(i->children.size() == 0);
- c.insert(c.end(), i->value.begin(), i->value.end());
- }
- return node_t(c.begin(), c.end());
- }
- };
-};
-
-namespace impl {
-
- ///////////////////////////////////////////////////////////////////////////
- // can't call unqualified swap from within classname::swap
- // as Koenig lookup rules will find only the classname::swap
- // member function not the global declaration, so use cp_swap
- // as a forwarding function (JM):
-#if __GNUC__ == 2
- using ::std::swap;
-#endif
- template <typename T>
- inline void cp_swap(T& t1, T& t2)
- {
- using std::swap;
- using boost::spirit::swap;
- using boost::swap;
- swap(t1, t2);
- }
-}
-
-//////////////////////////////////
-template <typename IteratorT, typename NodeFactoryT, typename T>
-class tree_match : public match<T>
-{
-public:
-
- typedef typename NodeFactoryT::template factory<IteratorT> node_factory_t;
- typedef typename node_factory_t::node_t parse_node_t;
- typedef tree_node<parse_node_t> node_t;
- typedef typename node_t::children_t container_t;
- typedef typename container_t::iterator tree_iterator;
- typedef typename container_t::const_iterator const_tree_iterator;
-
- typedef T attr_t;
- typedef typename boost::call_traits<T>::param_type param_type;
- typedef typename boost::call_traits<T>::reference reference;
- typedef typename boost::call_traits<T>::const_reference const_reference;
-
- tree_match()
- : match<T>(), trees()
- {}
-
- explicit
- tree_match(std::size_t length)
- : match<T>(length), trees()
- {}
-
- tree_match(std::size_t length, parse_node_t const& n)
- : match<T>(length), trees()
- {
- trees.push_back(node_t(n));
- }
-
- tree_match(std::size_t length, param_type val, parse_node_t const& n)
- : match<T>(length, val), trees()
- {
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- trees.reserve(10); // this is more or less an arbitrary number...
-#endif
- trees.push_back(node_t(n));
- }
-
- // attention, these constructors will change the second parameter!
- tree_match(std::size_t length, container_t& c)
- : match<T>(length), trees()
- {
- impl::cp_swap(trees, c);
- }
-
- tree_match(std::size_t length, param_type val, container_t& c)
- : match<T>(length, val), trees()
- {
- impl::cp_swap(trees, c);
- }
-
- template <typename T2>
- tree_match(match<T2> const& other)
- : match<T>(other), trees()
- {}
-
- template <typename T2, typename T3, typename T4>
- tree_match(tree_match<T2, T3, T4> const& other)
- : match<T>(other), trees()
- { impl::cp_swap(trees, other.trees); }
-
- template <typename T2>
- tree_match&
- operator=(match<T2> const& other)
- {
- match<T>::operator=(other);
- return *this;
- }
-
- template <typename T2, typename T3, typename T4>
- tree_match&
- operator=(tree_match<T2, T3, T4> const& other)
- {
- match<T>::operator=(other);
- impl::cp_swap(trees, other.trees);
- return *this;
- }
-
- tree_match(tree_match const& x)
- : match<T>(x), trees()
- {
- // use auto_ptr like ownership for the trees data member
- impl::cp_swap(trees, x.trees);
- }
-
- tree_match& operator=(tree_match const& x)
- {
- tree_match tmp(x);
- this->swap(tmp);
- return *this;
- }
-
- void swap(tree_match& x)
- {
- match<T>::swap(x);
- impl::cp_swap(trees, x.trees);
- }
-
- mutable container_t trees;
-};
-
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
-template <typename IteratorT, typename NodeFactoryT, typename T>
-inline std::ostream&
-operator<<(std::ostream& o, tree_match<IteratorT, NodeFactoryT, T> const& m)
-{
- typedef
- typename tree_match<IteratorT, NodeFactoryT, T>::container_t::iterator
- iterator;
-
- o << "(length = " << (int)m.length();
- int c = 0;
- for (iterator i = m.trees.begin(); i != m.trees.end(); ++i)
- {
- o << " trees[" << c++ << "] = " << *i;
- }
- o << "\n)";
- return o;
-}
-#endif
-
-//////////////////////////////////
-struct tree_policy
-{
- template <typename FunctorT, typename MatchT>
- static void apply_op_to_match(FunctorT const& /*op*/, MatchT& /*m*/)
- {}
-
- template <typename MatchT, typename Iterator1T, typename Iterator2T>
- static void group_match(MatchT& /*m*/, parser_id const& /*id*/,
- Iterator1T const& /*first*/, Iterator2T const& /*last*/)
- {}
-
- template <typename MatchT>
- static void concat(MatchT& /*a*/, MatchT const& /*b*/)
- {}
-};
-
-//////////////////////////////////
-template <
- typename MatchPolicyT,
- typename IteratorT,
- typename NodeFactoryT,
- typename TreePolicyT,
- typename T
->
-struct common_tree_match_policy : public match_policy
-{
- common_tree_match_policy()
- {
- }
-
- template <typename PolicyT>
- common_tree_match_policy(PolicyT const & policies)
- : match_policy((match_policy const &)policies)
- {
- }
-
- template <typename U>
- struct result { typedef tree_match<IteratorT, NodeFactoryT, U> type; };
-
- typedef tree_match<IteratorT, NodeFactoryT, T> match_t;
- typedef IteratorT iterator_t;
- typedef TreePolicyT tree_policy_t;
- typedef NodeFactoryT factory_t;
-
- static const match_t no_match() { return match_t(); }
- static const match_t empty_match()
- { return match_t(0, tree_policy_t::empty_node()); }
-
- template <typename AttrT, typename Iterator1T, typename Iterator2T>
- static tree_match<IteratorT, NodeFactoryT, AttrT> create_match(
- std::size_t length,
- AttrT const& val,
- Iterator1T const& first,
- Iterator2T const& last)
- {
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
-
- BOOST_SPIRIT_DEBUG_OUT << "\n>>> create_node(begin) <<<\n"
- "creating node text: \"";
- for (Iterator1T it = first; it != last; ++it)
- impl::token_printer(BOOST_SPIRIT_DEBUG_OUT, *it);
- BOOST_SPIRIT_DEBUG_OUT << "\"\n";
- BOOST_SPIRIT_DEBUG_OUT << ">>> create_node(end) <<<\n\n";
-#endif
- return tree_match<IteratorT, NodeFactoryT, AttrT>(length, val,
- tree_policy_t::create_node(length, first, last, true));
- }
-
- template <typename Match1T, typename Match2T>
- static void concat_match(Match1T& a, Match2T const& b)
- {
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES)
-
- BOOST_SPIRIT_DEBUG_OUT << "\n>>> concat_match(begin) <<<\n";
- BOOST_SPIRIT_DEBUG_OUT << "tree a:\n" << a << "\n";
- BOOST_SPIRIT_DEBUG_OUT << "tree b:\n" << b << "\n";
- BOOST_SPIRIT_DEBUG_OUT << ">>> concat_match(end) <<<\n\n";
-#endif
- BOOST_SPIRIT_ASSERT(a && b);
- if (a.length() == 0)
- {
- a = b;
- return;
- }
- else if (b.length() == 0
-#ifdef BOOST_SPIRIT_NO_TREE_NODE_COLLAPSING
- && !b.trees.begin()->value.id().to_long()
-#endif
- )
- {
- return;
- }
- a.concat(b);
- tree_policy_t::concat(a, b);
- }
-
- template <typename MatchT, typename IteratorT2>
- void
- group_match(
- MatchT& m,
- parser_id const& id,
- IteratorT2 const& first,
- IteratorT2 const& last) const
- {
- if (!m) return;
-
-#if defined(BOOST_SPIRIT_DEBUG) && \
- (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_TREES)
-
- BOOST_SPIRIT_DEBUG_OUT << "\n>>> group_match(begin) <<<\n"
- "new node(" << id << ") \"";
- for (IteratorT2 it = first; it != last; ++it)
- impl::token_printer(BOOST_SPIRIT_DEBUG_OUT, *it);
- BOOST_SPIRIT_DEBUG_OUT << "\"\n";
- BOOST_SPIRIT_DEBUG_OUT << "new child tree (before grouping):\n" << m << "\n";
-
- tree_policy_t::group_match(m, id, first, last);
-
- BOOST_SPIRIT_DEBUG_OUT << "new child tree (after grouping):\n" << m << "\n";
- BOOST_SPIRIT_DEBUG_OUT << ">>> group_match(end) <<<\n\n";
-#else
- tree_policy_t::group_match(m, id, first, last);
-#endif
- }
-};
-
-//////////////////////////////////
-template <typename MatchPolicyT, typename NodeFactoryT>
-struct common_tree_tree_policy
-{
- typedef typename MatchPolicyT::iterator_t iterator_t;
- typedef typename MatchPolicyT::match_t match_t;
- typedef typename NodeFactoryT::template factory<iterator_t> factory_t;
- typedef typename factory_t::node_t node_t;
-
- template <typename Iterator1T, typename Iterator2T>
- static node_t
- create_node(std::size_t /*length*/, Iterator1T const& first,
- Iterator2T const& last, bool leaf_node)
- {
- return factory_t::create_node(first, last, leaf_node);
- }
-
- static node_t
- empty_node()
- {
- return factory_t::empty_node();
- }
-
- template <typename FunctorT>
- static void apply_op_to_match(FunctorT const& op, match_t& m)
- {
- op(m);
- }
-};
-
-//////////////////////////////////
-// directives to modify how the parse tree is generated
-
-struct no_tree_gen_node_parser_gen;
-
-template <typename T>
-struct no_tree_gen_node_parser
-: public unary<T, parser<no_tree_gen_node_parser<T> > >
-{
- typedef no_tree_gen_node_parser<T> self_t;
- typedef no_tree_gen_node_parser_gen parser_generator_t;
- typedef unary_parser_category parser_category_t;
-
- no_tree_gen_node_parser(T const& a)
- : unary<T, parser<no_tree_gen_node_parser<T> > >(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scanner) const
- {
- typedef typename ScannerT::iteration_policy_t iteration_policy_t;
- typedef match_policy match_policy_t;
- typedef typename ScannerT::action_policy_t action_policy_t;
- typedef scanner_policies<
- iteration_policy_t,
- match_policy_t,
- action_policy_t
- > policies_t;
-
- return this->subject().parse(scanner.change_policies(policies_t(scanner)));
- }
-};
-
-struct no_tree_gen_node_parser_gen
-{
- template <typename T>
- struct result {
-
- typedef no_tree_gen_node_parser<T> type;
- };
-
- template <typename T>
- static no_tree_gen_node_parser<T>
- generate(parser<T> const& s)
- {
- return no_tree_gen_node_parser<T>(s.derived());
- }
-
- template <typename T>
- no_tree_gen_node_parser<T>
- operator[](parser<T> const& s) const
- {
- return no_tree_gen_node_parser<T>(s.derived());
- }
-};
-
-const no_tree_gen_node_parser_gen no_node_d = no_tree_gen_node_parser_gen();
-
-//////////////////////////////////
-
-struct leaf_node_parser_gen;
-
-template<typename T>
-struct leaf_node_parser
-: public unary<T, parser<leaf_node_parser<T> > >
-{
- typedef leaf_node_parser<T> self_t;
- typedef leaf_node_parser_gen parser_generator_t;
- typedef unary_parser_category parser_category_t;
-
- leaf_node_parser(T const& a)
- : unary<T, parser<leaf_node_parser<T> > >(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scanner) const
- {
- typedef scanner_policies< typename ScannerT::iteration_policy_t,
- match_policy, typename ScannerT::action_policy_t > policies_t;
-
- typedef typename ScannerT::iterator_t iterator_t;
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename result_t::node_factory_t factory_t;
-
- iterator_t from = scanner.first;
- result_t hit = impl::contiguous_parser_parse<result_t>(this->subject(),
- scanner.change_policies(policies_t(scanner,match_policy(),scanner)),
- scanner);
-
- if (hit)
- return result_t(hit.length(),
- factory_t::create_node(from, scanner.first, true));
- else
- return result_t(hit.length());
- }
-};
-
-struct leaf_node_parser_gen
-{
- template <typename T>
- struct result {
-
- typedef leaf_node_parser<T> type;
- };
-
- template <typename T>
- static leaf_node_parser<T>
- generate(parser<T> const& s)
- {
- return leaf_node_parser<T>(s.derived());
- }
-
- template <typename T>
- leaf_node_parser<T>
- operator[](parser<T> const& s) const
- {
- return leaf_node_parser<T>(s.derived());
- }
-};
-
-const leaf_node_parser_gen leaf_node_d = leaf_node_parser_gen();
-const leaf_node_parser_gen token_node_d = leaf_node_parser_gen();
-
-//////////////////////////////////
-namespace impl {
-
- template <typename MatchPolicyT>
- struct tree_policy_selector
- {
- typedef tree_policy type;
- };
-
-} // namespace impl
-
-//////////////////////////////////
-template <typename NodeParserT>
-struct node_parser_gen;
-
-template <typename T, typename NodeParserT>
-struct node_parser
-: public unary<T, parser<node_parser<T, NodeParserT> > >
-{
- typedef node_parser<T, NodeParserT> self_t;
- typedef node_parser_gen<NodeParserT> parser_generator_t;
- typedef unary_parser_category parser_category_t;
-
- node_parser(T const& a)
- : unary<T, parser<node_parser<T, NodeParserT> > >(a) {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<T, ScannerT>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scanner) const
- {
- typename parser_result<self_t, ScannerT>::type hit = this->subject().parse(scanner);
- if (hit)
- {
- impl::tree_policy_selector<typename ScannerT::match_policy_t>::type::apply_op_to_match(NodeParserT(), hit);
- }
- return hit;
- }
-};
-
-template <typename NodeParserT>
-struct node_parser_gen
-{
- template <typename T>
- struct result {
-
- typedef node_parser<T, NodeParserT> type;
- };
-
- template <typename T>
- static node_parser<T, NodeParserT>
- generate(parser<T> const& s)
- {
- return node_parser<T, NodeParserT>(s.derived());
- }
-
- template <typename T>
- node_parser<T, NodeParserT>
- operator[](parser<T> const& s) const
- {
- return node_parser<T, NodeParserT>(s.derived());
- }
-};
-//////////////////////////////////
-struct reduced_node_op
-{
- template <typename MatchT>
- void operator()(MatchT& m) const
- {
- if (m.trees.size() == 1)
- {
- m.trees.begin()->children.clear();
- }
- else if (m.trees.size() > 1)
- {
- typedef typename MatchT::node_factory_t node_factory_t;
- m = MatchT(m.length(), node_factory_t::group_nodes(m.trees));
- }
- }
-};
-
-const node_parser_gen<reduced_node_op> reduced_node_d =
- node_parser_gen<reduced_node_op>();
-
-
-struct discard_node_op
-{
- template <typename MatchT>
- void operator()(MatchT& m) const
- {
- m.trees.clear();
- }
-};
-
-const node_parser_gen<discard_node_op> discard_node_d =
- node_parser_gen<discard_node_op>();
-
-struct infix_node_op
-{
- template <typename MatchT>
- void operator()(MatchT& m) const
- {
- typedef typename MatchT::container_t container_t;
- typedef typename MatchT::container_t::iterator iter_t;
- typedef typename MatchT::container_t::value_type value_t;
-
- using std::swap;
- using boost::swap;
- using boost::spirit::swap;
-
- // copying the tree nodes is expensive, since it may copy a whole
- // tree. swapping them is cheap, so swap the nodes we want into
- // a new container of children.
- container_t new_children;
- std::size_t length = 0;
- std::size_t tree_size = m.trees.size();
-
- // the infix_node_d[] make no sense for nodes with no subnodes
- BOOST_SPIRIT_ASSERT(tree_size >= 1);
-
- bool keep = true;
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- new_children.reserve((tree_size+1)/2);
-#endif
- iter_t i_end = m.trees.end();
- for (iter_t i = m.trees.begin(); i != i_end; ++i)
- {
- if (keep) {
- // adjust the length
- length += std::distance((*i).value.begin(), (*i).value.end());
-
- // move the child node
- new_children.push_back(value_t());
- swap(new_children.back(), *i);
- keep = false;
- }
- else {
- // ignore this child node
- keep = true;
- }
- }
-
- m = MatchT(length, new_children);
- }
-};
-
-const node_parser_gen<infix_node_op> infix_node_d =
- node_parser_gen<infix_node_op>();
-
-struct discard_first_node_op
-{
- template <typename MatchT>
- void operator()(MatchT& m) const
- {
- typedef typename MatchT::container_t container_t;
- typedef typename MatchT::container_t::iterator iter_t;
- typedef typename MatchT::container_t::value_type value_t;
-
- using std::swap;
- using boost::swap;
- using boost::spirit::swap;
-
- // copying the tree nodes is expensive, since it may copy a whole
- // tree. swapping them is cheap, so swap the nodes we want into
- // a new container of children, instead of saying
- // m.trees.erase(m.trees.begin()) because, on a container_t that will
- // cause all the nodes afterwards to be copied into the previous
- // position.
- container_t new_children;
- std::size_t length = 0;
- std::size_t tree_size = m.trees.size();
-
- // the discard_first_node_d[] make no sense for nodes with no subnodes
- BOOST_SPIRIT_ASSERT(tree_size >= 1);
-
- if (tree_size > 1) {
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- new_children.reserve(tree_size - 1);
-#endif
- iter_t i = m.trees.begin(), i_end = m.trees.end();
- for (++i; i != i_end; ++i)
- {
- // adjust the length
- length += std::distance((*i).value.begin(), (*i).value.end());
-
- // move the child node
- new_children.push_back(value_t());
- swap(new_children.back(), *i);
- }
- }
- else {
- // if there was a tree and now there isn't any, insert an empty node
- iter_t i = m.trees.begin();
-
- // This isn't entirely correct, since the empty node will reference
- // the end of the discarded node, but I currently don't see any way to
- // get at the begin of the node following this subnode.
- // This should be safe anyway because the it shouldn't get dereferenced
- // under any circumstances.
- typedef typename value_t::parse_node_t::iterator_t iterator_type;
- iterator_type it = (*i).value.end();
-
- new_children.push_back(
- value_t(typename value_t::parse_node_t(it, it)));
- }
-
- m = MatchT(length, new_children);
- }
-};
-
-const node_parser_gen<discard_first_node_op> discard_first_node_d =
- node_parser_gen<discard_first_node_op>();
-
-struct discard_last_node_op
-{
- template <typename MatchT>
- void operator()(MatchT& m) const
- {
- typedef typename MatchT::container_t container_t;
- typedef typename MatchT::container_t::iterator iter_t;
- typedef typename MatchT::container_t::value_type value_t;
-
- using std::swap;
- using boost::swap;
- using boost::spirit::swap;
-
- // copying the tree nodes is expensive, since it may copy a whole
- // tree. swapping them is cheap, so swap the nodes we want into
- // a new container of children, instead of saying
- // m.trees.erase(m.trees.begin()) because, on a container_t that will
- // cause all the nodes afterwards to be copied into the previous
- // position.
- container_t new_children;
- std::size_t length = 0;
- std::size_t tree_size = m.trees.size();
-
- // the discard_last_node_d[] make no sense for nodes with no subnodes
- BOOST_SPIRIT_ASSERT(tree_size >= 1);
-
- if (tree_size > 1) {
- m.trees.pop_back();
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- new_children.reserve(tree_size - 1);
-#endif
- iter_t i_end = m.trees.end();
- for (iter_t i = m.trees.begin(); i != i_end; ++i)
- {
- // adjust the length
- length += std::distance((*i).value.begin(), (*i).value.end());
-
- // move the child node
- new_children.push_back(value_t());
- swap(new_children.back(), *i);
- }
- }
- else {
- // if there was a tree and now there isn't any, insert an empty node
- iter_t i = m.trees.begin();
-
- typedef typename value_t::parse_node_t::iterator_t iterator_type;
- iterator_type it = (*i).value.begin();
-
- new_children.push_back(
- value_t(typename value_t::parse_node_t(it, it)));
- }
-
- m = MatchT(length, new_children);
- }
-};
-
-const node_parser_gen<discard_last_node_op> discard_last_node_d =
- node_parser_gen<discard_last_node_op>();
-
-struct inner_node_op
-{
- template <typename MatchT>
- void operator()(MatchT& m) const
- {
- typedef typename MatchT::container_t container_t;
- typedef typename MatchT::container_t::iterator iter_t;
- typedef typename MatchT::container_t::value_type value_t;
-
- using std::swap;
- using boost::swap;
- using boost::spirit::swap;
-
- // copying the tree nodes is expensive, since it may copy a whole
- // tree. swapping them is cheap, so swap the nodes we want into
- // a new container of children, instead of saying
- // m.trees.erase(m.trees.begin()) because, on a container_t that will
- // cause all the nodes afterwards to be copied into the previous
- // position.
- container_t new_children;
- std::size_t length = 0;
- std::size_t tree_size = m.trees.size();
-
- // the inner_node_d[] make no sense for nodes with less then 2 subnodes
- BOOST_SPIRIT_ASSERT(tree_size >= 2);
-
- if (tree_size > 2) {
- m.trees.pop_back(); // erase the last element
-#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES)
- new_children.reserve(tree_size - 1);
-#endif
- iter_t i = m.trees.begin(); // skip over the first element
- iter_t i_end = m.trees.end();
- for (++i; i != i_end; ++i)
- {
- // adjust the length
- length += std::distance((*i).value.begin(), (*i).value.end());
-
- // move the child node
- new_children.push_back(value_t());
- swap(new_children.back(), *i);
- }
- }
- else {
- // if there was a tree and now there isn't any, insert an empty node
- iter_t i = m.trees.begin(); // skip over the first element
-
- typedef typename value_t::parse_node_t::iterator_t iterator_type;
- iterator_type it = (*++i).value.begin();
-
- new_children.push_back(
- value_t(typename value_t::parse_node_t(it, it)));
- }
-
- m = MatchT(length, new_children);
- }
-};
-
-const node_parser_gen<inner_node_op> inner_node_d =
- node_parser_gen<inner_node_op>();
-
-
-//////////////////////////////////
-// action_directive_parser and action_directive_parser_gen
-// are meant to be used as a template to create directives that
-// generate action classes. For example access_match and
-// access_node. The ActionParserT template parameter must be
-// a class that has an innter class called action that is templated
-// on the parser type and the action type.
-template <typename ActionParserT>
-struct action_directive_parser_gen;
-
-template <typename T, typename ActionParserT>
-struct action_directive_parser
-: public unary<T, parser<action_directive_parser<T, ActionParserT> > >
-{
- typedef action_directive_parser<T, ActionParserT> self_t;
- typedef action_directive_parser_gen<ActionParserT> parser_generator_t;
- typedef unary_parser_category parser_category_t;
-
- action_directive_parser(T const& a)
- : unary<T, parser<action_directive_parser<T, ActionParserT> > >(a) {}
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<T, ScannerT>::type type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scanner) const
- {
- return this->subject().parse(scanner);
- }
-
- template <typename ActionT>
- typename ActionParserT::template action<action_directive_parser<T, ActionParserT>, ActionT>
- operator[](ActionT const& actor) const
- {
- typedef typename
- ActionParserT::template action<action_directive_parser, ActionT>
- action_t;
- return action_t(*this, actor);
- }
-};
-
-//////////////////////////////////
-template <typename ActionParserT>
-struct action_directive_parser_gen
-{
- template <typename T>
- struct result {
-
- typedef action_directive_parser<T, ActionParserT> type;
- };
-
- template <typename T>
- static action_directive_parser<T, ActionParserT>
- generate(parser<T> const& s)
- {
- return action_directive_parser<T, ActionParserT>(s.derived());
- }
-
- template <typename T>
- action_directive_parser<T, ActionParserT>
- operator[](parser<T> const& s) const
- {
- return action_directive_parser<T, ActionParserT>(s.derived());
- }
-};
-
-//////////////////////////////////
-// Calls the attached action passing it the match from the parser
-// and the first and last iterators.
-// The inner template class is used to simulate template-template parameters
-// (declared in common_fwd.hpp).
-template <typename ParserT, typename ActionT>
-struct access_match_action::action
-: public unary<ParserT, parser<access_match_action::action<ParserT, ActionT> > >
-{
- typedef action_parser_category parser_category;
- typedef action<ParserT, ActionT> self_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- action( ParserT const& subject,
- ActionT const& actor_);
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scanner) const;
-
- ActionT const &predicate() const;
-
- private:
- ActionT actor;
-};
-
-//////////////////////////////////
-template <typename ParserT, typename ActionT>
-access_match_action::action<ParserT, ActionT>::action(
- ParserT const& subject,
- ActionT const& actor_)
-: unary<ParserT, parser<access_match_action::action<ParserT, ActionT> > >(subject)
-, actor(actor_)
-{}
-
-//////////////////////////////////
-template <typename ParserT, typename ActionT>
-template <typename ScannerT>
-typename parser_result<access_match_action::action<ParserT, ActionT>, ScannerT>::type
-access_match_action::action<ParserT, ActionT>::
-parse(ScannerT const& scan) const
-{
- typedef typename ScannerT::iterator_t iterator_t;
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- if (!scan.at_end())
- {
- iterator_t save = scan.first;
- result_t hit = this->subject().parse(scan);
- actor(hit, save, scan.first);
- return hit;
- }
- return scan.no_match();
-}
-
-//////////////////////////////////
-template <typename ParserT, typename ActionT>
-ActionT const &access_match_action::action<ParserT, ActionT>::predicate() const
-{
- return actor;
-}
-
-//////////////////////////////////
-const action_directive_parser_gen<access_match_action> access_match_d
- = action_directive_parser_gen<access_match_action>();
-
-
-
-//////////////////////////////////
-// Calls the attached action passing it the node from the parser
-// and the first and last iterators
-// The inner template class is used to simulate template-template parameters
-// (declared in common_fwd.hpp).
-template <typename ParserT, typename ActionT>
-struct access_node_action::action
-: public unary<ParserT, parser<access_node_action::action<ParserT, ActionT> > >
-{
- typedef action_parser_category parser_category;
- typedef action<ParserT, ActionT> self_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<ParserT, ScannerT>::type type;
- };
-
- action( ParserT const& subject,
- ActionT const& actor_);
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scanner) const;
-
- ActionT const &predicate() const;
-
- private:
- ActionT actor;
-};
-
-//////////////////////////////////
-template <typename ParserT, typename ActionT>
-access_node_action::action<ParserT, ActionT>::action(
- ParserT const& subject,
- ActionT const& actor_)
-: unary<ParserT, parser<access_node_action::action<ParserT, ActionT> > >(subject)
-, actor(actor_)
-{}
-
-//////////////////////////////////
-template <typename ParserT, typename ActionT>
-template <typename ScannerT>
-typename parser_result<access_node_action::action<ParserT, ActionT>, ScannerT>::type
-access_node_action::action<ParserT, ActionT>::
-parse(ScannerT const& scan) const
-{
- typedef typename ScannerT::iterator_t iterator_t;
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- if (!scan.at_end())
- {
- iterator_t save = scan.first;
- result_t hit = this->subject().parse(scan);
- if (hit && hit.trees.size() > 0)
- actor(*hit.trees.begin(), save, scan.first);
- return hit;
- }
- return scan.no_match();
-}
-
-//////////////////////////////////
-template <typename ParserT, typename ActionT>
-ActionT const &access_node_action::action<ParserT, ActionT>::predicate() const
-{
- return actor;
-}
-
-//////////////////////////////////
-const action_directive_parser_gen<access_node_action> access_node_d
- = action_directive_parser_gen<access_node_action>();
-
-
-
-//////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// tree_parse_info
-//
-// Results returned by the tree parse functions:
-//
-// stop: points to the final parse position (i.e parsing
-// processed the input up to this point).
-//
-// match: true if parsing is successful. This may be full:
-// the parser consumed all the input, or partial:
-// the parser consumed only a portion of the input.
-//
-// full: true when we have a full match (i.e the parser
-// consumed all the input.
-//
-// length: The number of characters consumed by the parser.
-// This is valid only if we have a successful match
-// (either partial or full). A negative value means
-// that the match is unsucessful.
-//
-// trees: Contains the root node(s) of the tree.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename IteratorT,
- typename NodeFactoryT,
- typename T
->
-struct tree_parse_info
-{
- IteratorT stop;
- bool match;
- bool full;
- std::size_t length;
- typename tree_match<IteratorT, NodeFactoryT, T>::container_t trees;
-
- tree_parse_info()
- : stop()
- , match(false)
- , full(false)
- , length(0)
- , trees()
- {}
-
- template <typename IteratorT2>
- tree_parse_info(tree_parse_info<IteratorT2> const& pi)
- : stop(pi.stop)
- , match(pi.match)
- , full(pi.full)
- , length(pi.length)
- , trees()
- {
- using std::swap;
- using boost::swap;
- using boost::spirit::swap;
-
- // use auto_ptr like ownership for the trees data member
- swap(trees, pi.trees);
- }
-
- tree_parse_info(
- IteratorT stop_,
- bool match_,
- bool full_,
- std::size_t length_,
- typename tree_match<IteratorT, NodeFactoryT, T>::container_t trees_)
- : stop(stop_)
- , match(match_)
- , full(full_)
- , length(length_)
- , trees()
- {
- using std::swap;
- using boost::swap;
- using boost::spirit::swap;
-
- // use auto_ptr like ownership for the trees data member
- swap(trees, trees_);
- }
-};
-
-}} // namespace boost::spirit
-
-#endif
-

Modified: branches/proto/v4/boost/spirit/tree/common_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/common_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/common_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,92 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_TREE_COMMON_FWD_HPP)
-#define BOOST_SPIRIT_TREE_COMMON_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_COMMON_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_COMMON_FWD
 
-#include <boost/spirit/core/nil.hpp>
-
-namespace boost { namespace spirit {
-
- template <typename T>
- struct tree_node;
-
- template <typename IteratorT = char const*, typename ValueT = nil_t>
- struct node_iter_data;
-
- template <typename ValueT = nil_t>
- class node_iter_data_factory;
-
- template <typename ValueT = nil_t>
- class node_val_data_factory;
-
- template <typename ValueT = nil_t>
- class node_all_val_data_factory;
-
- template <
- typename IteratorT,
- typename NodeFactoryT = node_val_data_factory<nil_t>,
- typename T = nil_t
- >
- class tree_match;
-
- struct tree_policy;
-
- template <
- typename MatchPolicyT,
- typename IteratorT,
- typename NodeFactoryT,
- typename TreePolicyT,
- typename T = nil_t
- >
- struct common_tree_match_policy;
-
- template <typename MatchPolicyT, typename NodeFactoryT>
- struct common_tree_tree_policy;
-
- template <typename T>
- struct no_tree_gen_node_parser;
-
- template <typename T>
- struct leaf_node_parser;
-
- template <typename T, typename NodeParserT>
- struct node_parser;
-
- struct discard_node_op;
- struct reduced_node_op;
- struct infix_node_op;
- struct discard_first_node_op;
- struct discard_last_node_op;
- struct inner_node_op;
-
- template <typename T, typename ActionParserT>
- struct action_directive_parser;
-
- struct access_match_action
- {
- template <typename ParserT, typename ActionT>
- struct action;
- };
-
- struct access_node_action
- {
- template <typename ParserT, typename ActionT>
- struct action;
- };
-
- template <
- typename IteratorT = char const *,
- typename NodeFactoryT = node_val_data_factory<nil_t>,
- typename T = nil_t
- >
- struct tree_parse_info;
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_common_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_common_fwd.hpp"
+#endif
 
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_common_fwd.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/tree/parse_tree.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/parse_tree.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/parse_tree.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,293 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_TREE_PARSE_TREE_HPP
-#define BOOST_SPIRIT_TREE_PARSE_TREE_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE
 
-#include <boost/spirit/tree/common.hpp>
-#include <boost/spirit/core/scanner/scanner.hpp>
-
-#include <boost/spirit/tree/parse_tree_fwd.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-
-//////////////////////////////////
-// pt_match_policy is simply an id so the correct specialization of tree_policy can be found.
-template <
- typename IteratorT,
- typename NodeFactoryT,
- typename T
->
-struct pt_match_policy :
- public common_tree_match_policy<
- pt_match_policy<IteratorT, NodeFactoryT, T>,
- IteratorT,
- NodeFactoryT,
- pt_tree_policy<
- pt_match_policy<IteratorT, NodeFactoryT, T>,
- NodeFactoryT,
- T
- >,
- T
- >
-{
- typedef
- common_tree_match_policy<
- pt_match_policy<IteratorT, NodeFactoryT, T>,
- IteratorT,
- NodeFactoryT,
- pt_tree_policy<
- pt_match_policy<IteratorT, NodeFactoryT, T>,
- NodeFactoryT,
- T
- >,
- T
- >
- common_tree_match_policy_;
-
- pt_match_policy()
- {
- }
-
- template <typename PolicyT>
- pt_match_policy(PolicyT const & policies)
- : common_tree_match_policy_(policies)
- {
- }
-};
-
-//////////////////////////////////
-template <typename MatchPolicyT, typename NodeFactoryT, typename T>
-struct pt_tree_policy :
- public common_tree_tree_policy<MatchPolicyT, NodeFactoryT>
-{
- typedef typename MatchPolicyT::match_t match_t;
- typedef typename MatchPolicyT::iterator_t iterator_t;
-
- template<typename MatchAT, typename MatchBT>
- static void concat(MatchAT& a, MatchBT const& b)
- {
- typedef typename match_t::attr_t attr_t;
- BOOST_SPIRIT_ASSERT(a && b);
-
- std::copy(b.trees.begin(), b.trees.end(),
- std::back_insert_iterator<typename match_t::container_t>(a.trees));
- }
-
- template <typename MatchT, typename Iterator1T, typename Iterator2T>
- static void group_match(MatchT& m, parser_id const& id,
- Iterator1T const& first, Iterator2T const& last)
- {
- if (!m)
- return;
-
- typedef typename NodeFactoryT::template factory<iterator_t> factory_t;
- typedef typename tree_match<iterator_t, NodeFactoryT, T>::container_t
- container_t;
- typedef typename container_t::iterator cont_iterator_t;
-
- match_t newmatch(m.length(),
- factory_t::create_node(first, last, false));
-
- std::swap(newmatch.trees.begin()->children, m.trees);
- // set this node and all it's unset children's rule_id
- newmatch.trees.begin()->value.id(id);
- for (cont_iterator_t i = newmatch.trees.begin()->children.begin();
- i != newmatch.trees.begin()->children.end();
- ++i)
- {
- if (i->value.id() == 0)
- i->value.id(id);
- }
- m = newmatch;
- }
-
- template <typename FunctorT, typename MatchT>
- static void apply_op_to_match(FunctorT const& op, MatchT& m)
- {
- op(m);
- }
-};
-
-namespace impl {
-
- template <typename IteratorT, typename NodeFactoryT, typename T>
- struct tree_policy_selector<pt_match_policy<IteratorT, NodeFactoryT, T> >
- {
- typedef pt_tree_policy<
- pt_match_policy<IteratorT, NodeFactoryT, T>,
- NodeFactoryT,
- T
- > type;
- };
-
-} // namespace impl
-
-
-//////////////////////////////////
-struct gen_pt_node_parser_gen;
-
-template <typename T>
-struct gen_pt_node_parser
-: public unary<T, parser<gen_pt_node_parser<T> > >
-{
- typedef gen_pt_node_parser<T> self_t;
- typedef gen_pt_node_parser_gen parser_generator_t;
- typedef unary_parser_category parser_category_t;
-
- gen_pt_node_parser(T const& a)
- : unary<T, parser<gen_pt_node_parser<T> > >(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename ScannerT::iteration_policy_t iteration_policy_t;
- typedef typename ScannerT::match_policy_t::iterator_t iterator_t;
- typedef typename ScannerT::match_policy_t::factory_t factory_t;
- typedef pt_match_policy<iterator_t, factory_t> match_policy_t;
- typedef typename ScannerT::action_policy_t action_policy_t;
- typedef scanner_policies<
- iteration_policy_t,
- match_policy_t,
- action_policy_t
- > policies_t;
-
- return this->subject().parse(scan.change_policies(policies_t(scan)));
- }
-};
-
-//////////////////////////////////
-struct gen_pt_node_parser_gen
-{
- template <typename T>
- struct result {
-
- typedef gen_pt_node_parser<T> type;
- };
-
- template <typename T>
- static gen_pt_node_parser<T>
- generate(parser<T> const& s)
- {
- return gen_pt_node_parser<T>(s.derived());
- }
-
- template <typename T>
- gen_pt_node_parser<T>
- operator[](parser<T> const& s) const
- {
- return gen_pt_node_parser<T>(s.derived());
- }
-};
-
-//////////////////////////////////
-const gen_pt_node_parser_gen gen_pt_node_d = gen_pt_node_parser_gen();
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Parse functions for parse trees
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename NodeFactoryT, typename IteratorT, typename ParserT,
- typename SkipT
->
-inline tree_parse_info<IteratorT, NodeFactoryT>
-pt_parse(
- IteratorT const& first_,
- IteratorT const& last,
- parser<ParserT> const& p,
- SkipT const& skip,
- NodeFactoryT const& /*dummy_*/ = NodeFactoryT())
-{
- typedef skip_parser_iteration_policy<SkipT> iter_policy_t;
- typedef pt_match_policy<IteratorT, NodeFactoryT> pt_match_policy_t;
- typedef
- scanner_policies<iter_policy_t, pt_match_policy_t>
- scanner_policies_t;
- typedef scanner<IteratorT, scanner_policies_t> scanner_t;
-
- iter_policy_t iter_policy(skip);
- scanner_policies_t policies(iter_policy);
- IteratorT first = first_;
- scanner_t scan(first, last, policies);
- tree_match<IteratorT, NodeFactoryT> hit = p.derived().parse(scan);
- return tree_parse_info<IteratorT, NodeFactoryT>(
- first, hit, hit && (first == last), hit.length(), hit.trees);
-}
-
-template <typename IteratorT, typename ParserT, typename SkipT>
-inline tree_parse_info<IteratorT>
-pt_parse(
- IteratorT const& first,
- IteratorT const& last,
- parser<ParserT> const& p,
- SkipT const& skip)
-{
- typedef node_val_data_factory<nil_t> default_node_factory_t;
- return pt_parse(first, last, p, skip, default_node_factory_t());
-}
-
-//////////////////////////////////
-template <typename IteratorT, typename ParserT>
-inline tree_parse_info<IteratorT>
-pt_parse(
- IteratorT const& first_,
- IteratorT const& last,
- parser<ParserT> const& parser)
-{
- typedef pt_match_policy<IteratorT> pt_match_policy_t;
- IteratorT first = first_;
- scanner<
- IteratorT,
- scanner_policies<iteration_policy, pt_match_policy_t>
- > scan(first, last);
- tree_match<IteratorT> hit = parser.derived().parse(scan);
- return tree_parse_info<IteratorT>(
- first, hit, hit && (first == last), hit.length(), hit.trees);
-}
-
-//////////////////////////////////
-template <typename CharT, typename ParserT, typename SkipT>
-inline tree_parse_info<CharT const*>
-pt_parse(
- CharT const* str,
- parser<ParserT> const& p,
- SkipT const& skip)
-{
- CharT const* last = str;
- while (*last)
- last++;
- return pt_parse(str, last, p, skip);
-}
-
-//////////////////////////////////
-template <typename CharT, typename ParserT>
-inline tree_parse_info<CharT const*>
-pt_parse(
- CharT const* str,
- parser<ParserT> const& parser)
-{
- CharT const* last = str;
- while (*last)
- {
- last++;
- }
- return pt_parse(str, last, parser);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parse_tree.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parse_tree.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_parse_tree.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/tree/parse_tree_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/parse_tree_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/parse_tree_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,34 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_TREE_PARSE_TREE_FWD_HPP)
-#define BOOST_SPIRIT_TREE_PARSE_TREE_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE_FWD
 
-namespace boost { namespace spirit {
-
- template <
- typename MatchPolicyT,
- typename NodeFactoryT,
- typename T = nil_t
- >
- struct pt_tree_policy;
-
- template <
- typename IteratorT,
- typename NodeFactoryT = node_val_data_factory<nil_t>,
- typename T = nil_t
- >
- struct pt_match_policy;
-
- template <typename T>
- struct gen_pt_node_parser;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parse_tree_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parse_tree_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_parse_tree_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/tree/parse_tree_utils.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/parse_tree_utils.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/parse_tree_utils.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,63 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE_UTILS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE_UTILS
 
-#if !defined(PARSE_TREE_UTILS_HPP)
-#define PARSE_TREE_UTILS_HPP
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parse_tree_utils.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_parse_tree_utils.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_parse_tree_utils.hpp>
 
-#include <utility> // for std::pair
-
-#include <boost/spirit/tree/parse_tree.hpp> // needed for parse tree generation
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost {
-namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The function 'get_first_leaf' returnes a reference to the first leaf node
-// of the given parsetree.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-tree_node<T> const &
-get_first_leaf (tree_node<T> const &node);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The function 'find_node' finds a specified node through recursive search.
-// If the return value is true, the variable to which points the parameter
-// 'found_node' will contain the address of the node with the given rule_id.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-bool
-find_node (tree_node<T> const &node, parser_id node_to_search,
- tree_node<T> const **found_node);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// The function 'get_node_range' return a pair of iterators pointing at the
-// range, which containes the elements of a specified node. It's very useful
-// for locating all information related with a specified node.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename T>
-bool
-get_node_range (tree_node<T> const &node, parser_id node_to_search,
- std::pair<typename tree_node<T>::const_tree_iterator,
- typename tree_node<T>::const_tree_iterator> &nodes);
-
-///////////////////////////////////////////////////////////////////////////////
-} // namespace spirit
-} // namespace boost
-
-#include "boost/spirit/tree/impl/parse_tree_utils.ipp"
-
-#endif // !defined(PARSE_TREE_UTILS_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/tree/tree_to_xml.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/tree_to_xml.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/tree_to_xml.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,111 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2007 Hartmut Kaiser
- Copyright (c) 2001-2003 Daniel Nuffer
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TREE_TO_XML
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TREE_TO_XML
 
-#if !defined(TREE_TO_XML_HPP)
-#define TREE_TO_XML_HPP
-
-namespace boost { namespace spirit {
-
- namespace impl {
- template <typename CharT> struct default_string;
- }
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Dump a parse tree as a xml stream
-//
-// The functions 'tree_to_xml' can be used to output a parse tree as a xml
-// stream into the given ostream. The parameters have the following
-// meaning:
-//
-// mandatory parameters:
-// ostrm The output stream used for streaming the parse tree.
-// tree The parse tree to output.
-//
-// optional parameters:
-// input_line The input line from which the parse tree was
-// generated (if given, it is used to output a comment
-// containing this line).
-// id_to_name A map, which is used for converting the rule id's contained
-// in the parse tree to readable strings. Here a auxiliary
-// associative container can be used, which maps a rule_id to
-// a std::string (i.e. a std::map<rule_id, std::string>).
-// get_token_id
-// A function or functor, which takes an instance of a token
-// and which should return a token id (i.e. something like
-// 'int f(char const c)').
-// get_token_value
-// A function or functor, which takes an instance of a token
-// and which should return a readable representation of this
-// token (i.e. something like 'std::string f(char const c)').
-//
-// The structure of the generated xml stream conforms to the DTD given in the
-// file 'parsetree.dtd'. This file is located in the spirit/tree directory.
-//
-///////////////////////////////////////////////////////////////////////////////
-
- template <
- typename CharT, typename TreeNodeT, typename AssocContainerT,
- typename GetIdT, typename GetValueT
- >
- inline void
- basic_tree_to_xml (std::basic_ostream<CharT> &ostrm, TreeNodeT const &tree,
- std::basic_string<CharT> const &input_line,
- AssocContainerT const& id_to_name, GetIdT const &get_token_id,
- GetValueT const &get_token_value);
-
- template <typename CharT, typename TreeNodeT, typename AssocContainerT>
- inline void
- basic_tree_to_xml (std::basic_ostream<CharT> &ostrm, TreeNodeT const &tree,
- std::basic_string<CharT> const &input_line,
- AssocContainerT const& id_to_name);
-
- template <typename CharT, typename TreeNodeT>
- inline void
- basic_tree_to_xml (std::basic_ostream<CharT> &ostrm, TreeNodeT const &tree,
- std::basic_string<CharT> const &input_line =
- impl::default_string<CharT>::get());
-
- ///////////////////////////////////////////////////////////////////////////
- template <
- typename TreeNodeT, typename AssocContainerT,
- typename GetIdT, typename GetValueT
- >
- inline void
- tree_to_xml (std::ostream &ostrm, TreeNodeT const &tree,
- std::string const &input_line, AssocContainerT const& id_to_name,
- GetIdT const &get_token_id, GetValueT const &get_token_value)
- {
- basic_tree_to_xml<char>(ostrm, tree, input_line, id_to_name,
- get_token_id, get_token_value);
- }
-
- template <typename TreeNodeT, typename AssocContainerT>
- inline void
- tree_to_xml (std::ostream &ostrm, TreeNodeT const &tree,
- std::string const &input_line, AssocContainerT const& id_to_name)
- {
- basic_tree_to_xml<char>(ostrm, tree, input_line, id_to_name);
- }
-
- template <typename TreeNodeT>
- inline void
- tree_to_xml (std::ostream &ostrm, TreeNodeT const &tree,
- std::string const &input_line = "")
- {
- basic_tree_to_xml<char>(ostrm, tree, input_line);
- }
-
-}} // namespace boost::spirit
-
-#include <boost/spirit/tree/impl/tree_to_xml.ipp>
-
-#endif // !defined(TREE_TO_XML_HPP)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_tree_to_xml.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_tree_to_xml.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_tree_to_xml.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/tree/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,81 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_TREE_TYPEOF_HPP)
-#define BOOST_SPIRIT_TREE_TYPEOF_HPP
-
-#include <boost/typeof/typeof.hpp>
-
-#include <boost/spirit/core/typeof.hpp>
-
-#include <boost/spirit/tree/common_fwd.hpp>
-#include <boost/spirit/tree/parse_tree_fwd.hpp>
-#include <boost/spirit/tree/ast_fwd.hpp>
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-
-// common.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::tree_node,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::node_iter_data,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::node_iter_data_factory,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::node_val_data_factory,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::node_all_val_data_factory,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::tree_match,3)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::tree_policy)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::common_tree_match_policy,4)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::common_tree_tree_policy,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::no_tree_gen_node_parser,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::leaf_node_parser,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::node_parser,2)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::discard_node_op)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::reduced_node_op)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::infix_node_op)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::discard_first_node_op)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::discard_last_node_op)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::inner_node_op)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::action_directive_parser,2)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::access_match_action)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::access_match_action::action,2)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::access_node_action)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::access_node_action::action,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::tree_parse_info,3)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::node_iter_data,1)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::node_iter_data_factory<boost::spirit::nil_t>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::node_val_data_factory<boost::spirit::nil_t>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::node_all_val_data_factory<boost::spirit::nil_t>)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::tree_match,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::tree_match,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::tree_parse_info,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::tree_parse_info,1)
-
-
-// parse_tree.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::pt_tree_policy,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::pt_match_policy,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::gen_pt_node_parser,1)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::pt_match_policy,1)
-
-
-// ast.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ast_tree_policy,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ast_match_policy,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::gen_ast_node_parser,1)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::root_node_op)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::ast_match_policy,1)
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/utility.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility.hpp (original)
+++ branches/proto/v4/boost/spirit/utility.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,41 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2003 Hartmut Kaiser
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002 Raghavendra Satish
- Copyright (c) 2002 Jeff Westfahl
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_UTILITY_MAIN_HPP)
-#define BOOST_SPIRIT_UTILITY_MAIN_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_UTILITY
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_UTILITY
 
-#include <boost/spirit/version.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_utility.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_utility.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_utility.hpp>
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Master header for Spirit.Utilities
-//
-///////////////////////////////////////////////////////////////////////////////
-
-// Utility.Parsers
-#include <boost/spirit/utility/chset.hpp>
-#include <boost/spirit/utility/chset_operators.hpp>
-#include <boost/spirit/utility/escape_char.hpp>
-#include <boost/spirit/utility/functor_parser.hpp>
-#include <boost/spirit/utility/loops.hpp>
-#include <boost/spirit/utility/confix.hpp>
-#include <boost/spirit/utility/lists.hpp>
-#include <boost/spirit/utility/distinct.hpp>
-
-// Utility.Support
-#include <boost/spirit/utility/flush_multi_pass.hpp>
-#include <boost/spirit/utility/scoped_lock.hpp>
-
-
-#endif // !defined(BOOST_SPIRIT_UTILITY_MAIN_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/utility/chset.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/chset.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/chset.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,183 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2001-2003 Daniel Nuffer
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_CHSET_HPP
-#define BOOST_SPIRIT_CHSET_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CHSET
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CHSET
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/shared_ptr.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/utility/impl/chset/basic_chset.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-namespace utility { namespace impl {
-
- // This is here because some compilers choke on out-of-line member
- // template functions. And we don't want to put the whole algorithm
- // in the chset constructor in the class definition.
- template <typename CharT, typename CharT2>
- void construct_chset(boost::shared_ptr<basic_chset<CharT> >& ptr,
- CharT2 const* definition);
-
-}} // namespace utility::impl
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// chset class
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT = char>
-class chset: public char_parser<chset<CharT> > {
-
-public:
- chset();
- chset(chset const& arg_);
- explicit chset(CharT arg_);
- explicit chset(anychar_parser arg_);
- explicit chset(nothing_parser arg_);
- explicit chset(chlit<CharT> const& arg_);
- explicit chset(range<CharT> const& arg_);
- explicit chset(negated_char_parser<chlit<CharT> > const& arg_);
- explicit chset(negated_char_parser<range<CharT> > const& arg_);
-
- template <typename CharT2>
- explicit chset(CharT2 const* definition)
- : ptr(new basic_chset<CharT>())
- {
- utility::impl::construct_chset(ptr, definition);
- }
- ~chset();
-
- chset& operator=(chset const& rhs);
- chset& operator=(CharT rhs);
- chset& operator=(anychar_parser rhs);
- chset& operator=(nothing_parser rhs);
- chset& operator=(chlit<CharT> const& rhs);
- chset& operator=(range<CharT> const& rhs);
- chset& operator=(negated_char_parser<chlit<CharT> > const& rhs);
- chset& operator=(negated_char_parser<range<CharT> > const& rhs);
-
- void set(range<CharT> const& arg_);
- void set(negated_char_parser<chlit<CharT> > const& arg_);
- void set(negated_char_parser<range<CharT> > const& arg_);
-
- void clear(range<CharT> const& arg_);
- void clear(negated_char_parser<range<CharT> > const& arg_);
- bool test(CharT ch) const;
- chset& inverse();
- void swap(chset& x);
-
- chset& operator|=(chset const& x);
- chset& operator&=(chset const& x);
- chset& operator-=(chset const& x);
- chset& operator^=(chset const& x);
-
-private:
-
- boost::shared_ptr<basic_chset<CharT> > ptr;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Generator functions
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-inline chset<CharT>
-chset_p(chlit<CharT> const& arg_)
-{ return chset<CharT>(arg_); }
-
-//////////////////////////////////
-template <typename CharT>
-inline chset<CharT>
-chset_p(range<CharT> const& arg_)
-{ return chset<CharT>(arg_); }
-
-template <typename CharT>
-inline chset<CharT>
-chset_p(negated_char_parser<chlit<CharT> > const& arg_)
-{ return chset<CharT>(arg_); }
-
-template <typename CharT>
-inline chset<CharT>
-chset_p(negated_char_parser<range<CharT> > const& arg_)
-{ return chset<CharT>(arg_); }
-
-//////////////////////////////////
-inline chset<char>
-chset_p(char const* init)
-{ return chset<char>(init); }
-
-//////////////////////////////////
-inline chset<wchar_t>
-chset_p(wchar_t const* init)
-{ return chset<wchar_t>(init); }
-
-//////////////////////////////////
-inline chset<char>
-chset_p(char ch)
-{ return chset<char>(ch); }
-
-//////////////////////////////////
-inline chset<wchar_t>
-chset_p(wchar_t ch)
-{ return chset<wchar_t>(ch); }
-
-//////////////////////////////////
-inline chset<int>
-chset_p(int ch)
-{ return chset<int>(ch); }
-
-//////////////////////////////////
-inline chset<unsigned int>
-chset_p(unsigned int ch)
-{ return chset<unsigned int>(ch); }
-
-//////////////////////////////////
-inline chset<short>
-chset_p(short ch)
-{ return chset<short>(ch); }
-
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-//////////////////////////////////
-inline chset<unsigned short>
-chset_p(unsigned short ch)
-{ return chset<unsigned short>(ch); }
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_chset.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_chset.hpp"
 #endif
-//////////////////////////////////
-inline chset<long>
-chset_p(long ch)
-{ return chset<long>(ch); }
-
-//////////////////////////////////
-inline chset<unsigned long>
-chset_p(unsigned long ch)
-{ return chset<unsigned long>(ch); }
 
-#ifdef BOOST_HAS_LONG_LONG
-//////////////////////////////////
-inline chset< ::boost::long_long_type>
-chset_p( ::boost::long_long_type ch)
-{ return chset< ::boost::long_long_type>(ch); }
-
-//////////////////////////////////
-inline chset< ::boost::ulong_long_type>
-chset_p( ::boost::ulong_long_type ch)
-{ return chset< ::boost::ulong_long_type>(ch); }
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#include <boost/spirit/include/classic_chset.hpp>
 
 #endif
-
-#include <boost/spirit/utility/impl/chset.ipp>
-#include <boost/spirit/utility/chset_operators.hpp>

Modified: branches/proto/v4/boost/spirit/utility/chset_operators.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/chset_operators.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/chset_operators.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,398 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2001-2003 Daniel Nuffer
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_CHSET_OPERATORS_HPP
-#define BOOST_SPIRIT_CHSET_OPERATORS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CHSET_OPERATORS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CHSET_OPERATORS
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/utility/chset.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// chset free operators
-//
-// Where a and b are both chsets, implements:
-//
-// a | b, a & b, a - b, a ^ b
-//
-// Where a is a chset, implements:
-//
-// ~a
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator~(chset<CharT> const& a);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chset<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chset<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chset<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chset<CharT> const& a, chset<CharT> const& b);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// range <--> chset free operators
-//
-// Where a is a chset and b is a range, and vice-versa, implements:
-//
-// a | b, a & b, a - b, a ^ b
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chset<CharT> const& a, range<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chset<CharT> const& a, range<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chset<CharT> const& a, range<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chset<CharT> const& a, range<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(range<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(range<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(range<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(range<CharT> const& a, chset<CharT> const& b);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// chlit <--> chset free operators
-//
-// Where a is a chset and b is a chlit, and vice-versa, implements:
-//
-// a | b, a & b, a - b, a ^ b
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chset<CharT> const& a, chlit<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chset<CharT> const& a, chlit<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chset<CharT> const& a, chlit<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chset<CharT> const& a, chlit<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chlit<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chlit<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chlit<CharT> const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chlit<CharT> const& a, chset<CharT> const& b);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// negated_char_parser<range> <--> chset free operators
-//
-// Where a is a chset and b is a range, and vice-versa, implements:
-//
-// a | b, a & b, a - b, a ^ b
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chset<CharT> const& a, negated_char_parser<range<CharT> > const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chset<CharT> const& a, negated_char_parser<range<CharT> > const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chset<CharT> const& a, negated_char_parser<range<CharT> > const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chset<CharT> const& a, negated_char_parser<range<CharT> > const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(negated_char_parser<range<CharT> > const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(negated_char_parser<range<CharT> > const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(negated_char_parser<range<CharT> > const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(negated_char_parser<range<CharT> > const& a, chset<CharT> const& b);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// negated_char_parser<chlit> <--> chset free operators
-//
-// Where a is a chset and b is a chlit, and vice-versa, implements:
-//
-// a | b, a & b, a - b, a ^ b
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chset<CharT> const& a, negated_char_parser<chlit<CharT> > const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chset<CharT> const& a, negated_char_parser<chlit<CharT> > const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chset<CharT> const& a, negated_char_parser<chlit<CharT> > const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chset<CharT> const& a, negated_char_parser<chlit<CharT> > const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(negated_char_parser<chlit<CharT> > const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(negated_char_parser<chlit<CharT> > const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(negated_char_parser<chlit<CharT> > const& a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(negated_char_parser<chlit<CharT> > const& a, chset<CharT> const& b);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// literal primitives <--> chset free operators
-//
-// Where a is a chset and b is a literal primitive,
-// and vice-versa, implements:
-//
-// a | b, a & b, a - b, a ^ b
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chset<CharT> const& a, CharT b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chset<CharT> const& a, CharT b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chset<CharT> const& a, CharT b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chset<CharT> const& a, CharT b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(CharT a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(CharT a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(CharT a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(CharT a, chset<CharT> const& b);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// anychar_parser <--> chset free operators
-//
-// Where a is chset and b is a anychar_parser, and vice-versa, implements:
-//
-// a | b, a & b, a - b, a ^ b
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chset<CharT> const& a, anychar_parser b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chset<CharT> const& a, anychar_parser b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chset<CharT> const& a, anychar_parser b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chset<CharT> const& a, anychar_parser b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(anychar_parser a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(anychar_parser a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(anychar_parser a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(anychar_parser a, chset<CharT> const& b);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// nothing_parser <--> chset free operators
-//
-// Where a is chset and b is nothing_parser, and vice-versa, implements:
-//
-// a | b, a & b, a - b, a ^ b
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(chset<CharT> const& a, nothing_parser b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(chset<CharT> const& a, nothing_parser b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(chset<CharT> const& a, nothing_parser b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(chset<CharT> const& a, nothing_parser b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator|(nothing_parser a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator&(nothing_parser a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator-(nothing_parser a, chset<CharT> const& b);
-
-//////////////////////////////////
-template <typename CharT>
-chset<CharT>
-operator^(nothing_parser a, chset<CharT> const& b);
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_chset_operators.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_chset_operators.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_chset_operators.hpp>
 
-#include <boost/spirit/utility/impl/chset_operators.ipp>
+#endif

Modified: branches/proto/v4/boost/spirit/utility/confix.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/confix.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/confix.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,392 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_CONFIX_HPP
-#define BOOST_SPIRIT_CONFIX_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIX
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIX
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/config.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-#include <boost/spirit/core/composite/operators.hpp>
-
-#include <boost/spirit/utility/confix_fwd.hpp>
-#include <boost/spirit/utility/impl/confix.ipp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// confix_parser class
-//
-// Parses a sequence of 3 sub-matches. This class may
-// be used to parse structures, where the opening part is possibly
-// contained in the expression part and the whole sequence is only
-// parsed after seeing the closing part matching the first opening
-// subsequence. Example: C-comments:
-//
-// /* This is a C-comment */
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template<typename NestedT = non_nested, typename LexemeT = non_lexeme>
-struct confix_parser_gen;
-
-template <
- typename OpenT, typename ExprT, typename CloseT, typename CategoryT,
- typename NestedT, typename LexemeT
->
-struct confix_parser :
- public parser<
- confix_parser<OpenT, ExprT, CloseT, CategoryT, NestedT, LexemeT>
- >
-{
- typedef
- confix_parser<OpenT, ExprT, CloseT, CategoryT, NestedT, LexemeT>
- self_t;
-
- confix_parser(OpenT const &open_, ExprT const &expr_, CloseT const &close_)
- : open(open_), expr(expr_), close(close_)
- {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- return impl::confix_parser_type<CategoryT>::
- parse(NestedT(), LexemeT(), *this, scan, open, expr, close);
- }
-
-private:
-
- typename as_parser<OpenT>::type::embed_t open;
- typename as_parser<ExprT>::type::embed_t expr;
- typename as_parser<CloseT>::type::embed_t close;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Confix parser generator template
-//
-// This is a helper for generating a correct confix_parser<> from
-// auxiliary parameters. There are the following types supported as
-// parameters yet: parsers, single characters and strings (see
-// as_parser).
-//
-// If the body parser is an action_parser_category type parser (a parser
-// with an attached semantic action) we have to do something special. This
-// happens, if the user wrote something like:
-//
-// confix_p(open, body[f], close)
-//
-// where 'body' is the parser matching the body of the confix sequence
-// and 'f' is a functor to be called after matching the body. If we would
-// do nothing, the resulting code would parse the sequence as follows:
-//
-// start >> (body[f] - close) >> close
-//
-// what in most cases is not what the user expects.
-// (If this _is_ what you've expected, then please use the confix_p
-// generator function 'direct()', which will inhibit
-// re-attaching the actor to the body parser).
-//
-// To make the confix parser behave as expected:
-//
-// start >> (body - close)[f] >> close
-//
-// the actor attached to the 'body' parser has to be re-attached to the
-// (body - close) parser construct, which will make the resulting confix
-// parser 'do the right thing'. This refactoring is done by the help of
-// the refactoring parsers (see the files refactoring.[hi]pp).
-//
-// Additionally special care must be taken, if the body parser is a
-// unary_parser_category type parser as
-//
-// confix_p(open, *anychar_p, close)
-//
-// which without any refactoring would result in
-//
-// start >> (*anychar_p - close) >> close
-//
-// and will not give the expected result (*anychar_p will eat up all the
-// input up to the end of the input stream). So we have to refactor this
-// into:
-//
-// start >> *(anychar_p - close) >> close
-//
-// what will give the correct result.
-//
-// The case, where the body parser is a combination of the two mentioned
-// problems (i.e. the body parser is a unary parser with an attached
-// action), is handled accordingly too:
-//
-// confix_p(start, (*anychar_p)[f], end)
-//
-// will be parsed as expected:
-//
-// start >> (*(anychar_p - end))[f] >> end.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template<typename NestedT, typename LexemeT>
-struct confix_parser_gen
-{
- // Generic generator function for creation of concrete confix parsers
-
- template<typename StartT, typename ExprT, typename EndT>
- struct paren_op_result_type
- {
- typedef confix_parser<
- typename as_parser<StartT>::type,
- typename as_parser<ExprT>::type,
- typename as_parser<EndT>::type,
- typename as_parser<ExprT>::type::parser_category_t,
- NestedT,
- LexemeT
- > type;
- };
-
- template<typename StartT, typename ExprT, typename EndT>
- typename paren_op_result_type<StartT, ExprT, EndT>::type
- operator()(StartT const &start_, ExprT const &expr_, EndT const &end_) const
- {
- typedef typename paren_op_result_type<StartT,ExprT,EndT>::type
- return_t;
-
- return return_t(
- as_parser<StartT>::convert(start_),
- as_parser<ExprT>::convert(expr_),
- as_parser<EndT>::convert(end_)
- );
- }
-
- // Generic generator function for creation of concrete confix parsers
- // which have an action directly attached to the ExprT part of the
- // parser (see comment above, no automatic refactoring)
-
- template<typename StartT, typename ExprT, typename EndT>
- struct direct_result_type
- {
- typedef confix_parser<
- typename as_parser<StartT>::type,
- typename as_parser<ExprT>::type,
- typename as_parser<EndT>::type,
- plain_parser_category, // do not re-attach action
- NestedT,
- LexemeT
- > type;
- };
-
- template<typename StartT, typename ExprT, typename EndT>
- typename direct_result_type<StartT,ExprT,EndT>::type
- direct(StartT const &start_, ExprT const &expr_, EndT const &end_) const
- {
- typedef typename direct_result_type<StartT,ExprT,EndT>::type
- return_t;
-
- return return_t(
- as_parser<StartT>::convert(start_),
- as_parser<ExprT>::convert(expr_),
- as_parser<EndT>::convert(end_)
- );
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Predefined non_nested confix parser generators
-//
-///////////////////////////////////////////////////////////////////////////////
-
-const confix_parser_gen<non_nested, non_lexeme> confix_p =
- confix_parser_gen<non_nested, non_lexeme>();
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Comments are special types of confix parsers
-//
-// Comment parser generator template. This is a helper for generating a
-// correct confix_parser<> from auxiliary parameters, which is able to
-// parse comment constructs: (StartToken >> Comment text >> EndToken).
-//
-// There are the following types supported as parameters yet: parsers,
-// single characters and strings (see as_parser).
-//
-// There are two diffenerent predefined comment parser generators
-// (comment_p and comment_nest_p, see below), which may be used for
-// creating special comment parsers in two different ways.
-//
-// If these are used with one parameter, a comment starting with the given
-// first parser parameter up to the end of the line is matched. So for
-// instance the following parser matches C++ style comments:
-//
-// comment_p("//").
-//
-// If these are used with two parameters, a comment starting with the
-// first parser parameter up to the second parser parameter is matched.
-// For instance a C style comment parser should be constrcuted as:
-//
-// comment_p("/*", "*/").
-//
-// Please note, that a comment is parsed implicitly as if the whole
-// comment_p(...) statement were embedded into a lexeme_d[] directive.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template<typename NestedT>
-struct comment_parser_gen
-{
- // Generic generator function for creation of concrete comment parsers
- // from an open token. The newline parser eol_p is used as the
- // closing token.
-
- template<typename StartT>
- struct paren_op1_result_type
- {
- typedef confix_parser<
- typename as_parser<StartT>::type,
- kleene_star<anychar_parser>,
- alternative<eol_parser, end_parser>,
- unary_parser_category, // there is no action to re-attach
- NestedT,
- is_lexeme // insert implicit lexeme_d[]
- >
- type;
- };
-
- template<typename StartT>
- typename paren_op1_result_type<StartT>::type
- operator() (StartT const &start_) const
- {
- typedef typename paren_op1_result_type<StartT>::type
- return_t;
-
- return return_t(
- as_parser<StartT>::convert(start_),
- *anychar_p,
- eol_p | end_p
- );
- }
-
- // Generic generator function for creation of concrete comment parsers
- // from an open and a close tokens.
-
- template<typename StartT, typename EndT>
- struct paren_op2_result_type
- {
- typedef confix_parser<
- typename as_parser<StartT>::type,
- kleene_star<anychar_parser>,
- typename as_parser<EndT>::type,
- unary_parser_category, // there is no action to re-attach
- NestedT,
- is_lexeme // insert implicit lexeme_d[]
- > type;
- };
-
- template<typename StartT, typename EndT>
- typename paren_op2_result_type<StartT,EndT>::type
- operator() (StartT const &start_, EndT const &end_) const
- {
- typedef typename paren_op2_result_type<StartT,EndT>::type
- return_t;
-
- return return_t(
- as_parser<StartT>::convert(start_),
- *anychar_p,
- as_parser<EndT>::convert(end_)
- );
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Predefined non_nested comment parser generator
-//
-///////////////////////////////////////////////////////////////////////////////
-
-const comment_parser_gen<non_nested> comment_p =
- comment_parser_gen<non_nested>();
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// comment_nest_parser class
-//
-// Parses a nested comments.
-// Example: nested PASCAL-comments:
-//
-// { This is a { nested } PASCAL-comment }
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template<typename OpenT, typename CloseT>
-struct comment_nest_parser:
- public parser<comment_nest_parser<OpenT, CloseT> >
-{
- typedef comment_nest_parser<OpenT, CloseT> self_t;
-
- comment_nest_parser(OpenT const &open_, CloseT const &close_):
- open(open_), close(close_)
- {}
-
- template<typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const &scan) const
- {
- return do_parse(
- open >> *(*this | (anychar_p - close)) >> close,
- scan);
- }
-
-private:
- template<typename ParserT, typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- do_parse(ParserT const &p, ScannerT const &scan) const
- {
- return
- impl::contiguous_parser_parse<
- typename parser_result<ParserT, ScannerT>::type
- >(p, scan, scan);
- }
-
- typename as_parser<OpenT>::type::embed_t open;
- typename as_parser<CloseT>::type::embed_t close;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Predefined nested comment parser generator
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template<typename OpenT, typename CloseT>
-struct comment_nest_p_result
-{
- typedef comment_nest_parser<
- typename as_parser<OpenT>::type,
- typename as_parser<CloseT>::type
- > type;
-};
-
-template<typename OpenT, typename CloseT>
-inline typename comment_nest_p_result<OpenT,CloseT>::type
-comment_nest_p(OpenT const &open, CloseT const &close)
-{
- typedef typename comment_nest_p_result<OpenT,CloseT>::type
- result_t;
-
- return result_t(
- as_parser<OpenT>::convert(open),
- as_parser<CloseT>::convert(close)
- );
-}
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_confix.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_confix.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_confix.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/utility/confix_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/confix_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/confix_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,35 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_CONFIX_FWD_HPP)
-#define BOOST_SPIRIT_CONFIX_FWD_HPP
-
-#include <boost/spirit/core/parser.hpp>
-
-namespace boost { namespace spirit {
-
- struct is_nested;
- struct non_nested;
- struct is_lexeme;
- struct non_lexeme;
-
- template <
- typename OpenT, typename ExprT, typename CloseT,
- typename CategoryT = plain_parser_category,
- typename NestedT = non_nested, typename LexemeT = non_lexeme
- >
- struct confix_parser;
-
- template<typename OpenT, typename CloseT>
- struct comment_nest_parser;
-
-}} // namespace boost::spirit
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIX_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIX_FWD
 
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_confix_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_confix_fwd.hpp"
 #endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_confix_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/utility/distinct.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/distinct.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/distinct.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,227 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2003 Vaclav Vesely
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_DISTINCT_HPP)
-#define BOOST_SPIRIT_DISTINCT_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DISTINCT
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_DISTINCT
 
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/primitives/primitives.hpp>
-#include <boost/spirit/core/composite/operators.hpp>
-#include <boost/spirit/core/composite/directives.hpp>
-#include <boost/spirit/core/composite/epsilon.hpp>
-#include <boost/spirit/core/non_terminal/rule.hpp>
-#include <boost/spirit/utility/chset.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_distinct.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_distinct.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_distinct.hpp>
 
-#include <boost/spirit/utility/distinct_fwd.hpp>
-
-namespace boost {
- namespace spirit {
-//-----------------------------------------------------------------------------
-// distinct_parser class
-
-template <typename CharT, typename TailT>
-class distinct_parser
-{
-public:
- typedef
- contiguous<
- sequence<
- chseq<CharT const*>,
- negated_empty_match_parser<
- TailT
- >
- >
- >
- result_t;
-
- distinct_parser()
- : tail(chset<CharT>())
- {
- }
-
- explicit distinct_parser(parser<TailT> const & tail_)
- : tail(tail_.derived())
- {
- }
-
- explicit distinct_parser(CharT const* letters)
- : tail(chset_p(letters))
- {
- }
-
- result_t operator()(CharT const* str) const
- {
- return lexeme_d[chseq_p(str) >> ~epsilon_p(tail)];
- }
-
- TailT tail;
-};
-
-//-----------------------------------------------------------------------------
-// distinct_directive class
-
-template <typename CharT, typename TailT>
-class distinct_directive
-{
-public:
- template<typename ParserT>
- struct result {
- typedef
- contiguous<
- sequence<
- ParserT,
- negated_empty_match_parser<
- TailT
- >
- >
- >
- type;
- };
-
- distinct_directive()
- : tail(chset<CharT>())
- {
- }
-
- explicit distinct_directive(CharT const* letters)
- : tail(chset_p(letters))
- {
- }
-
- explicit distinct_directive(parser<TailT> const & tail_)
- : tail(tail_.derived())
- {
- }
-
- template<typename ParserT>
- typename result<typename as_parser<ParserT>::type>::type
- operator[](ParserT const &subject) const
- {
- return
- lexeme_d[as_parser<ParserT>::convert(subject) >> ~epsilon_p(tail)];
- }
-
- TailT tail;
-};
-
-//-----------------------------------------------------------------------------
-// dynamic_distinct_parser class
-
-template <typename ScannerT>
-class dynamic_distinct_parser
-{
-public:
- typedef typename ScannerT::value_t char_t;
-
- typedef
- rule<
- typename no_actions_scanner<
- typename lexeme_scanner<ScannerT>::type
- >::type
- >
- tail_t;
-
- typedef
- contiguous<
- sequence<
- chseq<char_t const*>,
- negated_empty_match_parser<
- tail_t
- >
- >
- >
- result_t;
-
- dynamic_distinct_parser()
- : tail(nothing_p)
- {
- }
-
- template<typename ParserT>
- explicit dynamic_distinct_parser(parser<ParserT> const & tail_)
- : tail(tail_.derived())
- {
- }
-
- explicit dynamic_distinct_parser(char_t const* letters)
- : tail(chset_p(letters))
- {
- }
-
- result_t operator()(char_t const* str) const
- {
- return lexeme_d[chseq_p(str) >> ~epsilon_p(tail)];
- }
-
- tail_t tail;
-};
-
-//-----------------------------------------------------------------------------
-// dynamic_distinct_directive class
-
-template <typename ScannerT>
-class dynamic_distinct_directive
-{
-public:
- typedef typename ScannerT::value_t char_t;
-
- typedef
- rule<
- typename no_actions_scanner<
- typename lexeme_scanner<ScannerT>::type
- >::type
- >
- tail_t;
-
- template<typename ParserT>
- struct result {
- typedef
- contiguous<
- sequence<
- ParserT,
- negated_empty_match_parser<
- tail_t
- >
- >
- >
- type;
- };
-
- dynamic_distinct_directive()
- : tail(nothing_p)
- {
- }
-
- template<typename ParserT>
- explicit dynamic_distinct_directive(parser<ParserT> const & tail_)
- : tail(tail_.derived())
- {
- }
-
- explicit dynamic_distinct_directive(char_t const* letters)
- : tail(chset_p(letters))
- {
- }
-
- template<typename ParserT>
- typename result<typename as_parser<ParserT>::type>::type
- operator[](ParserT const &subject) const
- {
- return
- lexeme_d[as_parser<ParserT>::convert(subject) >> ~epsilon_p(tail)];
- }
-
- tail_t tail;
-};
-
-//-----------------------------------------------------------------------------
- } // namespace spirit
-} // namespace boost
-
-#endif // !defined(BOOST_SPIRIT_DISTINCT_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/utility/distinct_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/distinct_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/distinct_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,32 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_DISTINCT_FWD_HPP)
-#define BOOST_SPIRIT_DISTINCT_FWD_HPP
-
-namespace boost { namespace spirit {
-
- template<typename CharT> class chset;
-
- template <typename CharT = char, typename TailT = chset<CharT> >
- class distinct_parser;
-
- template <typename CharT = char, typename TailT = chset<CharT> >
- class distinct_directive;
-
- template <typename ScannerT = scanner<> >
- class dynamic_distinct_parser;
-
- template <typename ScannerT = scanner<> >
- class dynamic_distinct_directive;
-
-}} // namespace boost::spirit
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DISTINCT_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_DISTINCT_FWD
 
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_distinct_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_distinct_fwd.hpp"
 #endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_distinct_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/utility/escape_char.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/escape_char.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/escape_char.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,180 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Daniel Nuffer
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_ESCAPE_CHAR_HPP
-#define BOOST_SPIRIT_ESCAPE_CHAR_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ESCAPE_CHAR
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ESCAPE_CHAR
 
-///////////////////////////////////////////////////////////////////////////////
-#include <string>
-#include <iterator>
-#include <cctype>
-#include <boost/limits.hpp>
-
-#include <boost/spirit/debug.hpp>
-
-#include <boost/spirit/utility/escape_char_fwd.hpp>
-#include <boost/spirit/utility/impl/escape_char.ipp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// escape_char_action class
-//
-// Links an escape char parser with a user defined semantic action.
-// The semantic action may be a function or a functor. A function
-// should be compatible with the interface:
-//
-// void f(CharT ch);
-//
-// A functor should have a member operator() with a compatible signature
-// as above. The matching character is passed into the function/functor.
-// This is the default class that character parsers use when dealing with
-// the construct:
-//
-// p[f]
-//
-// where p is a parser and f is a function or functor.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename ParserT, typename ActionT,
- unsigned long Flags, typename CharT
->
-struct escape_char_action
-: public unary<ParserT,
- parser<escape_char_action<ParserT, ActionT, Flags, CharT> > >
-{
- typedef escape_char_action
- <ParserT, ActionT, Flags, CharT> self_t;
- typedef action_parser_category parser_category_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, CharT>::type type;
- };
-
- escape_char_action(ParserT const& p, ActionT const& a)
- : base_t(p), actor(a) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- return impl::escape_char_action_parse<Flags, CharT>::
- parse(scan, *this);
- }
-
- ActionT const& predicate() const { return actor; }
-
-private:
-
- ActionT actor;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// escape_char_parser class
-//
-// The escape_char_parser helps in conjunction with the escape_char_action
-// template class (see above) in parsing escaped characters. There are two
-// different variants of this parser: one for parsing C style escaped
-// characters and one for parsing LEX style escaped characters.
-//
-// The C style escaped character parser is generated, when the template
-// parameter 'Flags' is equal to 'c_escapes' (a constant defined in the
-// file impl/escape_char.ipp). This parser recognizes all valid C escape
-// character sequences: '\t', '\b', '\f', '\n', '\r', '\"', '\'', '\\'
-// and the numeric style escapes '\120' (octal) and '\x2f' (hexadecimal)
-// and converts these to their character equivalent, for instance the
-// sequence of a backslash and a 'b' is parsed as the character '\b'.
-// All other escaped characters are rejected by this parser.
-//
-// The LEX style escaped character parser is generated, when the template
-// parameter 'Flags' is equal to 'lex_escapes' (a constant defined in the
-// file impl/escape_char.ipp). This parser recognizes all the C style
-// escaped character sequences (as described above) and additionally
-// does not reject all other escape sequences. All not mentioned escape
-// sequences are converted by the parser to the plain character, for
-// instance '\a' will be parsed as 'a'.
-//
-// All not escaped characters are parsed without modification.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template <unsigned long Flags, typename CharT>
-struct escape_char_action_parser_gen;
-
-template <unsigned long Flags, typename CharT>
-struct escape_char_parser :
- public parser<escape_char_parser<Flags, CharT> > {
-
- // only the values c_escapes and lex_escapes are valid for Flags
- BOOST_STATIC_ASSERT(Flags == c_escapes || Flags == lex_escapes);
-
- typedef escape_char_parser<Flags, CharT> self_t;
- typedef
- escape_char_action_parser_gen<Flags, CharT>
- action_parser_generator_t;
-
- template <typename ScannerT>
- struct result {
-
- typedef typename match_result<ScannerT, CharT>::type type;
- };
-
- template <typename ActionT>
- escape_char_action<self_t, ActionT, Flags, CharT>
- operator[](ActionT const& actor) const
- {
- return escape_char_action<self_t, ActionT, Flags, CharT>(*this, actor);
- }
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const &scan) const
- {
- return impl::escape_char_parse<CharT>::parse(scan, *this);
- }
-};
-
-template <unsigned long Flags, typename CharT>
-struct escape_char_action_parser_gen {
-
- template <typename ParserT, typename ActionT>
- static escape_char_action<ParserT, ActionT, Flags, CharT>
- generate (ParserT const &p, ActionT const &actor)
- {
- typedef
- escape_char_action<ParserT, ActionT, Flags, CharT>
- action_parser_t;
- return action_parser_t(p, actor);
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// predefined escape_char_parser objects
-//
-// These objects should be used for generating correct escaped character
-// parsers.
-//
-///////////////////////////////////////////////////////////////////////////////
-const escape_char_parser<lex_escapes> lex_escape_ch_p =
- escape_char_parser<lex_escapes>();
-
-const escape_char_parser<c_escapes> c_escape_ch_p =
- escape_char_parser<c_escapes>();
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_escape_char.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_escape_char.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_escape_char.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/utility/escape_char_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/escape_char_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/escape_char_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,25 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_ESCAPE_CHAR_FWD_HPP)
-#define BOOST_SPIRIT_ESCAPE_CHAR_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ESCAPE_CHAR_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_ESCAPE_CHAR_FWD
 
-namespace boost { namespace spirit {
-
- template <unsigned long Flags, typename CharT = char>
- struct escape_char_parser;
-
- template <
- class ParserT, typename ActionT,
- unsigned long Flags, typename CharT = char>
- struct escape_char_action;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_escape_char_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_escape_char_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_escape_char_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/utility/flush_multi_pass.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/flush_multi_pass.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/flush_multi_pass.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,73 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Daniel Nuffer
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_FLUSH_MULTI_PASS_HPP
-#define BOOST_SPIRIT_FLUSH_MULTI_PASS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FLUSH_MULTI_PASS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_FLUSH_MULTI_PASS
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_flush_multi_pass.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_flush_multi_pass.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_flush_multi_pass.hpp>
 
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- namespace impl {
-
- template <typename T>
- void flush_iterator(T &) {}
-
- template <typename T1, typename T2, typename T3, typename T4>
- void flush_iterator(boost::spirit::multi_pass<
- T1, T2, T3, T4, boost::spirit::multi_pass_policies::std_deque> &i)
- {
- i.clear_queue();
- }
-
- } // namespace impl
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // flush_multi_pass_parser
- //
- // The flush_multi_pass_parser flushes an underlying
- // multi_pass_iterator during the normal parsing process. This may
- // be used at certain points during the parsing process, when it is
- // clear, that no backtracking is needed anymore and the input
- // gathered so far may be discarded.
- //
- ///////////////////////////////////////////////////////////////////////////
- class flush_multi_pass_parser
- : public parser<flush_multi_pass_parser>
- {
- public:
- typedef flush_multi_pass_parser this_t;
-
- template <typename ScannerT>
- typename parser_result<this_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- impl::flush_iterator(scan.first);
- return scan.empty_match();
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // predefined flush_multi_pass_p object
- //
- // This object should may used to flush a multi_pass_iterator along
- // the way during the normal parsing process.
- //
- ///////////////////////////////////////////////////////////////////////////
-
- flush_multi_pass_parser const
- flush_multi_pass_p = flush_multi_pass_parser();
-
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_FLUSH_MULTI_PASS_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/utility/functor_parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/functor_parser.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/functor_parser.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,67 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Juan Carlos Arevalo-Baeza
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_FUNCTOR_PARSER_HPP
-#define BOOST_SPIRIT_FUNCTOR_PARSER_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNCTOR_PARSER
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNCTOR_PARSER
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core/parser.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // functor_parser class
- //
- // Once a functor parser has been defined, you can build a real
- // parser from it by passing it to this class as the template
- // parameter.
- //
- ///////////////////////////////////////////////////////////////////////////
- template < class FunctorT >
- struct functor_parser : public parser<functor_parser<FunctorT> >
- {
- FunctorT functor;
-
- functor_parser(): functor() {}
- functor_parser(FunctorT const& functor_): functor(functor_) {}
-
- typedef typename FunctorT::result_t functor_result_t;
- typedef functor_parser<FunctorT> self_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, functor_result_t>::type
- type;
- };
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- typedef typename ScannerT::value_t value_t;
- typedef typename ScannerT::iterator_t iterator_t;
-
- iterator_t const s(scan.first);
- functor_result_t result;
- std::ptrdiff_t len = functor(scan, result);
-
- if (len < 0)
- return scan.no_match();
- else
- return scan.create_match(std::size_t(len), result, s, scan.first);
- }
- };
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_functor_parser.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_functor_parser.hpp"
+#endif
 
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_functor_parser.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/utility/grammar_def.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/grammar_def.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/grammar_def.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,303 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Hartmut Kaiser
- Copyright (c) 2003 Joel de Guzman
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_GRAMMAR_DEF_HPP)
-#define BOOST_SPIRIT_GRAMMAR_DEF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR_DEF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR_DEF
 
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/preprocessor/arithmetic/inc.hpp>
-#include <boost/preprocessor/arithmetic/dec.hpp>
-#include <boost/preprocessor/enum.hpp>
-#include <boost/preprocessor/enum_params.hpp>
-#include <boost/preprocessor/repeat.hpp>
-#include <boost/preprocessor/repeat_from_to.hpp>
-#include <boost/spirit/phoenix/tuples.hpp>
-#include <boost/spirit/core/assert.hpp>
-#include <boost/spirit/utility/grammar_def_fwd.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Spirit predefined maximum grammar start parser limit. This limit defines
-// the maximum number of of possible different parsers exposed from a
-// particular grammar. This number defaults to 3.
-// The actual maximum is rounded up in multiples of 3. Thus, if this value
-// is 4, the actual limit is 6. The ultimate maximum limit in this
-// implementation is 15.
-//
-// It should NOT be greater than PHOENIX_LIMIT!
-//
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT)
-#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT PHOENIX_LIMIT
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_grammar_def.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_grammar_def.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// ensure BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT <= PHOENIX_LIMIT and
-// BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT <= 15 and
-// BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 0
-//
-///////////////////////////////////////////////////////////////////////////////
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT <= PHOENIX_LIMIT);
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT <= 15);
-BOOST_STATIC_ASSERT(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 0);
-
-//////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-struct same {};
-
-///////////////////////////////////////////////////////////////////////////////
-namespace impl {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // The make_const_pointer meta function allows to generate a T const*
- // needed to store the pointer to a given start parser from a grammar.
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename T0, typename T = T0>
- struct make_const_pointer {
-
- private:
- // T0 shouldn't be of type 'same'
- BOOST_STATIC_ASSERT((!boost::is_same<T0, same>::value));
-
- typedef typename boost::mpl::if_c<
- boost::is_same<T, same>::value,
- T0 const *,
- T const *
- >::type
- ptr_type;
-
- public:
- // If the type in question is phoenix::nil_t, then the returned type
- // is still phoenix::nil_t, otherwise a constant pointer type to the
- // inspected type is returned.
- typedef typename boost::mpl::if_c<
- boost::is_same<T, phoenix::nil_t>::value,
- phoenix::nil_t,
- ptr_type
- >::type
- type;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- template <int N, typename ElementT>
- struct assign_zero_to_tuple_member {
-
- template <typename TupleT>
- static void do_(TupleT &t) { t[phoenix::tuple_index<N>()] = 0; }
- };
-
- template <int N>
- struct assign_zero_to_tuple_member<N, phoenix::nil_t> {
-
- template <typename TupleT>
- static void do_(TupleT& /*t*/) {}
- };
-
- struct phoenix_nil_type {
-
- typedef phoenix::nil_t type;
- };
-
- template <int N>
- struct init_tuple_member {
-
- template <typename TupleT>
- static void
- do_(TupleT &t)
- {
- typedef typename boost::mpl::eval_if_c<
- (N < TupleT::length),
- phoenix::tuple_element<N, TupleT>,
- phoenix_nil_type
- >::type
- element_type;
-
- assign_zero_to_tuple_member<N, element_type>::do_(t);
- }
- };
-
-///////////////////////////////////////////////////////////////////////////////
-} // namespace impl
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// grammar_def class
-//
-// This class may be used as a base class for the embedded definition
-// class inside the grammar<> derived user grammar.
-// It exposes the two functions needed for start rule access:
-//
-// rule<> const &start() const;
-//
-// and
-//
-// template <int N>
-// rule<> const *get_start_parser() const;
-//
-// Additionally it exposes a set o 'start_parsers' functions, which are to
-// be called by the user to define the parsers to use as start parsers
-// of the given grammar.
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename T,
- BOOST_PP_ENUM_PARAMS(
- BOOST_PP_DEC(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A), typename T)
->
-class grammar_def {
-
-private:
- ///////////////////////////////////////////////////////////////////////////
- //
- // This generates the full tuple type from the given template parameters
- // T, T0, ...
- //
- // typedef phoenix::tuple<
- // typename impl::make_const_pointer<T>::type,
- // typename impl::make_const_pointer<T, T0>::type,
- // ...
- // > tuple_t;
- //
- ///////////////////////////////////////////////////////////////////////////
- #define BOOST_SPIRIT_GRAMMARDEF_TUPLE_PARAM(z, N, _) \
- typename impl::make_const_pointer<T, BOOST_PP_CAT(T, N)>::type \
- /**/
-
- typedef phoenix::tuple<
- typename impl::make_const_pointer<T>::type,
- BOOST_PP_ENUM(
- BOOST_PP_DEC(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A),
- BOOST_SPIRIT_GRAMMARDEF_TUPLE_PARAM,
- _
- )
- > tuple_t;
-
- #undef BOOST_SPIRIT_GRAMMARDEF_TUPLE_PARAM
- ///////////////////////////////////////////////////////////////////////////
-
-protected:
- ///////////////////////////////////////////////////////////////////////////
- //
- // This generates a sequence of 'start_parsers' functions with increasing
- // number of arguments, which allow to initialize the tuple members with
- // the pointers to the start parsers of the grammar:
- //
- // template <typename TC0, ...>
- // void start_parsers (TC0 const &t0, ...)
- // {
- // using phoenix::tuple_index_names::_1;
- // t[_1] = &t0;
- // ...
- // }
- //
- // where a TC0 const* must be convertible to a T0 const*
- //
- ///////////////////////////////////////////////////////////////////////////
- #define BOOST_SPIRIT_GRAMMARDEF_ENUM_PARAMS(z, N, _) \
- BOOST_PP_CAT(TC, N) const &BOOST_PP_CAT(t, N) \
- /**/
- #define BOOST_SPIRIT_GRAMMARDEF_ENUM_ASSIGN(z, N, _) \
- using phoenix::tuple_index_names::BOOST_PP_CAT(_, BOOST_PP_INC(N)); \
- t[BOOST_PP_CAT(_, BOOST_PP_INC(N))] = &BOOST_PP_CAT(t, N); \
- /**/
- #define BOOST_SPIRIT_GRAMMARDEF_ENUM_START(z, N, _) \
- template <BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), typename TC)> \
- void \
- start_parsers(BOOST_PP_ENUM_ ## z(BOOST_PP_INC(N), \
- BOOST_SPIRIT_GRAMMARDEF_ENUM_PARAMS, _) ) \
- { \
- BOOST_PP_REPEAT_ ## z(BOOST_PP_INC(N), \
- BOOST_SPIRIT_GRAMMARDEF_ENUM_ASSIGN, _) \
- } \
- /**/
-
- BOOST_PP_REPEAT(
- BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A,
- BOOST_SPIRIT_GRAMMARDEF_ENUM_START, _)
-
- #undef BOOST_SPIRIT_GRAMMARDEF_ENUM_START
- #undef BOOST_SPIRIT_GRAMMARDEF_ENUM_ASSIGN
- #undef BOOST_SPIRIT_GRAMMARDEF_ENUM_PARAMS
- ///////////////////////////////////////////////////////////////////////////
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // This generates some initialization code, which allows to initialize all
- // used tuple members to 0 (zero):
- //
- // t[_1] = 0;
- // impl::init_tuple_member<1>::do_(t);
- // ...
- //
- ///////////////////////////////////////////////////////////////////////////
- #define BOOST_SPIRIT_GRAMMARDEF_ENUM_INIT(z, N, _) \
- impl::init_tuple_member<N>::do_(t); \
- /**/
-
- grammar_def()
- {
- using phoenix::tuple_index_names::_1;
- t[_1] = 0;
- BOOST_PP_REPEAT_FROM_TO(
- 1, BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A,
- BOOST_SPIRIT_GRAMMARDEF_ENUM_INIT, _)
- }
-
- #undef BOOST_SPIRIT_GRAMMARDEF_ENUM_INIT
- ///////////////////////////////////////////////////////////////////////////
-
-public:
- T const &
- start() const
- {
- // If the following assertion is fired, you have probably forgot to call
- // the start_parser() function from inside the constructor of your
- // embedded definition class to initialize the start parsers to be exposed
- // from your grammar.
- using phoenix::tuple_index_names::_1;
- BOOST_SPIRIT_ASSERT(0 != t[_1]);
- return *t[_1];
- }
-
- template <int N>
- typename phoenix::tuple_element<N, tuple_t>::crtype
- get_start_parser() const
- {
- // If the following expression yields a compiler error, you have probably
- // tried to access a start rule, which isn't exposed as such from your
- // grammar.
- BOOST_STATIC_ASSERT(N > 0 && N < tuple_t::length);
-
- // If the following assertion is fired, you have probably forgot to call
- // the start_parser() function from inside the constructor of your
- // embedded definition class to initialize the start parsers to be exposed
- // from your grammar.
- // Another reason may be, that there is a count mismatch between
- // the number of template parameters to the grammar_def<> class and the
- // number of parameters used while calling start_parsers().
- BOOST_SPIRIT_ASSERT(0 != t[phoenix::tuple_index<N>()]);
-
- return t[phoenix::tuple_index<N>()];
- }
-
-private:
- tuple_t t;
-};
-
-#undef BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A
-
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_grammar_def.hpp>
 
-#endif // BOOST_SPIRIT_GRAMMAR_DEF_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/utility/grammar_def_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/grammar_def_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/grammar_def_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,48 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_GRAMMAR_DEF_FWD_HPP)
-#define BOOST_SPIRIT_GRAMMAR_DEF_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR_DEF_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR_DEF_FWD
 
-#include <boost/spirit/phoenix/tuples.hpp>
-
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/facilities/intercept.hpp>
-
-#if !defined(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT)
-#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT PHOENIX_LIMIT
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_grammar_def_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_grammar_def_fwd.hpp"
 #endif
 
-// Calculate an integer rounded up to the nearest integer dividable by 3
-#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 12
-#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 15
-#elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 9
-#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 12
-#elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 6
-#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 9
-#elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 3
-#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 6
-#else
-#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 3
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
-
-namespace boost { namespace spirit {
-
- template <
- typename T,
- BOOST_PP_ENUM_BINARY_PARAMS(
- BOOST_PP_DEC(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A),
- typename T, = phoenix::nil_t BOOST_PP_INTERCEPT
- )
- >
- class grammar_def;
-
-}} // namespace boost::spirit
+#include <boost/spirit/include/classic_grammar_def_fwd.hpp>
 
 #endif
-

Modified: branches/proto/v4/boost/spirit/utility/lists.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/lists.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/lists.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,336 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_LISTS_HPP
-#define BOOST_SPIRIT_LISTS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LISTS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_LISTS
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/config.hpp>
-#include <boost/spirit/meta/as_parser.hpp>
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
-
-#include <boost/spirit/utility/lists_fwd.hpp>
-#include <boost/spirit/utility/impl/lists.ipp>
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// list_parser class
-//
-// List parsers allow to parse constructs like
-//
-// item >> *(delim >> item)
-//
-// where 'item' is an auxiliary expression to parse and 'delim' is an
-// auxiliary delimiter to parse.
-//
-// The list_parser class also can match an optional closing delimiter
-// represented by the 'end' parser at the end of the list:
-//
-// item >> *(delim >> item) >> !end.
-//
-// If ItemT is an action_parser_category type (parser with an attached
-// semantic action) we have to do something special. This happens, if the
-// user wrote something like:
-//
-// list_p(item[f], delim)
-//
-// where 'item' is the parser matching one item of the list sequence and
-// 'f' is a functor to be called after matching one item. If we would do
-// nothing, the resulting code would parse the sequence as follows:
-//
-// (item[f] - delim) >> *(delim >> (item[f] - delim))
-//
-// what in most cases is not what the user expects.
-// (If this _is_ what you've expected, then please use one of the list_p
-// generator functions 'direct()', which will inhibit re-attaching
-// the actor to the item parser).
-//
-// To make the list parser behave as expected:
-//
-// (item - delim)[f] >> *(delim >> (item - delim)[f])
-//
-// the actor attached to the 'item' parser has to be re-attached to the
-// *(item - delim) parser construct, which will make the resulting list
-// parser 'do the right thing'.
-//
-// Additionally special care must be taken, if the item parser is a
-// unary_parser_category type parser as
-//
-// list_p(*anychar_p, ',')
-//
-// which without any refactoring would result in
-//
-// (*anychar_p - ch_p(','))
-// >> *( ch_p(',') >> (*anychar_p - ch_p(',')) )
-//
-// and will not give the expected result (the first *anychar_p will eat up
-// all the input up to the end of the input stream). So we have to
-// refactor this into:
-//
-// *(anychar_p - ch_p(','))
-// >> *( ch_p(',') >> *(anychar_p - ch_p(',')) )
-//
-// what will give the correct result.
-//
-// The case, where the item parser is a combination of the two mentioned
-// problems (i.e. the item parser is a unary parser with an attached
-// action), is handled accordingly too:
-//
-// list_p((*anychar_p)[f], ',')
-//
-// will be parsed as expected:
-//
-// (*(anychar_p - ch_p(',')))[f]
-// >> *( ch_p(',') >> (*(anychar_p - ch_p(',')))[f] ).
-//
-///////////////////////////////////////////////////////////////////////////////
-template <
- typename ItemT, typename DelimT, typename EndT, typename CategoryT
->
-struct list_parser :
- public parser<list_parser<ItemT, DelimT, EndT, CategoryT> > {
-
- typedef list_parser<ItemT, DelimT, EndT, CategoryT> self_t;
- typedef CategoryT parser_category_t;
-
- list_parser(ItemT const &item_, DelimT const &delim_,
- EndT const& end_ = no_list_endtoken())
- : item(item_), delim(delim_), end(end_)
- {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- return impl::list_parser_type<CategoryT>
- ::parse(scan, *this, item, delim, end);
- }
-
-private:
- typename as_parser<ItemT>::type::embed_t item;
- typename as_parser<DelimT>::type::embed_t delim;
- typename as_parser<EndT>::type::embed_t end;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// List parser generator template
-//
-// This is a helper for generating a correct list_parser<> from
-// auxiliary parameters. There are the following types supported as
-// parameters yet: parsers, single characters and strings (see
-// as_parser<> in meta/as_parser.hpp).
-//
-// The list_parser_gen by itself can be used for parsing comma separated
-// lists without item formatting:
-//
-// list_p.parse(...)
-// matches any comma separated list.
-//
-// If list_p is used with one parameter, this parameter is used to match
-// the delimiter:
-//
-// list_p(';').parse(...)
-// matches any semicolon separated list.
-//
-// If list_p is used with two parameters, the first parameter is used to
-// match the items and the second parameter matches the delimiters:
-//
-// list_p(uint_p, ',').parse(...)
-// matches comma separated unsigned integers.
-//
-// If list_p is used with three parameters, the first parameter is used
-// to match the items, the second one is used to match the delimiters and
-// the third one is used to match an optional ending token sequence:
-//
-// list_p(real_p, ';', eol_p).parse(...)
-// matches a semicolon separated list of real numbers optionally
-// followed by an end of line.
-//
-// The list_p in the previous examples denotes the predefined parser
-// generator, which should be used to define list parsers (see below).
-//
-///////////////////////////////////////////////////////////////////////////////
-
-template <typename CharT = char>
-struct list_parser_gen :
- public list_parser<kleene_star<anychar_parser>, chlit<CharT> >
-{
- typedef list_parser_gen<CharT> self_t;
-
-// construct the list_parser_gen object as an list parser for comma separated
-// lists without item formatting.
- list_parser_gen()
- : list_parser<kleene_star<anychar_parser>, chlit<CharT> >
- (*anychar_p, chlit<CharT>(','))
- {}
-
-// The following generator functions should be used under normal circumstances.
-// (the operator()(...) functions)
-
- // Generic generator functions for creation of concrete list parsers, which
- // support 'normal' syntax:
- //
- // item >> *(delim >> item)
- //
- // If item isn't given, everything between two delimiters is matched.
-
- template<typename DelimT>
- list_parser<
- kleene_star<anychar_parser>,
- typename as_parser<DelimT>::type,
- no_list_endtoken,
- unary_parser_category // there is no action to re-attach
- >
- operator()(DelimT const &delim_) const
- {
- typedef kleene_star<anychar_parser> item_t;
- typedef typename as_parser<DelimT>::type delim_t;
-
- typedef
- list_parser<item_t, delim_t, no_list_endtoken, unary_parser_category>
- return_t;
-
- return return_t(*anychar_p, as_parser<DelimT>::convert(delim_));
- }
-
- template<typename ItemT, typename DelimT>
- list_parser<
- typename as_parser<ItemT>::type,
- typename as_parser<DelimT>::type,
- no_list_endtoken,
- typename as_parser<ItemT>::type::parser_category_t
- >
- operator()(ItemT const &item_, DelimT const &delim_) const
- {
- typedef typename as_parser<ItemT>::type item_t;
- typedef typename as_parser<DelimT>::type delim_t;
- typedef list_parser<item_t, delim_t, no_list_endtoken,
- BOOST_DEDUCED_TYPENAME item_t::parser_category_t>
- return_t;
-
- return return_t(
- as_parser<ItemT>::convert(item_),
- as_parser<DelimT>::convert(delim_)
- );
- }
-
- // Generic generator function for creation of concrete list parsers, which
- // support 'extended' syntax:
- //
- // item >> *(delim >> item) >> !end
-
- template<typename ItemT, typename DelimT, typename EndT>
- list_parser<
- typename as_parser<ItemT>::type,
- typename as_parser<DelimT>::type,
- typename as_parser<EndT>::type,
- typename as_parser<ItemT>::type::parser_category_t
- >
- operator()(
- ItemT const &item_, DelimT const &delim_, EndT const &end_) const
- {
- typedef typename as_parser<ItemT>::type item_t;
- typedef typename as_parser<DelimT>::type delim_t;
- typedef typename as_parser<EndT>::type end_t;
-
- typedef list_parser<item_t, delim_t, end_t,
- BOOST_DEDUCED_TYPENAME item_t::parser_category_t>
- return_t;
-
- return return_t(
- as_parser<ItemT>::convert(item_),
- as_parser<DelimT>::convert(delim_),
- as_parser<EndT>::convert(end_)
- );
- }
-
-// The following functions should be used, if the 'item' parser has an attached
-// semantic action or is a unary_parser_category type parser and the structure
-// of the resulting list parser should _not_ be refactored during parser
-// construction (see comment above).
-
- // Generic generator function for creation of concrete list parsers, which
- // support 'normal' syntax:
- //
- // item >> *(delim >> item)
-
- template<typename ItemT, typename DelimT>
- list_parser<
- typename as_parser<ItemT>::type,
- typename as_parser<DelimT>::type,
- no_list_endtoken,
- plain_parser_category // inhibit action re-attachment
- >
- direct(ItemT const &item_, DelimT const &delim_) const
- {
- typedef typename as_parser<ItemT>::type item_t;
- typedef typename as_parser<DelimT>::type delim_t;
- typedef list_parser<item_t, delim_t, no_list_endtoken,
- plain_parser_category>
- return_t;
-
- return return_t(
- as_parser<ItemT>::convert(item_),
- as_parser<DelimT>::convert(delim_)
- );
- }
-
- // Generic generator function for creation of concrete list parsers, which
- // support 'extended' syntax:
- //
- // item >> *(delim >> item) >> !end
-
- template<typename ItemT, typename DelimT, typename EndT>
- list_parser<
- typename as_parser<ItemT>::type,
- typename as_parser<DelimT>::type,
- typename as_parser<EndT>::type,
- plain_parser_category // inhibit action re-attachment
- >
- direct(
- ItemT const &item_, DelimT const &delim_, EndT const &end_) const
- {
- typedef typename as_parser<ItemT>::type item_t;
- typedef typename as_parser<DelimT>::type delim_t;
- typedef typename as_parser<EndT>::type end_t;
-
- typedef
- list_parser<item_t, delim_t, end_t, plain_parser_category>
- return_t;
-
- return return_t(
- as_parser<ItemT>::convert(item_),
- as_parser<DelimT>::convert(delim_),
- as_parser<EndT>::convert(end_)
- );
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Predefined list parser generator
-//
-// The list_p parser generator can be used
-// - by itself for parsing comma separated lists without item formatting
-// or
-// - for generating list parsers with auxiliary parser parameters
-// for the 'item', 'delim' and 'end' subsequences.
-// (see comment above)
-//
-///////////////////////////////////////////////////////////////////////////////
-const list_parser_gen<> list_p = list_parser_gen<>();
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_lists.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_lists.hpp"
+#endif
 
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_lists.hpp>
 
 #endif

Modified: branches/proto/v4/boost/spirit/utility/lists_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/lists_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/lists_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,27 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_LISTS_FWD_HPP)
-#define BOOST_SPIRIT_LISTS_FWD_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LISTS_FWD
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_LISTS_FWD
 
-#include <boost/spirit/core/parser.hpp>
-
-namespace boost { namespace spirit {
-
- struct no_list_endtoken;
-
- template <
- typename ItemT, typename DelimT, typename EndT = no_list_endtoken,
- typename CategoryT = plain_parser_category
- >
- struct list_parser;
-
-}} // namespace boost::spirit
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_lists_fwd.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_lists_fwd.hpp"
+#endif
 
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_lists_fwd.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/utility/loops.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/loops.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/loops.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,313 +1,23 @@
 /*=============================================================================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2002 Raghavendra Satish
- Copyright (c) 2002 Jeff Westfahl
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_LOOPS_HPP)
-#define BOOST_SPIRIT_LOOPS_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LOOPS
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_LOOPS
 
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/core/composite/composite.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_loops.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_loops.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_loops.hpp>
 
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // fixed_loop class
- //
- // This class takes care of the construct:
- //
- // repeat_p (exact) [p]
- //
- // where 'p' is a parser and 'exact' is the number of times to
- // repeat. The parser iterates over the input exactly 'exact' times.
- // The parse function fails if the parser does not match the input
- // exactly 'exact' times.
- //
- // This class is parametizable and can accept constant arguments
- // (e.g. repeat_p (5) [p]) as well as references to variables (e.g.
- // repeat_p (ref (n)) [p]).
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename ParserT, typename ExactT>
- class fixed_loop
- : public unary<ParserT, parser <fixed_loop <ParserT, ExactT> > >
- {
- public:
-
- typedef fixed_loop<ParserT, ExactT> self_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- fixed_loop (ParserT const & subject, ExactT const & exact)
- : base_t(subject), m_exact(exact) {}
-
- template <typename ScannerT>
- typename parser_result <self_t, ScannerT>::type
- parse (ScannerT const & scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- result_t hit = scan.empty_match();
- std::size_t n = m_exact;
-
- for (std::size_t i = 0; i < n; ++i)
- {
- if (result_t next = this->subject().parse(scan))
- {
- scan.concat_match(hit, next);
- }
- else
- {
- return scan.no_match();
- }
- }
-
- return hit;
- }
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, nil_t>::type type;
- };
-
- private:
-
- ExactT m_exact;
- };
-
- ///////////////////////////////////////////////////////////////////////////////
- //
- // finite_loop class
- //
- // This class takes care of the construct:
- //
- // repeat_p (min, max) [p]
- //
- // where 'p' is a parser, 'min' and 'max' specifies the minimum and
- // maximum iterations over 'p'. The parser iterates over the input
- // at least 'min' times and at most 'max' times. The parse function
- // fails if the parser does not match the input at least 'min' times
- // and at most 'max' times.
- //
- // This class is parametizable and can accept constant arguments
- // (e.g. repeat_p (5, 10) [p]) as well as references to variables
- // (e.g. repeat_p (ref (n1), ref (n2)) [p]).
- //
- ///////////////////////////////////////////////////////////////////////////////
- template <typename ParserT, typename MinT, typename MaxT>
- class finite_loop
- : public unary<ParserT, parser<finite_loop<ParserT, MinT, MaxT> > >
- {
- public:
-
- typedef finite_loop <ParserT, MinT, MaxT> self_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- finite_loop (ParserT const & subject, MinT const & min, MaxT const & max)
- : base_t(subject), m_min(min), m_max(max) {}
-
- template <typename ScannerT>
- typename parser_result <self_t, ScannerT>::type
- parse(ScannerT const & scan) const
- {
- BOOST_SPIRIT_ASSERT(m_min <= m_max);
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- result_t hit = scan.empty_match();
-
- std::size_t n1 = m_min;
- std::size_t n2 = m_max;
-
- for (std::size_t i = 0; i < n2; ++i)
- {
- typename ScannerT::iterator_t save = scan.first;
- result_t next = this->subject().parse(scan);
-
- if (!next)
- {
- if (i >= n1)
- {
- scan.first = save;
- break;
- }
- else
- {
- return scan.no_match();
- }
- }
-
- scan.concat_match(hit, next);
- }
-
- return hit;
- }
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, nil_t>::type type;
- };
-
- private:
-
- MinT m_min;
- MaxT m_max;
- };
-
- ///////////////////////////////////////////////////////////////////////////////
- //
- // infinite_loop class
- //
- // This class takes care of the construct:
- //
- // repeat_p (min, more) [p]
- //
- // where 'p' is a parser, 'min' is the minimum iteration over 'p'
- // and more specifies that the iteration should proceed
- // indefinitely. The parser iterates over the input at least 'min'
- // times and continues indefinitely until 'p' fails or all of the
- // input is parsed. The parse function fails if the parser does not
- // match the input at least 'min' times.
- //
- // This class is parametizable and can accept constant arguments
- // (e.g. repeat_p (5, more) [p]) as well as references to variables
- // (e.g. repeat_p (ref (n), more) [p]).
- //
- ///////////////////////////////////////////////////////////////////////////////
-
- struct more_t {};
- more_t const more = more_t ();
-
- template <typename ParserT, typename MinT>
- class infinite_loop
- : public unary<ParserT, parser<infinite_loop<ParserT, MinT> > >
- {
- public:
-
- typedef infinite_loop <ParserT, MinT> self_t;
- typedef unary<ParserT, parser<self_t> > base_t;
-
- infinite_loop (
- ParserT const& subject,
- MinT const& min,
- more_t const&
- )
- : base_t(subject), m_min(min) {}
-
- template <typename ScannerT>
- typename parser_result <self_t, ScannerT>::type
- parse(ScannerT const & scan) const
- {
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- result_t hit = scan.empty_match();
- std::size_t n = m_min;
-
- for (std::size_t i = 0; ; ++i)
- {
- typename ScannerT::iterator_t save = scan.first;
- result_t next = this->subject().parse(scan);
-
- if (!next)
- {
- if (i >= n)
- {
- scan.first = save;
- break;
- }
- else
- {
- return scan.no_match();
- }
- }
-
- scan.concat_match(hit, next);
- }
-
- return hit;
- }
-
- template <typename ScannerT>
- struct result
- {
- typedef typename match_result<ScannerT, nil_t>::type type;
- };
-
- private:
-
- MinT m_min;
- };
-
- template <typename ExactT>
- struct fixed_loop_gen
- {
- fixed_loop_gen (ExactT const & exact)
- : m_exact (exact) {}
-
- template <typename ParserT>
- fixed_loop <ParserT, ExactT>
- operator[](parser <ParserT> const & subject) const
- {
- return fixed_loop <ParserT, ExactT> (subject.derived (), m_exact);
- }
-
- ExactT m_exact;
- };
-
- namespace impl {
-
- template <typename ParserT, typename MinT, typename MaxT>
- struct loop_traits
- {
- typedef typename mpl::if_<
- boost::is_same<MaxT, more_t>,
- infinite_loop<ParserT, MinT>,
- finite_loop<ParserT, MinT, MaxT>
- >::type type;
- };
-
- } // namespace impl
-
- template <typename MinT, typename MaxT>
- struct nonfixed_loop_gen
- {
- nonfixed_loop_gen (MinT min, MaxT max)
- : m_min (min), m_max (max) {}
-
- template <typename ParserT>
- typename impl::loop_traits<ParserT, MinT, MaxT>::type
- operator[](parser <ParserT> const & subject) const
- {
- typedef typename impl::loop_traits<ParserT, MinT, MaxT>::type ret_t;
- return ret_t(
- subject.derived(),
- m_min,
- m_max);
- }
-
- MinT m_min;
- MaxT m_max;
- };
-
- template <typename ExactT>
- fixed_loop_gen <ExactT>
- repeat_p(ExactT const & exact)
- {
- return fixed_loop_gen <ExactT> (exact);
- }
-
- template <typename MinT, typename MaxT>
- nonfixed_loop_gen <MinT, MaxT>
- repeat_p(MinT const & min, MaxT const & max)
- {
- return nonfixed_loop_gen <MinT, MaxT> (min, max);
- }
-
-}} // namespace boost::spirit
-
-#endif // #if !defined(BOOST_SPIRIT_LOOPS_HPP)
+#endif

Modified: branches/proto/v4/boost/spirit/utility/regex.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/regex.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/regex.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,108 +1,23 @@
 /*=============================================================================
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#ifndef BOOST_SPIRIT_REGEX_HPP
-#define BOOST_SPIRIT_REGEX_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REGEX
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_REGEX
 
-#include <boost/version.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_regex.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_regex.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_regex.hpp>
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// Include the regular expression library of boost (Boost.Regex)
-//
-// Note though, that this library is not distributed with Spirit. You have to
-// obtain a separate copy from http://www.boost.org.
-//
-///////////////////////////////////////////////////////////////////////////////
-#if defined(BOOST_SPIRIT_NO_REGEX_LIB) && BOOST_VERSION < 103300
-//
-// Include all the Boost.regex library. Please note that this will not work,
-// if you are using the boost/spirit/regex.hpp header from more than one
-// translation units.
-//
-#define BOOST_REGEX_NO_LIB
-#define BOOST_REGEX_STATIC_LINK
-#define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
-#include <boost/regex.hpp>
-#include <boost/regex/src.cpp>
-
-#else
-//
-// Include the Boost.Regex headers only. Note, that you will have to link your
-// application against the Boost.Regex library as described in the related
-// documentation.
-// This is the only way for Boost newer than V1.32.0
-//
-#include <boost/regex.hpp>
-#endif // defined(BOOST_SPIRIT_NO_REGEX_LIB)
-
-#include <boost/static_assert.hpp>
-
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/spirit/meta/as_parser.hpp>
-#include <boost/spirit/core/parser.hpp>
-#include <boost/spirit/utility/impl/regex.ipp>
-#include <boost/detail/iterator.hpp> // for boost::detail::iterator_traits
-
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
-///////////////////////////////////////////////////////////////////////////////
-// rxstrlit class
-template <typename CharT = char>
-struct rxstrlit : public parser<rxstrlit<CharT> > {
-
- typedef rxstrlit self_t;
-
- rxstrlit(CharT const *first, CharT const *last)
- : rx(first, last) {}
- rxstrlit(CharT const *first)
- : rx(first) {}
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const& scan) const
- {
- // Due to limitations in the boost::regex library the iterators wrapped in
- // the ScannerT object should be at least bidirectional iterators. Plain
- // forward iterators do not work here.
- typedef typename ScannerT::iterator_t iterator_t;
- typedef
- typename boost::detail::iterator_traits<iterator_t>::iterator_category
- iterator_category;
-
- BOOST_STATIC_ASSERT((
- boost::is_convertible<iterator_category,
- std::bidirectional_iterator_tag>::value
- ));
-
- typedef typename parser_result<self_t, ScannerT>::type result_t;
- return impl::contiguous_parser_parse<result_t>(rx, scan, scan);
- }
-
-private:
- impl::rx_parser<CharT> rx; // contains the boost regular expression parser
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// Generator functions
-template <typename CharT>
-inline rxstrlit<CharT>
-regex_p(CharT const *first)
-{ return rxstrlit<CharT>(first); }
-
-//////////////////////////////////
-template <typename CharT>
-inline rxstrlit<CharT>
-regex_p(CharT const *first, CharT const *last)
-{ return rxstrlit<CharT>(first, last); }
-
-///////////////////////////////////////////////////////////////////////////////
-}} // namespace boost::spirit
-
-#endif // BOOST_SPIRIT_REGEX_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/utility/rule_parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/rule_parser.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/rule_parser.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,1118 +1,23 @@
-/*==============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-// The comment below contains a unnamed 'namespace {', which is flagged by the
-// Boost inspect tool as a violation of common C++ programming rules. Since it's
-// in a comment, well, we switch it off :-P
-// boostinspect:nounnamed
-
-//
-// About:
-// =====
-//
-// Using a typeof operator or Boost.Typeof to automatically set the type of
-// variables (as done in the Spirit example demonstrating typeof) is by far not
-// all we can do to tighten up our grammars as there are some significant
-// drawbacks of this approach:
-// - the types complexity scales with the complexity of the grammar (sooner or
-// later hitting the limits of the compiler),
-// - recursive grammars are not possible, and
-// - all parser objects are embedded by value.
-//
-// The Spirit documentation therefore recommends creating custom parser classes
-// (derived from the a sub_grammar template):
-//
-// http://www.boost.org/libs/spirit/doc/techniques.html#no_rules
-// http://www.boost.org/libs/spirit/doc/techniques.html#typeof
-//
-// In practice manually applying this technique leads to rather lengthy code and
-// overthis requires the user to have a solid understanding of Spirit details.
-//
-// Here is a generalized, macro-based approach to easily create typeof-based
-// grammars that can be recursive and arbitrarily complex.
-//
-//
-// Quick manual:
-// ============
-//
-// 1. Setup
-//
-// Before the rule parser macro (the protagonist of the facility) can be used
-// the the user must define the macro BOOST_SPIRIT__NAMESPACE (note the double
-// underscore characeter) and setup a registration group for Boost.Typeof.
-//
-// Examples:
-//
-// // should come after regular #includeS
-// #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-//
-// // [...]
-//
-// #define BOOST_SPIRIT__NAMESPACE (2,(my_project, my_module))
-// // | | +- outer +- inner
-// // ! space ! -+ | namespace namespace
-// // |
-// // +--- number of nested namespaces
-//
-// namespace my_project { namespace my_module {
-//
-// // [...]
-//
-// ---
-//
-// // should come after regular #includeS
-// #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-//
-// // [...]
-//
-// #define BOOST_SPIRIT__NAMESPACE (2,(my_project, (anonymous) ))
-//
-// namespace my_project { namespace {
-//
-// // [...]
-//
-// ---
-//
-// // should come after regular #includeS
-// #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-//
-// // [...]
-//
-//
-// #define BOOST_SPIRIT__NAMESPACE -
-// // we're working at root namespace
-//
-//
-// Why do I have to do this?
-//
-// Boost.Typeof needs to assign a unique ID for each registration. This ID is
-// created composed of the line number and the registration group. The
-// facility performs Typeof registration and thus requires the source file to
-// have its own registration group. Further Boost.Typeof requires registration
-// to happen at root namespace so we have to close and reopen the namespace
-// we're in.
-//
-//
-// 2. The rule parser macro
-//
-// A simple rule parser definition looks like that:
-//
-// // we're at namespace scope here
-//
-// // Skip parser for C/C++ comments and whitespace
-// BOOST_SPIRIT_RULE_PARSER(skipper,
-// -,-,-,
-//
-// +( confix_p("//",*anychar_p,eol_p)
-// | confix_p("/*",*anychar_p,"*/")
-// | space_p
-// )
-// )
-//
-// Now we can use 'skipper' in other Spirit expressions.
-//
-// The code above creates a parser (template) class 'skpper_t' and (in this
-// case, because there are no parameters) a static const instance 'skipper' of
-// that class. The class is automatically registered with Boost.Typeof. The type
-// name our parser is skipper_t here.
-//
-//
-// 2.1. Parametrized rule parsers
-//
-// Rule parser definitions can have parameters.
-//
-// Parameters are passed to the BOOST_SPIRIT_RULE_PARSER macro as its second
-// argument (just pass '-' if there are no parameters) with the following
-// format:
-//
-// (N,( param1,param2, / ... / paramN ))
-// +-- number of parameters
-//
-// Example of a whole rule parser:
-//
-// BOOST_SPIRIT_RULE_PARSER(new_name,
-// (1,( symbol_table )),-,-,
-//
-// lexeme_d[ (alpha_p >> *alnum_p)[ symbol_table.add ] ]
-// )
-//
-// The expression 'new_name(my_symbols)' parses a string literal and adds it to
-// the symbol table 'my_symbols'.
-//
-// The rule parser macro creates a function template as called 'new_name' that
-// takes one parameter of deduced reference type and returns a specialization of
-// 'new_name_t' in this case.
-//
-// Since parsers that require to be fast and lightweight often also require to
-// be reentrant, it's quite common to pass in some semantic controller (the
-// symbol table in the example above).
-// However, parameters are templated so they can be anything (including parsers
-// of course) so refactoring tasks can be abstracted with rule parsers as well.
-//
-// BOOST_SPIRIT_RULE_PARSER(enumeration_parser,
-// (2,( element_parser, delimiter_parser )),-,-,
-//
-// element_parser >> *(delimiter_parser >> element_parser)
-// )
-//
-// The expression 'enumeration_parser(int_p[ some_action ], ',')' creates a
-// parser for a comma-separated list of integers.
-//
-//
-// 2.2. Rule parsrs and semantic actions
-//
-// While semantic actions can be globally attached to a rule parser or passed
-// to a parametrized rule parser as (part of) an argument, even more control is
-// possible by using action placeholders. E.g:
-//
-// BOOST_SPIRIT_ACTION_PLACEHOLDER(int_action)
-//
-// BOOST_SPIRIT_RULE_PARSER(int_list,
-// -,(1,( int_action )),-,
-//
-// int_p[ int_action ] >> *(',' >> int_p[ int_action ])
-// )
-//
-// The expression 'int_list[ my_action ]' parses a comma separated list of
-// integers and calls 'my_action' for every integer parsed therein.
-//
-// Of course multiple actions can be attached to one placeholder as usual (in
-// this case 'int_list[ my_action1 ][ my_action2 ] would call two actions).
-//
-// Further there can be multiple action placeholders for a single rule parser:
-//
-// BOOST_SPIRIT_ACTION_PLACEHOLDER(feed_int)
-// BOOST_SPIRIT_ACTION_PLACEHOLDER(next_int)
-//
-// BOOST_SPIRIT_RULE_PARSER(int_list,
-// -,(2,( feed_int, next_int )),-,
-//
-// int_p[ feed_int ] >> *(',' >> int_p[ next_int ][ feed_int ])
-// )
-//
-// The expression 'int_list[ (feed_int = my_action1), (next_int = my_action2) ]'
-// creates a parser for a comma separated list of integers with the actions
-// attached appropriately.
-//
-// int_list[ feed_int = my_action1,my_action2, next_int = my_action3 ]
-//
-// works too (in this case the action placeholder 'feed_int' has two actions
-// attached to it).
-//
-// You can both override and append actions associated with an action
-// placeholder:
-//
-// var = int_list[ feed_int = my_action1, next_int = my_action2 ]
-//
-// // [...]
-//
-// ... var[ feed_int = another_action ]
-// // 'another_action' overrides the actions previously attached to 'feed_int'
-//
-// ... var[ next_int += another_action ]
-// // 'another_action' is appended to the list of actions attached to
-// // 'next_int'
-//
-// Action placeholders are not entirely for free -- they add to the size and the
-// initialization time of the rule parser. However, the impact on an already
-// initialized rule parser instance should be quite small.
-//
-//
-// 2.3. Member variables
-//
-// You can add member variables to the rule parser class using the third
-// parameter of the rule parser macro:
-//
-// BOOST_SPIRIT_RULE_PARSER( calc,
-// -,
-// -,
-// (3,( ((subrule<0>),expression,()),
-// ((subrule<1>),term,()),
-// ((subrule<2>),factor,() )) ),
-//
-// // [...]
-//
-// adds three subrules to the rule parser.
-// Each parameter must have the following type to allow commas to be handled
-// safely from within the preprocessing code:
-//
-// ((type)),name,(constructor argument(s)))
-//
-//
-// 2.4. The opaque rule parser
-//
-// Rule parsers usually are templates. Building large grammars pushes the
-// compiler really hard (and eventually to its limits) because of the
-// metafunction complexity involved.
-// If a rule parser without parameters and action placeholders is defined, a
-// non-template class is created. Non-templated rule parsers can also be created
-// explicitly by using BOOST_SPIRIT_OPAQUE_RULE_PARSER.
-// Opaque rule parsers can have parameters and member variables (note: no action
-// placeholders are possible). The parameters of an opaque rule parsers are
-// strictly typed, e.g:
-//
-// BOOST_SPIRIT_OPAQUE_RULE_PARSER(new_identifier,
-// (1,( ((my_symbol_table_t &),symbol_table) ))
-// ,-,
-// (alpha_p >> *alnum_p) [ symbol_table.add ]
-// )
-//
-// Note it's also possible to have opaque rule parsers accept parameters of
-// non-const reference types which is not possible with regular rule parsers.
-//
-//
-// 3. Utilities for by-reference embedding
-//
-// When using parsers mutiple times or recursively it can be helpful to embed
-// them by-reference into the final parser expression.
-// For this purpose the library provides a wrapper template 'parser_reference'.
-// There is also a function template to create a wrapped parser which can deduce
-// the parser's type from its argument.
-//
-// --- --- - - --- - - --- - - - - --- - - - - - - - - - - - - - - - - - - - - -
-#if !defined(BOOST_SPIRIT_UTILITY_RULE_PARSER_HPP_INCLUDED)
-# define BOOST_SPIRIT_UTILITY_RULE_PARSER_HPP_INCLUDED
-//==============================================================================
-// Dependencies
-//==============================================================================
-# include <boost/config.hpp>
-# include <boost/detail/workaround.hpp>
-# include <boost/call_traits.hpp>
-# include <boost/typeof/typeof.hpp>
-# include <boost/spirit/core/parser.hpp>
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# include <boost/preprocessor/cat.hpp>
-# include <boost/preprocessor/seq/seq.hpp>
-# include <boost/preprocessor/seq/for_each_i.hpp>
-# include <boost/preprocessor/tuple/eat.hpp>
-# include <boost/preprocessor/tuple/to_seq.hpp>
-# include <boost/preprocessor/array/size.hpp>
-# include <boost/preprocessor/control/if.hpp>
-# include <boost/preprocessor/control/iif.hpp>
-# include <boost/preprocessor/control/expr_iif.hpp>
-# include <boost/preprocessor/logical/or.hpp>
-# include <boost/preprocessor/logical/nor.hpp>
-# include <boost/preprocessor/logical/not.hpp>
-# include <boost/preprocessor/logical/compl.hpp>
-# include <boost/preprocessor/arithmetic/inc.hpp>
-# include <boost/preprocessor/arithmetic/dec.hpp>
-# include <boost/preprocessor/arithmetic/add.hpp>
-# include <boost/preprocessor/detail/is_unary.hpp>
-# include <boost/preprocessor/detail/is_binary.hpp>
-# include <boost/preprocessor/repetition/repeat.hpp>
-# include <boost/preprocessor/repetition/enum_params.hpp>
-# include <boost/preprocessor/repetition/enum_binary_params.hpp>
-# include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-# include <boost/preprocessor/repetition/enum_trailing_params.hpp>
-# include <boost/preprocessor/punctuation/comma.hpp>
-# include <boost/preprocessor/punctuation/comma_if.hpp>
-# include <boost/preprocessor/facilities/empty.hpp>
-# include <boost/preprocessor/facilities/identity.hpp>
-# include <boost/preprocessor/facilities/intercept.hpp>
-//==============================================================================
-// Interface
-//==============================================================================
-// Creates a rule parser. Use at namespace scope.
-# define BOOST_SPIRIT_RULE_PARSER(name,params,actions,members,rule) \
- BOOST_SPIRIT_RP_IMPL_I(name,params,actions,members,rule)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Creates a non-templated rule parser. Use at namespace scope.
-# define BOOST_SPIRIT_OPAQUE_RULE_PARSER(name,params,members,rule) \
- BOOST_SPIRIT_RP_OPAQUE_IMPL_I(name,params,members,rule)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Defines an action placeholder. Use at namespace scope.
-# define BOOST_SPIRIT_ACTION_PLACEHOLDER(name) \
- BOOST_SPIRIT_RP_AP_IMPL(name,::boost::spirit::type_of)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Utilities to embed parsers by reference.
-namespace boost
-{
- namespace spirit
- {
- template<class P> class parser_reference;
- template<class P> parser_reference<P> embed_by_reference(parser<P> const &);
- }
-}
-//==============================================================================
-// Implementation
-//==============================================================================
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_REGISTER_TEMPLATE
-//
-// Boost.Typeof registration from within BOOST_SPIRIT__NAMESPACE
-# define BOOST_SPIRIT_RP_REGISTER_TEMPLATE(name,params) \
- BOOST_SPIRIT_RP_EMIT(NS_CLOSE,BOOST_SPIRIT__NAMESPACE,-) \
- BOOST_TYPEOF_REGISTER_TEMPLATE( \
- BOOST_SPIRIT_RP_EMIT(NS_QUALIFY,BOOST_SPIRIT__NAMESPACE,-) name, \
- params) \
- BOOST_SPIRIT_RP_EMIT(NS_OPEN,BOOST_SPIRIT__NAMESPACE,-)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_REGISTER_TYPE
-//
-// Boost.Typeof registration from within BOOST_SPIRIT__NAMESPACE
-# define BOOST_SPIRIT_RP_REGISTER_TYPE(name) \
- BOOST_SPIRIT_RP_EMIT(NS_CLOSE,BOOST_SPIRIT__NAMESPACE,-) \
- BOOST_TYPEOF_REGISTER_TYPE( \
- BOOST_SPIRIT_RP_EMIT(NS_QUALIFY,BOOST_SPIRIT__NAMESPACE,-) name ) \
- BOOST_SPIRIT_RP_EMIT(NS_OPEN,BOOST_SPIRIT__NAMESPACE,-)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_AP_IMPL
-//
-// The action placeholder definition
-# define BOOST_SPIRIT_RP_AP_IMPL(name,ns) \
- namespace __action_placeholder \
- { \
- struct name \
- { \
- template<typename Action> \
- ns :: action_chain< name, ns :: replace, Action> \
- operator=(Action const & __a) const \
- { return ns :: action_chain< name, ns :: replace, Action>(__a); } \
- \
- template<typename Action> \
- ns :: action_chain< name, ns :: append, Action> \
- operator+=(Action const & __a) const \
- { return ns :: action_chain< name, ns :: append, Action> (__a); } \
- }; \
- } \
- __action_placeholder:: name const name = __action_placeholder:: name ();
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_IMPL_I
-//
-// Does some precalculation so RP_IMPL_II can look cleaner
-# define BOOST_SPIRIT_RP_IMPL_I(name,pars,acts,mbrs,expr) \
- BOOST_SPIRIT_RP_IMPL_II(name, name ## _t , \
- pars, BOOST_SPIRIT_RP_ARRAY_SIZE(pars), \
- acts, BOOST_SPIRIT_RP_ARRAY_SIZE(acts), \
- mbrs, BOOST_SPIRIT_RP_ARRAY_SIZE(mbrs), expr)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_IMPL_II
-# define BOOST_SPIRIT_RP_IMPL_II(name,name_t,pars,np,acts,na,mbrs,nm,x) \
- BOOST_PP_IIF(BOOST_PP_OR(np,na),BOOST_SPIRIT_RP_IMPL_III, \
- BOOST_SPIRIT_RP_OPAQUE_IMPL_II) \
- (name,name_t,pars,np,acts,na,mbrs,nm,x)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_IMPL_III
-//
-// The rule parser definition
-# define BOOST_SPIRIT_RP_IMPL_III(name,name_t,pars,np,acts,na,mbrs,nm,x) \
- \
- template< BOOST_SPIRIT_RP_TPL_PARAMS(pars,acts,typename __,1) > \
- class name_t \
- : public ::boost::spirit::parser< name_t \
- < BOOST_SPIRIT_RP_TPL_PARAMS(pars,acts,__,0) > > \
- { \
- class __rule \
- { \
- BOOST_SPIRIT_RP_EMIT(PM_STATIC,pars,__T) \
- BOOST_SPIRIT_RP_EMIT(AP_STATIC,acts,-) \
- BOOST_SPIRIT_RP_EMIT(MV_STATIC,mbrs,BOOST_PP_IDENTITY(typename)) \
- public: \
- BOOST_TYPEOF_NESTED_TYPEDEF_TPL(__expr, \
- ::boost::spirit::type_of::depend_on_type<__Dummy>(x) ); \
- }; \
- \
- public: \
- \
- typedef name_t self_t; \
- typedef typename __rule::__expr::type::parser_category_t \
- parser_category_t; \
- \
- BOOST_PP_EXPR_IIF(BOOST_PP_NOR(np,na),typedef self_t const & embed_t;) \
- \
- protected: \
- \
- BOOST_SPIRIT_RP_EMIT(MV_NONSTATIC,mbrs,BOOST_PP_IDENTITY(typename)) \
- BOOST_SPIRIT_RP_IF(na,SPIRIT_RP_AP_EXTRA_MBRS,2)(np,na) \
- \
- typename __rule::__expr::type::embed_t __parser; \
- \
- public: \
- \
- explicit name_t ( BOOST_SPIRIT_RP_CTOR(PARAMS,pars,np,acts) ) \
- : BOOST_SPIRIT_RP_EMIT(MV_CTOR_INIT_LIST,mbrs,-) \
- BOOST_PP_COMMA_IF(nm) \
- BOOST_SPIRIT_RP_IF(na,SPIRIT_RP_CTOR_COMMA,4)(INIT_LIST,pars,np,acts)\
- __parser(x) \
- { } \
- \
- name_t( name_t const & that) \
- : BOOST_SPIRIT_RP_EMIT(MV_CTOR_COPY_INIT_LIST,mbrs,that) \
- BOOST_PP_COMMA_IF(nm) \
- BOOST_SPIRIT_RP_IF(na,SPIRIT_RP_CTOR_COMMA,4) \
- (COPY_INIT_LIST,pars,np,acts) \
- __parser(that.__parser) \
- { } \
- \
- template<typename Scanner> struct result \
- { \
- typedef typename ::boost::spirit::parser_result< \
- typename __rule::__expr::type, Scanner>::type type; \
- }; \
- \
- template<typename Scanner> \
- typename ::boost::spirit::parser_result<self_t, Scanner>::type \
- parse(Scanner const & s) const { return __parser.parse(s); } \
- \
- BOOST_SPIRIT_RP_IF(na,SPIRIT_RP_AP_HANDLER,5) \
- (name_t,np,acts,na,::boost::spirit::type_of) \
- }; \
- \
- BOOST_PP_IF(np,BOOST_SPIRIT_RP_GEN_FUNC,BOOST_SPIRIT_RP_GLOB_VAR) \
- (name,name_t,np,na) \
- BOOST_SPIRIT_RP_REGISTER_TEMPLATE \
- (name_t,BOOST_PP_INC(BOOST_PP_ADD(np,na)))
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_OPAQUE_IMPL_I
-//
-# define BOOST_SPIRIT_RP_OPAQUE_IMPL_I(name,pars,mbrs,expr) \
- BOOST_SPIRIT_RP_OPAQUE_IMPL_II(name, name ## _t, \
- pars,BOOST_SPIRIT_RP_ARRAY_SIZE(pars),-,-,\
- mbrs,BOOST_SPIRIT_RP_ARRAY_SIZE(mbrs),expr)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_OPAQUE_IMPL_II
-//
-# define BOOST_SPIRIT_RP_OPAQUE_IMPL_II(name,name_t,pars,np,_1,_2,mbrs,nm,x) \
- class name_t; \
- \
- BOOST_SPIRIT_RP_REGISTER_TYPE(name_t) \
- \
- class name_t \
- : public ::boost::spirit::parser< name_t > \
- { \
- class __rule \
- { \
- BOOST_SPIRIT_RP_EMIT(PM_OPAQUE_STATIC,pars,-) \
- BOOST_SPIRIT_RP_EMIT(MV_STATIC,mbrs,BOOST_PP_EMPTY) \
- public: \
- BOOST_TYPEOF_NESTED_TYPEDEF(__expr,x) ; \
- }; \
- \
- public: \
- \
- typedef name_t self_t; \
- typedef __rule::__expr::type::parser_category_t parser_category_t; \
- BOOST_PP_EXPR_IIF(BOOST_PP_NOT(np),typedef self_t const & embed_t;) \
- \
- protected: \
- \
- BOOST_SPIRIT_RP_EMIT(MV_NONSTATIC,mbrs,BOOST_PP_EMPTY) \
- \
- __rule::__expr::type::embed_t __parser; \
- \
- public: \
- \
- explicit name_t (BOOST_SPIRIT_RP_EMIT(PM_OPAQUE_CTOR_PARAMS,pars,-)) \
- : BOOST_SPIRIT_RP_EMIT(MV_CTOR_INIT_LIST,mbrs,-) \
- BOOST_PP_COMMA_IF(nm) __parser(x) \
- { } \
- \
- name_t(name_t const & that) \
- : BOOST_SPIRIT_RP_EMIT(MV_CTOR_COPY_INIT_LIST,mbrs,that) \
- BOOST_PP_COMMA_IF(nm) __parser(that.__parser) \
- { } \
- \
- template<typename Scanner> struct result \
- { \
- typedef typename ::boost::spirit::parser_result< \
- __rule::__expr::type, Scanner>::type type; \
- }; \
- \
- template<typename Scanner> \
- typename ::boost::spirit::parser_result<self_t, Scanner>::type \
- parse(Scanner const & s) const { return __parser.parse(s); } \
- }; \
- \
- BOOST_PP_IF(np,BOOST_SPIRIT_RP_GEN_OPAQUE,BOOST_SPIRIT_RP_GLOB_OPAQUE) \
- (name,name_t,np,pars)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_AP_HANDLER
-//
-// Part of the rule parser definition for handling action placeholders
-# define BOOST_SPIRIT_RP_AP_HANDLER(name_t,np,acts,na,ns) \
- private: \
- template<typename A> struct __rebound_1st \
- { \
- typedef name_t < void BOOST_PP_ENUM_TRAILING_PARAMS(np,__T) , \
- typename ns ::action_concatenator<__A0,A>::type \
- BOOST_PP_COMMA_IF(BOOST_PP_DEC(na)) \
- BOOST_PP_ENUM_SHIFTED_PARAMS(na,__A) \
- > type; \
- }; \
- \
- template<typename X> struct __rebound \
- { \
- typedef name_t < \
- void BOOST_PP_ENUM_TRAILING_PARAMS(np,__T) \
- BOOST_SPIRIT_RP_EMIT(AP_REBOUND_TPL_ARGS,acts,X) \
- > type; \
- }; \
- public: \
- template<typename A> \
- typename __rebound_1st<A>::type const operator[](A const & a) const \
- { \
- return typename __rebound_1st<A>::type ( \
- BOOST_PP_ENUM_PARAMS(np,__p) BOOST_PP_COMMA_IF(np) \
- ns ::concatenate_actions(__a0,a) \
- BOOST_PP_COMMA_IF(BOOST_PP_DEC(na)) \
- BOOST_PP_ENUM_SHIFTED_PARAMS(na,__a) ); \
- } \
- template<class PH, ns ::action_chain_mode M, typename A> \
- typename __rebound< ns ::action_chain<PH,M,A> >::type const \
- operator[]( ns ::action_chain<PH,M,A> const & x) const \
- { \
- return typename __rebound< ns ::action_chain<PH,M,A> >::type ( \
- BOOST_PP_ENUM_PARAMS(np,__p) BOOST_PP_COMMA_IF(np) \
- BOOST_SPIRIT_RP_EMIT(AP_REBOUND_ARGS,acts,x) ); \
- } \
- template<class Head, class Tail> \
- typename __rebound< ns ::action_chains<Head,Tail> >::type const \
- operator[]( ns ::action_chains<Head,Tail> const & x) const \
- { \
- return typename __rebound< ns ::action_chains<Head,Tail> >::type ( \
- BOOST_PP_ENUM_PARAMS(np,__p) BOOST_PP_COMMA_IF(np) \
- BOOST_SPIRIT_RP_EMIT(AP_REBOUND_ARGS,acts,x) ); \
- }
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_AP_EXTRA_MBRS
-//
-// Extra members we need for rebinding if there are action placeholders
-# define BOOST_SPIRIT_RP_AP_EXTRA_MBRS(np,na) \
- private: \
- BOOST_PP_REPEAT(np,BOOST_SPIRIT_RP_PM_MBRS,-) \
- BOOST_PP_REPEAT(na,BOOST_SPIRIT_RP_AP_MBRS,-)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_PM_MBRS
-//
-// Member variables to remember parameters if there are action placeholder
-# define BOOST_SPIRIT_RP_PM_MBRS(z,i,d) __T ## i __p ## i ;
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_AP_MBRS
-//
-// Member variables to remember action placeholder substitutes
-# define BOOST_SPIRIT_RP_AP_MBRS(z,i,d) __A ## i __a ## i ;
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_CTOR
-//
-// Expands to a fragment of a constructor (parameters or init-list)
-# define BOOST_SPIRIT_RP_CTOR(what,pars,np,acts) \
- BOOST_SPIRIT_RP_EMIT(PM_CTOR_ ## what,pars,__T) \
- BOOST_SPIRIT_RP_EMIT(AP_CTOR_ ## what,acts,np)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_CTOR_COMMA
-//
-// RP_CTOR with a trailing comma
-# define BOOST_SPIRIT_RP_CTOR_COMMA(what,pars,np,acts) \
- BOOST_SPIRIT_RP_CTOR(what,pars,np,acts) ,
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_TPL_PARAMS
-//
-// Expands to the template parameters or arguments of the rule parser template
-# define BOOST_SPIRIT_RP_TPL_PARAMS(pars,acts,prefix,defaults) \
- prefix ## Dummy \
- BOOST_SPIRIT_RP_EMIT(PM_TEMPLATE_PARAMS,pars,prefix ## T) \
- BOOST_SPIRIT_RP_EMIT(AP_TEMPLATE_PARAMS,acts,(prefix ## A,defaults))
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_GEN_FUNC
-//
-// Generator function
-# define BOOST_SPIRIT_RP_GEN_FUNC(name,name_t,np,na) \
- template< BOOST_PP_ENUM_PARAMS(np,typename T) > \
- inline name_t < void BOOST_PP_ENUM_TRAILING_PARAMS(np,T) > \
- name( BOOST_PP_ENUM_BINARY_PARAMS(np,T, const & p) ) \
- { return name_t < void BOOST_PP_ENUM_TRAILING_PARAMS(np,T) > \
- (BOOST_PP_ENUM_PARAMS(np,p) BOOST_PP_ENUM_TRAILING_PARAMS(na, \
- ::boost::spirit::type_of::nop_functor() BOOST_PP_INTERCEPT) ); \
- }
-// RP_GEN_OPAQUE
-//
-// non-templated version for opaque rule parsers.
-# define BOOST_SPIRIT_RP_GEN_OPAQUE(name,name_t,np,pars) \
- inline name_t name( BOOST_SPIRIT_RP_EMIT(PM_OPAQUE_GEN_PARAMS,pars,p)) \
- { return name_t (BOOST_PP_ENUM_PARAMS(np,p)); }
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_GLOB_VAR
-//
-// Global variable -- used instead of the generator function if there are no
-// parameters
-# define BOOST_SPIRIT_RP_GLOB_VAR(name,name_t,np,na) \
- static name_t <void> const name = name_t <void>(BOOST_PP_ENUM_PARAMS(na, \
- ::boost::spirit::type_of::nop_functor() BOOST_PP_INTERCEPT) );
-
-// RP_GLOB_OPAQUE
-//
-// non-templated version for opaque rule parsers.
-# define BOOST_SPIRIT_RP_GLOB_OPAQUE(name,name_t,np,pars) \
- static name_t const name = name_t () ;
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// PP_EMIT operations (fragment emittion based on array input)
-
-// - - Namespace handling
-
-// NS_OPEN
-# define BOOST_SPIRIT_RP__NS_OPEN(r,data,i,elem) \
- namespace BOOST_SPIRIT_RP_OPTIONAL(elem) {
-
-// NS_QUALIFY
-# define BOOST_SPIRIT_RP__NS_QUALIFY(r,data,i,elem) \
- BOOST_SPIRIT_RP_OPTIONAL(elem ::)
-
-// NS_CLOSE
-# define BOOST_SPIRIT_RP__NS_CLOSE(r,data,i,elem) }
-
-// - - Parameter handling
-
-// PM_STATIC
-# define BOOST_SPIRIT_RP__PM_STATIC(r,data,i,elem) \
- static typename ::boost::call_traits< data ## i >::reference elem ;
-
-// PM_CTOR_PARAMS
-# define BOOST_SPIRIT_RP__PM_CTOR_PARAMS(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) \
- typename ::boost::call_traits< data ## i >::param_type elem
-
-// PM_CTOR_ARGS
-# define BOOST_SPIRIT_RP__PM_CTOR_ARGS(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) elem
-
-// PM_CTOR_INIT_LIST
-# define BOOST_SPIRIT_RP__PM_CTOR_INIT_LIST(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) __p ## i ( elem )
-
-// PM_CTOR_COPY_INIT_LIST
-# define BOOST_SPIRIT_RP__PM_CTOR_COPY_INIT_LIST(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) __p ## i ( that. __p ## i )
-
-
-// PM_TEMPLATE_PARAMS
-# define BOOST_SPIRIT_RP__PM_TEMPLATE_PARAMS(r,data,i,elem) , data ## i
-
-// - strictly typed parameters of the opaque rule_parser
-
-// PM_OPAQUE_STATIC
-# define BOOST_SPIRIT_RP__PM_OPAQUE_STATIC(r,data,i,elem) \
- static ::boost::call_traits< \
- BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(2,0,elem)) \
- >::reference BOOST_PP_TUPLE_ELEM(2,1,elem) ;
-
-// PM_OPAQUE_CTOR_PARAMS
-# define BOOST_SPIRIT_RP__PM_OPAQUE_CTOR_PARAMS(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) ::boost::call_traits< \
- BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(2,0,elem)) \
- >::param_type BOOST_PP_TUPLE_ELEM(2,1,elem)
-
-// PM_OPAQUE_GEN_PARAMS
-# define BOOST_SPIRIT_RP__PM_OPAQUE_GEN_PARAMS(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) ::boost::call_traits< \
- BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(2,0,elem)) \
- >::param_type data ## i
-
-// - - Member variable handling
-
-// MV_NONSTATIC
-# define BOOST_SPIRIT_RP__MV_NONSTATIC(r,data,i,elem) \
- data() BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(3,0,elem)) \
- BOOST_PP_TUPLE_ELEM(3,1,elem) ;
-
-// MV_STATIC
-# define BOOST_SPIRIT_RP__MV_STATIC(r,data,i,elem) \
- static data() ::boost::call_traits< \
- data() BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(3,0,elem)) \
- >::reference BOOST_PP_TUPLE_ELEM(3,1,elem) ;
-
-// MV_CTOR_INIT_LIST
-# define BOOST_SPIRIT_RP__MV_CTOR_INIT_LIST(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) \
- BOOST_PP_TUPLE_ELEM(3,1,elem) BOOST_PP_TUPLE_ELEM(3,2,elem)
-
-// MV_CTOR_COPY_INIT_LIST
-# define BOOST_SPIRIT_RP__MV_CTOR_COPY_INIT_LIST(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) \
- BOOST_PP_TUPLE_ELEM(3,1,elem) (data . BOOST_PP_TUPLE_ELEM(3,1,elem))
-
-// - - Action placeholder handling
-
-// AP_STATIC
-# define BOOST_SPIRIT_RP__AP_STATIC(r,data,i,elem) static __A ## i & elem ;
-
-// AP_CTOR_PARAMS
-# define BOOST_SPIRIT_RP__AP_CTOR_PARAMS(r,data,i,elem) \
- BOOST_SPIRIT_RP_COMMA_IF_OR(data,i) \
- typename ::boost::call_traits< __A ## i >::param_type elem
-
-// AP_CTOR_ARGS
-# define BOOST_SPIRIT_RP__AP_CTOR_ARGS(r,data,i,elem) \
- BOOST_SPIRIT_RP_COMMA_IF_OR(data,i) elem
-
-// AP_CTOR_INIT_LIST
-# define BOOST_SPIRIT_RP__AP_CTOR_INIT_LIST(r,data,i,elem) \
- BOOST_SPIRIT_RP_COMMA_IF_OR(data,i) __a ## i ( elem )
-
-// AP_CTOR_COPY_INIT_LIST
-# define BOOST_SPIRIT_RP__AP_CTOR_COPY_INIT_LIST(r,data,i,elem) \
- BOOST_SPIRIT_RP_COMMA_IF_OR(data,i) __a ## i ( that. __a ## i )
-
-// AP_TEMPLATE_PARAMS
-# define BOOST_SPIRIT_RP__AP_TEMPLATE_PARAMS(r,data,i,elem) \
- , BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,0,data),i) \
- BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2,1,data), \
- = ::boost::spirit::type_of::nop_functor)
-
-// AP_REBOUND_ARGS
-# define BOOST_SPIRIT_RP__AP_REBOUND_ARGS(r,data,i,elem) \
- BOOST_PP_COMMA_IF(i) \
- ::boost::spirit::type_of::get_placeholdee< __action_placeholder:: elem > \
- ( __a ## i , data )
-
-// AP_REBOUND_TPL_ARGS
-# define BOOST_SPIRIT_RP__AP_REBOUND_TPL_ARGS(r,data,i,elem) \
- , typename ::boost::spirit::type_of::placeholdee< \
- __action_placeholder:: elem , __A ## i, data >::type
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// PP_EMIT
-//
-// Performs one of the operations in the above section on an optional array.
-//
-# define BOOST_SPIRIT_RP_EMIT(op, array, data) \
- BOOST_SPIRIT_RP_ARRAY_FOR_EACH_I(BOOST_SPIRIT_RP__ ## op,data,array)
-// --- --- - - --- - - --- - - - - --- - - - - - - - - - - - - - - - - - - - - -
-// RP_ARRAY_FOR_EACH_I
-//
-// Iterates an optional array. That is you can pass e.g.'-' or 'none' to denote
-// emptiness.
-# define BOOST_SPIRIT_RP_ARRAY_FOR_EACH_I(macro,data,optional_array) \
- BOOST_PP_IIF(BOOST_PP_IS_BINARY(optional_array), \
- BOOST_SPIRIT_RP_ARRAY_FOR_EACH_I_IMPL, \
- BOOST_PP_TUPLE_EAT(3))(macro,data,optional_array)
-
-// RP_ARRAY_FOR_EACH_I_IMPL
-# define BOOST_SPIRIT_RP_ARRAY_FOR_EACH_I_IMPL(macro,data,array) \
- BOOST_SPIRIT_RP_IF(BOOST_PP_ARRAY_SIZE(array),PP_SEQ_FOR_EACH_I,3) \
- (macro,data, BOOST_SPIRIT_RP_IF(BOOST_PP_ARRAY_SIZE(array), \
- PP_TUPLE_TO_SEQ,2) array)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_ARRAY_SIZE
-//
-// Expands to the size of an "optional array".
-//
-// Examples:
-//
-// BOOST_SPIRIT_RP_ARRAY_SIZE( (2,(a,b)) ) // 2
-// BOOST_SPIRIT_RP_ARRAY_SIZE( (0,()) ) // 0
-// BOOST_SPIRIT_RP_ARRAY_SIZE( none ) // 0
-// BOOST_SPIRIT_RP_ARRAY_SIZE( - ) // 0
-//
-# define BOOST_SPIRIT_RP_ARRAY_SIZE(optional_array) \
- BOOST_PP_IIF(BOOST_PP_IS_BINARY(optional_array), \
- BOOST_PP_ARRAY_SIZE, 0 BOOST_PP_TUPLE_EAT(1))(optional_array)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_OPTIONAL
-//
-// Expands to nothing if the argument is parenthesized.
-//
-// Examples:
-//
-// BOOST_SPIRIT_RP_OPTIONAL( foobar ) // foobar
-// BOOST_SPIRIT_RP_OPTIONAL( (none) ) // evaluates to nothing
-//
-# define BOOST_SPIRIT_RP_OPTIONAL(elem) \
- BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_PP_IS_UNARY(elem)),elem)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_COMMA_IF_OR
-//
-// Expands to nothing if both arguments are zero, otherwise expands to a comma.
-//
-# define BOOST_SPIRIT_RP_COMMA_IF_OR(a,b) \
- BOOST_PP_IIF(BOOST_PP_OR(a,b),BOOST_PP_COMMA,BOOST_PP_EMPTY)()
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RP_IF
-//
-// BOOST_SPIRIT_RP_IF(cond,name,arity)
-//
-// is equivalent to:
-//
-// BOOST_PP_IF(cond,BOOST_name,BOOST_PP_TUPLE_EAT(arity))
-//
-# define BOOST_SPIRIT_RP_IF(cond,name,arity) \
- BOOST_PP_IF(cond,BOOST_ ## name,BOOST_PP_TUPLE_EAT(arity))
-
-//------------------------------------------------------------------------------
-// Wrapper and gernator function to embed a parser by reference
-//------------------------------------------------------------------------------
-
-namespace boost { namespace spirit {
-
- // Wrapper to embed a parser by reference
-
- template<class P> class parser_reference
- : public parser< parser_reference<P> >
- {
- P const & ref_that;
- public:
- parser_reference(P & that)
- // we allow implicit conversion but forbid temporaries.
- : ref_that(that)
- { }
-
- typedef parser_reference<P> self_t;
- typedef self_t const & embed_t;
- typedef typename P::parser_category_t parser_category_t;
-
- template<typename ScannerT> struct result
- { typedef typename P::BOOST_NESTED_TEMPLATE result<ScannerT>::type type; };
-
- template<typename ScannerT>
- typename result<ScannerT>::type
- parse(ScannerT const & scan) const
- { return this->ref_that.parse(scan); }
- };
-
- template<class P> parser_reference<P>
- embed_by_reference(::boost::spirit::parser<P> & p)
- { return p; }
-
-} } // namespace ::boost::spirit
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::parser_reference, 1)
-
-//------------------------------------------------------------------------------
-// Expression templates for action placeholders.
-//------------------------------------------------------------------------------
-
-namespace boost { namespace spirit { namespace type_of {
-
- // No-operation functor
-
- struct nop_functor
- {
- template<typename T>
- bool operator()(T const &) const
- { return false; }
- template<typename T, typename U>
- bool operator()(T const &, U const &) const
- { return false; }
-
- typedef bool result_type;
- };
-
- // Composite action
-
- template<typename Action1, typename Action2>
- class composite_action
- {
- Action1 fnc_a1;
- Action2 fnc_a2;
- public:
- composite_action(Action1 const & a1, Action2 const & a2)
- : fnc_a1(a1), fnc_a2(a2)
- { }
-
- template<typename T>
- void operator()(T const & inp) const
- { fnc_a1(inp); fnc_a2(inp); }
-
- template<typename T, typename U>
- void operator()(T const & inp1, U const inp2) const
- { fnc_a1(inp1, inp2); fnc_a2(inp1, inp2); }
- };
-
- // Action concatenation (and optimize away nop_functorS)
-
- template<typename Action1, typename Action2>
- struct action_concatenator
- {
- typedef composite_action<Action1,Action2> type;
-
- static type concatenate(Action1 const & a1, Action2 const & a2)
- { return composite_action<Action1,Action2>(a1,a2); }
- };
- template<typename Action> struct action_concatenator<nop_functor, Action>
- {
- typedef Action type;
-
- static type concatenate(nop_functor const &, Action const & a)
- { return a; }
- };
- template<typename Action> struct action_concatenator<Action, nop_functor>
- {
- typedef Action type;
-
- static type concatenate(Action const & a, nop_functor const &)
- { return a; }
- };
- template<> struct action_concatenator<nop_functor, nop_functor>
- {
- typedef nop_functor type;
-
- static type concatenate(nop_functor const &, nop_functor const &)
- { return nop_functor(); }
- };
-
- template<typename Action1, typename Action2>
- typename action_concatenator<Action1,Action2>::type
- concatenate_actions(Action1 const & a1, Action2 const & a2)
- {
- return action_concatenator<Action1,Action2>::concatenate(a1,a2);
- }
-
- // Action chains
-
- enum action_chain_mode { replace, append };
-
- template<class Placeholder, action_chain_mode Mode, typename Action>
- class action_chain
- {
- Action fnc_action;
- public:
- action_chain(Action const & a)
- : fnc_action(a)
- { }
-
- typedef Action action_type;
-
- Action const & action() const { return fnc_action; }
- };
-
- // This operator adds actions to an action chain definition
- template<class PH, action_chain_mode M, typename A1, typename A2>
- action_chain<PH, M, typename action_concatenator<A1,A2>::type>
- operator, (action_chain<PH,M,A1> const & chain, A2 const & a)
- {
- return action_chain<PH,M,typename action_concatenator<A1,A2>::type>
- ( concatenate_actions(chain.action(), a) );
- }
-
- // Expression template for mutiple action chain assignments
- template<class ChainOrChains, class LastChain>
- class action_chains
- {
- ChainOrChains obj_head;
- LastChain obj_tail;
- public:
- action_chains(ChainOrChains const & head, LastChain const & tail)
- : obj_head(head), obj_tail(tail)
- { }
-
- typedef ChainOrChains head_type;
- typedef LastChain tail_type;
-
- head_type const & head() const { return obj_head; }
- tail_type const & tail() const { return obj_tail; }
- };
-
- // Action chain concatenation
- template<class Head, class Tail>
- action_chains<Head,Tail> make_chain(Head const & h, Tail const & t)
- { return action_chains<Head,Tail>(h,t); }
-
- template<class PH1, action_chain_mode M1, typename A1,
- class PH2, action_chain_mode M2, typename A2>
- action_chains< action_chain<PH1,M1,A1>, action_chain<PH2,M2,A2> >
- operator, (action_chain<PH1,M1,A1> const & h,
- action_chain<PH2,M2,A2> const & t)
- { return make_chain(h,t); }
-
- template<class Head, class Tail,class PH, action_chain_mode M, typename A>
- action_chains< action_chains<Head,Tail>, action_chain<PH,M,A> >
- operator, (action_chains<Head,Tail> const & h, action_chain<PH,M,A> const & t)
- { return make_chain(h,t); }
-
-
- // Extract the (maybe composite) action associated with an action
- // placeholders from the chains with a fold algorithm.
- template<class Placeholder, typename StartAction, class NewChainOrChains>
- struct placeholdee
- {
- typedef StartAction type;
-
- static type get(StartAction const & a, NewChainOrChains const &)
- { return a; }
- };
-
- template<class Placeholder, // <-- non-deduced
- typename StartAction, class NewChainOrChains>
- typename placeholdee<Placeholder,StartAction,NewChainOrChains>::type
- get_placeholdee(StartAction const & a, NewChainOrChains const & c)
- { return placeholdee<Placeholder,StartAction,NewChainOrChains>::get(a,c); }
-
- template<class Placeholder, typename StartAction, class Head, class Tail>
- struct placeholdee
- < Placeholder, StartAction, action_chains<Head,Tail> >
- {
- typedef typename placeholdee<Placeholder,
- typename placeholdee<Placeholder,StartAction,Head>::type, Tail >::type
- type;
-
- static type get(StartAction const & a, action_chains<Head,Tail> const & c)
- {
- return get_placeholdee<Placeholder>(
- get_placeholdee<Placeholder>(a,c.head()), c.tail() );
- }
- };
-
- template<class Placeholder, typename StartAction, typename A>
- struct placeholdee
- < Placeholder, StartAction, action_chain<Placeholder,replace,A> >
- {
- typedef A type;
-
- static type get(StartAction const &,
- action_chain<Placeholder,replace,A> const & c)
- { return c.action(); }
- };
-
- template<class Placeholder, typename StartAction, typename A>
- struct placeholdee
- < Placeholder, StartAction, action_chain<Placeholder,append,A> >
- {
- typedef typename action_concatenator<StartAction,A>::type type;
-
- static type get(StartAction const & a,
- action_chain<Placeholder,append,A> const & c)
- { return concatenate_actions(a,c.action()); }
- };
-
-} } } // namespace ::boost::spirit::type_of
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::type_of::nop_functor)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::type_of::composite_action,2)
-
-//------------------------------------------------------------------------------
-// Misc.utilities
-//------------------------------------------------------------------------------
-
-namespace boost { namespace spirit { namespace type_of {
-
- // Utility function to create a dependency to a template argument.
-
- template<typename T, typename X>
- X const & depend_on_type(X const & x)
- { return x; }
-
- // Utility to allow use parenthesized type expressions with commas inside
- // as a type within macros. Thanks to Dave Abrahams for telling me this nice
- // trick.
-
- #define BOOST_SPIRIT_RP_TYPE(x) \
- ::boost::spirit::type_of::remove_special_fptr \
- < ::boost::spirit::type_of::special_result & (*) x >::type
-
- struct special_result;
-
- template<typename T> struct remove_special_fptr { };
- template<typename T> struct remove_special_fptr< special_result & (*)(T) >
- { typedef T type; };
-
-} } } // namespace ::boost::spirit::type_of
-
-//------------------------------------------------------------------------------
-#endif
-//------------------------------------------------------------------------------
+/*=============================================================================
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE_PARSER
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE_PARSER
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_rule_parser.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_rule_parser.hpp"
+#endif
+
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_rule_parser.hpp>
 
+#endif

Modified: branches/proto/v4/boost/spirit/utility/scoped_lock.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/scoped_lock.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/scoped_lock.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,108 +1,23 @@
 /*=============================================================================
- Copyright (c) 2003 Martin Wille
- http://spirit.sourceforge.net/
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- =============================================================================*/
-#ifndef BOOST_SPIRIT_UTILITY_SCOPED_LOCK_HPP
-#define BOOST_SPIRIT_UTILITY_SCOPED_LOCK_HPP
-
-///////////////////////////////////////////////////////////////////////////////
-#if !defined(BOOST_SPIRIT_COMPOSITE_HPP)
-#include <boost/spirit/core/composite.hpp>
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SCOPED_LOCK
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_SCOPED_LOCK
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_scoped_lock.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_scoped_lock.hpp"
 #endif
 
-///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit {
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scoped_lock_parser class
- //
- // implements locking of a mutex during execution of
- // the parse method of an embedded parser
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename MutexT, typename ParserT>
- struct scoped_lock_parser
- : public unary< ParserT, parser< scoped_lock_parser<MutexT, ParserT> > >
- {
- typedef scoped_lock_parser<MutexT, ParserT> self_t;
- typedef MutexT mutex_t;
- typedef ParserT parser_t;
-
- template <typename ScannerT>
- struct result
- {
- typedef typename parser_result<parser_t, ScannerT>::type type;
- };
-
- scoped_lock_parser(mutex_t &m, parser_t const &p)
- : unary< ParserT, parser< scoped_lock_parser<MutexT, ParserT> > >(p)
- , mutex(m)
- {}
-
-
- template <typename ScannerT>
- typename parser_result<self_t, ScannerT>::type
- parse(ScannerT const &scan) const
- {
- typedef typename mutex_t::scoped_lock scoped_lock_t;
- scoped_lock_t lock(mutex);
- return this->subject().parse(scan);
- }
-
- mutex_t &mutex;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scoped_lock_parser_gen
- //
- // generator for scoped_lock_parser objects
- // operator[] returns scoped_lock_parser according to its argument
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename MutexT>
- struct scoped_lock_parser_gen
- {
- typedef MutexT mutex_t;
- explicit scoped_lock_parser_gen(mutex_t &m) : mutex(m) {}
-
- template<typename ParserT>
- scoped_lock_parser
- <
- MutexT,
- typename as_parser<ParserT>::type
- >
- operator[](ParserT const &p) const
- {
- typedef ::boost::spirit::as_parser<ParserT> as_parser_t;
- typedef typename as_parser_t::type parser_t;
-
- return scoped_lock_parser<mutex_t, parser_t>
- (mutex, as_parser_t::convert(p));
- }
-
- mutex_t &mutex;
- };
-
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // scoped_lock_d parser directive
- //
- // constructs a scoped_lock_parser generator from its argument
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename MutexT>
- scoped_lock_parser_gen<MutexT>
- scoped_lock_d(MutexT &mutex)
- {
- return scoped_lock_parser_gen<MutexT>(mutex);
- }
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_scoped_lock.hpp>
 
-}} // namespace boost::spirit
-#endif // BOOST_SPIRIT_UTILITY_SCOPED_LOCK_HPP
+#endif

Modified: branches/proto/v4/boost/spirit/utility/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/typeof.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,146 +1,23 @@
 /*=============================================================================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(BOOST_SPIRIT_UTILITY_TYPEOF_HPP)
-#define BOOST_SPIRIT_UTILITY_TYPEOF_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
-#include <boost/typeof/typeof.hpp>
-
-#include <boost/spirit/core/typeof.hpp>
-
-#include <boost/spirit/utility/escape_char_fwd.hpp>
-#include <boost/spirit/utility/confix_fwd.hpp>
-#include <boost/spirit/utility/lists_fwd.hpp>
-#include <boost/spirit/utility/distinct_fwd.hpp>
-#include <boost/spirit/utility/grammar_def_fwd.hpp>
-
-namespace boost { namespace spirit {
-
- // chset.hpp
- template<typename CharT> class chset;
-
- // functor_parser.hpp
- template<typename FunctorT> struct functor_parser;
-
- // loops.hpp
- template<class ParserT, typename ExactT> class fixed_loop;
- template<class ParserT, typename MinT, typename MaxT> class finite_loop;
- template<class ParserT, typename MinT> class infinite_loop;
-
- // regex.hpp
- template<typename CharT> struct rxstrlit;
-
- // flush_multi_pass.hpp
- class flush_multi_pass_parser;
-
- // scoped_lock.hpp
- template<class MutexT, class ParserT> struct scoped_lock_parser;
-
-}} // namespace boost::spirit
-
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-
-// chset.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::chset,1)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::chset<char>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::chset<wchar_t>)
-
-
-// escape_char.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::escape_char_parser,(BOOST_TYPEOF_INTEGRAL(unsigned long))(typename))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::escape_char_action,(class)(typename)(BOOST_TYPEOF_INTEGRAL(unsigned long))(typename))
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::escape_char_parser,(BOOST_TYPEOF_INTEGRAL(unsigned long)))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::escape_char_action,(class)(typename)(BOOST_TYPEOF_INTEGRAL(unsigned long)))
-
-
-// functor_parser.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::functor_parser,1)
-
-
-// loops.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::fixed_loop,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::finite_loop,3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::infinite_loop,2)
-
-
-// regex.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::rxstrlit,1)
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::rxstrlit<char>)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::rxstrlit<wchar_t>)
-
-
-// confix.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::confix_parser, 6)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::confix_parser, 5)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::confix_parser, 4)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::confix_parser, 3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::comment_nest_parser, 2)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::is_nested)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::non_nested)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::is_lexeme)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::non_lexeme)
-
-
-// lists.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::list_parser,4)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::list_parser,3)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::list_parser,2)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::no_list_endtoken)
-
-
-// distinct.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::distinct_parser,2)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::distinct_parser,1)
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::dynamic_distinct_parser,1)
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::distinct_parser<>)
-
-
-// flush_multi_pass.hpp
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::spirit::flush_multi_pass_parser)
-
-
-// scoped_lock.hpp
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::scoped_lock_parser,2)
-
-
-// grammar_gen.hpp (has forward header)
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::grammar_def,BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT)
-
-#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 12
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::grammar_def,12)
-#endif
-#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 9
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::grammar_def, 9)
-#endif
-#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 6
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::grammar_def, 6)
-#endif
-#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 3
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::spirit::grammar_def, 3)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
 
-
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
 #endif
+#include <boost/spirit/include/classic_typeof.hpp>
 
-
+#endif

Modified: branches/proto/v4/boost/spirit/version.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/version.hpp (original)
+++ branches/proto/v4/boost/spirit/version.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,31 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
 
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
-#if !defined(SPIRIT_VERSION_HPP)
-#define SPIRIT_VERSION_HPP
+#ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_VERSION
+#define BOOST_SPIRIT_DEPRECATED_INCLUDE_VERSION
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// This checks, whether the used Boost library is at least V1.32.0
-//
-///////////////////////////////////////////////////////////////////////////////
-#include <boost/version.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_version.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/spirit/include/classic_version.hpp"
+#endif
 
-#if BOOST_VERSION < 103200
-#error "Spirit v1.8.x needs at least Boost V1.32.0 to compile successfully."
-#endif
+#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
+#define BOOST_SPIRIT_USE_OLD_NAMESPACE
+#endif
+#include <boost/spirit/include/classic_version.hpp>
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// This is the version of the current Spirit distribution
-//
-///////////////////////////////////////////////////////////////////////////////
-#define SPIRIT_VERSION 0x1806
-#define SPIRIT_PIZZA_VERSION SPIRIT_MEGA_VEGGI // :-)
-
-#endif // defined(SPIRIT_VERSION_HPP)
+#endif

Modified: branches/proto/v4/boost/thread.hpp
==============================================================================
--- branches/proto/v4/boost/thread.hpp (original)
+++ branches/proto/v4/boost/thread.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,5 +1,6 @@
 // Copyright (C) 2001-2003
 // William E. Kempf
+// (C) Copyright 2008 Anthony Williams
 //
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -10,12 +11,15 @@
 #define BOOST_THREAD_WEK01082003_HPP
 
 #include <boost/thread/thread.hpp>
-#include <boost/thread/condition.hpp>
+#include <boost/thread/condition_variable.hpp>
 #include <boost/thread/exceptions.hpp>
 #include <boost/thread/mutex.hpp>
 #include <boost/thread/once.hpp>
 #include <boost/thread/recursive_mutex.hpp>
 #include <boost/thread/tss.hpp>
-#include <boost/thread/xtime.hpp>
+#include <boost/thread/thread_time.hpp>
+#include <boost/thread/locks.hpp>
+#include <boost/thread/shared_mutex.hpp>
+#include <boost/thread/barrier.hpp>
 
 #endif

Modified: branches/proto/v4/boost/thread/locks.hpp
==============================================================================
--- branches/proto/v4/boost/thread/locks.hpp (original)
+++ branches/proto/v4/boost/thread/locks.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -400,13 +400,16 @@
         {
             lock();
         }
- upgrade_lock(Mutex& m_,bool do_lock):
+ upgrade_lock(Mutex& m_,adopt_lock_t):
+ m(&m_),is_locked(true)
+ {}
+ upgrade_lock(Mutex& m_,defer_lock_t):
+ m(&m_),is_locked(false)
+ {}
+ upgrade_lock(Mutex& m_,try_to_lock_t):
             m(&m_),is_locked(false)
         {
- if(do_lock)
- {
- lock();
- }
+ try_lock();
         }
         upgrade_lock(detail::thread_move_t<upgrade_lock<Mutex> > other):
             m(other->m),is_locked(other->is_locked)

Modified: branches/proto/v4/boost/thread/pthread/condition_variable_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/thread/pthread/condition_variable_fwd.hpp (original)
+++ branches/proto/v4/boost/thread/pthread/condition_variable_fwd.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -58,6 +58,12 @@
             return timed_wait(m,get_system_time()+wait_duration,pred);
         }
 
+ typedef pthread_cond_t* native_handle_type;
+ native_handle_type native_handle()
+ {
+ return &cond;
+ }
+
         void notify_one();
         void notify_all();
     };

Modified: branches/proto/v4/boost/thread/pthread/mutex.hpp
==============================================================================
--- branches/proto/v4/boost/thread/pthread/mutex.hpp (original)
+++ branches/proto/v4/boost/thread/pthread/mutex.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -136,7 +136,7 @@
         {
             struct timespec const timeout=detail::get_timespec(abs_time);
             int const res=pthread_mutex_timedlock(&m,&timeout);
- BOOST_ASSERT(!res || res==EBUSY);
+ BOOST_ASSERT(!res || res==ETIMEDOUT);
             return !res;
         }
 #else

Modified: branches/proto/v4/boost/thread/pthread/shared_mutex.hpp
==============================================================================
--- branches/proto/v4/boost/thread/pthread/shared_mutex.hpp (original)
+++ branches/proto/v4/boost/thread/pthread/shared_mutex.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -118,6 +118,12 @@
             }
         }
 
+ template<typename TimeDuration>
+ bool timed_lock_shared(TimeDuration const & relative_time)
+ {
+ return timed_lock_shared(get_system_time()+relative_time);
+ }
+
         void unlock_shared()
         {
             boost::mutex::scoped_lock lock(state_change);
@@ -196,6 +202,12 @@
             }
         }
 
+ template<typename TimeDuration>
+ bool timed_lock(TimeDuration const & relative_time)
+ {
+ return timed_lock(get_system_time()+relative_time);
+ }
+
         bool try_lock()
         {
             boost::mutex::scoped_lock lock(state_change);
@@ -271,6 +283,12 @@
             }
         }
 
+ template<typename TimeDuration>
+ bool timed_lock_upgrade(TimeDuration const & relative_time)
+ {
+ return timed_lock(get_system_time()+relative_time);
+ }
+
         bool try_lock_upgrade()
         {
             boost::mutex::scoped_lock lock(state_change);

Modified: branches/proto/v4/boost/thread/pthread/thread.hpp
==============================================================================
--- branches/proto/v4/boost/thread/pthread/thread.hpp (original)
+++ branches/proto/v4/boost/thread/pthread/thread.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -214,6 +214,9 @@
         static void sleep(const system_time& xt);
         static void yield();
 
+ typedef pthread_t native_handle_type;
+ native_handle_type native_handle();
+
         // extensions
         void interrupt();
         bool interruption_requested() const;

Modified: branches/proto/v4/boost/thread/win32/condition_variable.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/condition_variable.hpp (original)
+++ branches/proto/v4/boost/thread/win32/condition_variable.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -34,6 +34,12 @@
                 list_entry():
                     semaphore(0),count(0),notified(0)
                 {}
+
+ void release(unsigned count_to_release=1)
+ {
+ detail::win32::ReleaseSemaphore(semaphore,count_to_release,0);
+ }
+
             };
 
             BOOST_STATIC_CONSTANT(unsigned,generation_count=3);
@@ -41,6 +47,13 @@
             list_entry generations[generation_count];
             detail::win32::handle wake_sem;
 
+ void wake_waiters(long count_to_wake)
+ {
+ detail::interlocked_write_release(&total_count,total_count-count_to_wake);
+ detail::win32::ReleaseSemaphore(wake_sem,count_to_wake,0);
+ }
+
+
             static bool no_waiters(list_entry const& entry)
             {
                 return entry.count==0;
@@ -51,7 +64,7 @@
                 list_entry* const last_active_entry=std::remove_if(generations,generations+generation_count,no_waiters);
                 if(last_active_entry==generations+generation_count)
                 {
- broadcast_entry(generations[generation_count-1],false);
+ broadcast_entry(generations[generation_count-1]);
                 }
                 else
                 {
@@ -69,15 +82,9 @@
                 generations[0]=list_entry();
             }
 
- void broadcast_entry(list_entry& entry,bool wake)
+ void broadcast_entry(list_entry& entry)
             {
- long const count_to_wake=entry.count;
- detail::interlocked_write_release(&total_count,total_count-count_to_wake);
- if(wake)
- {
- detail::win32::ReleaseSemaphore(wake_sem,count_to_wake,0);
- }
- detail::win32::ReleaseSemaphore(entry.semaphore,count_to_wake,0);
+ entry.release(entry.count);
                 entry.count=0;
                 dispose_entry(entry);
             }
@@ -124,6 +131,7 @@
             void start_wait_loop_first_time(relocker<lock_type>& locker,
                                             detail::win32::handle_manager& local_wake_sem)
             {
+ detail::interlocked_write_release(&total_count,total_count+1);
                 locker.unlock();
                 if(!wake_sem)
                 {
@@ -141,6 +149,15 @@
                     active_generation_count=1;
                 }
             }
+
+ void ensure_generation_present()
+ {
+ if(!generations[0].semaphore)
+ {
+ generations[0].semaphore=detail::win32::create_anonymous_semaphore(0,LONG_MAX);
+ BOOST_ASSERT(generations[0].semaphore);
+ }
+ }
             
             template<typename lock_type>
             void start_wait_loop(relocker<lock_type>& locker,
@@ -148,16 +165,11 @@
                                  detail::win32::handle_manager& sem)
             {
                 boost::mutex::scoped_lock internal_lock(internal_mutex);
- detail::interlocked_write_release(&total_count,total_count+1);
                 if(!local_wake_sem)
                 {
                     start_wait_loop_first_time(locker,local_wake_sem);
                 }
- if(!generations[0].semaphore)
- {
- generations[0].semaphore=detail::win32::create_anonymous_semaphore(0,LONG_MAX);
- BOOST_ASSERT(generations[0].semaphore);
- }
+ ensure_generation_present();
                 ++generations[0].count;
                 sem=detail::win32::duplicate_handle(generations[0].semaphore);
             }
@@ -222,15 +234,22 @@
                 if(detail::interlocked_read_acquire(&total_count))
                 {
                     boost::mutex::scoped_lock internal_lock(internal_mutex);
- detail::win32::ReleaseSemaphore(wake_sem,1,0);
+ if(!total_count)
+ {
+ return;
+ }
+ wake_waiters(1);
+
+ unsigned waiting_count=0;
+
                     for(unsigned generation=active_generation_count;generation!=0;--generation)
                     {
                         list_entry& entry=generations[generation-1];
+ waiting_count+=entry.count;
                         if(entry.count)
                         {
- detail::interlocked_write_release(&total_count,total_count-1);
                             entry.notified=true;
- detail::win32::ReleaseSemaphore(entry.semaphore,1,0);
+ entry.release();
                             if(!--entry.count)
                             {
                                 dispose_entry(entry);
@@ -241,6 +260,12 @@
                             }
                         }
                     }
+ if(waiting_count<=total_count)
+ {
+ shift_generations_down();
+ ensure_generation_present();
+ generations[0].release();
+ }
                 }
             }
         
@@ -249,14 +274,23 @@
                 if(detail::interlocked_read_acquire(&total_count))
                 {
                     boost::mutex::scoped_lock internal_lock(internal_mutex);
+ long waiting_count=total_count;
+
+ wake_waiters(total_count);
                     for(unsigned generation=active_generation_count;generation!=0;--generation)
                     {
                         list_entry& entry=generations[generation-1];
                         if(entry.count)
                         {
- broadcast_entry(entry,true);
+ waiting_count-=entry.count;
+ broadcast_entry(entry);
                         }
                     }
+ if(waiting_count)
+ {
+ ensure_generation_present();
+ generations[0].release(waiting_count);
+ }
                     active_generation_count=0;
                 }
             }
@@ -265,9 +299,18 @@
     }
 
     class condition_variable:
- public detail::basic_condition_variable
+ private detail::basic_condition_variable
     {
+ private:
+ condition_variable(condition_variable&);
+ void operator=(condition_variable&);
     public:
+ condition_variable()
+ {}
+
+ using detail::basic_condition_variable::notify_one;
+ using detail::basic_condition_variable::notify_all;
+
         void wait(unique_lock<mutex>& m)
         {
             do_wait(m,detail::timeout::sentinel());
@@ -313,9 +356,18 @@
     };
     
     class condition_variable_any:
- public detail::basic_condition_variable
+ private detail::basic_condition_variable
     {
+ private:
+ condition_variable_any(condition_variable_any&);
+ void operator=(condition_variable_any&);
     public:
+ condition_variable_any()
+ {}
+
+ using detail::basic_condition_variable::notify_one;
+ using detail::basic_condition_variable::notify_all;
+
         template<typename lock_type>
         void wait(lock_type& m)
         {

Modified: branches/proto/v4/boost/thread/win32/shared_mutex.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/shared_mutex.hpp (original)
+++ branches/proto/v4/boost/thread/win32/shared_mutex.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -120,6 +120,12 @@
             BOOST_VERIFY(timed_lock_shared(::boost::detail::get_system_time_sentinel()));
         }
 
+ template<typename TimeDuration>
+ bool timed_lock_shared(TimeDuration const & relative_time)
+ {
+ return timed_lock_shared(get_system_time()+relative_time);
+ }
+
         bool timed_lock_shared(boost::system_time const& wait_until)
         {
 #ifdef BOOST_MSVC
@@ -269,6 +275,12 @@
             BOOST_VERIFY(timed_lock(::boost::detail::get_system_time_sentinel()));
         }
 
+ template<typename TimeDuration>
+ bool timed_lock(TimeDuration const & relative_time)
+ {
+ return timed_lock(get_system_time()+relative_time);
+ }
+
         bool timed_lock(boost::system_time const& wait_until)
         {
 #ifdef BOOST_MSVC

Modified: branches/proto/v4/boost/type_traits/type_with_alignment.hpp
==============================================================================
--- branches/proto/v4/boost/type_traits/type_with_alignment.hpp (original)
+++ branches/proto/v4/boost/type_traits/type_with_alignment.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -213,7 +213,8 @@
 }
 
 template <std::size_t Align>
-class type_with_alignment : public detail::type_with_alignment_imp<Align>
+class type_with_alignment
+ : public ::boost::detail::type_with_alignment_imp<Align>
 {
 };
 

Modified: branches/proto/v4/boost/weak_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/weak_ptr.hpp (original)
+++ branches/proto/v4/boost/weak_ptr.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -93,31 +93,7 @@
 
     shared_ptr<T> lock() const // never throws
     {
-#if defined(BOOST_HAS_THREADS)
-
- // optimization: avoid throw overhead
- if(expired())
- {
- return shared_ptr<element_type>();
- }
-
- try
- {
- return shared_ptr<element_type>(*this);
- }
- catch(bad_weak_ptr const &)
- {
- // Q: how can we get here?
- // A: another thread may have invalidated r after the use_count test above.
- return shared_ptr<element_type>();
- }
-
-#else
-
- // optimization: avoid try/catch overhead when single threaded
- return expired()? shared_ptr<element_type>(): shared_ptr<element_type>(*this);
-
-#endif
+ return shared_ptr<element_type>( *this, boost::detail::sp_nothrow_tag() );
     }
 
     long use_count() const // never throws

Deleted: branches/proto/v4/libs/array/array0.cpp
==============================================================================
--- branches/proto/v4/libs/array/array0.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,107 +0,0 @@
-/* tests for using class array<> specialization for size 0
- * (C) Copyright Alisdair Meredith 2006.
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- */
-
-#include <string>
-#include <iostream>
-#include <boost/array.hpp>
-
-namespace {
-unsigned int failed_tests = 0;
-
-void fail_test( const char * reason ) {
- ++failed_tests;
- std::cerr << "Test failure " << failed_tests << ": " << reason << std::endl;
-}
-
-template< class T >
-void BadValue( const T & )
-{
- fail_test( "Unexpected value" );
-}
-
-template< class T >
-void RunTests()
-{
- typedef boost::array< T, 0 > test_type;
-
- // Test value and aggegrate initialization
- test_type test_case = {};
- const boost::array< T, 0 > const_test_case = test_type();
-
- test_case.assign( T() );
-
- // front/back and operator[] must compile, but calling them is undefined
- // Likewise, all tests below should evaluate to false, avoiding undefined behaviour
- if( !test_case.empty() ) {
- BadValue( test_case.front() );
- }
-
- if( !const_test_case.empty() ) {
- BadValue( const_test_case.back() );
- }
-
- if( test_case.size() > 0 ) {
- BadValue( test_case[ 0 ] );
- }
-
- if( const_test_case.max_size() > 0 ) {
- BadValue( const_test_case[ 0 ] );
- }
-
- // Assert requirements of TR1 6.2.2.4
- if( test_case.begin() != test_case.end() ) {
- fail_test( "Not an empty range" );
- }
- if( const_test_case.begin() != const_test_case.end() ) {
- fail_test( "Not an empty range" );
- }
-
- if( test_case.begin() == const_test_case.begin() ) {
- fail_test( "iterators for different containers are not distinct" );
- }
-
- if( test_case.data() == const_test_case.data() ) {
- // Value of data is unspecified in TR1, so no requirement this test pass or fail
- // However, it must compile!
- }
-
-
- // Check can safely use all iterator types with std algorithms
- std::for_each( test_case.begin(), test_case.end(), BadValue< T > );
- std::for_each( test_case.rbegin(), test_case.rend(), BadValue< T > );
- std::for_each( const_test_case.begin(), const_test_case.end(), BadValue< T > );
- std::for_each( const_test_case.rbegin(), const_test_case.rend(), BadValue< T > );
-
- // Check swap is well formed
- std::swap( test_case, test_case );
-
- // Check assigment operator and overloads are well formed
- test_case = const_test_case;
-
- // Confirm at() throws the std lib defined exception
- try {
- BadValue( test_case.at( 0 ) );
- } catch ( const std::out_of_range & ) {
- }
-
- try {
- BadValue( const_test_case.at( 0 ) );
- } catch ( const std::out_of_range & ) {
- }
-}
-
-}
-
-int main()
-{
- RunTests< bool >();
- RunTests< void * >();
- RunTests< long double >();
- RunTests< std::string >();
- return failed_tests;
-}
-

Deleted: branches/proto/v4/libs/array/array1.cpp
==============================================================================
--- branches/proto/v4/libs/array/array1.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,58 +0,0 @@
-/* simple example for using class array<>
- *
- * (C) Copyright Nicolai M. Josuttis 2001.
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * Changelog:
- * 20 Jan 2001 - Removed boolalpha use since stock GCC doesn't support it
- * (David Abrahams)
- */
-
-#include <iostream>
-#include <boost/array.hpp>
-
-int main()
-{
- // define special type name
- typedef boost::array<float,6> Array;
-
- // create and initialize an array
- Array a = { { 42 } };
-
- // access elements
- for (unsigned i=1; i<a.size(); ++i) {
- a[i] = a[i-1]+1;
- }
-
- // use some common STL container operations
- std::cout << "size: " << a.size() << std::endl;
- std::cout << "empty: " << (a.empty() ? "true" : "false") << std::endl;
- std::cout << "max_size: " << a.max_size() << std::endl;
- std::cout << "front: " << a.front() << std::endl;
- std::cout << "back: " << a.back() << std::endl;
- std::cout << "elems: ";
-
- // iterate through all elements
- for (Array::const_iterator pos=a.begin(); pos<a.end(); ++pos) {
- std::cout << *pos << ' ';
- }
- std::cout << std::endl;
-
- // check copy constructor and assignment operator
- Array b(a);
- Array c;
- c = a;
- if (a==b && a==c) {
- std::cout << "copy construction and copy assignment are OK"
- << std::endl;
- }
- else {
- std::cout << "copy construction and copy assignment FAILED"
- << std::endl;
- }
-
- return 0; // makes Visual-C++ compiler happy
-}
-

Deleted: branches/proto/v4/libs/array/array2.cpp
==============================================================================
--- branches/proto/v4/libs/array/array2.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,40 +0,0 @@
-/* example for using class array<>
- * (C) Copyright Nicolai M. Josuttis 2001.
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- */
-
-#include <algorithm>
-#include <functional>
-#include <boost/array.hpp>
-#include "print.hpp"
-using namespace std;
-using namespace boost;
-
-int main()
-{
- // create and initialize array
- array<int,10> a = { { 1, 2, 3, 4, 5 } };
-
- print_elements(a);
-
- // modify elements directly
- for (unsigned i=0; i<a.size(); ++i) {
- ++a[i];
- }
- print_elements(a);
-
- // change order using an STL algorithm
- reverse(a.begin(),a.end());
- print_elements(a);
-
- // negate elements using STL framework
- transform(a.begin(),a.end(), // source
- a.begin(), // destination
- negate<int>()); // operation
- print_elements(a);
-
- return 0; // makes Visual-C++ compiler happy
-}
-

Deleted: branches/proto/v4/libs/array/array3.cpp
==============================================================================
--- branches/proto/v4/libs/array/array3.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,55 +0,0 @@
-/* example for using class array<>
- * (C) Copyright Nicolai M. Josuttis 2001.
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- */
-
-#include <string>
-#include <iostream>
-#include <boost/array.hpp>
-
-template <class T>
-void print_elements (const T& x);
-
-int main()
-{
- // create array of four seasons
- boost::array<std::string,4> seasons = {
- { "spring", "summer", "autumn", "winter" }
- };
-
- // copy and change order
- boost::array<std::string,4> seasons_orig = seasons;
- for (unsigned i=seasons.size()-1; i>0; --i) {
- std::swap(seasons.at(i),seasons.at((i+1)%seasons.size()));
- }
-
- std::cout << "one way: ";
- print_elements(seasons);
-
- // try swap()
- std::cout << "other way: ";
- std::swap(seasons,seasons_orig);
- print_elements(seasons);
-
- // try reverse iterators
- std::cout << "reverse: ";
- for (boost::array<std::string,4>::reverse_iterator pos
- =seasons.rbegin(); pos<seasons.rend(); ++pos) {
- std::cout << " " << *pos;
- }
- std::cout << std::endl;
-
- return 0; // makes Visual-C++ compiler happy
-}
-
-template <class T>
-void print_elements (const T& x)
-{
- for (unsigned i=0; i<x.size(); ++i) {
- std::cout << " " << x[i];
- }
- std::cout << std::endl;
-}
-

Deleted: branches/proto/v4/libs/array/array4.cpp
==============================================================================
--- branches/proto/v4/libs/array/array4.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,43 +0,0 @@
-/* example for using class array<>
- * (C) Copyright Nicolai M. Josuttis 2001.
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- */
-
-#include <algorithm>
-#include <functional>
-#include <string>
-#include <iostream>
-#include <boost/array.hpp>
-
-int main()
-{
- // array of arrays of seasons
- boost::array<boost::array<std::string,4>,2> seasons_i18n = {
- { { { "spring", "summer", "autumn", "winter", } },
- { { "Fruehling", "Sommer", "Herbst", "Winter" } }
- }
- };
-
- // for any array of seasons print seasons
- for (unsigned i=0; i<seasons_i18n.size(); ++i) {
- boost::array<std::string,4> seasons = seasons_i18n[i];
- for (unsigned j=0; j<seasons.size(); ++j) {
- std::cout << seasons[j] << " ";
- }
- std::cout << std::endl;
- }
-
- // print first element of first array
- std::cout << "first element of first array: "
- << seasons_i18n[0][0] << std::endl;
-
- // print last element of last array
- std::cout << "last element of last array: "
- << seasons_i18n[seasons_i18n.size()-1][seasons_i18n[0].size()-1]
- << std::endl;
-
- return 0; // makes Visual-C++ compiler happy
-}
-

Deleted: branches/proto/v4/libs/array/array5.cpp
==============================================================================
--- branches/proto/v4/libs/array/array5.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,72 +0,0 @@
-/* simple example for using class array<>
- * (C) Copyright Nicolai M. Josuttis 2001.
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- */
-
-#include <iostream>
-#include <boost/array.hpp>
-
-template <typename T>
-void test_static_size (const T& cont)
-{
- int tmp[T::static_size];
- for (unsigned i=0; i<T::static_size; ++i) {
- tmp[i] = int(cont[i]);
- }
- for (unsigned j=0; j<T::static_size; ++j) {
- std::cout << tmp[j] << ' ';
- }
- std::cout << std::endl;
-}
-
-int main()
-{
- // define special type name
- typedef boost::array<float,6> Array;
-
- // create and initialize an array
- const Array a = { { 42.42 } };
-
- // use some common STL container operations
- std::cout << "static_size: " << a.size() << std::endl;
- std::cout << "size: " << a.size() << std::endl;
- // Can't use std::boolalpha because it isn't portable
- std::cout << "empty: " << (a.empty()? "true" : "false") << std::endl;
- std::cout << "max_size: " << a.max_size() << std::endl;
- std::cout << "front: " << a.front() << std::endl;
- std::cout << "back: " << a.back() << std::endl;
- std::cout << "[0]: " << a[0] << std::endl;
- std::cout << "elems: ";
-
- // iterate through all elements
- for (Array::const_iterator pos=a.begin(); pos<a.end(); ++pos) {
- std::cout << *pos << ' ';
- }
- std::cout << std::endl;
- test_static_size(a);
-
- // check copy constructor and assignment operator
- Array b(a);
- Array c;
- c = a;
- if (a==b && a==c) {
- std::cout << "copy construction and copy assignment are OK"
- << std::endl;
- }
- else {
- std::cout << "copy construction and copy assignment are BROKEN"
- << std::endl;
- }
-
- typedef boost::array<double,6> DArray;
- typedef boost::array<int,6> IArray;
- IArray ia = { { 1, 2, 3, 4, 5, 6 } } ; // extra braces silence GCC warning
- DArray da;
- da = ia;
- da.assign(42);
-
- return 0; // makes Visual-C++ compiler happy
-}
-

Deleted: branches/proto/v4/libs/array/print.hpp
==============================================================================
--- branches/proto/v4/libs/array/print.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,27 +0,0 @@
-/* The following code example is taken from the book
- * "The C++ Standard Library - A Tutorial and Reference"
- * by Nicolai M. Josuttis, Addison-Wesley, 1999
- *
- * (C) Copyright Nicolai M. Josuttis 1999.
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- */
-#include <iostream>
-
-/* print_elements()
- * - prints optional C-string optcstr followed by
- * - all elements of the collection coll
- * - separated by spaces
- */
-template <class T>
-inline void print_elements (const T& coll, const char* optcstr="")
-{
- typename T::const_iterator pos;
-
- std::cout << optcstr;
- for (pos=coll.begin(); pos!=coll.end(); ++pos) {
- std::cout << *pos << ' ';
- }
- std::cout << std::endl;
-}

Modified: branches/proto/v4/libs/config/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/config/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/config/test/Jamfile.v2 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,7 +1,7 @@
 #
 # Regression test Jamfile for boost configuration setup.
 # *** DO NOT EDIT THIS FILE BY HAND ***
-# This file was automatically generated on Fri Mar 28 16:52:14 2008
+# This file was automatically generated on Wed Apr 09 16:30:14 2008
 # by libs/config/tools/generate.cpp
 # Copyright John Maddock.
 # Use, modification and distribution are subject to the
@@ -11,14 +11,14 @@
 # If you need to alter build preferences then set them in
 # the template defined in options_v2.jam.
 #
-import testing ;
-
 path-constant DOT : . ;
 include $(DOT)/options_v2.jam ;
 
-run config_info.cpp ;
+run config_info.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;
+run config_info.cpp : : : <threading>multi : config_info_threaded ;
 run math_info.cpp : : : <toolset>borland:<runtime-link>static <toolset>borland:<link>static ;
-run config_test.cpp ;
+run config_test.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;
+run config_test.cpp : : : <threading>multi : config_test_threaded ;
 run limits_test.cpp ../../test/build//boost_test_exec_monitor ;
 run abi/abi_test.cpp abi/main.cpp ;
 

Modified: branches/proto/v4/libs/config/test/boost_has_pthreads.ipp
==============================================================================
--- branches/proto/v4/libs/config/test/boost_has_pthreads.ipp (original)
+++ branches/proto/v4/libs/config/test/boost_has_pthreads.ipp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -14,17 +14,36 @@
 
 namespace boost_has_pthreads{
 
+void* thread_proc(void* arg)
+{
+ return arg;
+}
+
 int test()
 {
    pthread_mutex_t mut;
    int result = pthread_mutex_init(&mut, 0);
    if(0 == result)
    {
- pthread_mutex_lock(&mut);
- pthread_mutex_unlock(&mut);
- pthread_mutex_destroy(&mut);
+ result |= pthread_mutex_lock(&mut);
+ result |= pthread_mutex_unlock(&mut);
+ result |= pthread_mutex_trylock(&mut);
+ result |= pthread_mutex_unlock(&mut);
+ result |= pthread_mutex_destroy(&mut);
+ //
+ // Check that we can actually create a thread:
+ //
+ pthread_t t;
+ int r = pthread_create(&t, 0, &thread_proc, 0);
+ result |= r;
+ if(r == 0)
+ {
+ void* arg;
+ r = pthread_join(t, &arg);
+ result |= r;
+ }
    }
- return 0;
+ return result;
 }
 
 }

Modified: branches/proto/v4/libs/config/test/config_info.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/config_info.cpp (original)
+++ branches/proto/v4/libs/config/test/config_info.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1021,6 +1021,9 @@
 
 
 
+
+
+
    // END GENERATED BLOCK
 
    PRINT_MACRO(BOOST_INTEL);

Modified: branches/proto/v4/libs/config/test/config_test.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/config_test.cpp (original)
+++ branches/proto/v4/libs/config/test/config_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,4 +1,4 @@
-// This file was automatically generated on Fri Mar 28 16:52:14 2008
+// This file was automatically generated on Wed Apr 09 16:30:14 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the

Modified: branches/proto/v4/libs/config/test/has_tr1_regex_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_regex_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_regex_fail.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,15 +1,18 @@
-// This file was automatically generated on Sat Apr 02 11:49:12 2005
+// This file was automatically generated on Wed Apr 09 16:30:13 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the
 // Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-// See http://www.boost.org/libs/config for the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
 
-// Test file for macro BOOST_HAS_TR1_ARRAY
+
+// Test file for macro BOOST_HAS_TR1_REGEX
 // This file should not compile, if it does then
-// BOOST_HAS_TR1_ARRAY should be defined.
+// BOOST_HAS_TR1_REGEX should be defined.
 // See file boost_has_tr1_regex.ipp for details
 
 // Must not have BOOST_ASSERT_CONFIG set; it defeats
@@ -21,7 +24,7 @@
 #include <boost/config.hpp>
 #include "test.hpp"
 
-#ifndef BOOST_HAS_TR1_ARRAY
+#ifndef BOOST_HAS_TR1_REGEX
 #include "boost_has_tr1_regex.ipp"
 #else
 #error "this file should not compile"
@@ -29,6 +32,6 @@
 
 int main( int, char *[] )
 {
- return boost_has_tr1_array::test();
+ return boost_has_tr1_regex::test();
 }
 

Modified: branches/proto/v4/libs/config/test/has_tr1_regex_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_regex_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_regex_pass.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,15 +1,18 @@
-// This file was automatically generated on Sat Apr 02 11:49:12 2005
+// This file was automatically generated on Wed Apr 09 16:30:13 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the
 // Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-// See http://www.boost.org/libs/config for the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
 
-// Test file for macro BOOST_HAS_TR1_ARRAY
+
+// Test file for macro BOOST_HAS_TR1_REGEX
 // This file should compile, if it does not then
-// BOOST_HAS_TR1_ARRAY should not be defined.
+// BOOST_HAS_TR1_REGEX should not be defined.
 // See file boost_has_tr1_regex.ipp for details
 
 // Must not have BOOST_ASSERT_CONFIG set; it defeats
@@ -21,14 +24,14 @@
 #include <boost/config.hpp>
 #include "test.hpp"
 
-#ifdef BOOST_HAS_TR1_ARRAY
+#ifdef BOOST_HAS_TR1_REGEX
 #include "boost_has_tr1_regex.ipp"
 #else
-namespace boost_has_tr1_array = empty_boost;
+namespace boost_has_tr1_regex = empty_boost;
 #endif
 
 int main( int, char *[] )
 {
- return boost_has_tr1_array::test();
+ return boost_has_tr1_regex::test();
 }
 

Modified: branches/proto/v4/libs/config/tools/generate.cpp
==============================================================================
--- branches/proto/v4/libs/config/tools/generate.cpp (original)
+++ branches/proto/v4/libs/config/tools/generate.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -128,9 +128,11 @@
       "# the template defined in options_v2.jam.\n#\n"
       "path-constant DOT : . ;\n"
       "include $(DOT)/options_v2.jam ;\n\n"
- "run config_info.cpp ;\n"
+ "run config_info.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;\n"
+ "run config_info.cpp : : : <threading>multi : config_info_threaded ;\n"
       "run math_info.cpp : : : <toolset>borland:<runtime-link>static <toolset>borland:<link>static ;\n"
- "run config_test.cpp ;\n"
+ "run config_test.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;\n"
+ "run config_test.cpp : : : <threading>multi : config_test_threaded ;\n"
       "run limits_test.cpp ../../test/build//boost_test_exec_monitor ;\n"
       "run abi/abi_test.cpp abi/main.cpp ;\n\n";
    ofs << jamfile_v2.str() << std::endl;

Modified: branches/proto/v4/libs/crc/crc.html
==============================================================================
--- branches/proto/v4/libs/crc/crc.html (original)
+++ branches/proto/v4/libs/crc/crc.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -564,7 +564,7 @@
 
 <ul>
         <li>The CRC header itself: <cite>crc.hpp</cite>
- <li>Some test code: <cite>crc_test.cpp</cite>
+ <li>Some test code: <cite>crc_test.cpp</cite>
         <li>Some example code: <cite>crc_example.cpp</cite>
 </ul>
 
@@ -587,7 +587,7 @@
         <dd>Started the library and contributed the theoretical and optimal
                 CRC computation class templates and the CRC computing function
                 template. Contributed <cite><a
- href="crc_test.cpp">crc_test.cpp</a></cite> and <cite><a
+ href="test/crc_test.cpp">crc_test.cpp</a></cite> and <cite><a
                 href="crc_example.cpp">crc_example.cpp</a></cite>.
 
         <dt>Ross N. Williams

Deleted: branches/proto/v4/libs/crc/crc_test.cpp
==============================================================================
--- branches/proto/v4/libs/crc/crc_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,761 +0,0 @@
-// Boost CRC test program file ---------------------------------------------//
-
-// Copyright 2001, 2003, 2004 Daryle Walker. Use, modification, and
-// distribution are subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or a copy at
-// <http://www.boost.org/LICENSE_1_0.txt>.)
-
-// See <http://www.boost.org/libs/crc/> for the library's home page.
-
-// Revision History
-// 28 Aug 2004 Added CRC tests for polynominals shorter than 8 bits
-// (Daryle Walker, by patch from Bert Klaps)
-// 23 Aug 2003 Adjust to updated Test framework (Daryle Walker)
-// 14 May 2001 Initial version (Daryle Walker)
-
-
-#include <boost/config.hpp> // for BOOST_MSVC, etc.
-#include <boost/crc.hpp> // for boost::crc_basic, etc.
-#include <boost/cstdint.hpp> // for boost::uint16_t, etc.
-#include <boost/cstdlib.hpp> // for boost::exit_success
-#include <boost/integer.hpp> // for boost::uint_t
-#include <boost/random/linear_congruential.hpp> // for boost::minstd_rand
-#include <boost/test/minimal.hpp> // for main, etc.
-#include <boost/timer.hpp> // for boost::timer
-
-#include <algorithm> // for std::for_each, std::generate_n, std::count
-#include <climits> // for CHAR_BIT
-#include <cstddef> // for std::size_t
-#include <iostream> // for std::cout (std::ostream and std::endl indirectly)
-
-
-#if CHAR_BIT != 8
-#error The expected results assume an eight-bit byte.
-#endif
-
-#if !(defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) || (defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)))
-#define CRC_PARM_TYPE typename boost::uint_t<Bits>::fast
-#else
-#define CRC_PARM_TYPE unsigned long
-#endif
-
-#if !defined(BOOST_MSVC) && !defined(__GNUC__)
-#define PRIVATE_DECLARE_BOOST( TypeName ) using boost:: TypeName
-#else
-#define PRIVATE_DECLARE_BOOST( TypeName ) typedef boost:: TypeName TypeName
-#endif
-
-
-// Types
-template < std::size_t Bits, CRC_PARM_TYPE TrPo, CRC_PARM_TYPE InRe,
- CRC_PARM_TYPE FiXo, bool ReIn, bool ReRe >
-class crc_tester
-{
-public:
- // All the following were separate function templates, but they have
- // been moved to class-static member functions of a class template
- // because MS VC++ 6 can't handle function templates that can't
- // deduce all their template arguments from their function arguments.
-
- typedef typename boost::uint_t<Bits>::fast value_type;
-
- static void master_test( char const *test_name, value_type expected );
-
-private:
- typedef boost::crc_optimal<Bits, TrPo, InRe, FiXo, ReIn, ReRe>
- optimal_crc_type;
- typedef boost::crc_basic<Bits> basic_crc_type;
-
- static void compute_test( value_type expected );
- static void interrupt_test( value_type expected );
- static void error_test();
-
-}; // crc_tester
-
-// Global data
-unsigned char const std_data[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
- 0x38, 0x39 };
-std::size_t const std_data_len = sizeof( std_data ) / sizeof( std_data[0] );
-
-boost::uint16_t const std_crc_ccitt_result = 0x29B1;
-boost::uint16_t const std_crc_16_result = 0xBB3D;
-boost::uint32_t const std_crc_32_result = 0xCBF43926;
-
-// Function prototypes
-void timing_test();
-boost::uint32_t basic_crc32( void const *buffer, std::size_t byte_count );
-boost::uint32_t optimal_crc32( void const *buffer, std::size_t byte_count );
-boost::uint32_t quick_crc32( void const *buffer, std::size_t byte_count );
-boost::uint32_t quick_reflect( boost::uint32_t value, std::size_t bits );
-double time_trial( char const *name,
- boost::uint32_t (*crc_func)(void const *, std::size_t),
- boost::uint32_t expected, void const *data, std::size_t length );
-
-void augmented_tests();
-boost::uint32_t native_to_big( boost::uint32_t x );
-boost::uint32_t big_to_native( boost::uint32_t x );
-
-void small_crc_test1();
-void small_crc_test2();
-
-
-// Macro to compact code
-#define PRIVATE_TESTER_NAME crc_tester<Bits, TrPo, InRe, FiXo, ReIn, ReRe>
-
-// Run a test on slow and fast CRC computers and function
-template < std::size_t Bits, CRC_PARM_TYPE TrPo, CRC_PARM_TYPE InRe,
- CRC_PARM_TYPE FiXo, bool ReIn, bool ReRe >
-void
-PRIVATE_TESTER_NAME::compute_test
-(
- typename PRIVATE_TESTER_NAME::value_type expected
-)
-{
- std::cout << "\tDoing computation tests." << std::endl;
-
- optimal_crc_type fast_crc;
- basic_crc_type slow_crc( TrPo, InRe, FiXo, ReIn, ReRe );
- value_type const func_result = boost::crc<Bits, TrPo, InRe, FiXo, ReIn,
- ReRe>( std_data, std_data_len );
-
- fast_crc.process_bytes( std_data, std_data_len );
- slow_crc.process_bytes( std_data, std_data_len );
- BOOST_CHECK( fast_crc.checksum() == expected );
- BOOST_CHECK( slow_crc.checksum() == expected );
- BOOST_CHECK( func_result == expected );
-}
-
-// Run a test in two runs, and check all the inspectors
-template < std::size_t Bits, CRC_PARM_TYPE TrPo, CRC_PARM_TYPE InRe,
- CRC_PARM_TYPE FiXo, bool ReIn, bool ReRe >
-void
-PRIVATE_TESTER_NAME::interrupt_test
-(
- typename PRIVATE_TESTER_NAME::value_type expected
-)
-{
- std::cout << "\tDoing interrupt tests." << std::endl;
-
- // Process the first half of the data (also test accessors)
- optimal_crc_type fast_crc1;
- basic_crc_type slow_crc1( fast_crc1.get_truncated_polynominal(),
- fast_crc1.get_initial_remainder(), fast_crc1.get_final_xor_value(),
- fast_crc1.get_reflect_input(), fast_crc1.get_reflect_remainder() );
-
- BOOST_CHECK( fast_crc1.get_interim_remainder() ==
- slow_crc1.get_initial_remainder() );
-
- std::size_t const mid_way = std_data_len / 2;
- unsigned char const * const std_data_end = std_data + std_data_len;
-
- fast_crc1.process_bytes( std_data, mid_way );
- slow_crc1.process_bytes( std_data, mid_way );
- BOOST_CHECK( fast_crc1.checksum() == slow_crc1.checksum() );
-
- // Process the second half of the data (also test accessors)
- boost::crc_optimal<optimal_crc_type::bit_count,
- optimal_crc_type::truncated_polynominal, optimal_crc_type::initial_remainder,
- optimal_crc_type::final_xor_value, optimal_crc_type::reflect_input,
- optimal_crc_type::reflect_remainder>
- fast_crc2( fast_crc1.get_interim_remainder() );
- boost::crc_basic<basic_crc_type::bit_count> slow_crc2(
- slow_crc1.get_truncated_polynominal(), slow_crc1.get_interim_remainder(),
- slow_crc1.get_final_xor_value(), slow_crc1.get_reflect_input(),
- slow_crc1.get_reflect_remainder() );
-
- fast_crc2.process_block( std_data + mid_way, std_data_end );
- slow_crc2.process_block( std_data + mid_way, std_data_end );
- BOOST_CHECK( fast_crc2.checksum() == slow_crc2.checksum() );
- BOOST_CHECK( fast_crc2.checksum() == expected );
- BOOST_CHECK( slow_crc2.checksum() == expected );
-}
-
-// Run a test to see if a single-bit error is detected
-template < std::size_t Bits, CRC_PARM_TYPE TrPo, CRC_PARM_TYPE InRe,
- CRC_PARM_TYPE FiXo, bool ReIn, bool ReRe >
-void
-PRIVATE_TESTER_NAME::error_test
-(
-)
-{
- PRIVATE_DECLARE_BOOST( uint32_t );
-
- // A single-bit error is ensured to be detected if the polynominal
- // has at least two bits set. The highest bit is what is removed
- // to give the truncated polynominal, and it is always set. This
- // means that the truncated polynominal needs at least one of its
- // bits set, which implies that it cannot be zero.
- if ( !(TrPo & boost::detail::mask_uint_t<Bits>::sig_bits_fast) )
- {
- BOOST_FAIL( "truncated CRC polymonial is zero" );
- }
-
- std::cout << "\tDoing error tests." << std::endl;
-
- // Create a random block of data
- uint32_t ran_data[ 256 ];
- std::size_t const ran_length = sizeof(ran_data) / sizeof(ran_data[0]);
-
- std::generate_n( ran_data, ran_length, boost::minstd_rand() );
-
- // Create computers and compute the checksum of the data
- optimal_crc_type fast_tester;
- basic_crc_type slow_tester( TrPo, InRe, FiXo, ReIn, ReRe );
-
- fast_tester.process_bytes( ran_data, sizeof(ran_data) );
- slow_tester.process_bytes( ran_data, sizeof(ran_data) );
-
- uint32_t const fast_checksum = fast_tester.checksum();
- uint32_t const slow_checksum = slow_tester.checksum();
-
- BOOST_CHECK( fast_checksum == slow_checksum );
-
- // Do the checksum again (and test resetting ability)
- fast_tester.reset();
- slow_tester.reset( InRe );
- fast_tester.process_bytes( ran_data, sizeof(ran_data) );
- slow_tester.process_bytes( ran_data, sizeof(ran_data) );
- BOOST_CHECK( fast_tester.checksum() == slow_tester.checksum() );
- BOOST_CHECK( fast_tester.checksum() == fast_checksum );
- BOOST_CHECK( slow_tester.checksum() == slow_checksum );
-
- // Produce a single-bit error
- ran_data[ ran_data[0] % ran_length ] ^= ( 1 << (ran_data[1] % 32) );
-
- // Compute the checksum of the errorenous data
- // (and continue testing resetting ability)
- fast_tester.reset( InRe );
- slow_tester.reset();
- fast_tester.process_bytes( ran_data, sizeof(ran_data) );
- slow_tester.process_bytes( ran_data, sizeof(ran_data) );
- BOOST_CHECK( fast_tester.checksum() == slow_tester.checksum() );
- BOOST_CHECK( fast_tester.checksum() != fast_checksum );
- BOOST_CHECK( slow_tester.checksum() != slow_checksum );
-}
-
-// Run the other CRC object tests
-template < std::size_t Bits, CRC_PARM_TYPE TrPo, CRC_PARM_TYPE InRe,
- CRC_PARM_TYPE FiXo, bool ReIn, bool ReRe >
-void
-PRIVATE_TESTER_NAME::master_test
-(
- char const * test_name,
- typename PRIVATE_TESTER_NAME::value_type expected
-)
-{
- std::cout << "Doing test suite for " << test_name << '.' << std::endl;
- compute_test( expected );
- interrupt_test( expected );
- error_test();
-}
-
-// Undo limited macros
-#undef PRIVATE_TESTER_NAME
-
-
-// A CRC-32 computer based on crc_basic, for timing
-boost::uint32_t
-basic_crc32
-(
- void const * buffer,
- std::size_t byte_count
-)
-{
- static boost::crc_basic<32> computer( 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF,
- true, true );
-
- computer.reset();
- computer.process_bytes( buffer, byte_count );
- return computer.checksum();
-}
-
-// A CRC-32 computer based on crc_optimal, for timing
-inline
-boost::uint32_t
-optimal_crc32
-(
- void const * buffer,
- std::size_t byte_count
-)
-{
- static boost::crc_32_type computer;
-
- computer.reset();
- computer.process_bytes( buffer, byte_count );
- return computer.checksum();
-}
-
-// Reflect the lower "bits" bits of a "value"
-boost::uint32_t
-quick_reflect
-(
- boost::uint32_t value,
- std::size_t bits
-)
-{
- boost::uint32_t reflection = 0;
- for ( std::size_t i = 0 ; i < bits ; ++i )
- {
- if ( value & (1u << i) )
- {
- reflection |= 1 << ( bits - 1 - i );
- }
- }
-
- return reflection;
-}
-
-// A customized CRC-32 computer, for timing
-boost::uint32_t
-quick_crc32
-(
- void const * buffer,
- std::size_t byte_count
-)
-{
- PRIVATE_DECLARE_BOOST( uint32_t );
- typedef unsigned char byte_type;
-
- // Compute the CRC table (first run only)
- static bool did_init = false;
- static uint32_t crc_table[ 1ul << CHAR_BIT ];
- if ( !did_init )
- {
- uint32_t const value_high_bit = static_cast<uint32_t>(1) << 31u;
-
- byte_type dividend = 0;
- do
- {
- uint32_t remainder = 0;
- for ( byte_type mask = 1u << (CHAR_BIT - 1u) ; mask ; mask >>= 1 )
- {
- if ( dividend & mask )
- {
- remainder ^= value_high_bit;
- }
-
- if ( remainder & value_high_bit )
- {
- remainder <<= 1;
- remainder ^= 0x04C11DB7u;
- }
- else
- {
- remainder <<= 1;
- }
- }
-
- crc_table[ quick_reflect(dividend, CHAR_BIT) ]
- = quick_reflect( remainder, 32 );
- }
- while ( ++dividend );
-
- did_init = true;
- }
-
- // Compute the CRC of the data
- uint32_t rem = 0xFFFFFFFF;
-
- byte_type const * const b_begin = static_cast<byte_type const *>( buffer );
- byte_type const * const b_end = b_begin + byte_count;
- for ( byte_type const *p = b_begin ; p < b_end ; ++p )
- {
- byte_type const byte_index = *p ^ rem;
- rem >>= CHAR_BIT;
- rem ^= crc_table[ byte_index ];
- }
-
- return ~rem;
-}
-
-// Run an individual timing trial
-double
-time_trial
-(
- char const * name,
- boost::uint32_t (*crc_func)(void const *, std::size_t),
- boost::uint32_t expected,
- void const * data,
- std::size_t length
-)
-{
- PRIVATE_DECLARE_BOOST( uint32_t );
- using std::cout;
-
- // Limits of a trial
- static uint32_t const max_count = 1L << 16; // ~square-root of max
- static double const max_time = 3.14159; // easy as pi(e)
-
- // Mark the trial
- cout << '\t' << name << " CRC-32: ";
-
- // Trial loop
- uint32_t trial_count = 0, wrong_count = 0;
- double elapsed_time = 0.0;
- boost::timer t;
-
- do
- {
- uint32_t const scratch = (*crc_func)( data, length );
-
- if ( scratch != expected )
- {
- ++wrong_count;
- }
- elapsed_time = t.elapsed();
- ++trial_count;
- } while ( (trial_count < max_count) && (elapsed_time < max_time) );
-
- if ( wrong_count )
- {
- BOOST_ERROR( "at least one time trial didn't match expected" );
- }
-
- // Report results
- double const rate = trial_count / elapsed_time;
-
- cout << trial_count << " runs, " << elapsed_time << " s, " << rate
- << " run/s" << std::endl;
- return rate;
-}
-
-// Time runs of Boost CRCs vs. a customized CRC function
-void
-timing_test
-(
-)
-{
- PRIVATE_DECLARE_BOOST( uint32_t );
- using std::cout;
- using std::endl;
-
- cout << "Doing timing tests." << endl;
-
- // Create a random block of data
- boost::int32_t ran_data[ 256 ];
- std::size_t const ran_length = sizeof(ran_data) / sizeof(ran_data[0]);
-
- std::generate_n( ran_data, ran_length, boost::minstd_rand() );
-
- // Use the first runs as a check. This gives a chance for first-
- // time static initialization to not interfere in the timings.
- uint32_t const basic_result = basic_crc32( ran_data, sizeof(ran_data) );
- uint32_t const optimal_result = optimal_crc32( ran_data, sizeof(ran_data) );
- uint32_t const quick_result = quick_crc32( ran_data, sizeof(ran_data) );
-
- BOOST_CHECK( basic_result == optimal_result );
- BOOST_CHECK( optimal_result == quick_result );
- BOOST_CHECK( quick_result == basic_result );
-
- // Run trials
- double const basic_rate = time_trial( "Boost-Basic", basic_crc32,
- basic_result, ran_data, sizeof(ran_data) );
- double const optimal_rate = time_trial( "Boost-Optimal", optimal_crc32,
- optimal_result, ran_data, sizeof(ran_data) );
- double const quick_rate = time_trial( "Reference", quick_crc32,
- quick_result, ran_data, sizeof(ran_data) );
-
- // Report results
- cout << "\tThe optimal Boost version is " << (quick_rate - optimal_rate)
- / quick_rate * 100.0 << "% slower than the reference version.\n";
- cout << "\tThe basic Boost version is " << (quick_rate - basic_rate)
- / quick_rate * 100.0 << "% slower than the reference version.\n";
- cout << "\tThe basic Boost version is " << (optimal_rate - basic_rate)
- / optimal_rate * 100.0 << "% slower than the optimal Boost version."
- << endl;
-}
-
-
-// Reformat an integer to the big-endian storage format
-boost::uint32_t
-native_to_big
-(
- boost::uint32_t x
-)
-{
- boost::uint32_t temp;
- unsigned char * tp = reinterpret_cast<unsigned char *>( &temp );
-
- for ( std::size_t i = sizeof(x) ; i > 0 ; --i )
- {
- tp[ i - 1 ] = static_cast<unsigned char>( x );
- x >>= CHAR_BIT;
- }
-
- return temp;
-}
-
-// Restore an integer from the big-endian storage format
-boost::uint32_t
-big_to_native
-(
- boost::uint32_t x
-)
-{
- boost::uint32_t temp = 0;
- unsigned char * xp = reinterpret_cast<unsigned char *>( &x );
-
- for ( std::size_t i = 0 ; i < sizeof(x) ; ++i )
- {
- temp <<= CHAR_BIT;
- temp |= xp[ i ];
- }
-
- return temp;
-}
-
-// Run tests on using CRCs on augmented messages
-void
-augmented_tests
-(
-)
-{
- #define PRIVATE_ACRC_FUNC boost::augmented_crc<32, 0x04C11DB7>
-
- using std::size_t;
- PRIVATE_DECLARE_BOOST( uint32_t );
-
- std::cout << "Doing CRC-augmented message tests." << std::endl;
-
- // Create a random block of data, with space for a CRC.
- uint32_t ran_data[ 257 ];
- size_t const ran_length = sizeof(ran_data) / sizeof(ran_data[0]);
- size_t const data_length = ran_length - 1;
-
- std::generate_n( ran_data, data_length, boost::minstd_rand() );
-
- // When creating a CRC for an augmented message, use
- // zeros in the appended CRC spot for the first run.
- uint32_t & ran_crc = ran_data[ data_length ];
-
- ran_crc = 0;
-
- // Compute the CRC with augmented-CRC computing function
- typedef boost::uint_t<32>::fast return_type;
-
- ran_crc = PRIVATE_ACRC_FUNC( ran_data, sizeof(ran_data) );
-
- // With the appended CRC set, running the checksum again should get zero.
- // NOTE: CRC algorithm assumes numbers are in big-endian format
- ran_crc = native_to_big( ran_crc );
-
- uint32_t ran_crc_check = PRIVATE_ACRC_FUNC( ran_data, sizeof(ran_data) );
-
- BOOST_CHECK( 0 == ran_crc_check );
-
- // Compare that result with other CRC computing functions
- // and classes, which don't accept augmented messages.
- typedef boost::crc_optimal<32, 0x04C11DB7> fast_crc_type;
- typedef boost::crc_basic<32> slow_crc_type;
-
- fast_crc_type fast_tester;
- slow_crc_type slow_tester( 0x04C11DB7 );
- size_t const data_size = data_length * sizeof(ran_data[0]);
- uint32_t const func_tester = boost::crc<32, 0x04C11DB7, 0, 0, false,
- false>( ran_data, data_size );
-
- fast_tester.process_bytes( ran_data, data_size );
- slow_tester.process_bytes( ran_data, data_size );
- BOOST_CHECK( fast_tester.checksum() == slow_tester.checksum() );
- ran_crc = big_to_native( ran_crc );
- BOOST_CHECK( fast_tester.checksum() == ran_crc );
- BOOST_CHECK( func_tester == ran_crc );
-
- // Do a single-bit error test
- ran_crc = native_to_big( ran_crc );
- ran_data[ ran_data[0] % ran_length ] ^= ( 1 << (ran_data[1] % 32) );
- ran_crc_check = PRIVATE_ACRC_FUNC( ran_data, sizeof(ran_data) );
- BOOST_CHECK( 0 != ran_crc_check );
-
- // Run a version of these tests with a nonzero initial remainder.
- uint32_t const init_rem = ran_data[ ran_data[2] % ran_length ];
-
- ran_crc = 0;
- ran_crc = PRIVATE_ACRC_FUNC( ran_data, sizeof(ran_data), init_rem );
-
- // Have some fun by processing data in two steps.
- size_t const mid_index = ran_length / 2;
-
- ran_crc = native_to_big( ran_crc );
- ran_crc_check = PRIVATE_ACRC_FUNC( ran_data, mid_index
- * sizeof(ran_data[0]), init_rem );
- ran_crc_check = PRIVATE_ACRC_FUNC( &ran_data[mid_index], sizeof(ran_data)
- - mid_index * sizeof(ran_data[0]), ran_crc_check );
- BOOST_CHECK( 0 == ran_crc_check );
-
- // This substep translates an augmented-CRC initial
- // remainder to an unaugmented-CRC initial remainder.
- uint32_t const zero = 0;
- uint32_t const new_init_rem = PRIVATE_ACRC_FUNC( &zero, sizeof(zero),
- init_rem );
- slow_crc_type slow_tester2( 0x04C11DB7, new_init_rem );
-
- slow_tester2.process_bytes( ran_data, data_size );
- ran_crc = big_to_native( ran_crc );
- BOOST_CHECK( slow_tester2.checksum() == ran_crc );
-
- // Redo single-bit error test
- ran_data[ ran_data[3] % ran_length ] ^= ( 1 << (ran_data[4] % 32) );
- ran_crc_check = PRIVATE_ACRC_FUNC( ran_data, sizeof(ran_data), init_rem );
- BOOST_CHECK( 0 != ran_crc_check );
-
- #undef PRIVATE_ACRC_FUNC
-}
-
-
-// Run tests on CRCs below a byte in size (here, 3 bits)
-void
-small_crc_test1
-(
-)
-{
- std::cout << "Doing short-CRC (3-bit augmented) message tests."
- << std::endl;
-
- // The CRC standard is a SDH/SONET Low Order LCAS control word with CRC-3
- // taken from ITU-T G.707 (12/03) XIII.2.
-
- // Four samples, each four bytes; should all have a CRC of zero
- unsigned char const samples[4][4]
- = {
- { 0x3A, 0xC4, 0x08, 0x06 },
- { 0x42, 0xC5, 0x0A, 0x41 },
- { 0x4A, 0xC5, 0x08, 0x22 },
- { 0x52, 0xC4, 0x08, 0x05 }
- };
-
- // Basic computer
- boost::crc_basic<3> tester1( 0x03 );
-
- tester1.process_bytes( samples[0], 4 );
- BOOST_CHECK( tester1.checksum() == 0 );
-
- tester1.reset();
- tester1.process_bytes( samples[1], 4 );
- BOOST_CHECK( tester1.checksum() == 0 );
-
- tester1.reset();
- tester1.process_bytes( samples[2], 4 );
- BOOST_CHECK( tester1.checksum() == 0 );
-
- tester1.reset();
- tester1.process_bytes( samples[3], 4 );
- BOOST_CHECK( tester1.checksum() == 0 );
-
- // Optimal computer
- #define PRIVATE_CRC_FUNC boost::crc<3, 0x03, 0, 0, false, false>
- #define PRIVATE_ACRC_FUNC boost::augmented_crc<3, 0x03>
-
- BOOST_CHECK( 0 == PRIVATE_CRC_FUNC(samples[0], 4) );
- BOOST_CHECK( 0 == PRIVATE_CRC_FUNC(samples[1], 4) );
- BOOST_CHECK( 0 == PRIVATE_CRC_FUNC(samples[2], 4) );
- BOOST_CHECK( 0 == PRIVATE_CRC_FUNC(samples[3], 4) );
-
- // maybe the fix to CRC functions needs to be applied to augmented CRCs?
-
- #undef PRIVATE_ACRC_FUNC
- #undef PRIVATE_CRC_FUNC
-}
-
-// Run tests on CRCs below a byte in size (here, 7 bits)
-void
-small_crc_test2
-(
-)
-{
- std::cout << "Doing short-CRC (7-bit augmented) message tests."
- << std::endl;
-
- // The CRC standard is a SDH/SONET J0/J1/J2/N1/N2/TR TTI (trace message)
- // with CRC-7, o.a. ITU-T G.707 Annex B, G.832 Annex A.
-
- // Two samples, each sixteen bytes
- // Sample 1 is '\x80' + ASCII("123456789ABCDEF")
- // Sample 2 is '\x80' + ASCII("TTI UNAVAILABLE")
- unsigned char const samples[2][16]
- = {
- { 0x80, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41,
- 0x42, 0x43, 0x44, 0x45, 0x46 },
- { 0x80, 0x54, 0x54, 0x49, 0x20, 0x55, 0x4E, 0x41, 0x56, 0x41, 0x49,
- 0x4C, 0x41, 0x42, 0x4C, 0x45 }
- };
- unsigned const results[2] = { 0x62, 0x23 };
-
- // Basic computer
- boost::crc_basic<7> tester1( 0x09 );
-
- tester1.process_bytes( samples[0], 16 );
- BOOST_CHECK( tester1.checksum() == results[0] );
-
- tester1.reset();
- tester1.process_bytes( samples[1], 16 );
- BOOST_CHECK( tester1.checksum() == results[1] );
-
- // Optimal computer
- #define PRIVATE_CRC_FUNC boost::crc<7, 0x09, 0, 0, false, false>
- #define PRIVATE_ACRC_FUNC boost::augmented_crc<7, 0x09>
-
- BOOST_CHECK( results[0] == PRIVATE_CRC_FUNC(samples[0], 16) );
- BOOST_CHECK( results[1] == PRIVATE_CRC_FUNC(samples[1], 16) );
-
- // maybe the fix to CRC functions needs to be applied to augmented CRCs?
-
- #undef PRIVATE_ACRC_FUNC
- #undef PRIVATE_CRC_FUNC
-}
-
-
-#ifndef BOOST_MSVC
-// Explicit template instantiations
-// (needed to fix a link error in Metrowerks CodeWarrior Pro 5.3)
-template class crc_tester<16, 0x1021, 0xFFFF, 0, false, false>;
-template class crc_tester<16, 0x8005, 0, 0, true, true>;
-template class crc_tester<32, 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF, true, true>;
-#endif
-
-// Main testing function
-int
-test_main
-(
- int , // "argc" is unused
- char * [] // "argv" is unused
-)
-{
- using std::cout;
- using std::endl;
-
- // Run simulations on some CRC types
- typedef crc_tester<16, 0x1021, 0xFFFF, 0, false, false> crc_ccitt_tester;
- typedef crc_tester<16, 0x8005, 0, 0, true, true> crc_16_tester;
- typedef crc_tester<32, 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF, true, true>
- crc_32_tester;
-
- crc_ccitt_tester::master_test( "CRC-CCITT", std_crc_ccitt_result );
- crc_16_tester::master_test( "CRC-16", std_crc_16_result );
- crc_32_tester::master_test( "CRC-32", std_crc_32_result );
-
- // Run a timing comparison test
- timing_test();
-
- // Test using augmented messages
- augmented_tests();
-
- // Test with CRC types smaller than a byte
- small_crc_test1();
- small_crc_test2();
-
- // Try a CRC based on the (x + 1) polynominal, which is a factor in
- // many real-life polynominals and doesn't fit evenly in a byte.
- cout << "Doing one-bit polynominal CRC test." << endl;
- boost::crc_basic<1> crc_1( 1 );
- crc_1.process_bytes( std_data, std_data_len );
- BOOST_CHECK( crc_1.checksum() == 1 );
-
- // Test the function object interface
- cout << "Doing functional object interface test." << endl;
- boost::crc_optimal<16, 0x8005, 0, 0, true, true> crc_16;
- crc_16 = std::for_each( std_data, std_data + std_data_len, crc_16 );
- BOOST_CHECK( crc_16() == std_crc_16_result );
-
- return boost::exit_success;
-}

Deleted: branches/proto/v4/libs/exception/doc/adding_data_at_throw.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/adding_data_at_throw.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Adding of Arbitrary Data at the Point of the Throw</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Adding of Arbitrary Data at the Point of the Throw</h3>
-<p>The following example demonstrates how <tt>errno</tt> can be stored in exception objects using Boost Exception:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;
-#include &lt;errno.h&gt;
-#include &lt;iostream&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_errno,int&gt; errno_info; //(1)
-
-class my_error: public boost::<span class="RenoLink">exception</span>, public std::exception { }; //(2)
-
-void
-f()
- {
- throw my_error() &lt;&lt; errno_info(errno); //(3)
- }
-</pre>
-<p>First, we instantiate the <tt><span class="RenoLink">error_info</span></tt> template using a unique identifier -- <tt>tag_errno</tt>, and the type of the info it identifies -- <tt>int</tt>. This provides compile-time type safety for the various values stored in exception objects.</p>
-<p>Second, we define class <tt>my_error</tt>, which derives from <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
-<p>Finally, (3) illustrates how the <tt>typedef</tt> from (1) can be used with <tt><span class="RenoLink">operator<<</span>()</tt> to store values in exception objects at the point of the throw.</p>
-<p>The stored <tt>errno</tt> value can be recovered at a later time like this:</p>
-<pre>// ...continued
-
-void
-g()
- {
- try
- {
- f();
- }
- catch(
- my_error &amp; x )
- {
- if( boost::shared_ptr&lt;int const&gt; err=boost::<span class="RenoLink">get_error_info</span>&lt;errno_info&gt;(x) )
- std::cerr &lt;&lt; "Error code: " &lt;&lt; *err;
- }
- }</pre>
-<p>The <tt><span class="RenoLink">get_error_info</span>()</tt> function template is instantiated with the <tt>typedef</tt> from (1), and is passed an exception object of any type that derives publicly from <tt>boost::<span class="RenoLink">exception</span></tt>. If the exception object contains the requested value, the returned <tt><span class="RenoLink">shared_ptr</span></tt> will point to it; otherwise an empty <tt><span class="RenoLink">shared_ptr</span></tt> is returned.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="transporting_data.html">Tutorial: Transporting of Arbitrary Data to the Catch Site<br/>
-</a></div>
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Deleted: branches/proto/v4/libs/exception/doc/adding_data_later.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/adding_data_later.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Adding of Arbitrary Data to Active Exception Objects</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Adding of Arbitrary Data to Active Exception Objects</h3>
-<p>Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Here is an example:</p>
-<pre>#include &lt;stdio.h&gt;
-#include &lt;string&gt;
-
-class
-file_read_error
- {
- public:
-
- explicit
- file_read_error( std::string const &amp; fn ):
- fn_(fn)
- {
- };
-
- std::string const &amp;
- file_name() const
- {
- return fn_;
- }
-
- private:
-
- std::string fn_;
- };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw file_read_error("????");
- }</pre>
-<p>We have defined an exception class <tt>file_read_error</tt> which can store a file name, so that when we catch a <tt>file_read_error</tt> object, we know which file the failure is related to. However, the <tt>file_read</tt> function does not have the file name at the time of the throw; all it has is a <tt>FILE</tt> handle.</p>
-<p>One possible solution is to not use <tt>FILE</tt> handles directly. We could have our own <tt>class file</tt> which stores both a <tt>FILE</tt> handle and a file name, and pass that to <tt>file_read()</tt>. However, this could be problematic if we communicate with 3rd party code that does not use our <tt>class file</tt> (probably because they have their own similar class.)</p>
-<p>A better solution is to make class <tt>file_read_error</tt> derive (possibly indirectly) from <tt>boost::<span class="RenoLink">exception</span></tt>, and free the <tt>file_read()</tt> function from the burden of storing the file name in exceptions it throws:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;
-#include &lt;stdio.h&gt;
-#include &lt;errno.h&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_errno,int&gt; errno_info;
-
-class file_read_error: public boost::<span class="RenoLink">exception</span> { };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw file_read_error() &lt;&lt; errno_info(errno);
- }</pre>
-<p>If <tt>file_read()</tt> detects a failure, it throws an exception which contains the information that is available at the time, namely the <tt>errno</tt>. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;
-#include &lt;boost/shared_ptr.hpp&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_file_name,std::string&gt; file_name_info;
-
-boost::shared_ptr&lt;FILE&gt; file_open( char const * file_name, char const * mode );
-void file_read( FILE * f, void * buffer, size_t size );
-
-void
-parse_file( char const * file_name )
- {
- boost::shared_ptr&lt;FILE&gt; f = file_open(file_name,"rb");
- assert(f);
- try
- {
- char buf[1024];
- file_read( f.get(), buf, sizeof(buf) );
- }
- catch(
- boost::<span class="RenoLink">exception</span> &amp; e )
- {
- e &lt;&lt; file_name_info(file_name);
- throw;
- }
- }</pre>
-<p>The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the <tt>try</tt> block, <tt>parse_file()</tt> does not need to do any real work, but it intercepts any <tt>boost::<span class="RenoLink">exception</span></tt> object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any <tt>boost::<span class="RenoLink">exception</span></tt> object is that the file name is relevant to any failure that occurs in <tt>parse_file()</tt>, <i>even if the failure is unrelated to file I/O</i>.</p>
-<p>As usual, the stored data can be retrieved using <tt><span class="RenoLink">get_error_info</span>()</tt>.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="transporting_data.html">Tutorial: Transporting of Arbitrary Data to the Catch Site<br/>
-</a></div>
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Deleted: branches/proto/v4/libs/exception/doc/cloning_and_rethrowing.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/cloning_and_rethrowing.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Cloning and Re-throwing an Exception</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Cloning and Re-throwing an Exception</h3>
-<p>When you catch a <tt>boost::<span class="RenoLink">exception</span></tt>, you can call <tt><span class="RenoLink">clone_exception</span>()</tt> to get an <tt><span class="RenoLink">exception_ptr</span></tt> object:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception/cloning.hpp</span>&gt;
-#include &lt;boost/thread.hpp&gt;
-#include &lt;boost/bind.hpp&gt;
-
-void do_work(); //throws cloning-enabled boost::<span class="RenoLink">exception</span>s
-
-void
-worker_thread( boost::<span class="RenoLink">exception_ptr</span> &amp; error )
- {
- try
- {
- do_work();
- error = boost::<span class="RenoLink">exception_ptr</span>();
- }
- catch(
- boost::<span class="RenoLink">exception</span> &amp; e )
- {
- error = boost::<span class="RenoLink">clone_exception</span>(e);
- }
- }</pre>
-<p>In the above example, note that <tt><span class="RenoLink">clone_exception</span>()</tt> captures the original type of the exception object, even though <tt>e</tt> refers to the base type <tt>boost::<span class="RenoLink">exception</span></tt>. This original type can be thrown again using the <tt><span class="RenoLink">rethrow_exception</span>()</tt> function:</p>
-<pre>// ...continued
-
-void
-work()
- {
- boost::<span class="RenoLink">exception_ptr</span> error;
- boost::<span class="RenoLink">thread</span> t( boost::<span class="RenoLink">bind</span>(worker_thread,boost::<span class="RenoLink">ref</span>(error)) );
- t.<span class="RenoLink">join</span>();
- if( error )
- boost::<span class="RenoLink">rethrow_exception</span>(error);
- }</pre>
-<p><tt><span class="RenoLink">Clone_exception</span>()</tt> could fail to copy the original exception object in the following cases:</p>
-<div><ul><li> if there is not enough memory, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt>std::bad_alloc</tt>, or</li>
-<li> if <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> was not used in the throw-expression passed to the original <tt>throw</tt> statement, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</li>
-</ul></div>
-<p>Regardless, the use of <tt><span class="RenoLink">clone_exception</span>()</tt> and <tt><span class="RenoLink">rethrow_exception</span>()</tt> in the above examples is well-formed.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
-</a></div>
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Deleted: branches/proto/v4/libs/exception/doc/grouping_data.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/grouping_data.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Adding Grouped Data to Exceptions</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Adding Grouped Data to Exceptions</h3>
-<p>The code snippet below demonstrates how <tt>boost::<span class="RenoLink">tuple</span></tt> can be used to bundle the name of the function that failed, together with the reported <tt>errno</tt> so that they can be added to exception objects more conveniently together:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception/info_tuple.hpp</span>&gt;
-#include &lt;boost/shared_ptr.hpp&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string&gt;
-#include &lt;errno&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_file_name,std::string&gt; file_name_info;
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_function,char const *&gt; function_info;
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_errno,int&gt; errno_info;
-typedef boost::tuple&lt;function_info,errno_info&gt; clib_failure;
-
-class file_open_error: public boost::<span class="RenoLink">exception</span> { };
-
-boost::shared_ptr&lt;FILE&gt;
-file_open( char const * name, char const * mode )
- {
- if( FILE * f=fopen(name,mode) )
- return boost::shared_ptr&lt;FILE&gt;(f,fclose);
- else
- throw file_open_error() &lt;&lt;
- file_name_info(name) &lt;&lt;
- clib_failure("fopen",errno);
- }</pre>
-<p>Note that the members of a <tt>boost::<span class="RenoLink">tuple</span></tt> are stored separately in exception objects; they can only be retrieved individually, using <tt><span class="RenoLink">get_error_info</span>()</tt>.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="transporting_data.html">Tutorial: Transporting of Arbitrary Data to the Catch Site<br/>
-</a></div>
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Modified: branches/proto/v4/libs/exception/doc/reno.css
==============================================================================
--- branches/proto/v4/libs/exception/doc/reno.css (original)
+++ branches/proto/v4/libs/exception/doc/reno.css 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,3 +1,10 @@
+/*
+ * Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+
 body
 {
         font-family: Trebuchet, Verdana, Arial, Helvetica, Sans;

Deleted: branches/proto/v4/libs/exception/doc/using_enable_cloning.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/using_enable_cloning.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Using enable_exception_cloning() at the Time of the Throw</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<div class="RenoIncludeDIV"><h3>Using enable_exception_cloning() at the Time of the Throw</h3>
-<p>Here is how cloning can be enabled in a throw-expression (15.1):</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception/enable_exception_cloning.hpp</span>&gt;
-#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;
-#include &lt;stdio.h&gt;
-#include &lt;errno.h&gt;
-
-typedef boost::error_info&lt;struct tag_errno,int&gt; errno_info;
-
-class file_read_error: public boost::<span class="RenoLink">exception</span> { };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw boost::<span class="RenoLink">enable_exception_cloning</span>(file_read_error()) &lt;&lt;
- errno_info(errno);
- }</pre>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
-</a></div>
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Modified: branches/proto/v4/libs/exception/example/cloning_1.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/cloning_1.cpp (original)
+++ branches/proto/v4/libs/exception/example/cloning_1.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -16,7 +16,7 @@
 
 void
 file_read( FILE * f, void * buffer, size_t size )
- {
+ {
     if( size!=fread(buffer,1,size,f) )
         throw boost::enable_exception_cloning(file_read_error()) << errno_info(errno);
- }
+ }

Modified: branches/proto/v4/libs/exception/example/cloning_2.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/cloning_2.cpp (original)
+++ branches/proto/v4/libs/exception/example/cloning_2.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -13,27 +13,27 @@
 
 void
 worker_thread( boost::exception_ptr & error )
- {
- try
- {
+ {
+ try
+ {
         do_work();
         error = boost::exception_ptr();
- }
+ }
     catch(
- boost::exception & e )
- {
+ boost::exception & e )
+ {
         error = boost::clone_exception(e);
- }
- }
+ }
+ }
 
 //
 
 void
 work()
- {
+ {
     boost::exception_ptr error;
     boost::thread t( boost::bind(worker_thread,boost::ref(error)) );
     t.join();
     if( error )
         boost::rethrow_exception(error);
- }
+ }

Modified: branches/proto/v4/libs/exception/example/enable_error_info.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/enable_error_info.cpp (original)
+++ branches/proto/v4/libs/exception/example/enable_error_info.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -17,19 +17,19 @@
 template <class T>
 class
 my_container
- {
- public:
+ {
+ public:
 
- size_t size() const;
+ size_t size() const;
 
     T const &
- operator[]( size_t i ) const
- {
+ operator[]( size_t i ) const
+ {
         if( i > size() )
             throw boost::enable_error_info(std::range_error("Index out of range")) <<
                 std_range_min(0) <<
                 std_range_max(size()) <<
                 std_range_index(i);
- //....
- }
- };
+ //....
+ }
+ };

Modified: branches/proto/v4/libs/exception/example/error_info_1.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/error_info_1.cpp (original)
+++ branches/proto/v4/libs/exception/example/error_info_1.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -16,21 +16,21 @@
 
 void
 f()
- {
+ {
     throw my_error() << errno_info(errno); //(3)
- }
-
+ }
+
 void
 g()
- {
+ {
     try
- {
+ {
         f();
- }
+ }
     catch(
- my_error & x )
- {
- if( boost::shared_ptr<int const> err=boost::get_error_info<errno_info>(x) )
+ my_error & x )
+ {
+ if( boost::shared_ptr<int const> err=boost::get_error_info<errno_info>(x) )
             std::cerr << "Error code: " << *err;
- }
- }
+ }
+ }

Modified: branches/proto/v4/libs/exception/example/error_info_2.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/error_info_2.cpp (original)
+++ branches/proto/v4/libs/exception/example/error_info_2.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -18,10 +18,10 @@
 
 void
 file_read( FILE * f, void * buffer, size_t size )
- {
+ {
     if( size!=fread(buffer,1,size,f) )
         throw file_read_error() << errno_info(errno);
- }
+ }
 
 //
 
@@ -32,18 +32,18 @@
 
 void
 parse_file( char const * file_name )
- {
+ {
     boost::shared_ptr<FILE> f = file_open(file_name,"rb");
     assert(f);
     try
- {
- char buf[1024];
+ {
+ char buf[1024];
         file_read( f.get(), buf, sizeof(buf) );
- }
+ }
     catch(
- boost::exception & e )
- {
+ boost::exception & e )
+ {
         e << file_name_info(file_name);
         throw;
- }
- }
+ }
+ }

Modified: branches/proto/v4/libs/exception/example/example_io.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/example_io.cpp (original)
+++ branches/proto/v4/libs/exception/example/example_io.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,7 +8,7 @@
 //
 //The documentation for boost::exception can be found at:
 //
-// http://www.revergestudios.com/boost-exception/boost-exception.htm.
+// http://www.revergestudios.com/boost-exception/boost-exception.htm.
 //
 //The output from this program can vary depending on the compiler/OS combination.
 
@@ -33,23 +33,23 @@
 
 class
 error: //Base for all exception objects we throw.
- public std::exception,
- public boost::exception
- {
- public:
-
- char const *
- what() const throw()
- {
- return boost::exception::what();
- }
-
- protected:
-
- ~error() throw()
- {
- }
- };
+ public std::exception,
+ public boost::exception
+ {
+ public:
+
+ char const *
+ what() const throw()
+ {
+ return boost::exception::what();
+ }
+
+ protected:
+
+ ~error() throw()
+ {
+ }
+ };
 
 class open_error: public error { };
 class read_error: public error { };
@@ -62,154 +62,154 @@
 
 boost::shared_ptr<FILE>
 my_fopen( char const * name, char const * mode )
- {
- if( FILE * f = ::fopen(name,mode) )
- return boost::shared_ptr<FILE>(f,fclose);
- else
- throw fopen_error() << BOOST_ERROR_INFO <<
- errno_info(errno) <<
- file_name_info(name) <<
- open_mode_info(mode) <<
- function_info("fopen");
- }
+ {
+ if( FILE * f = ::fopen(name,mode) )
+ return boost::shared_ptr<FILE>(f,fclose);
+ else
+ throw fopen_error() << BOOST_ERROR_INFO <<
+ errno_info(errno) <<
+ file_name_info(name) <<
+ open_mode_info(mode) <<
+ function_info("fopen");
+ }
 
 void
 my_fread( void * buffer, size_t size, size_t count, boost::shared_ptr<FILE> const & stream )
- {
- assert(stream);
- if( count!=fread(buffer,size,count,stream.get()) || ferror(stream.get()) )
- throw fread_error() << BOOST_ERROR_INFO <<
- function_info("fread") <<
- errno_info(errno) <<
- file_stream_info(boost::weak_ptr<FILE>(stream));
- }
+ {
+ assert(stream);
+ if( count!=fread(buffer,size,count,stream.get()) || ferror(stream.get()) )
+ throw fread_error() << BOOST_ERROR_INFO <<
+ function_info("fread") <<
+ errno_info(errno) <<
+ file_stream_info(boost::weak_ptr<FILE>(stream));
+ }
 
 void
 my_fwrite( void const * buffer, size_t size, size_t count, boost::shared_ptr<FILE> const & stream )
- {
- assert(stream);
- if( count!=fwrite(buffer,size,count,stream.get()) || ferror(stream.get()) )
- throw fwrite_error() << BOOST_ERROR_INFO <<
- function_info("fwrite") <<
- errno_info(errno) <<
- file_stream_info(boost::weak_ptr<FILE>(stream));
- }
+ {
+ assert(stream);
+ if( count!=fwrite(buffer,size,count,stream.get()) || ferror(stream.get()) )
+ throw fwrite_error() << BOOST_ERROR_INFO <<
+ function_info("fwrite") <<
+ errno_info(errno) <<
+ file_stream_info(boost::weak_ptr<FILE>(stream));
+ }
 
 void
 reset_file( char const * file_name )
- {
- (void) my_fopen(file_name,"wb");
- }
+ {
+ (void) my_fopen(file_name,"wb");
+ }
 
 void
 create_data( char const * file_name )
- {
- boost::shared_ptr<FILE> f = my_fopen(file_name,"wb");
- my_fwrite( data, 1, data_size, f );
- }
+ {
+ boost::shared_ptr<FILE> f = my_fopen(file_name,"wb");
+ my_fwrite( data, 1, data_size, f );
+ }
 
 void
 copy_data( char const * src_file_name, char const * dst_file_name )
- {
- boost::shared_ptr<FILE> src = my_fopen(src_file_name,"rb");
- boost::shared_ptr<FILE> dst = my_fopen(dst_file_name,"wb");
- try
- {
- char buffer[data_size];
- my_fread( buffer, 1, data_size, src );
- my_fwrite( buffer, 1, data_size, dst );
- }
- catch(
- boost::exception & x )
- {
- if( boost::shared_ptr<boost::weak_ptr<FILE> const> f=boost::get_error_info<file_stream_info>(x) )
- if( boost::shared_ptr<FILE> fs = f->lock() )
- {
- if( fs==src )
- x << file_name_info(src_file_name);
- else if( fs==dst )
- x << file_name_info(dst_file_name);
- }
- x <<
- file_name_src_info(src_file_name) <<
- file_name_dst_info(dst_file_name);
- throw;
- }
- }
+ {
+ boost::shared_ptr<FILE> src = my_fopen(src_file_name,"rb");
+ boost::shared_ptr<FILE> dst = my_fopen(dst_file_name,"wb");
+ try
+ {
+ char buffer[data_size];
+ my_fread( buffer, 1, data_size, src );
+ my_fwrite( buffer, 1, data_size, dst );
+ }
+ catch(
+ boost::exception & x )
+ {
+ if( boost::shared_ptr<boost::weak_ptr<FILE> const> f=boost::get_error_info<file_stream_info>(x) )
+ if( boost::shared_ptr<FILE> fs = f->lock() )
+ {
+ if( fs==src )
+ x << file_name_info(src_file_name);
+ else if( fs==dst )
+ x << file_name_info(dst_file_name);
+ }
+ x <<
+ file_name_src_info(src_file_name) <<
+ file_name_dst_info(dst_file_name);
+ throw;
+ }
+ }
 
 void
 dump_copy_info( boost::exception const & x )
- {
- if( boost::shared_ptr<std::string const> src = boost::get_error_info<file_name_src_info>(x) )
- std::cout << "Source file name: " << *src << "\n";
- if( boost::shared_ptr<std::string const> dst = boost::get_error_info<file_name_dst_info>(x) )
- std::cout << "Destination file name: " << *dst << "\n";
- }
+ {
+ if( boost::shared_ptr<std::string const> src = boost::get_error_info<file_name_src_info>(x) )
+ std::cout << "Source file name: " << *src << "\n";
+ if( boost::shared_ptr<std::string const> dst = boost::get_error_info<file_name_dst_info>(x) )
+ std::cout << "Destination file name: " << *dst << "\n";
+ }
 
 void
 dump_file_info( boost::exception const & x )
- {
- if( boost::shared_ptr<std::string const> fn = boost::get_error_info<file_name_info>(x) )
- std::cout << "Source file name: " << *fn << "\n";
- }
+ {
+ if( boost::shared_ptr<std::string const> fn = boost::get_error_info<file_name_info>(x) )
+ std::cout << "Source file name: " << *fn << "\n";
+ }
 
 void
 dump_clib_info( boost::exception const & x )
- {
- if( boost::shared_ptr<int const> err=boost::get_error_info<errno_info>(x) )
- std::cout << "OS error: " << *err << "\n";
- if( boost::shared_ptr<std::string const> fn=boost::get_error_info<function_info>(x) )
- std::cout << "Failed function: " << *fn << "\n";
- }
+ {
+ if( boost::shared_ptr<int const> err=boost::get_error_info<errno_info>(x) )
+ std::cout << "OS error: " << *err << "\n";
+ if( boost::shared_ptr<std::string const> fn=boost::get_error_info<function_info>(x) )
+ std::cout << "Failed function: " << *fn << "\n";
+ }
 
 void
 dump_all_info( boost::exception const & x )
- {
- std::cout << "-------------------------------------------------\n";
- dump_copy_info(x);
- dump_file_info(x);
- dump_clib_info(x);
- std::cout << "\nOutput from what():\n";
- std::cout << x.what();
- }
+ {
+ std::cout << "-------------------------------------------------\n";
+ dump_copy_info(x);
+ dump_file_info(x);
+ dump_clib_info(x);
+ std::cout << "\nOutput from what():\n";
+ std::cout << x.what();
+ }
 
 int
 main()
- {
- try
- {
- create_data( "tmp1.txt" );
- copy_data( "tmp1.txt", "tmp2.txt" ); //This should succeed.
-
- reset_file( "tmp1.txt" ); //Creates empty file.
- try
- {
- copy_data( "tmp1.txt", "tmp2.txt" ); //This should fail, tmp1.txt is empty.
- }
- catch(
- read_error & x )
- {
- std::cout << "\nCaught 'read_error' exception.\n";
- dump_all_info(x);
- }
-
- remove( "tmp1.txt" );
- remove( "tmp2.txt" );
- try
- {
- copy_data( "tmp1.txt", "tmp2.txt" ); //This should fail, tmp1.txt does not exist.
- }
- catch(
- open_error & x )
- {
- std::cout << "\nCaught 'open_error' exception.\n";
- dump_all_info(x);
- }
- }
- catch(
- boost::exception & x )
- {
- std::cout << "\nCaught unexpected boost::exception!\n";
- dump_all_info(x);
- }
- }
+ {
+ try
+ {
+ create_data( "tmp1.txt" );
+ copy_data( "tmp1.txt", "tmp2.txt" ); //This should succeed.
+
+ reset_file( "tmp1.txt" ); //Creates empty file.
+ try
+ {
+ copy_data( "tmp1.txt", "tmp2.txt" ); //This should fail, tmp1.txt is empty.
+ }
+ catch(
+ read_error & x )
+ {
+ std::cout << "\nCaught 'read_error' exception.\n";
+ dump_all_info(x);
+ }
+
+ remove( "tmp1.txt" );
+ remove( "tmp2.txt" );
+ try
+ {
+ copy_data( "tmp1.txt", "tmp2.txt" ); //This should fail, tmp1.txt does not exist.
+ }
+ catch(
+ open_error & x )
+ {
+ std::cout << "\nCaught 'open_error' exception.\n";
+ dump_all_info(x);
+ }
+ }
+ catch(
+ boost::exception & x )
+ {
+ std::cout << "\nCaught unexpected boost::exception!\n";
+ dump_all_info(x);
+ }
+ }

Modified: branches/proto/v4/libs/exception/example/logging.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/logging.cpp (original)
+++ branches/proto/v4/libs/exception/example/logging.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,14 +12,14 @@
 
 void
 g()
- {
+ {
     try
- {
+ {
         f();
- }
+ }
     catch(
- boost::exception & e )
- {
+ boost::exception & e )
+ {
         std::cerr << e.what();
- }
- }
+ }
+ }

Modified: branches/proto/v4/libs/exception/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/exception/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/exception/test/Jamfile.v2 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -7,9 +7,16 @@
 
 import testing ;
 
+#to_string
+run is_output_streamable_test.cpp ;
+run has_to_string_test.cpp ;
+run to_string_test.cpp ;
+run to_string_stub_test.cpp ;
+compile-fail to_string_fail.cpp ;
+
+#exception
 run cloning_test.cpp ;
 run unknown_exception_test.cpp ;
-run to_string_test.cpp ;
 run exception_test.cpp ;
 run boost_error_info_test.cpp ;
 run enable_error_info_test.cpp helper1.cpp ;

Modified: branches/proto/v4/libs/exception/test/boost_error_info_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/boost_error_info_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/boost_error_info_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -9,32 +9,32 @@
 
 namespace
 test
- {
- class my_exception: public boost::exception { };
+ {
+ class my_exception: public boost::exception { };
 
- typedef boost::error_info<struct tag_my_info,int> my_info;
+ typedef boost::error_info<struct tag_my_info,int> my_info;
 
- void
- test_boost_error_info()
- {
- try
- {
- throw my_exception() << BOOST_ERROR_INFO << my_info(1);
- }
- catch(
- my_exception & x )
- {
- BOOST_TEST(1==*boost::get_error_info<my_info>(x));
- BOOST_TEST(boost::get_error_info<boost::throw_function>(x));
- BOOST_TEST(boost::get_error_info<boost::throw_file>(x));
- BOOST_TEST(boost::get_error_info<boost::throw_line>(x));
- }
- }
- }
+ void
+ test_boost_error_info()
+ {
+ try
+ {
+ throw my_exception() << BOOST_ERROR_INFO << my_info(1);
+ }
+ catch(
+ my_exception & x )
+ {
+ BOOST_TEST(1==*boost::get_error_info<my_info>(x));
+ BOOST_TEST(boost::get_error_info<boost::throw_function>(x));
+ BOOST_TEST(boost::get_error_info<boost::throw_file>(x));
+ BOOST_TEST(boost::get_error_info<boost::throw_line>(x));
+ }
+ }
+ }
 
 int
 main()
- {
- test::test_boost_error_info();
- return boost::report_errors();
- }
+ {
+ test::test_boost_error_info();
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/cloning_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/cloning_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/cloning_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,35 +8,35 @@
 
 struct
 test_exception:
- std::exception
- {
- };
+ std::exception
+ {
+ };
 
 int
 main()
- {
- try
- {
- throw boost::enable_exception_cloning(test_exception());
- }
- catch(
- std::exception & x )
- {
- boost::exception_ptr p = boost::clone_exception(x);
- try
- {
- rethrow_exception(p);
- BOOST_TEST(false);
- }
- catch(
- test_exception & )
- {
- }
- catch(
- ... )
- {
- BOOST_TEST(false);
- }
- }
- return boost::report_errors();
- }
+ {
+ try
+ {
+ throw boost::enable_exception_cloning(test_exception());
+ }
+ catch(
+ std::exception & x )
+ {
+ boost::exception_ptr p = boost::clone_exception(x);
+ try
+ {
+ rethrow_exception(p);
+ BOOST_TEST(false);
+ }
+ catch(
+ test_exception & )
+ {
+ }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
+ }
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/enable_error_info_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/enable_error_info_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/enable_error_info_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,42 +8,42 @@
 #include <boost/detail/lightweight_test.hpp>
 
 namespace
- {
- typedef boost::error_info<struct tag_test_int,int> test_int;
+ {
+ typedef boost::error_info<struct tag_test_int,int> test_int;
 
- void
- throw_wrapper()
- {
- try
- {
- boost::exception_test::throw_length_error();
- }
- catch(
- boost::exception & x )
- {
- x << test_int(42);
- throw;
- }
- }
- }
+ void
+ throw_wrapper()
+ {
+ try
+ {
+ boost::exception_test::throw_length_error();
+ }
+ catch(
+ boost::exception & x )
+ {
+ x << test_int(42);
+ throw;
+ }
+ }
+ }
 
 int
 main()
- {
- try
- {
- throw_wrapper();
- BOOST_TEST(false);
- }
- catch(
- std::exception & x )
- {
- BOOST_TEST( 42==*boost::get_error_info<test_int>(x) );
- }
- catch(
- ... )
- {
- BOOST_TEST(false);
- }
- return boost::report_errors();
- }
+ {
+ try
+ {
+ throw_wrapper();
+ BOOST_TEST(false);
+ }
+ catch(
+ std::exception & x )
+ {
+ BOOST_TEST( 42==*boost::get_error_info<test_int>(x) );
+ }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/errno_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/errno_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/errno_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -11,23 +11,23 @@
 
 class
 my_exception:
- public boost::exception
- {
- };
+ public boost::exception
+ {
+ };
 
 int
 main()
- {
- try
- {
- errno=1;
- throw my_exception() << info_errno(errno);
- BOOST_TEST(false);
- }
- catch(
- my_exception & x )
- {
- BOOST_TEST(1==*boost::get_error_info<info_errno>(x));
- }
- return boost::report_errors();
- }
+ {
+ try
+ {
+ errno=1;
+ throw my_exception() << info_errno(errno);
+ BOOST_TEST(false);
+ }
+ catch(
+ my_exception & x )
+ {
+ BOOST_TEST(1==*boost::get_error_info<info_errno>(x));
+ }
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/error_info_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/error_info_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/error_info_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -18,200 +18,200 @@
 
 struct
 test_exception:
- public boost::exception
- {
- };
+ public boost::exception
+ {
+ };
 
 struct
 throws_on_copy
- {
- throws_on_copy()
- {
- }
-
- throws_on_copy( throws_on_copy const & )
- {
- throw test_exception();
- }
- };
+ {
+ throws_on_copy()
+ {
+ }
+
+ throws_on_copy( throws_on_copy const & )
+ {
+ throw test_exception();
+ }
+ };
 
 void
 basic_test()
- {
- test_exception x;
- x << test_1(1) << test_2(2u) << test_3(3.14159f);
- BOOST_TEST(*boost::get_error_info<test_1>(x)==1);
- BOOST_TEST(*boost::get_error_info<test_2>(x)==2u);
- BOOST_TEST(*boost::get_error_info<test_3>(x)==3.14159f);
- BOOST_TEST(!boost::get_error_info<test_4>(x));
- }
+ {
+ test_exception x;
+ x << test_1(1) << test_2(2u) << test_3(3.14159f);
+ BOOST_TEST(*boost::get_error_info<test_1>(x)==1);
+ BOOST_TEST(*boost::get_error_info<test_2>(x)==2u);
+ BOOST_TEST(*boost::get_error_info<test_3>(x)==3.14159f);
+ BOOST_TEST(!boost::get_error_info<test_4>(x));
+ }
 
 void
 exception_safety_test()
- {
- test_exception x;
- try
- {
- x << test_4(throws_on_copy());
- BOOST_TEST(false);
- }
- catch(
- test_exception & )
- {
- }
- BOOST_TEST(!boost::get_error_info<test_4>(x));
- }
+ {
+ test_exception x;
+ try
+ {
+ x << test_4(throws_on_copy());
+ BOOST_TEST(false);
+ }
+ catch(
+ test_exception & )
+ {
+ }
+ BOOST_TEST(!boost::get_error_info<test_4>(x));
+ }
 
 void
 throw_empty()
- {
- throw test_exception();
- }
+ {
+ throw test_exception();
+ }
 
 void
 throw_test_1( char const * value )
- {
- throw test_exception() << test_5(std::string(value));
- }
+ {
+ throw test_exception() << test_5(std::string(value));
+ }
 
 void
 throw_test_2()
- {
- throw test_exception() << test_6(non_printable());
- }
+ {
+ throw test_exception() << test_6(non_printable());
+ }
 
 void
 throw_catch_add_file_name( char const * name )
- {
- try
- {
- throw_empty();
- BOOST_TEST(false);
- }
- catch(
- boost::exception & x )
- {
- x << test_5(std::string(name));
- throw;
- }
- }
+ {
+ try
+ {
+ throw_empty();
+ BOOST_TEST(false);
+ }
+ catch(
+ boost::exception & x )
+ {
+ x << test_5(std::string(name));
+ throw;
+ }
+ }
 
 void
 test_empty()
- {
- try
- {
- throw_empty();
- BOOST_TEST(false);
- }
- catch(
- boost::exception & x )
- {
- BOOST_TEST( dynamic_cast<test_exception *>(&x) );
- BOOST_TEST( !boost::get_error_info<test_1>(x) );
- }
-
- try
- {
- throw_empty();
- BOOST_TEST(false);
- }
- catch(
- test_exception & x )
- {
- BOOST_TEST( dynamic_cast<boost::exception *>(&x) );
- }
- }
+ {
+ try
+ {
+ throw_empty();
+ BOOST_TEST(false);
+ }
+ catch(
+ boost::exception & x )
+ {
+ BOOST_TEST( dynamic_cast<test_exception *>(&x) );
+ BOOST_TEST( !boost::get_error_info<test_1>(x) );
+ }
+
+ try
+ {
+ throw_empty();
+ BOOST_TEST(false);
+ }
+ catch(
+ test_exception & x )
+ {
+ BOOST_TEST( dynamic_cast<boost::exception *>(&x) );
+ }
+ }
 
 void
 test_basic_throw_catch()
- {
- try
- {
- throw_test_1("test");
- BOOST_ASSERT(false);
- }
- catch(
- boost::exception & x )
- {
- BOOST_TEST(*boost::get_error_info<test_5>(x)==std::string("test"));
- }
- try
- {
- throw_test_2();
- BOOST_ASSERT(false);
- }
- catch(
- boost::exception & x )
- {
- BOOST_TEST(boost::get_error_info<test_6>(x));
- }
- }
+ {
+ try
+ {
+ throw_test_1("test");
+ BOOST_ASSERT(false);
+ }
+ catch(
+ boost::exception & x )
+ {
+ BOOST_TEST(*boost::get_error_info<test_5>(x)==std::string("test"));
+ }
+ try
+ {
+ throw_test_2();
+ BOOST_ASSERT(false);
+ }
+ catch(
+ boost::exception & x )
+ {
+ BOOST_TEST(boost::get_error_info<test_6>(x));
+ }
+ }
 
 void
 test_catch_add_info()
- {
- try
- {
- throw_catch_add_file_name("test");
- BOOST_TEST(false);
- }
- catch(
- boost::exception & x )
- {
- BOOST_TEST(*boost::get_error_info<test_5>(x)==std::string("test"));
- }
- }
+ {
+ try
+ {
+ throw_catch_add_file_name("test");
+ BOOST_TEST(false);
+ }
+ catch(
+ boost::exception & x )
+ {
+ BOOST_TEST(*boost::get_error_info<test_5>(x)==std::string("test"));
+ }
+ }
 
 void
 test_add_tuple()
- {
- typedef boost::tuple<test_1,test_2> test_12;
- typedef boost::tuple<test_1,test_2,test_3> test_123;
- typedef boost::tuple<test_1,test_2,test_3,test_5> test_1235;
- try
- {
- throw test_exception() << test_12(42,42u);
- }
- catch(
- test_exception & x )
- {
- BOOST_TEST( *boost::get_error_info<test_1>(x)==42 );
- BOOST_TEST( *boost::get_error_info<test_2>(x)==42u );
- }
- try
- {
- throw test_exception() << test_123(42,42u,42.0f);
- }
- catch(
- test_exception & x )
- {
- BOOST_TEST( *boost::get_error_info<test_1>(x)==42 );
- BOOST_TEST( *boost::get_error_info<test_2>(x)==42u );
- BOOST_TEST( *boost::get_error_info<test_3>(x)==42.0f );
- }
- try
- {
- throw test_exception() << test_1235(42,42u,42.0f,std::string("42"));
- }
- catch(
- test_exception & x )
- {
- BOOST_TEST( *boost::get_error_info<test_1>(x)==42 );
- BOOST_TEST( *boost::get_error_info<test_2>(x)==42u );
- BOOST_TEST( *boost::get_error_info<test_3>(x)==42.0f );
- BOOST_TEST( *boost::get_error_info<test_5>(x)=="42" );
- }
- }
+ {
+ typedef boost::tuple<test_1,test_2> test_12;
+ typedef boost::tuple<test_1,test_2,test_3> test_123;
+ typedef boost::tuple<test_1,test_2,test_3,test_5> test_1235;
+ try
+ {
+ throw test_exception() << test_12(42,42u);
+ }
+ catch(
+ test_exception & x )
+ {
+ BOOST_TEST( *boost::get_error_info<test_1>(x)==42 );
+ BOOST_TEST( *boost::get_error_info<test_2>(x)==42u );
+ }
+ try
+ {
+ throw test_exception() << test_123(42,42u,42.0f);
+ }
+ catch(
+ test_exception & x )
+ {
+ BOOST_TEST( *boost::get_error_info<test_1>(x)==42 );
+ BOOST_TEST( *boost::get_error_info<test_2>(x)==42u );
+ BOOST_TEST( *boost::get_error_info<test_3>(x)==42.0f );
+ }
+ try
+ {
+ throw test_exception() << test_1235(42,42u,42.0f,std::string("42"));
+ }
+ catch(
+ test_exception & x )
+ {
+ BOOST_TEST( *boost::get_error_info<test_1>(x)==42 );
+ BOOST_TEST( *boost::get_error_info<test_2>(x)==42u );
+ BOOST_TEST( *boost::get_error_info<test_3>(x)==42.0f );
+ BOOST_TEST( *boost::get_error_info<test_5>(x)=="42" );
+ }
+ }
 
 int
 main()
- {
- basic_test();
- exception_safety_test();
- test_empty();
- test_basic_throw_catch();
- test_catch_add_info();
- test_add_tuple();
- return boost::report_errors();
- }
+ {
+ basic_test();
+ exception_safety_test();
+ test_empty();
+ test_basic_throw_catch();
+ test_catch_add_info();
+ test_add_tuple();
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/exception_fail.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/exception_fail.cpp (original)
+++ branches/proto/v4/libs/exception/test/exception_fail.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -7,6 +7,6 @@
 
 void
 tester( boost::exception & x )
- {
- throw x; //must not compile.
- }
+ {
+ throw x; //must not compile.
+ }

Modified: branches/proto/v4/libs/exception/test/exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/exception_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/exception_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,28 +8,28 @@
 
 class
 test_exception:
- public boost::exception
- {
- };
+ public boost::exception
+ {
+ };
 
 void
 test_throw()
- {
- throw test_exception();
- }
+ {
+ throw test_exception();
+ }
 
 int
 main()
- {
- try
- {
- test_throw();
- BOOST_TEST(false);
- }
- catch(
- test_exception & )
- {
- BOOST_TEST(true);
- }
- return boost::report_errors();
- }
+ {
+ try
+ {
+ test_throw();
+ BOOST_TEST(false);
+ }
+ catch(
+ test_exception & )
+ {
+ BOOST_TEST(true);
+ }
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/helper1.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/helper1.cpp (original)
+++ branches/proto/v4/libs/exception/test/helper1.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -5,17 +5,18 @@
 
 #include <boost/exception/enable_error_info.hpp>
 #include <stdexcept>
+#include <string>
 
 namespace
 boost
- {
- namespace
- exception_test
- {
- void
- throw_length_error()
- {
- throw enable_error_info( std::length_error("my length error") );
- }
- }
- }
+ {
+ namespace
+ exception_test
+ {
+ void
+ throw_length_error()
+ {
+ throw enable_error_info( std::length_error("my length error") );
+ }
+ }
+ }

Modified: branches/proto/v4/libs/exception/test/helper1.hpp
==============================================================================
--- branches/proto/v4/libs/exception/test/helper1.hpp (original)
+++ branches/proto/v4/libs/exception/test/helper1.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,12 +8,12 @@
 
 namespace
 boost
- {
- namespace
- exception_test
- {
- void throw_length_error();
- }
- }
+ {
+ namespace
+ exception_test
+ {
+ void throw_length_error();
+ }
+ }
 
 #endif

Modified: branches/proto/v4/libs/exception/test/helper2.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/helper2.cpp (original)
+++ branches/proto/v4/libs/exception/test/helper2.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,46 +8,46 @@
 
 namespace
 boost
- {
- namespace
- exception_test
- {
- inline
- some_boost_exception::
- some_boost_exception( int x ):
- x_(x)
- {
- }
-
- some_boost_exception::
- ~some_boost_exception() throw()
- {
- }
-
- inline
- some_std_exception::
- some_std_exception( int x ):
- x_(x)
- {
- }
-
- some_std_exception::
- ~some_std_exception() throw()
- {
- }
-
- template <>
- void
- throw_test_exception<some_boost_exception>( int x )
- {
- boost::throw_exception( some_boost_exception(x) );
- }
-
- template <>
- void
- throw_test_exception<some_std_exception>( int x )
- {
- boost::throw_exception( some_std_exception(x) );
- }
- }
- }
+ {
+ namespace
+ exception_test
+ {
+ inline
+ some_boost_exception::
+ some_boost_exception( int x ):
+ x_(x)
+ {
+ }
+
+ some_boost_exception::
+ ~some_boost_exception() throw()
+ {
+ }
+
+ inline
+ some_std_exception::
+ some_std_exception( int x ):
+ x_(x)
+ {
+ }
+
+ some_std_exception::
+ ~some_std_exception() throw()
+ {
+ }
+
+ template <>
+ void
+ throw_test_exception<some_boost_exception>( int x )
+ {
+ boost::throw_exception( some_boost_exception(x) );
+ }
+
+ template <>
+ void
+ throw_test_exception<some_std_exception>( int x )
+ {
+ boost::throw_exception( some_std_exception(x) );
+ }
+ }
+ }

Modified: branches/proto/v4/libs/exception/test/helper2.hpp
==============================================================================
--- branches/proto/v4/libs/exception/test/helper2.hpp (original)
+++ branches/proto/v4/libs/exception/test/helper2.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -10,38 +10,38 @@
 
 namespace
 boost
- {
- namespace
- exception_test
- {
- struct
- some_boost_exception:
- public boost::exception,
- public std::exception
- {
- explicit some_boost_exception( int x );
- virtual ~some_boost_exception() throw();
- int x_;
- };
-
- struct
- some_std_exception:
- public std::exception
- {
- explicit some_std_exception( int x );
- virtual ~some_std_exception() throw();
- int x_;
- };
-
- template <class>
- void throw_test_exception( int );
-
- template <>
- void throw_test_exception<some_boost_exception>( int );
-
- template <>
- void throw_test_exception<some_std_exception>( int );
- }
- }
+ {
+ namespace
+ exception_test
+ {
+ struct
+ some_boost_exception:
+ public boost::exception,
+ public std::exception
+ {
+ explicit some_boost_exception( int x );
+ virtual ~some_boost_exception() throw();
+ int x_;
+ };
+
+ struct
+ some_std_exception:
+ public std::exception
+ {
+ explicit some_std_exception( int x );
+ virtual ~some_std_exception() throw();
+ int x_;
+ };
+
+ template <class>
+ void throw_test_exception( int );
+
+ template <>
+ void throw_test_exception<some_boost_exception>( int );
+
+ template <>
+ void throw_test_exception<some_std_exception>( int );
+ }
+ }
 
 #endif

Modified: branches/proto/v4/libs/exception/test/throw_exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/throw_exception_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/throw_exception_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,60 +12,60 @@
 
 void
 throw_fwd( void (*thrower)(int) )
- {
- try
- {
- thrower(42);
- }
- catch(
- boost::exception & x )
- {
- x << test_int(42);
- throw;
- }
- }
+ {
+ try
+ {
+ thrower(42);
+ }
+ catch(
+ boost::exception & x )
+ {
+ x << test_int(42);
+ throw;
+ }
+ }
 
 template <class T>
 void
 tester()
- {
- try
- {
- throw_fwd( &boost::exception_test::throw_test_exception<T> );
- BOOST_ASSERT(false);
- }
- catch(
- std::exception & x )
- {
- boost::exception_ptr p = boost::clone_exception(x);
- try
- {
- rethrow_exception(p);
- BOOST_TEST(false);
- }
- catch(
- T & y )
- {
- BOOST_TEST(*boost::get_error_info<test_int>(y)==42);
- BOOST_TEST(y.x_==42);
- }
- catch(
- ... )
- {
- BOOST_TEST(false);
- }
- }
- catch(
- ... )
- {
- BOOST_TEST(false);
- }
- }
+ {
+ try
+ {
+ throw_fwd( &boost::exception_test::throw_test_exception<T> );
+ BOOST_ASSERT(false);
+ }
+ catch(
+ std::exception & x )
+ {
+ boost::exception_ptr p = boost::clone_exception(x);
+ try
+ {
+ rethrow_exception(p);
+ BOOST_TEST(false);
+ }
+ catch(
+ T & y )
+ {
+ BOOST_TEST(*boost::get_error_info<test_int>(y)==42);
+ BOOST_TEST(y.x_==42);
+ }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
+ }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
+ }
 
 int
 main()
- {
- tester<boost::exception_test::some_boost_exception>();
- tester<boost::exception_test::some_std_exception>();
- return boost::report_errors();
- }
+ {
+ tester<boost::exception_test::some_boost_exception>();
+ tester<boost::exception_test::some_std_exception>();
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/to_string_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/to_string_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/to_string_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -3,95 +3,54 @@
 //Distributed under the Boost Software License, Version 1.0. (See accompanying
 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <boost/exception/to_string_stub.hpp>
+#include <boost/exception/to_string.hpp>
 #include <boost/detail/lightweight_test.hpp>
-#include <iostream>
 
 namespace
 n1
- {
- class
- c1
- {
- };
-
- std::string
- to_string( c1 const & )
- {
- return "c1";
- }
- }
+ {
+ struct
+ c1
+ {
+ };
+ }
 
 namespace
 n2
- {
- class
- c2
- {
- };
-
- std::ostream &
- operator<<( std::ostream & s, c2 const & )
- {
- s << "c2";
- return s;
- }
- }
+ {
+ struct
+ c2
+ {
+ };
+
+ std::string
+ to_string( c2 const & )
+ {
+ return "c2";
+ }
+ }
 
 namespace
 n3
- {
- class
- c3
- {
- };
-
- std::ostream &
- operator<<( std::ostream & s, c3 const & )
- {
- s << "bad";
- return s;
- }
-
- std::string
- to_string( c3 const & )
- {
- return "c3";
- }
- }
-
-namespace
-boost
- {
- class
- to_string_tester
- {
- };
- }
-
-template <class T>
-struct
-my_stub
- {
- std::string
- operator()( T const & )
- {
- return "stub";
- }
- };
+ {
+ struct
+ c3
+ {
+ };
+
+ std::ostream &
+ operator<<( std::ostream & s, c3 const & )
+ {
+ return s << "c3";
+ }
+ }
 
 int
 main()
- {
- using namespace boost;
- BOOST_TEST( to_string(5)=="5" );
- BOOST_TEST( to_string(n1::c1())=="c1" );
- BOOST_TEST( to_string(n2::c2())=="c2" );
- BOOST_TEST( to_string(n3::c3())=="c3" );
- BOOST_TEST( to_string_stub(5)=="5" );
- BOOST_TEST( to_string_stub(n1::c1())=="c1" );
- BOOST_TEST( to_string_stub(n2::c2())=="c2" );
- BOOST_TEST( to_string_stub(n3::c3())=="c3" );
- BOOST_TEST( to_string_stub(to_string_tester(),my_stub<to_string_tester>())=="stub" );
- return boost::report_errors();
- }
+ {
+ using namespace boost;
+ BOOST_TEST( "c2"==to_string(n2::c2()) );
+ BOOST_TEST( "c3"==to_string(n3::c3()) );
+ BOOST_TEST( "42"==to_string(42) );
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/unknown_exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/unknown_exception_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/unknown_exception_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -11,74 +11,74 @@
 
 struct
 test_boost_exception:
- boost::exception
- {
- };
+ boost::exception
+ {
+ };
 
 void
 throw_boost_exception()
- {
- throw test_boost_exception() << test(42);
- }
+ {
+ throw test_boost_exception() << test(42);
+ }
 
 void
 throw_unknown_exception()
- {
- struct
- test_exception:
- std::exception
- {
- };
- throw test_exception();
- }
+ {
+ struct
+ test_exception:
+ std::exception
+ {
+ };
+ throw test_exception();
+ }
 
 int
 main()
- {
- try
- {
- throw_boost_exception();
- }
- catch(
- boost::exception & x )
- {
- boost::exception_ptr ep=boost::clone_exception(x);
- try
- {
- rethrow_exception(ep);
- }
- catch(
- boost::unknown_exception & x )
- {
- BOOST_TEST( 42==*boost::get_error_info<test>(x) );
- }
- catch(
- ... )
- {
- BOOST_TEST(false);
- }
- }
- try
- {
- throw_unknown_exception();
- }
- catch(
- std::exception & x )
- {
- boost::exception_ptr ep=boost::clone_exception(x);
- try
- {
- rethrow_exception(ep);
- }
- catch(
- boost::unknown_exception & )
- {
- }
- catch(
- ... )
- {
- BOOST_TEST(false);
- }
- }
- return boost::report_errors();
- }
+ {
+ try
+ {
+ throw_boost_exception();
+ }
+ catch(
+ boost::exception & x )
+ {
+ boost::exception_ptr ep=boost::clone_exception(x);
+ try
+ {
+ rethrow_exception(ep);
+ }
+ catch(
+ boost::unknown_exception & x )
+ {
+ BOOST_TEST( 42==*boost::get_error_info<test>(x) );
+ }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
+ }
+ try
+ {
+ throw_unknown_exception();
+ }
+ catch(
+ std::exception & x )
+ {
+ boost::exception_ptr ep=boost::clone_exception(x);
+ try
+ {
+ rethrow_exception(ep);
+ }
+ catch(
+ boost::unknown_exception & )
+ {
+ }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
+ }
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/exception/test/what_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/what_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/what_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -10,18 +10,18 @@
 
 class
 my_exception:
- public boost::exception
- {
- };
+ public boost::exception
+ {
+ };
 
 int
 main()
- {
- my_exception x;
- x << test(1);
- std::string w1 = x.what();
- x << test(2);
- std::string w2 = x.what();
- BOOST_TEST( w1!=w2 );
- return boost::report_errors();
- }
+ {
+ my_exception x;
+ x << test(1);
+ std::string w1 = x.what();
+ x << test(2);
+ std::string w2 = x.what();
+ BOOST_TEST( w1!=w2 );
+ return boost::report_errors();
+ }

Modified: branches/proto/v4/libs/function_types/doc/function_types.qbk
==============================================================================
--- branches/proto/v4/libs/function_types/doc/function_types.qbk (original)
+++ branches/proto/v4/libs/function_types/doc/function_types.qbk 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -897,7 +897,7 @@
 
 [section:BOOST_FT_CC BOOST_FT\_CC\_*]
 
-Enables a specific calling convention. * dentoes the macro suffix, as
+Enables a specific calling convention. * denotes the macro suffix, as
 defined by
 [link boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES [^BOOST_FT_CC_NAMES]]
 or

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/about_tag_types.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/about_tag_types.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/about_tag_types.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> About Tag Types</title>
+<title>About Tag Types</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
 <link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="use_cases.html" title=" Use Cases">
-<link rel="next" href="reference.html" title=" Reference">
+<link rel="prev" href="use_cases.html" title="Use Cases">
+<link rel="next" href="reference.html" title="Reference">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.about_tag_types"></a> About Tag Types</h2></div></div></div>
+<a name="boost_functiontypes.about_tag_types"></a><a class="link" href="about_tag_types.html" title="About Tag Types"> About Tag Types</a>
+</h2></div></div></div>
 <p>
       Boost.FunctionTypes uses tag types to encode properties that are not types
       per se, such as calling convention or whether a function is variadic or cv-
@@ -84,7 +85,11 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/acknowledgements.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/acknowledgements.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,20 +1,20 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Acknowledgements</title>
+<title>Acknowledgements</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
 <link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="rationale.html" title=" Rationale">
+<link rel="prev" href="rationale.html" title="Rationale">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -23,7 +23,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.acknowledgements"></a> Acknowledgements</h2></div></div></div>
+<a name="boost_functiontypes.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements"> Acknowledgements</a>
+</h2></div></div></div>
 <p>
       Thanks go to the following people for supporting the development of this library
       in one or the other way:
@@ -78,7 +79,11 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/introduction.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/introduction.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/introduction.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Introduction</title>
+<title>Introduction</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
 <link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
 <link rel="prev" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="next" href="use_cases.html" title=" Use Cases">
+<link rel="next" href="use_cases.html" title="Use Cases">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.introduction"></a> Introduction</h2></div></div></div>
+<a name="boost_functiontypes.introduction"></a><a class="link" href="introduction.html" title="Introduction"> Introduction</a>
+</h2></div></div></div>
 <p>
       Boost.FunctionTypes provides functionality to classify, decompose and synthesize
       function, function pointer, function reference and pointer to member types.
@@ -56,35 +57,34 @@
       constant called <code class="literal">value</code>.
     </p>
 <pre class="programlisting">
-<a href="reference/classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="
- is_function_pointer">is_function_pointer</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == true
+<a class="link" href="reference/classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="is_function_pointer">is_function_pointer</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == true
 </span>
-<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
- function_arity">function_arity</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == 1
+<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == 1
 </span></pre>
 <p>
       Templates that encapsulate properties that are single types contain a type
       member called <code class="literal">type</code>.
     </p>
 <pre class="programlisting">
-<a href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="
- function_type">function_type</a><span class="special">&lt;</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="comment">// is bool(int)
+<a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="function_type">function_type</a><span class="special">&lt;</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="comment">// is bool(int)
 </span>
-<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="
- result_type">result_type</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(&amp;)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="comment">// is bool
+<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="result_type">result_type</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(&amp;)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="comment">// is bool
 </span></pre>
 <p>
       Templates that encapsulate properties that are type lists model an MPL-compatible
       type sequence.
     </p>
 <pre class="programlisting">
-<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
- parameter_types">parameter_types</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;</span> <span class="comment">// models an MPL sequence
+<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;</span> <span class="comment">// models an MPL sequence
 </span></pre>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/rationale.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/rationale.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/rationale.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Rationale</title>
+<title>Rationale</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
 <link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="reference/macros.html" title=" Macros">
-<link rel="next" href="acknowledgements.html" title=" Acknowledgements">
+<link rel="prev" href="reference/macros.html" title="Macros">
+<link rel="next" href="acknowledgements.html" title="Acknowledgements">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,12 +24,13 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.rationale"></a> Rationale</h2></div></div></div>
-<a name="boost_functiontypes.rationale.error_handling_rationale"></a><h3>
-<a name="id932133"></a>
- <a href="rationale.html#boost_functiontypes.rationale.error_handling_rationale">Error
+<a name="boost_functiontypes.rationale"></a><a class="link" href="rationale.html" title="Rationale"> Rationale</a>
+</h2></div></div></div>
+<a name="boost_functiontypes.rationale.error_handling_rationale"></a><h4>
+<a name="id2644279"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.error_handling_rationale">Error
       handling rationale</a>
- </h3>
+ </h4>
 <p>
       The library does not define the required members of class templates in case
       of an error. This technique causes the compiler to stop displaying diagnostics
@@ -40,10 +41,10 @@
       The library's components have limited error conditions, so problematic input
       can be spotted easily.
     </p>
-<a name="boost_functiontypes.rationale.why_mpl_sequences_"></a><h3>
-<a name="id932170"></a>
- Why MPL Sequences?
- </h3>
+<a name="boost_functiontypes.rationale.why_mpl_sequences_"></a><h4>
+<a name="id2644312"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.why_mpl_sequences_">Why MPL Sequences?</a>
+ </h4>
 <p>
       MPL provides algorithms on Sequences, so transformations (such as turning by-value
       parameter types into const references for optimized forwarding or computing
@@ -53,20 +54,20 @@
       other Boost libraries (most importantly Fusion),
       so another reason is interoperability.
     </p>
-<a name="boost_functiontypes.rationale.pointer_to_member_object_types"></a><h3>
-<a name="id932228"></a>
- <a href="rationale.html#boost_functiontypes.rationale.pointer_to_member_object_types">Pointer
+<a name="boost_functiontypes.rationale.pointer_to_member_object_types"></a><h4>
+<a name="id2644363"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.pointer_to_member_object_types">Pointer
       to member object types</a>
- </h3>
+ </h4>
 <p>
       Despite their syntax, pointer to member object types can be seen as dereferencing
       functionals.
     </p>
-<a name="boost_functiontypes.rationale.the_classtransform_template_parameter"></a><h3>
-<a name="id932259"></a>
- <a href="rationale.html#boost_functiontypes.rationale.the_classtransform_template_parameter">The
+<a name="boost_functiontypes.rationale.the_classtransform_template_parameter"></a><h4>
+<a name="id2644388"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.the_classtransform_template_parameter">The
       ClassTransform template parameter</a>
- </h3>
+ </h4>
 <p>
       <code class="literal">This</code>-pointer, <code class="literal">this</code>-reference or just
       the object (or maybe even a smart pointer to the object) plus adjustments of
@@ -79,10 +80,10 @@
       client to adjust the class type before the sequence is formed and then treat
       all parameters uniformly.
     </p>
-<a name="boost_functiontypes.rationale.why_tag_types_"></a><h3>
-<a name="id932315"></a>
- Why tag types?
- </h3>
+<a name="boost_functiontypes.rationale.why_tag_types_"></a><h4>
+<a name="id2644439"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.why_tag_types_">Why tag types?</a>
+ </h4>
 <p>
       Let's consider the alternatives.
     </p>
@@ -98,12 +99,12 @@
       parameters do not work within MPL lambda expressions and can cause problems
       with older compilers.
     </p>
-<a name="boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_"></a><h3>
-<a name="id932365"></a>
- <a href="rationale.html#boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_">Is
+<a name="boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_"></a><h4>
+<a name="id2644479"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_">Is
       it safe to have the synthesis templates take a callable builtin type or an
       MPL sequence as the first template argument?</a>
- </h3>
+ </h4>
 <p>
       Yes, but it isn't immediately obvious as the set of possible MPL sequences
       isn't inherently disjoint from the set of callable builtin types.
@@ -113,25 +114,23 @@
       idea, because builtin types are accessible before the headers that make the
       type a sequence have been included, which can easily violate the ODR.
     </p>
-<a name="boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_"></a><h3>
-<a name="id932413"></a>
- <a href="rationale.html#boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_">Why
+<a name="boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_"></a><h4>
+<a name="id2644521"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_">Why
       does the hidden <code class="literal">this</code> parameter count for the function arity
       of member functions?</a>
- </h3>
+ </h4>
 <p>
       It was found preferable that the following condition holds:
     </p>
 <pre class="programlisting">
-<span class="identifier">mpl</span><span class="special">::</span><span class="identifier">size</span><span class="special">&lt;</span> <a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
- parameter_types">parameter_types</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="special">==</span> <a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
- function_arity">function_arity</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
+<span class="identifier">mpl</span><span class="special">::</span><span class="identifier">size</span><span class="special">&lt;</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="special">==</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
 </pre>
-<a name="boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_"></a><h3>
-<a name="id932540"></a>
- <a href="rationale.html#boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_">Why
+<a name="boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_"></a><h4>
+<a name="id2644638"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_">Why
       ignore top-level cv-qualifiers on pointers?</a>
- </h3>
+ </h4>
 <p>
       A cv-qualified pointer is still a pointer. It usually doesn't matter and even
       if it does, it's a job for Boost.TypeTraits.
@@ -139,7 +138,11 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,22 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Reference</title>
+<title>Reference</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
 <link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="about_tag_types.html" title=" About Tag Types">
-<link rel="next" href="reference/classification.html" title=" Class
- templates for type classification">
+<link rel="prev" href="about_tag_types.html" title="About Tag Types">
+<link rel="next" href="reference/classification.html" title="Class templates for type classification">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -25,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.reference"></a> Reference</h2></div></div></div>
+<a name="boost_functiontypes.reference"></a><a class="link" href="reference.html" title="Reference"> Reference</a>
+</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="reference/classification.html"> Class
       templates for type classification</a></span></dt>
@@ -39,7 +39,11 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/classification.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/classification.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/classification.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,23 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Class
- templates for type classification</title>
+<title>Class templates for type classification</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title=" Reference">
-<link rel="prev" href="../reference.html" title=" Reference">
-<link rel="next" href="decomposition.html" title=" Class templates
- for type decomposition">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="decomposition.html" title="Class templates for type decomposition">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,9 +24,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.classification"></a><a href="classification.html" title=" Class
- templates for type classification"> Class
- templates for type classification</a></h3></div></div></div>
+<a name="boost_functiontypes.reference.classification"></a><a class="link" href="classification.html" title="Class templates for type classification"> Class
+ templates for type classification</a>
+</h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_function">
         is_function</a></span></dt>
@@ -49,12 +47,11 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_function"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function" title="
- is_function">
- is_function</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_function"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function" title="is_function">
+ is_function</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">is_function</span><span class="special">;</span>
 </pre>
 <p>
@@ -93,12 +90,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_function_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="
- is_function_pointer">
- is_function_pointer</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_function_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="is_function_pointer">
+ is_function_pointer</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">is_function_pointer</span><span class="special">;</span>
 </pre>
 <p>
@@ -137,12 +133,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_function_reference"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function_reference" title="
- is_function_reference">
- is_function_reference</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_function_reference"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function_reference" title="is_function_reference">
+ is_function_reference</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">is_function_reference</span><span class="special">;</span>
 </pre>
 <p>
@@ -181,12 +176,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_member_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_pointer" title="
- is_member_pointer">
- is_member_pointer</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_member_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_pointer" title="is_member_pointer">
+ is_member_pointer</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">is_member_pointer</span><span class="special">;</span>
 </pre>
 <p>
@@ -225,9 +219,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_member_object_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_object_pointer" title="
- is_member_object_pointer">
- is_member_object_pointer</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_member_object_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_object_pointer" title="is_member_object_pointer">
+ is_member_object_pointer</a>
+</h4></div></div></div>
 <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">struct</span> <span class="identifier">is_member_object_pointer</span><span class="special">;</span>
@@ -263,12 +257,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_member_function_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_function_pointer" title="
- is_member_function_pointer">
- is_member_function_pointer</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_member_function_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_function_pointer" title="is_member_function_pointer">
+ is_member_function_pointer</a>
+</h4></div></div></div>
 <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">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">is_member_function_pointer</span><span class="special">;</span>
 </pre>
 <p>
@@ -307,12 +300,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_callable_builtin"></a><a href="classification.html#boost_functiontypes.reference.classification.is_callable_builtin" title="
- is_callable_builtin">
- is_callable_builtin</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_callable_builtin"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_callable_builtin" title="is_callable_builtin">
+ is_callable_builtin</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">is_callable_builtin</span><span class="special">;</span>
 </pre>
 <p>
@@ -351,12 +343,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.classification.is_nonmember_callable_builtin"></a><a href="classification.html#boost_functiontypes.reference.classification.is_nonmember_callable_builtin" title="
- is_nonmember_callable_builtin">
- is_nonmember_callable_builtin</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.classification.is_nonmember_callable_builtin"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_nonmember_callable_builtin" title="is_nonmember_callable_builtin">
+ is_nonmember_callable_builtin</a>
+</h4></div></div></div>
 <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">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">is_nonmember_callable_builtin</span><span class="special">;</span>
 </pre>
 <p>
@@ -397,7 +388,11 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,24 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Class templates
- for type decomposition</title>
+<title>Class templates for type decomposition</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title=" Reference">
-<link rel="prev" href="classification.html" title=" Class
- templates for type classification">
-<link rel="next" href="synthesis.html" title=" Class templates
- for type synthesis">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="classification.html" title="Class templates for type classification">
+<link rel="next" href="synthesis.html" title="Class templates for type synthesis">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,9 +24,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.decomposition"></a><a href="decomposition.html" title=" Class templates
- for type decomposition"> Class templates
- for type decomposition</a></h3></div></div></div>
+<a name="boost_functiontypes.reference.decomposition"></a><a class="link" href="decomposition.html" title="Class templates for type decomposition"> Class templates
+ for type decomposition</a>
+</h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="decomposition.html#boost_functiontypes.reference.decomposition.result_type">
         result_type</a></span></dt>
@@ -42,9 +39,9 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.decomposition.result_type"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="
- result_type">
- result_type</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.decomposition.result_type"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="result_type">
+ result_type</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">result_type</span><span class="special">;</span>
@@ -78,9 +75,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.decomposition.parameter_types"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
- parameter_types">
- parameter_types</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.decomposition.parameter_types"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">
+ parameter_types</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">ClassTransform</span> <span class="special">=</span> <span class="identifier">add_reference</span><span class="special">&lt;</span><span class="identifier">_</span><span class="special">&gt;</span> <span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">parameter_types</span><span class="special">;</span>
@@ -124,9 +121,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.decomposition.function_arity"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
- function_arity">
- function_arity</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.decomposition.function_arity"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">
+ function_arity</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">function_arity</span><span class="special">;</span>
@@ -169,9 +166,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.decomposition.components"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.components" title="
- components">
- components</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.decomposition.components"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.components" title="components">
+ components</a>
+</h4></div></div></div>
 <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">,</span> <span class="keyword">class</span> <span class="identifier">ClassTransform</span> <span class="special">=</span> <span class="identifier">add_reference</span><span class="special">&lt;</span><span class="identifier">_</span><span class="special">&gt;</span> <span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">components</span><span class="special">;</span>
@@ -216,14 +213,17 @@
         </p>
 <p>
           If <code class="literal">T</code> is no callable builtin type, the component types
- are an empty sequence and the Tag's meaning is equivalent to the <code class="literal"><a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a></code>.
+ are an empty sequence and the Tag's meaning is equivalent to the <code class="literal"><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a></code>.
         </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/macros.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/macros.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/macros.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Macros</title>
+<title>Macros</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title=" Reference">
-<link rel="prev" href="tag_types.html" title=" Tag Types">
-<link rel="next" href="../rationale.html" title=" Rationale">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="tag_types.html" title="Tag Types">
+<link rel="next" href="../rationale.html" title="Rationale">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.macros"></a> Macros</h3></div></div></div>
+<a name="boost_functiontypes.reference.macros"></a><a class="link" href="macros.html" title="Macros"> Macros</a>
+</h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY">
         BOOST_FT_MAX_ARITY</a></span></dt>
@@ -47,9 +48,9 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY" title="
- BOOST_FT_MAX_ARITY">
- BOOST_FT_MAX_ARITY</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY" title="BOOST_FT_MAX_ARITY">
+ BOOST_FT_MAX_ARITY</a>
+</h4></div></div></div>
 <p>
           Expands to a numeric value that describes the maximum function arity supported
           by the library.
@@ -66,17 +67,16 @@
       </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
- BOOST_FT_CC_NAMES">
- BOOST_FT_CC_NAMES</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES">
+ BOOST_FT_CC_NAMES</a>
+</h4></div></div></div>
 <p>
           Expands to a sequence
           of ternary tuples
           (these data types are defined in the <a href="../../../../../preprocessor/doc/index.html" target="_top">documentation
           of the Boost Preprocessor library</a>). Each sequence element describes
           one calling convention specifier. The first element in each tuple is the
- macro suffix for <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="
- BOOST_FT_CC_*"><code class="literal">BOOST_FT_CC_*</code></a>,
+ macro suffix for <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="BOOST_FT_CC_*"><code class="literal">BOOST_FT_CC_*</code></a>,
           the second element is the name of the tag that describes the calling convention
           and the third is the name of the specifier. The specifier is allowed to
           be an empty string, so the third tuple element is either BOOST_PP_EMPTY
@@ -106,15 +106,13 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_CC"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="
- BOOST_FT_CC_*">
- BOOST_FT_CC_*</a></h4></div></div></div>
-<p>
- Enables a specific calling convention. * dentoes the macro suffix, as defined
- by <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
- BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
- or <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
- BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_BUILTIN_CC_NAMES</code></a>.
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="BOOST_FT_CC_*">
+ BOOST_FT_CC_*</a>
+</h4></div></div></div>
+<p>
+ Enables a specific calling convention. * denotes the macro suffix, as defined
+ by <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
+ or <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_BUILTIN_CC_NAMES</code></a>.
         </p>
 <p>
           The macro expands to a list of restrictions, separated by the <code class="literal">|</code>
@@ -149,9 +147,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs" title="
- BOOST_FT_COMMON_X86_CCs">
- BOOST_FT_COMMON_X86_CCs</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs" title="BOOST_FT_COMMON_X86_CCs">
+ BOOST_FT_COMMON_X86_CCs</a>
+</h4></div></div></div>
 <p>
           Defining this macro causes the following macros to be defined, if not defined
           already:
@@ -164,9 +162,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_SYNTAX"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_SYNTAX" title="
- BOOST_FT_SYNTAX">
- BOOST_FT_SYNTAX</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_SYNTAX"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_SYNTAX" title="BOOST_FT_SYNTAX">
+ BOOST_FT_SYNTAX</a>
+</h4></div></div></div>
 <p>
           This macro allows to change the syntax of callable builtin types. It is
           useful to handle the compiler specific placement of the calling convention
@@ -182,9 +180,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM" title="
- BOOST_FT_NULLARY_PARAM">
- BOOST_FT_NULLARY_PARAM</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM" title="BOOST_FT_NULLARY_PARAM">
+ BOOST_FT_NULLARY_PARAM</a>
+</h4></div></div></div>
 <p>
           Set to <code class="literal">void</code> for compilers that insist on a <code class="literal">void</code>
           parameter for nullary function types, empty by default.
@@ -192,9 +190,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT" title="
- BOOST_FT_NO_CV_FUNC_SUPPORT">
- BOOST_FT_NO_CV_FUNC_SUPPORT</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT" title="BOOST_FT_NO_CV_FUNC_SUPPORT">
+ BOOST_FT_NO_CV_FUNC_SUPPORT</a>
+</h4></div></div></div>
 <p>
           Disables support for cv-qualified function types. Cv-qualified function
           types are illegal by the current standard version, but there is a pending
@@ -209,9 +207,9 @@
       </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE" title="
- BOOST_FT_PREPROCESSING_MODE">
- BOOST_FT_PREPROCESSING_MODE</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE" title="BOOST_FT_PREPROCESSING_MODE">
+ BOOST_FT_PREPROCESSING_MODE</a>
+</h4></div></div></div>
 <p>
           Makes the compiler preprocess as much as possible of the library code (rather
           than loading already-preprocessed header files) if defined.
@@ -219,24 +217,27 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING" title="
- BOOST_FT_CC_PREPROCESSING">
- BOOST_FT_CC_PREPROCESSING</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING" title="BOOST_FT_CC_PREPROCESSING">
+ BOOST_FT_CC_PREPROCESSING</a>
+</h4></div></div></div>
 <p>
           Makes the compiler preprocess the loop over possible names for custom calling
           conventions (rather than loading an already-preprocessed header file) if
           defined.
         </p>
 <p>
- This macro is defined automatically if <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
- BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
+ This macro is defined automatically if <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
           has been defined.
         </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/synthesis.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/synthesis.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/synthesis.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,23 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Class templates
- for type synthesis</title>
+<title>Class templates for type synthesis</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title=" Reference">
-<link rel="prev" href="decomposition.html" title=" Class templates
- for type decomposition">
-<link rel="next" href="tag_types.html" title=" Tag Types">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="decomposition.html" title="Class templates for type decomposition">
+<link rel="next" href="tag_types.html" title="Tag Types">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,9 +24,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.synthesis"></a><a href="synthesis.html" title=" Class templates
- for type synthesis"> Class templates
- for type synthesis</a></h3></div></div></div>
+<a name="boost_functiontypes.reference.synthesis"></a><a class="link" href="synthesis.html" title="Class templates for type synthesis"> Class templates
+ for type synthesis</a>
+</h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_type">
         function_type</a></span></dt>
@@ -41,12 +39,11 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.synthesis.function_type"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="
- function_type">
- function_type</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.synthesis.function_type"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="function_type">
+ function_type</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">function_type</span><span class="special">;</span>
 </pre>
 <p>
@@ -84,12 +81,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.synthesis.function_pointer"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="
- function_pointer">
- function_pointer</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.synthesis.function_pointer"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">
+ function_pointer</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">function_pointer</span><span class="special">;</span>
 </pre>
 <p>
@@ -127,12 +123,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.synthesis.function_reference"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_reference" title="
- function_reference">
- function_reference</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.synthesis.function_reference"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_reference" title="function_reference">
+ function_reference</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">function_reference</span><span class="special">;</span>
 </pre>
 <p>
@@ -170,12 +165,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.synthesis.member_function_pointer"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.member_function_pointer" title="
- member_function_pointer">
- member_function_pointer</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.synthesis.member_function_pointer"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.member_function_pointer" title="member_function_pointer">
+ member_function_pointer</a>
+</h4></div></div></div>
 <pre class="programlisting">
-<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">null_tag</a><span class="special">&gt;</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">member_function_pointer</span><span class="special">;</span>
 </pre>
 <p>
@@ -220,7 +214,11 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/tag_types.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/tag_types.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/reference/tag_types.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,22 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Tag Types</title>
+<title>Tag Types</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="up" href="../reference.html" title=" Reference">
-<link rel="prev" href="synthesis.html" title=" Class templates
- for type synthesis">
-<link rel="next" href="macros.html" title=" Macros">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="synthesis.html" title="Class templates for type synthesis">
+<link rel="next" href="macros.html" title="Macros">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -25,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functiontypes.reference.tag_types"></a> Tag Types</h3></div></div></div>
+<a name="boost_functiontypes.reference.tag_types"></a><a class="link" href="tag_types.html" title="Tag Types"> Tag Types</a>
+</h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.variadic">
         variadic</a></span></dt>
@@ -54,9 +54,9 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.variadic"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.variadic" title="
- variadic">
- variadic</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.variadic"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.variadic" title="variadic">
+ variadic</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">variadic</span><span class="special">;</span>
 </pre>
@@ -73,9 +73,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.non_variadic"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_variadic" title="
- non_variadic">
- non_variadic</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.non_variadic"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_variadic" title="non_variadic">
+ non_variadic</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_variadic</span><span class="special">;</span>
 </pre>
@@ -91,9 +91,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.default_cc"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.default_cc" title="
- default_cc">
- default_cc</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.default_cc"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.default_cc" title="default_cc">
+ default_cc</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">default_cc</span><span class="special">;</span>
 </pre>
@@ -109,9 +109,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.const_qualified"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.const_qualified" title="
- const_qualified">
- const_qualified</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.const_qualified"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.const_qualified" title="const_qualified">
+ const_qualified</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">const_qualified</span><span class="special">;</span>
 </pre>
@@ -127,9 +127,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.non_const"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_const" title="
- non_const">
- non_const</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.non_const"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_const" title="non_const">
+ non_const</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_const</span><span class="special">;</span>
 </pre>
@@ -145,9 +145,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.volatile_qualified"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_qualified" title="
- volatile_qualified">
- volatile_qualified</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.volatile_qualified"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_qualified" title="volatile_qualified">
+ volatile_qualified</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">volatile_qualified</span><span class="special">;</span>
 </pre>
@@ -163,9 +163,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.non_volatile"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_volatile" title="
- non_volatile">
- non_volatile</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.non_volatile"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_volatile" title="non_volatile">
+ non_volatile</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_volatile</span><span class="special">;</span>
 </pre>
@@ -181,7 +181,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.non_cv"></a> non_cv</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.non_cv"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_cv" title="non_cv"> non_cv</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_cv</span><span class="special">;</span>
 </pre>
@@ -199,9 +200,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.const_non_volatile"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.const_non_volatile" title="
- const_non_volatile">
- const_non_volatile</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.const_non_volatile"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.const_non_volatile" title="const_non_volatile">
+ const_non_volatile</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">const_non_volatile</span><span class="special">;</span>
 </pre>
@@ -219,9 +220,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.volatile_non_const"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_non_const" title="
- volatile_non_const">
- volatile_non_const</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.volatile_non_const"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_non_const" title="volatile_non_const">
+ volatile_non_const</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">volatile_non_const</span><span class="special">;</span>
 </pre>
@@ -239,9 +240,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.cv_qualfied"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.cv_qualfied" title="
- cv_qualfied">
- cv_qualfied</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.cv_qualfied"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.cv_qualfied" title="cv_qualfied">
+ cv_qualfied</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">cv_qualified</span><span class="special">;</span>
 </pre>
@@ -259,9 +260,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.null_tag"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
- null_tag">
- null_tag</a></h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.null_tag"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">
+ null_tag</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">null_tag</span><span class="special">;</span>
 </pre>
@@ -277,7 +278,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_functiontypes.reference.tag_types.tag"></a> tag</h4></div></div></div>
+<a name="boost_functiontypes.reference.tag_types.tag"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.tag" title="tag"> tag</a>
+</h4></div></div></div>
 <pre class="programlisting">
 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Tag1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tag2</span><span class="special">,</span>
     <span class="keyword">class</span> <span class="identifier">Tag3</span> <span class="special">=</span> <span class="identifier">null_tag</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tag4</span> <span class="special">=</span> <span class="identifier">null_tag</span><span class="special">&gt;</span>
@@ -310,7 +312,11 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/use_cases.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/use_cases.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/boost_functiontypes/use_cases.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Use Cases</title>
+<title>Use Cases</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
 <link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="prev" href="introduction.html" title=" Introduction">
-<link rel="next" href="about_tag_types.html" title=" About Tag Types">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="about_tag_types.html" title="About Tag Types">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functiontypes.use_cases"></a> Use Cases</h2></div></div></div>
+<a name="boost_functiontypes.use_cases"></a><a class="link" href="use_cases.html" title="Use Cases"> Use Cases</a>
+</h2></div></div></div>
 <p>
       Generic libraries that accept callable arguments are common in C++. Accepting
       a callable argument of builin type often involves a lot of repetitive code
@@ -143,8 +144,7 @@
       arguments from a type sequence in a single expression:
     </p>
 <pre class="programlisting">
-<span class="keyword">static_cast</span><span class="special">&lt;</span><a href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="
- function_pointer">function_pointer</a><span class="special">&lt;</span><span class="identifier">Seq</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;(&amp;</span> <span class="identifier">overloaded</span><span class="special">)</span>
+<span class="keyword">static_cast</span><span class="special">&lt;</span><a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">function_pointer</a><span class="special">&lt;</span><span class="identifier">Seq</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;(&amp;</span> <span class="identifier">overloaded</span><span class="special">)</span>
 </pre>
 <p>
       This technique can be occasionally more flexible than template argument deduction
@@ -165,7 +165,11 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Tobias Schwinger</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Tobias Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">

Modified: branches/proto/v4/libs/function_types/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/function_types/doc/html/index.html (original)
+++ branches/proto/v4/libs/function_types/doc/html/index.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -3,17 +3,17 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Chapter 1. Boost.FunctionTypes 2.5</title>
 <link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
-<link rel="next" href="boost_functiontypes/introduction.html" title=" Introduction">
+<link rel="next" href="boost_functiontypes/introduction.html" title="Introduction">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 </h3></div></div>
 <div><p class="copyright">Copyright © 2004 -2007 Tobias Schwinger</p></div>
 <div><div class="legalnotice">
-<a name="id905080"></a><p>
+<a name="id2626484"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -46,8 +46,8 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: November 05, 2007 at 18:24:58 +0100</small></p></td>
-<td align="right"><small></small></td>
+<td align="left"><p><small>Last revised: March 14, 2008 at 18:36:46 +0000</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav"><a accesskey="n" href="boost_functiontypes/introduction.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>

Modified: branches/proto/v4/libs/libraries.htm
==============================================================================
--- branches/proto/v4/libs/libraries.htm (original)
+++ branches/proto/v4/libs/libraries.htm 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -150,7 +150,7 @@
     process-shared mutexes, condition variables, containers and allocators, from Ion Gazta&ntilde;aga</li>
     <li>interval - Extends the
     usual arithmetic functions to mathematical intervals, from Guillaume
- Melquiond, Herv&acute; Br&ouml;nnimann and Sylvain Pion.</li>
+ Melquiond, Herv&eacute; Br&ouml;nnimann and Sylvain Pion.</li>
     <li>intrusive - Intrusive containers and algorithms, from Ion Gazta&ntilde;aga</li>
     <li>in_place_factory, typed_in_place_factory- Generic in-place construction of contained objects with a variadic argument-list, from Fernando Cacciola.</li>
     <li>io state savers - Save I/O state to
@@ -497,7 +497,7 @@
         dealing with integral types.</li>
     <li>interval - Extends the
     usual arithmetic functions to mathematical intervals, from Guillaume
- Melquiond, Herv? Br?nnimann and Sylvain Pion.</li>
+ Melquiond, Herv&eacute; Br&ouml;nnimann and Sylvain Pion.</li>
     <li>math - Several contributions in the
     domain of mathematics, from various authors.</li>
     <li>math/complex number algorithms -
@@ -716,4 +716,4 @@
 </p>
 
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: branches/proto/v4/libs/math/test/compile_test/dist_nc_beta_incl_test.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/compile_test/dist_nc_beta_incl_test.cpp (original)
+++ branches/proto/v4/libs/math/test/compile_test/dist_nc_beta_incl_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -6,17 +6,13 @@
 // Basic sanity check that header <boost/math/distributions/non_central_beta.hpp>
 // #includes all the files that it needs to.
 //
-#include <boost/math/distributions/non_central_beta.hpp>
-//
-// Note this header includes no other headers, this is
-// important if this test is to be meaningful:
-//
-#include "test_compile_result.hpp"
-
-void check()
-{
- TEST_DIST_FUNC(non_central_beta)
-}
+// In order to pass our conceptual tests, we need to forward declare
+// those functoins that the non-central beta (deliberately) doesn't
+// implement. These declarations have to appear *before* the
+// non central beta is defined, otherwise two-phase lookup
+// won't find them :-(
+//
+#include <boost/math/distributions/fwd.hpp>
 
 namespace boost{ namespace math{
 
@@ -37,6 +33,18 @@
 
 }}
 
+#include <boost/math/distributions/non_central_beta.hpp>
+//
+// Note this header includes no other headers, this is
+// important if this test is to be meaningful:
+//
+#include "test_compile_result.hpp"
+
+void check()
+{
+ TEST_DIST_FUNC(non_central_beta)
+}
+
 template class boost::math::non_central_beta_distribution<float, boost::math::policies::policy<> >;
 template class boost::math::non_central_beta_distribution<double, boost::math::policies::policy<> >;
 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS

Modified: branches/proto/v4/libs/math/test/compile_test/sf_modf_incl_test.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/compile_test/sf_modf_incl_test.cpp (original)
+++ branches/proto/v4/libs/math/test/compile_test/sf_modf_incl_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -40,9 +40,11 @@
 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
    check_result<long double>(boost::math::modf(l, &ll));
 #endif
+#ifdef BOOST_HAS_LONG_LONG
    check_result<float>(boost::math::modf(f, &llll));
    check_result<double>(boost::math::modf(d, &llll));
 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
    check_result<long double>(boost::math::modf(l, &llll));
 #endif
+#endif
 }

Modified: branches/proto/v4/libs/math/test/expinti_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/expinti_data.ipp (original)
+++ branches/proto/v4/libs/math/test/expinti_data.ipp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,5 +1,5 @@
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
- static const boost::array<boost::array<T, 2>, 337> expinti_data = {{
+ static const boost::array<boost::array<T, 2>, 336> expinti_data = {{
       { SC_(-49.689971923828125), SC_(-0.5189914452467706181911213069148082266893e-23) },
       { SC_(-49.490234375), SC_(-0.6362401135264284153452455085506782750647e-23) },
       { SC_(-49.47381591796875), SC_(-0.6469829627301154800340680350229540167762e-23) },
@@ -335,8 +335,7 @@
       { SC_(59.21694183349609375), SC_(896756596017748427943431.7704197691518272) },
       { SC_(59.3475341796875), SC_(1019568455497745443792447.961272554810421) },
       { SC_(59.574817657470703125), SC_(1274778904679711262832523.146694528881756) },
- { SC_(59.610748291015625), SC_(1320604762679106118330023.701104305685706) },
- { SC_(114.701263427734375), SC_(0.5733168299717727201285049464972941664115e48) }
+ { SC_(59.610748291015625), SC_(1320604762679106118330023.701104305685706) }
    }};
 #undef SC_
 

Modified: branches/proto/v4/libs/math/test/pow_test.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/pow_test.cpp (original)
+++ branches/proto/v4/libs/math/test/pow_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -157,6 +157,7 @@
     cout << "Testing with double precision bases and negative big exponents" << endl;
     test_with_big_exponents<double, -1>();
 
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
     cout << "Testing with long double precision bases and positive small exponents" << endl;
     test_with_small_exponents<long double, 1>();
     cout << "Testing with long double precision bases and negative small exponents" << endl;
@@ -176,6 +177,7 @@
     test_with_big_exponents<concepts::real_concept, 1>();
     cout << "Testing with concepts::real_concept precision bases and negative big exponents" << endl;
     test_with_big_exponents<concepts::real_concept, -1>();
+#endif
 
     test_return_types();
 

Modified: branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp (original)
+++ branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -96,7 +96,7 @@
       "[^|]*", // platform
       largest_type, // test type(s)
       "[^|]*large[^|]*", // test data group
- "[^|]*", 15000, 3000); // test function
+ "[^|]*", 17000, 3000); // test function
 
    //
    // Allow some long double error to creep into

Modified: branches/proto/v4/libs/math/test/test_nc_f.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_nc_f.cpp (original)
+++ branches/proto/v4/libs/math/test/test_nc_f.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -227,9 +227,9 @@
    BOOST_MATH_STD_USING
 
    //
- // 2 eps expressed as a persentage, otherwise the limit of the test data:
+ // 5 eps expressed as a persentage, otherwise the limit of the test data:
    //
- RealType tol2 = (std::max)(boost::math::tools::epsilon<RealType>() * 200, RealType(1e-25));
+ RealType tol2 = (std::max)(boost::math::tools::epsilon<RealType>() * 500, RealType(1e-25));
    RealType x = 2;
    
    boost::math::non_central_f_distribution<RealType> dist(20, 15, 30);

Modified: branches/proto/v4/libs/math/test/test_round.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_round.cpp (original)
+++ branches/proto/v4/libs/math/test/test_round.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -39,6 +39,7 @@
 template <class T, class U>
 void check_within_half(T a, U u)
 {
+ BOOST_MATH_STD_USING
    if(fabs(a-u) > 0.5f)
    {
       BOOST_ERROR("Rounded result differed by more than 0.5 from the original");
@@ -60,7 +61,6 @@
 void check_trunc_result(T a, U u)
 {
    BOOST_MATH_STD_USING
- using ::abs;
    if(fabs(a-u) >= 1)
    {
       BOOST_ERROR("Rounded result differed by more than 1 from the original");

Modified: branches/proto/v4/libs/math/test/test_zeta.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_zeta.cpp (original)
+++ branches/proto/v4/libs/math/test/test_zeta.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -79,7 +79,7 @@
       ".*", // platform
       largest_type, // test type(s)
       ".*", // test data group
- ".*", 2, 1); // test function
+ ".*", 3, 1); // test function
    add_expected_result(
       ".*", // compiler
       ".*", // stdlib

Modified: branches/proto/v4/libs/mpi/src/mpi_datatype_cache.cpp
==============================================================================
--- branches/proto/v4/libs/mpi/src/mpi_datatype_cache.cpp (original)
+++ branches/proto/v4/libs/mpi/src/mpi_datatype_cache.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,9 +8,54 @@
 
 #include <boost/archive/impl/archive_pointer_oserializer.ipp>
 #include <boost/mpi/detail/mpi_datatype_cache.hpp>
+#include <map>
 
 namespace boost { namespace mpi { namespace detail {
 
-mpi_datatype_map mpi_datatype_cache;
-
+ typedef std::map<std::type_info const*,MPI_Datatype,type_info_compare>
+ stored_map_type;
+
+ struct mpi_datatype_map::implementation
+ {
+ stored_map_type map;
+ };
+
+ mpi_datatype_map::mpi_datatype_map()
+ {
+ impl = new implementation();
+ }
+
+ mpi_datatype_map::~mpi_datatype_map()
+ {
+ // do not free after call to MPI_FInalize
+ int finalized=0;
+ BOOST_MPI_CHECK_RESULT(MPI_Finalized,(&finalized));
+ if (!finalized) {
+ // ignore errors in the destructor
+ for (stored_map_type::iterator it=impl->map.begin(); it != impl->map.end(); ++it) {
+ MPI_Type_free(&(it->second));
+ }
+ }
+ delete impl;
+ }
+
+ MPI_Datatype mpi_datatype_map::get(const std::type_info* t)
+ {
+ stored_map_type::iterator pos = impl->map.find(t);
+ if (pos != impl->map.end())
+ return pos->second;
+ else
+ return MPI_DATATYPE_NULL;
+ }
+
+ void mpi_datatype_map::set(const std::type_info* t, MPI_Datatype datatype)
+ {
+ impl->map[t] = datatype;
+ }
+
+ mpi_datatype_map& mpi_datatype_cache()
+ {
+ static mpi_datatype_map cache;
+ return cache;
+ }
 } } }

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/acknowledgements.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/acknowledgements.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/examples.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/examples.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/examples.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/faq.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/faq.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/faq.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/futher.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/futher.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/futher.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/headers.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/headers.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/headers.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/history.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/history.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/history.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -11,7 +11,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
@@ -26,7 +26,7 @@
 <a name="boost_regex.background_information.history"></a> History
 </h3></div></div></div>
 <a name="boost_regex.background_information.history.boost_1_34"></a><h5>
-<a name="id649708"></a>
+<a name="id649714"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_34">Boost
         1.34</a>
       </h5>
@@ -49,7 +49,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.background_information.history.boost_1_33_1"></a><h5>
-<a name="id649759"></a>
+<a name="id649765"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_33_1">Boost
         1.33.1</a>
       </h5>
@@ -119,7 +119,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.background_information.history.boost_1_33_0"></a><h5>
-<a name="id649888"></a>
+<a name="id649895"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_33_0">Boost
         1.33.0</a>
       </h5>
@@ -174,7 +174,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.background_information.history.boost_1_32_1"></a><h5>
-<a name="id649995"></a>
+<a name="id649992"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_32_1">Boost
         1.32.1</a>
       </h5>
@@ -182,7 +182,7 @@
           Fixed bug in partial matches of bounded repeats of '.'.
         </li></ul></div>
 <a name="boost_regex.background_information.history.boost_1_31_0"></a><h5>
-<a name="id650028"></a>
+<a name="id650025"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_31_0">Boost
         1.31.0</a>
       </h5>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/locale.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/locale.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/locale.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/performance.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/performance.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/performance.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/redist.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/redist.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/redist.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/standards.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/standards.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/standards.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
@@ -82,7 +82,7 @@
         a custom traits class.
       </p>
 <a name="boost_regex.background_information.standards.unicode"></a><h5>
-<a name="id648709"></a>
+<a name="id648715"></a>
         <a href="standards.html#boost_regex.background_information.standards.unicode">Unicode</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/thread_safety.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/thread_safety.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/thread_safety.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/captures.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/captures.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/captures.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
@@ -35,7 +35,7 @@
       accessed.
     </p>
 <a name="boost_regex.captures.marked_sub_expressions"></a><h5>
-<a name="id493039"></a>
+<a name="id493056"></a>
       <a href="captures.html#boost_regex.captures.marked_sub_expressions">Marked sub-expressions</a>
     </h5>
 <p>
@@ -218,7 +218,7 @@
       output stream.
     </p>
 <a name="boost_regex.captures.unmatched_sub_expressions"></a><h5>
-<a name="id493666"></a>
+<a name="id493679"></a>
       <a href="captures.html#boost_regex.captures.unmatched_sub_expressions">Unmatched Sub-Expressions</a>
     </h5>
 <p>
@@ -231,7 +231,7 @@
       you can determine which sub-expressions matched by accessing the <code class="computeroutput"><span class="identifier">sub_match</span><span class="special">::</span><span class="identifier">matched</span></code> data member.
     </p>
 <a name="boost_regex.captures.repeated_captures"></a><h5>
-<a name="id493729"></a>
+<a name="id493741"></a>
       <a href="captures.html#boost_regex.captures.repeated_captures">Repeated Captures</a>
     </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/algorithm.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/algorithm.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/algorithm.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/compiler.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/compiler.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/compiler.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/linkage.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/linkage.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/linkage.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/locale.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/locale.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/locale.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/tuning.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/tuning.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/tuning.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/format.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/format.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/format.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/format/perl_format.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/format/perl_format.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/format/perl_format.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/format/sed_format.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/format/sed_format.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/format/sed_format.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/install.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/install.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/install.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
@@ -49,7 +49,7 @@
       file before you can use it, instructions for specific platforms are as follows:
     </p>
 <a name="boost_regex.install.building_with_bjam"></a><h5>
-<a name="id436190"></a>
+<a name="id436188"></a>
       <a href="install.html#boost_regex.install.building_with_bjam">Building with bjam</a>
     </h5>
 <p>
@@ -58,7 +58,7 @@
       started guide</a> for more information.
     </p>
 <a name="boost_regex.install.building_with_unicode_and_icu_support"></a><h5>
-<a name="id440462"></a>
+<a name="id436222"></a>
       <a href="install.html#boost_regex.install.building_with_unicode_and_icu_support">Building
       With Unicode and ICU Support</a>
     </h5>
@@ -96,11 +96,11 @@
       ICU you are using is binary compatible with the toolset you use to build Boost.
     </p>
 <a name="boost_regex.install.building_via_makefiles"></a><h5>
-<a name="id435815"></a>
+<a name="id435695"></a>
       <a href="install.html#boost_regex.install.building_via_makefiles">Building via makefiles</a>
     </h5>
 <a name="boost_regex.install.borland_c___builder_"></a><h6>
-<a name="id489883"></a>
+<a name="id435718"></a>
       <a href="install.html#boost_regex.install.borland_c___builder_">Borland C++ Builder:</a>
     </h6>
 <div class="itemizedlist"><ul type="disc">
@@ -166,7 +166,7 @@
       a lot in compile times!
     </p>
 <a name="boost_regex.install.microsoft_visual_c___6__7__7_1_and_8"></a><h5>
-<a name="id490273"></a>
+<a name="id490291"></a>
       <a href="install.html#boost_regex.install.microsoft_visual_c___6__7__7_1_and_8">Microsoft
       Visual C++ 6, 7, 7.1 and 8</a>
     </h5>
@@ -253,7 +253,7 @@
       </li>
 </ul></div>
 <a name="boost_regex.install.gcc_2_95_and_later_"></a><h6>
-<a name="id490586"></a>
+<a name="id490603"></a>
       <a href="install.html#boost_regex.install.gcc_2_95_and_later_">GCC(2.95 and later)</a>
     </h6>
 <p>
@@ -302,7 +302,7 @@
       see the config library documentation.
     </p>
 <a name="boost_regex.install.sun_workshop_6_1"></a><h6>
-<a name="id490787"></a>
+<a name="id490804"></a>
       <a href="install.html#boost_regex.install.sun_workshop_6_1">Sun Workshop 6.1</a>
     </h6>
 <p>
@@ -347,7 +347,7 @@
       will build v9 variants of the regex library named libboost_regex_v9.a etc.
     </p>
 <a name="boost_regex.install.makefiles_for_other_compilers"></a><h6>
-<a name="id491009"></a>
+<a name="id491026"></a>
       <a href="install.html#boost_regex.install.makefiles_for_other_compilers">Makefiles
       for Other compilers</a>
     </h6>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/introduction_and_overview.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/introduction_and_overview.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/introduction_and_overview.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/partial_matches.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/partial_matches.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/partial_matches.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/bad_expression.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/bad_expression.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/bad_expression.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/basic_regex.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/basic_regex.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/basic_regex.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/charT_concept.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/charT_concept.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/charT_concept.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/iterator_concepts.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/iterator_concepts.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/iterator_concepts.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/traits_concept.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/traits_concept.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/traits_concept.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/old_regex.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/old_regex.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/old_regex.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_format.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_format.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_format.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_grep.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_grep.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_grep.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_split.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_split.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_split.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/error_type.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/error_type.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/error_type.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_flag_type.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_flag_type.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_flag_type.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_results.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_results.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_results.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/intro.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/intro.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/intro.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/posix.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/posix.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/posix.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_iterator.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_iterator.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_iterator.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_match.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_match.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_match.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_replace.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_replace.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_replace.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_search.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_search.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_search.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_token_iterator.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_token_iterator.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_token_iterator.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_traits.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_traits.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_traits.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/sub_match.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/sub_match.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/sub_match.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_extended.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_extended.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_extended.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_syntax.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_syntax.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_syntax.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/digraphs.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/digraphs.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/digraphs.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/named_unicode.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/named_unicode.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/named_unicode.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/leftmost_longest_rule.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/leftmost_longest_rule.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/leftmost_longest_rule.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
@@ -28,7 +28,7 @@
       Syntax</a>
 </h3></div></div></div>
 <a name="boost_regex.syntax.perl_syntax.synopsis"></a><h4>
-<a name="id497765"></a>
+<a name="id497764"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.synopsis">Synopsis</a>
       </h4>
 <p>
@@ -45,7 +45,7 @@
 </span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span> <span class="identifier">e2</span><span class="special">(</span><span class="identifier">my_expression</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span><span class="special">::</span><span class="identifier">perl</span><span class="special">|</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span><span class="special">::</span><span class="identifier">icase</span><span class="special">);</span>
 </pre>
 <a name="boost_regex.syntax.perl_syntax.perl_regular_expression_syntax"></a><h4>
-<a name="id497986"></a>
+<a name="id497985"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.perl_regular_expression_syntax">Perl
         Regular Expression Syntax</a>
       </h4>
@@ -55,7 +55,7 @@
       </p>
 <pre class="programlisting">.[{()\*+?|^$</pre>
 <a name="boost_regex.syntax.perl_syntax.wildcard"></a><h5>
-<a name="id498024"></a>
+<a name="id498023"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.wildcard">Wildcard</a>
       </h5>
 <p>
@@ -65,7 +65,7 @@
 <div class="itemizedlist"><ul type="disc">
 <li>
           The NULL character when the <a href="../ref/match_flag_type.html" title="match_flag_type">flag
- <code class="computeroutput"><span class="identifier">match_no_dot_null</span></code></a>
+ <code class="computeroutput"><span class="identifier">match_not_dot_null</span></code></a>
           is passed to the matching algorithms.
         </li>
 <li>
@@ -75,7 +75,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.syntax.perl_syntax.anchors"></a><h5>
-<a name="id498105"></a>
+<a name="id498104"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.anchors">Anchors</a>
       </h5>
 <p>
@@ -85,7 +85,7 @@
         A '$' character shall match the end of a line.
       </p>
 <a name="boost_regex.syntax.perl_syntax.marked_sub_expressions"></a><h5>
-<a name="id498139"></a>
+<a name="id498138"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.marked_sub_expressions">Marked
         sub-expressions</a>
       </h5>
@@ -97,7 +97,7 @@
         to by a back-reference.
       </p>
 <a name="boost_regex.syntax.perl_syntax.non_marking_grouping"></a><h5>
-<a name="id498194"></a>
+<a name="id498193"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_marking_grouping">Non-marking
         grouping</a>
       </h5>
@@ -111,7 +111,7 @@
         out any separate sub-expressions.
       </p>
 <a name="boost_regex.syntax.perl_syntax.repeats"></a><h5>
-<a name="id498283"></a>
+<a name="id498282"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.repeats">Repeats</a>
       </h5>
 <p>
@@ -197,7 +197,7 @@
         operator to be applied to.
       </p>
 <a name="boost_regex.syntax.perl_syntax.non_greedy_repeats"></a><h5>
-<a name="id498756"></a>
+<a name="id498755"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_greedy_repeats">Non greedy
         repeats</a>
       </h5>
@@ -228,7 +228,7 @@
         input as possible.
       </p>
 <a name="boost_regex.syntax.perl_syntax.back_references"></a><h5>
-<a name="id498897"></a>
+<a name="id498900"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.back_references">Back references</a>
       </h5>
 <p>
@@ -248,7 +248,7 @@
 <pre class="programlisting"><span class="identifier">aaabba</span>
 </pre>
 <a name="boost_regex.syntax.perl_syntax.alternation"></a><h5>
-<a name="id498980"></a>
+<a name="id498983"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.alternation">Alternation</a>
       </h5>
 <p>
@@ -277,7 +277,7 @@
         <code class="computeroutput"><span class="special">(?:</span><span class="identifier">abc</span><span class="special">)??</span></code> has exactly the same effect.
       </p>
 <a name="boost_regex.syntax.perl_syntax.character_sets"></a><h5>
-<a name="id499168"></a>
+<a name="id499172"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_sets">Character sets</a>
       </h5>
 <p>
@@ -290,7 +290,7 @@
         A bracket expression may contain any combination of the following:
       </p>
 <a name="boost_regex.syntax.perl_syntax.single_characters"></a><h6>
-<a name="id499227"></a>
+<a name="id499230"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.single_characters">Single characters</a>
       </h6>
 <p>
@@ -298,7 +298,7 @@
         or 'c'.
       </p>
 <a name="boost_regex.syntax.perl_syntax.character_ranges"></a><h6>
-<a name="id499277"></a>
+<a name="id499281"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_ranges">Character
         ranges</a>
       </h6>
@@ -311,7 +311,7 @@
         regular expression, then ranges are locale sensitive.
       </p>
 <a name="boost_regex.syntax.perl_syntax.negation"></a><h6>
-<a name="id499358"></a>
+<a name="id499361"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.negation">Negation</a>
       </h6>
 <p>
@@ -320,7 +320,7 @@
         range <code class="computeroutput"><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span></code>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.character_classes"></a><h6>
-<a name="id499440"></a>
+<a name="id499444"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_classes">Character
         classes</a>
       </h6>
@@ -330,7 +330,7 @@
         <a href="character_classes.html" title="Character Class Names">character class names</a>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.collating_elements"></a><h6>
-<a name="id499523"></a>
+<a name="id499527"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.collating_elements">Collating
         Elements</a>
       </h6>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/unicode.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/unicode.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/unicode.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,7 +12,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
@@ -30,7 +30,7 @@
       There are two ways to use Boost.Regex with Unicode strings:
     </p>
 <a name="boost_regex.unicode.rely_on_wchar_t"></a><h5>
-<a name="id492766"></a>
+<a name="id492782"></a>
       <a href="unicode.html#boost_regex.unicode.rely_on_wchar_t">Rely on wchar_t</a>
     </h5>
 <p>
@@ -56,7 +56,7 @@
       </li>
 </ul></div>
 <a name="boost_regex.unicode.use_a_unicode_aware_regular_expression_type_"></a><h5>
-<a name="id492949"></a>
+<a name="id492966"></a>
       <a href="unicode.html#boost_regex.unicode.use_a_unicode_aware_regular_expression_type_">Use
       a Unicode Aware Regular Expression Type.</a>
     </h5>

Modified: branches/proto/v4/libs/regex/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/index.html (original)
+++ branches/proto/v4/libs/regex/doc/html/index.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -10,7 +10,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
@@ -28,7 +28,7 @@
 </h3></div></div></div>
 <div><p class="copyright">Copyright © 1998 -2007 John Maddock</p></div>
 <div><div class="legalnotice">
-<a name="id437578"></a><p>
+<a name="id435844"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -196,7 +196,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: February 21, 2008 at 12:52:05 GMT</small></p></td>
+<td align="left"><p><small>Last revised: April 11, 2008 at 08:50:33 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/syntax_perl.qbk
==============================================================================
--- branches/proto/v4/libs/regex/doc/syntax_perl.qbk (original)
+++ branches/proto/v4/libs/regex/doc/syntax_perl.qbk 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -34,7 +34,7 @@
 any single character except:
 
 * The NULL character when the [link boost_regex.ref.match_flag_type flag
- `match_no_dot_null`] is passed to the matching algorithms.
+ `match_not_dot_null`] is passed to the matching algorithms.
 * The newline character when the [link boost_regex.ref.match_flag_type
    flag `match_not_dot_newline`] is passed to
    the matching algorithms.

Modified: branches/proto/v4/libs/smart_ptr/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/smart_ptr/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/smart_ptr/test/Jamfile.v2 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -43,5 +43,6 @@
           [ run spinlock_try_test.cpp ]
           [ run spinlock_try_test.cpp : : : <threading>multi : spinlock_try_test.mt ]
           [ run spinlock_pool_test.cpp ]
+ [ run sp_accept_owner_test.cpp ]
         ;
 }

Modified: branches/proto/v4/libs/smart_ptr/test/esft_constructor_test.cpp
==============================================================================
--- branches/proto/v4/libs/smart_ptr/test/esft_constructor_test.cpp (original)
+++ branches/proto/v4/libs/smart_ptr/test/esft_constructor_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -72,7 +72,7 @@
 template<typename T, typename U>
 bool are_shared_owners(const boost::shared_ptr<T> &a, const boost::shared_ptr<U> &b)
 {
- return a && !(a < b) && !(b < a);
+ return !(a < b) && !(b < a);
 }
 
 struct Y: public boost::enable_shared_from_this<Y>

Deleted: branches/proto/v4/libs/spirit/change_log.html
==============================================================================
--- branches/proto/v4/libs/spirit/change_log.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
+++ (empty file)
@@ -1,225 +0,0 @@
-<html>
-<head>
-<title>Spirit Change Log</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="doc/theme/style.css" type="text/css">
-</head>
-
-<body>
-
-<h2>Spirit Change Log</h2>
-<h2>1.8.6</h2>
-<ul>
- <li>Fixed a integer overflow bug preventing to fail parsing on certain large integers. This bug was reported and fixed by Michael Andersen Nexø</li>
-</ul>
-<h2>1.8.5</h2>
-<ul>
- <li>For performance reasons, leaf_node_d/token_node_d have been changed to implicit lexems that create leaf nodes in one shot. The old token_node_d is still available and called reduced_node_d, now.</li>
- <li>It's now possible to phoenix::bind (version 1) symbols::add.</li>
-</ul>
-<h2>1.8.4</h2>
-<ul>
- <li>Fixed no_actions bug where no_action is applied recursively.</li>
- <li>Fixed the regex_p parser for Boost &gt;= V1.33.0 </li>
- <li>Implemented a workaround for namespace issues VC++ has with Spirit's file_iterators</li>
- <li>Fixed bug in tree match policies that prevented using gen_pt/ast_node_d,
- <a href="http://article.gmane.org/gmane.comp.parsers.spirit.general/9013">reported
- by Jascha Wetzel</a>.</li>
- <li>Made position_iterator usable with wchar_t based strings. </li>
-</ul>
-<h2>1.8.3</h2>
-<ul>
- <li>Config correction for Sun C++ by
-
-
- Steve Clamage (see this link). </li>
- <li>Fixed multi_pass_iterator for 64 platforms, where sizeof(int) != sizeof(ptr_type).Fixed bug that prevents the use of closures with grammars with multiple entry points, reported by David Pierre</li>
- <li>Fixed bug that prevented embedding of grammars with multiple entry points, reported by David Pierre</li>
- <li>Added '\0' to the set of valid escaped characters for escape_ch_p.</li>
- <li>Fixed a switch_p bug when used with a phoenix::actor as the conditional expression.</li>
- <li>__LINE__ macro now gets expanded in BOOST_SPIRIT_ASSERT_EXCEPTION</li>
- <li>Fixed a bug in the intersection parser reported by Yusaku Sugai</li>
- <li>The symbol parser uses the null character internally. Checks were added so that:
- <ul>
- <li>tst.add asserts if string contains the null character</li>
- <li>tst.find doesn't match null characters in the input</li>
- </ul></li>
- <li>Fixed match_attr_traits.ipp to allow non-POD to pass through. The previous version taking in the ellipsis &quot;...&quot; does not allow PODs to pass through.</li>
- <li>Allow evaluation to int as condition to if_p parser.</li>
- <li>Applied performance improvement changes to the PT/AST code as suggested by Stefan Slapeta. </li>
- <li>Fixed several problems with AST tree node directives (inner_node_d[], discard_first_node[], discard_last_node[] and infix_node_d[]). </li>
-</ul>
-<h2>1.8.2</h2>
-<p>Maintenance release (almost the same as 1.8.1 plus a few fixes here and there)</p>
-<ul>
- <li>Added specializations to str_p and ch_p to allow str_p('c') and ch_p("c") thus fixing some non-bugs</li>
- <li>Fixed bug where a match&lt;T&gt; is a variant.</li>
- <li>added Jamfile/Jamrules from CVS to spirit-1.8.1/</li>
- <li>added boost-build.jam from boost to spirit-1.8.1/</li>
- <li>disabled template multi-threading in libs/spirit/test/Jamfile</li>
- <li>added a boost-header-include rule (from spirit-header-include) pointing to miniboost in libs/spirit/test/Jamfile</li>
- <li>Fixed if_p inconsistency</li>
-</ul>
-<h2>1.6.2</h2>
-<p>The Spirit 1.6.2 release is a bug-fix release only, no new features were introduced.</p>
-<ul>
- <li>wchar_t friendly implementation of graph_p</li>
- <li>Modified escape_char_parser::parse() to use a static parser instead of a rule. This will make it more friendly to use in trees. It should also be a little more efficient.</li>
- <li>Moved to
-
-
- Boost Software license 1.0. </li>
- <li> workaround for Error 322 name lookup in base class specialization finds type</li>
- <li> fixed limit_d bug</li>
- <li> [numerics] Workaround for aC++</li>
- <li> Fixed a bug in the switch_p parser.</li>
- <li> Fixed a EOI problem in multi_pass</li>
- <li>added Jamfile/Jamrules from CVS to spirit-1.6.1/</li>
- <li>added boost-build.jam from boost to spirit-1.6.1/</li>
- <li>disabled template multi-threading in libs/spirit/test/Jamfile</li>
- <li>added a boost-header-include rule (from spirit-header-include) pointing to miniboost in libs/spirit/test/Jamfile</li>
-</ul>
-<h2>1.8.1 (Released with Boost 1.32.0)</h2>
-<p>The Spirit 1.8.1 release is a bug-fix release only, no new features were introduced.</p>
-<ul>
- <li>Spirit now requires at least Boost 1.32.0 to compile correctly</li>
- <li>Removed the support for the older iterator adaptor library and </li>
- <li>Moved to use the new MPL library</li>
- <li>Spirit was moved to use the Boost Software License 1.0.</li>
- <li>Fixed several parsers to support post-skips more correctly.</li>
- <li>Fixed a no_node_d[] bug.</li>
- <li>Fixed a bug in shortest_d[].</li>
- <li>Fixed a bug in limit_d[].</li>
- <li>Fixed parser traversal meta code.</li>
- <li>Fixed several bugs in switch_p.</li>
- <li>Fixed AST generating problems, in particular with the loops related parsers.</li>
- <li>Fixed several bugs in the multi_pass iterator.
- <ul>
- <li>Fixed a problem, when the used base iterator returned a value_type and not a reference from its dereferencing operator.</li>
- <li>Fixed iterator_traits problem</li>
- <li>Fixed an EOI problem</li>
- <li>Fixed a bug, when used with std::cin</li>
- </ul>
- </li>
- <li>Found a bug in grammar.ipp when BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE is defined</li>
- <li>Rewritten safe_bool to use CRTP - now works also on MWCW, fixed several bugs with the implementation.</li>
- <li>Fixed and extended the debug diagnostics printed by the parse tree code.</li>
-</ul>
-<h2>1.8.0 (Released with Boost 1.31.0; Includes unreleased 1.7.1)</h2>
-<ul>
- <li>Fixed a wchar_t problem in the regex_p parser.</li>
- <li>removed code and workarounds for old compilers (VC6/7 and Borland)</li>
- <li> Changed license to the new boost license.</li>
- <li> Modified escape_char_parser::parse() to use a static parser instead of a rule. This will make it more friendly to use in trees. It should also be a little more efficient.</li>
-</ul>
-<h2>1.7.1 (Unreleased; becomes 1.8.0)</h2>
-<ul>
- <li>Added a full suite of predefined actors.</li>
- <li>Moved rule_alias and stored_rule from core/non-terminal to dynamic.<br>
- Made as_parser a public API in meta/as_parser.hpp</li>
- <li>Separated Core.Meta into its own module</li>
- <li>Refactored Utility module<br>
- Moved some files into Utility.Parsers</li>
-</ul>
-<blockquote>
- <ul>
- <li>utilities
- <ul>
- <li>parsers
- <ul>
- <li>chset, regex, escape_char<br>
- confix, list, distinct<br>
- functor_parser</li>
- </ul>
- </li>
- </ul>
- </li>
- <li> support
- <ul>
- <li>scoped_lock<br>
- flush_multi_pass<br>
- grammar_def</li>
- </ul>
- </li>
- <li> actors
- <ul>
- <li>assign</li>
- </ul>
- </li>
- </ul>
-</blockquote>
-<ul>
- <li>Stored rules</li>
- <li>Added the switch_p and select_p dynamic parsers.</li>
- <li>Multiple scanner support for rules.</li>
- <li>The Rule's Scanner, Context and Tag template parameters can be specified in any order now. If a template parameter is missing, it will assume the defaults. See test/rule_tests.cpp.</li>
- <li>Introduced the possibility to specify more than one start rule from a grammar.</li>
- <li>Added an implementation of the file_iterator iterator based on the new Boost iterator_adaptors (submitted originally by Thomas Witt).</li>
-</ul>
-<p><em> [The transition to the new iterator_adaptors should be complete now.]</em></p>
-<ul>
- <li>Added an implementation of the fixed_size_queue iterator based on the new Boost iterator_adaptors.</li>
- <li> wchar_t friendly implementation of graph_p</li>
- <li>made the copy-constructor and assignment-operator of parser_error_base public to clear VC7.1 C4673 warning. Added copy-constructor and assignment operator to parser_error for clarity of intent.</li>
-</ul>
-<h2>1.7.0</h2>
-<ul>
- <li> assign(string) semantic action now works in VC6</li>
- <li>parsers need not be default constructible </li>
- <li>simplified aggregation of binary and unary parsers (more compiler friendly)</li>
- <li>epsilon workarounds for VC++</li>
- <li>match's attribute now uses boost.optional</li>
- <li>subrules can now have closures</li>
- <li>project wide 64 bit compatibility</li>
- <li>dynamic_parser_tag, reissue of rule.set_id(id);</li>
- <li>numerous primitives improvements and workarounds for problematic compilers</li>
- <li>proper complement (~) of single char parser primitives and chsets</li>
- <li>intuitive handling of lexeme_d </li>
- <li>wide_phrase_scanner_t typedef</li>
- <li>dynamic parser improvements (better support for more compilers)</li>
- <li>complete rewrite of the file_iterator (using boost.iterator_adapters). Supports
- memory maps wherever available</li>
- <li>multi_pass updates (compatibility with more compilers (e.g VC7) and more)</li>
- <li>position_iterator improvements</li>
- <li>better phoenix support for more compilers</li>
- <li>phoenix new_(...) construct</li>
- <li>new lazy_p parser</li>
- <li>utility.distinct parser (undocumented)</li>
- <li>chset operators improvements </li>
- <li>confix_p streamlining and improvements</li>
- <li>numerous Boost integration improvements</li>
-</ul>
-<h2>Bug fixes (1.7.0 and 1.6.0)</h2>
-<ul>
- <li> Fixed. Using MSVC++6 (SP5), calling the assign action with a string value
- on parsers using the file_iterator will not work. </li>
- <li> Fixed: using assign semantic action in a grammar with a multi_pass iterator
- adaptor applied to an std::istream_iterator resulted in a failure to compile
- under msvc 7.0. </li>
- <li> Fixed: There is a bug in the &quot;range_run&lt;CharT&gt;::set (range&lt;CharT&gt;
- const&amp; r)&quot; function in the &quot;boost\spirit\utility\impl\chset\range_run.ipp&quot;.
- </li>
- <li> Fixed: handling of trailing whitespace bug (ast_parse/pt_parse related)</li>
- <li> Fixed: comment_p and end of data bug</li>
- <li> Fixed: <a href="http://article.gmane.org/gmane.comp.parsers.spirit.general/4029">Most
- trailing space bug</a>:</li>
- <li> Fixed:<br>
- chset&lt;&gt;::operator~(range&lt;&gt;) bug<br>
- operator&amp;(chset&lt;&gt;, range&lt;&gt;) bug<br>
- operator&amp;(range&lt;&gt;, chset&lt;&gt;) bug</li>
- <li> Fixed: <a href="http://sourceforge.net/mailarchive/forum.php?thread_id=2008510&forum_id=25901">impl::detach_clear
- bug</a></li>
- <li> Fixed: <a href="http://article.gmane.org/gmane.comp.parsers.spirit.general/3678">mismatch
- closure return type bug</a></li>
- <li> Fixed: access_node_d[]
- and access_match_d[]
- iterator bugs</li>
- <li> Fixed a bug regarding threadsafety of Phoenix/Spirit closures.</li>
- <li> Added missing include files to miniboost</li>
-</ul>
-<p> <font size="2" color="#666666">Copyright &copy; 1998-2005 Joel de Guzman, Hartmut Kaiser</font><br>
-<font size="2"><font color="#666666">Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) </font> </font></p>
-<p>&nbsp;</p>
-
-</body>
-</html>

Modified: branches/proto/v4/libs/statechart/doc/faq.html
==============================================================================
--- branches/proto/v4/libs/statechart/doc/faq.html (original)
+++ branches/proto/v4/libs/statechart/doc/faq.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -247,6 +247,8 @@
   <b>initiate();</b>
 }
 </pre>
+ <p>The PingPong example demonstrates how the inner workings of an
+ asynchronous_state_machine<> subclass can be hidden.</p>
 
   <h2><a name="MachineInheritance" id="MachineInheritance">Is it possible to
   inherit from a given state machine and modify its layout in the

Modified: branches/proto/v4/libs/statechart/doc/future_and_history.html
==============================================================================
--- branches/proto/v4/libs/statechart/doc/future_and_history.html (original)
+++ branches/proto/v4/libs/statechart/doc/future_and_history.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -154,6 +154,8 @@
       (due to feedback from Sean Kelly)</li>
     <li>Adapted fifo_scheduler&lt;&gt; to the changed allocator interface of
       boost::function</li>
+ <li>Changed the PingPong example to demonstrate how the inner workings of
+ an asynchronous_state_machine<> subclass can be hidden</li>
   </ul>
 
   <p>1.35.0</p>

Modified: branches/proto/v4/libs/statechart/example/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/statechart/example/Jamfile.v2 (original)
+++ branches/proto/v4/libs/statechart/example/Jamfile.v2 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -59,11 +59,11 @@
     [ statechart-st-example-build KeyboardNative
         : Keyboard : Keyboard : $(native) ]
     [ statechart-st-example-build PingPongSingle
- : PingPong : PingPong : $(custom) ]
+ : PingPong : PingPong Player : $(custom) ]
     [ statechart-mt-example-build PingPongMulti1
- : PingPong : PingPong : $(custom) ]
+ : PingPong : PingPong Player : $(custom) ]
     [ statechart-mt-example-build PingPongMulti2
- : PingPong : PingPong : $(custom) <define>USE_TWO_THREADS ]
+ : PingPong : PingPong Player : $(custom) <define>USE_TWO_THREADS ]
     [ statechart-st-example-build StopWatch : StopWatch : StopWatch ]
     [ statechart-st-example-build StopWatch2 : StopWatch : StopWatch2 ]
     [ statechart-st-example-build PerformanceNormal

Modified: branches/proto/v4/libs/statechart/example/PingPong/PingPong.cpp
==============================================================================
--- branches/proto/v4/libs/statechart/example/PingPong/PingPong.cpp (original)
+++ branches/proto/v4/libs/statechart/example/PingPong/PingPong.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -29,20 +29,14 @@
 //////////////////////////////////////////////////////////////////////////////
 
 
+#include "Player.hpp"
 
-#include <boost/statechart/event.hpp>
 #include <boost/statechart/asynchronous_state_machine.hpp>
-#include <boost/statechart/state.hpp>
-#include <boost/statechart/transition.hpp>
-#include <boost/statechart/custom_reaction.hpp>
-#include <boost/statechart/fifo_scheduler.hpp>
 #include <boost/statechart/fifo_worker.hpp>
 
 #include <boost/mpl/list.hpp>
-
 #include <boost/config.hpp>
 #include <boost/intrusive_ptr.hpp>
-#include <boost/shared_ptr.hpp>
 #include <boost/function.hpp>
 #include <boost/bind.hpp>
 
@@ -50,31 +44,8 @@
 # include <boost/thread/thread.hpp>
 #endif
 
-#ifdef CUSTOMIZE_MEMORY_MANAGEMENT
-# ifdef BOOST_HAS_THREADS
- // for some reason the following is not automatically defined
-# if defined( BOOST_MSVC ) | defined( BOOST_INTEL )
-# define __WIN32__
-# endif
-# else
-# define BOOST_NO_MT
-# endif
-
-# ifdef BOOST_MSVC
-# pragma warning( push )
-# pragma warning( disable: 4127 ) // conditional expression is constant
-# endif
-
-# include <boost/pool/pool_alloc.hpp>
-
-# ifdef BOOST_MSVC
-# pragma warning( pop )
-# endif
-#endif
-
 #include <iostream>
 #include <ctime>
-#include <memory> // std::allocator
 
 #ifdef BOOST_NO_STDC_NAMESPACE
 namespace std
@@ -93,133 +64,12 @@
 
 
 namespace sc = boost::statechart;
-namespace mpl = boost::mpl;
 
 
 
 //////////////////////////////////////////////////////////////////////////////
 const unsigned int noOfEvents = 1000000;
 
-template< class T >
-boost::intrusive_ptr< T > MakeIntrusive( T * pObject )
-{
- return boost::intrusive_ptr< T >( pObject );
-}
-
-
-//////////////////////////////////////////////////////////////////////////////
-struct BallReturned : sc::event< BallReturned >
-{
- boost::function1< void, const boost::intrusive_ptr< const BallReturned > & >
- returnToOpponent;
- boost::function0< void > abortGame;
-};
-
-struct GameAborted : sc::event< GameAborted > {};
-
-#ifdef CUSTOMIZE_MEMORY_MANAGEMENT
-typedef boost::fast_pool_allocator< int > MyAllocator;
-typedef sc::fifo_scheduler<
- sc::fifo_worker< MyAllocator >, MyAllocator > MyScheduler;
-#else
-typedef std::allocator< void > MyAllocator;
-typedef sc::fifo_scheduler<> MyScheduler;
-#endif
-
-struct Waiting;
-struct Player : sc::asynchronous_state_machine<
- Player, Waiting, MyScheduler, MyAllocator >
-{
- public:
- Player( my_context ctx, unsigned int maxNoOfReturns ) :
- my_base( ctx ),
- maxNoOfReturns_( maxNoOfReturns )
- {
- }
-
- static unsigned int & TotalNoOfProcessedEvents()
- {
- return totalNoOfProcessedEvents_;
- }
-
- unsigned int GetMaxNoOfReturns() const
- {
- return maxNoOfReturns_;
- }
-
- private:
- static unsigned int totalNoOfProcessedEvents_;
- const unsigned int maxNoOfReturns_;
-};
-
-unsigned int Player::totalNoOfProcessedEvents_ = 0;
-
-
-struct Waiting : sc::state< Waiting, Player >
-{
- public:
- //////////////////////////////////////////////////////////////////////////
- typedef mpl::list<
- sc::custom_reaction< BallReturned >,
- sc::custom_reaction< GameAborted >
- > reactions;
-
- Waiting( my_context ctx ) :
- my_base( ctx ),
- noOfReturns_( 0 ),
- pBallReturned_( new BallReturned() )
- {
- outermost_context_type & machine = outermost_context();
- // as we will always return the same event to the opponent, we construct
- // and fill it here so that we can reuse it over and over
- pBallReturned_->returnToOpponent = boost::bind(
- &MyScheduler::queue_event,
- &machine.my_scheduler(), machine.my_handle(), _1 );
- pBallReturned_->abortGame = boost::bind(
- &MyScheduler::queue_event,
- &machine.my_scheduler(), machine.my_handle(),
- MakeIntrusive( new GameAborted() ) );
- }
-
- sc::result react( const GameAborted & )
- {
- return DestroyMyself();
- }
-
- sc::result react( const BallReturned & ballReturned )
- {
- outermost_context_type & machine = outermost_context();
- ++machine.TotalNoOfProcessedEvents();
-
- if ( noOfReturns_++ < machine.GetMaxNoOfReturns() )
- {
- ballReturned.returnToOpponent( pBallReturned_ );
- return discard_event();
- }
- else
- {
- ballReturned.abortGame();
- return DestroyMyself();
- }
- }
-
- private:
- //////////////////////////////////////////////////////////////////////////
- sc::result DestroyMyself()
- {
- outermost_context_type & machine = outermost_context();
- machine.my_scheduler().destroy_processor( machine.my_handle() );
- machine.my_scheduler().terminate();
- return terminate();
- }
-
- // avoids C4512 (assignment operator could not be generated)
- Waiting & operator=( const Waiting & );
-
- unsigned int noOfReturns_;
- const boost::intrusive_ptr< BallReturned > pBallReturned_;
-};
-
 
 //////////////////////////////////////////////////////////////////////////////
 char GetKey()
@@ -274,15 +124,15 @@
         MyScheduler & scheduler2 = scheduler1;
         #endif
 
- MyScheduler::processor_handle player1 =
+ MyScheduler::processor_handle player1 =
           scheduler1.create_processor< Player >( noOfEvents / 2 );
         scheduler1.initiate_processor( player1 );
- MyScheduler::processor_handle player2 =
+ MyScheduler::processor_handle player2 =
           scheduler2.create_processor< Player >( noOfEvents / 2 );
         scheduler2.initiate_processor( player2 );
 
         boost::intrusive_ptr< BallReturned > pInitialBall = new BallReturned();
- pInitialBall->returnToOpponent = boost::bind(
+ pInitialBall->returnToOpponent = boost::bind(
           &MyScheduler::queue_event, &scheduler1, player1, _1 );
         pInitialBall->abortGame = boost::bind(
           &MyScheduler::queue_event,

Modified: branches/proto/v4/libs/statechart/example/PingPong/PingPong.vcproj
==============================================================================
--- branches/proto/v4/libs/statechart/example/PingPong/PingPong.vcproj (original)
+++ branches/proto/v4/libs/statechart/example/PingPong/PingPong.vcproj 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -1,285 +1,301 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="PingPong"
- ProjectGUID="{11CCA9FC-6012-4B64-8C61-808D0F8D1B51}"
- RootNamespace="PingPong"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_ALL_DYN_LINK"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- BufferSecurityCheck="true"
- DisableLanguageExtensions="false"
- TreatWChar_tAsBuiltInType="true"
- ForceConformanceInForLoopScope="true"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- WarnAsError="true"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)/PingPong.exe"
- LinkIncremental="2"
- AdditionalLibraryDirectories="&quot;$(ProjectDir)..\..\..\..\bin.v2\libs\thread\build\msvc-9.0\$(ConfigurationName)\threading-multi&quot;;&quot;$(ProjectDir)..\..\..\..\bin.v2\libs\date_time\build\msvc-9.0\$(ConfigurationName)\threading-multi&quot;"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/PingPong.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="copy $(ProjectDir)..\..\..\..\bin.v2\libs\thread\build\msvc-9.0\$(ConfigurationName)\threading-multi\*.dll $(TargetDir)&#x0D;&#x0A;copy $(ProjectDir)..\..\..\..\bin.v2\libs\date_time\build\msvc-9.0\$(ConfigurationName)\threading-multi\*.dll $(TargetDir)&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- AdditionalIncludeDirectories="..\..\..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_ALL_DYN_LINK"
- StringPooling="true"
- RuntimeLibrary="2"
- BufferSecurityCheck="false"
- EnableFunctionLevelLinking="true"
- DisableLanguageExtensions="false"
- TreatWChar_tAsBuiltInType="true"
- ForceConformanceInForLoopScope="true"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- WarnAsError="true"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)/PingPong.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="&quot;$(ProjectDir)..\..\..\..\bin.v2\libs\thread\build\msvc-9.0\$(ConfigurationName)\threading-multi&quot;;&quot;$(ProjectDir)..\..\..\..\bin.v2\libs\date_time\build\msvc-9.0\$(ConfigurationName)\threading-multi&quot;"
- GenerateDebugInformation="false"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="copy $(ProjectDir)..\..\..\..\bin.v2\libs\thread\build\msvc-9.0\$(ConfigurationName)\threading-multi\*.dll $(TargetDir)&#x0D;&#x0A;copy $(ProjectDir)..\..\..\..\bin.v2\libs\date_time\build\msvc-9.0\$(ConfigurationName)\threading-multi\*.dll $(TargetDir)&#x0D;&#x0A;"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\PingPong.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Statechart Header Files"
- >
- <File
- RelativePath="..\..\..\..\boost\statechart\asynchronous_state_machine.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\custom_reaction.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\deep_history.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\deferral.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\event.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\event_base.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\event_processor.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\exception_translator.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\fifo_scheduler.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\in_state_reaction.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\null_exception_translator.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\result.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\shallow_history.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\simple_state.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\state.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\state_machine.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\termination.hpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\boost\statechart\transition.hpp"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="PingPong"
+ ProjectGUID="{11CCA9FC-6012-4B64-8C61-808D0F8D1B51}"
+ RootNamespace="PingPong"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_ALL_DYN_LINK"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="true"
+ DisableLanguageExtensions="false"
+ TreatWChar_tAsBuiltInType="true"
+ ForceConformanceInForLoopScope="true"
+ RuntimeTypeInfo="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/PingPong.exe"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="&quot;$(ProjectDir)..\..\..\..\bin.v2\libs\thread\build\msvc-9.0\$(ConfigurationName)\threading-multi&quot;;&quot;$(ProjectDir)..\..\..\..\bin.v2\libs\date_time\build\msvc-9.0\$(ConfigurationName)\threading-multi&quot;"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)/PingPong.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="copy $(ProjectDir)..\..\..\..\bin.v2\libs\thread\build\msvc-9.0\$(ConfigurationName)\threading-multi\*.dll $(TargetDir)&#x0D;&#x0A;copy $(ProjectDir)..\..\..\..\bin.v2\libs\date_time\build\msvc-9.0\$(ConfigurationName)\threading-multi\*.dll $(TargetDir)&#x0D;&#x0A;"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="2"
+ AdditionalIncludeDirectories="..\..\..\.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_ALL_DYN_LINK"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="false"
+ EnableFunctionLevelLinking="true"
+ DisableLanguageExtensions="false"
+ TreatWChar_tAsBuiltInType="true"
+ ForceConformanceInForLoopScope="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/PingPong.exe"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="&quot;$(ProjectDir)..\..\..\..\bin.v2\libs\thread\build\msvc-9.0\$(ConfigurationName)\threading-multi&quot;;&quot;$(ProjectDir)..\..\..\..\bin.v2\libs\date_time\build\msvc-9.0\$(ConfigurationName)\threading-multi&quot;"
+ GenerateDebugInformation="false"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="copy $(ProjectDir)..\..\..\..\bin.v2\libs\thread\build\msvc-9.0\$(ConfigurationName)\threading-multi\*.dll $(TargetDir)&#x0D;&#x0A;copy $(ProjectDir)..\..\..\..\bin.v2\libs\date_time\build\msvc-9.0\$(ConfigurationName)\threading-multi\*.dll $(TargetDir)&#x0D;&#x0A;"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\PingPong.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\Player.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Statechart Header Files"
+ >
+ <File
+ RelativePath="..\..\..\..\boost\statechart\asynchronous_state_machine.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\custom_reaction.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\deep_history.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\deferral.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\event.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\event_base.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\event_processor.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\exception_translator.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\fifo_scheduler.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\in_state_reaction.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\null_exception_translator.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\result.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\shallow_history.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\simple_state.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\state.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\state_machine.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\termination.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\statechart\transition.hpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ >
+ <File
+ RelativePath=".\Player.hpp"
+ >
+ </File>
+ <File
+ RelativePath=".\Waiting.hpp"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Modified: branches/proto/v4/libs/statechart/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/statechart/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/statechart/test/Jamfile.v2 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -151,6 +151,6 @@
     [ statechart-st-compile-example Handcrafted : Handcrafted : Handcrafted ]
     [ statechart-st-compile-example Keyboard : Keyboard : Keyboard : ]
     [ statechart-st-compile-example Performance : Performance : Performance ]
- [ statechart-st-compile-example PingPong : PingPong : PingPong ]
+ [ statechart-st-compile-example PingPong : PingPong : PingPong Player ]
     [ statechart-st-compile-example StopWatch : StopWatch : StopWatch ]
     [ statechart-st-compile-example StopWatch2 : StopWatch : StopWatch2 ] ;

Modified: branches/proto/v4/libs/thread/src/pthread/thread.cpp
==============================================================================
--- branches/proto/v4/libs/thread/src/pthread/thread.cpp (original)
+++ branches/proto/v4/libs/thread/src/pthread/thread.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -472,6 +472,21 @@
             return false;
         }
     }
+
+ thread::native_handle_type thread::native_handle()
+ {
+ detail::thread_data_ptr const local_thread_info=get_thread_info();
+ if(local_thread_info)
+ {
+ lock_guard<mutex> lk(local_thread_info->data_mutex);
+ return local_thread_info->thread_handle;
+ }
+ else
+ {
+ return pthread_t();
+ }
+ }
+
     
 
     namespace this_thread

Modified: branches/proto/v4/libs/thread/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/thread/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/thread/test/Jamfile.v2 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -51,6 +51,7 @@
           [ thread-run test_barrier.cpp ]
           [ thread-run test_shared_mutex.cpp ]
           [ thread-run test_shared_mutex_part_2.cpp ]
+ [ thread-run test_shared_mutex_timed_locks.cpp ]
           [ thread-run test_lock_concept.cpp ]
     ;
 }

Modified: branches/proto/v4/libs/thread/test/shared_mutex_locking_thread.hpp
==============================================================================
--- branches/proto/v4/libs/thread/test/shared_mutex_locking_thread.hpp (original)
+++ branches/proto/v4/libs/thread/test/shared_mutex_locking_thread.hpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -66,5 +66,67 @@
     void operator=(locking_thread&);
 };
 
+class simple_writing_thread
+{
+ boost::shared_mutex& rwm;
+ boost::mutex& finish_mutex;
+ boost::mutex& unblocked_mutex;
+ unsigned& unblocked_count;
+
+ void operator=(simple_writing_thread&);
+
+public:
+ simple_writing_thread(boost::shared_mutex& rwm_,
+ boost::mutex& finish_mutex_,
+ boost::mutex& unblocked_mutex_,
+ unsigned& unblocked_count_):
+ rwm(rwm_),finish_mutex(finish_mutex_),
+ unblocked_mutex(unblocked_mutex_),unblocked_count(unblocked_count_)
+ {}
+
+ void operator()()
+ {
+ boost::unique_lock<boost::shared_mutex> lk(rwm);
+
+ {
+ boost::mutex::scoped_lock ulk(unblocked_mutex);
+ ++unblocked_count;
+ }
+
+ boost::mutex::scoped_lock flk(finish_mutex);
+ }
+};
+
+class simple_reading_thread
+{
+ boost::shared_mutex& rwm;
+ boost::mutex& finish_mutex;
+ boost::mutex& unblocked_mutex;
+ unsigned& unblocked_count;
+
+ void operator=(simple_reading_thread&);
+
+public:
+ simple_reading_thread(boost::shared_mutex& rwm_,
+ boost::mutex& finish_mutex_,
+ boost::mutex& unblocked_mutex_,
+ unsigned& unblocked_count_):
+ rwm(rwm_),finish_mutex(finish_mutex_),
+ unblocked_mutex(unblocked_mutex_),unblocked_count(unblocked_count_)
+ {}
+
+ void operator()()
+ {
+ boost::shared_lock<boost::shared_mutex> lk(rwm);
+
+ {
+ boost::mutex::scoped_lock ulk(unblocked_mutex);
+ ++unblocked_count;
+ }
+
+ boost::mutex::scoped_lock flk(finish_mutex);
+ }
+};
+
 
 #endif

Modified: branches/proto/v4/libs/thread/test/test_condition_notify_all.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_condition_notify_all.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_condition_notify_all.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -159,6 +159,47 @@
     }
 }
 
+namespace
+{
+ boost::mutex multiple_wake_mutex;
+ boost::condition_variable multiple_wake_cond;
+ unsigned multiple_wake_count=0;
+
+ void wait_for_condvar_and_increase_count()
+ {
+ boost::mutex::scoped_lock lk(multiple_wake_mutex);
+ multiple_wake_cond.wait(lk);
+ ++multiple_wake_count;
+ }
+
+}
+
+
+void do_test_notify_all_following_notify_one_wakes_all_threads()
+{
+ boost::thread thread1(wait_for_condvar_and_increase_count);
+ boost::thread thread2(wait_for_condvar_and_increase_count);
+
+ boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+ multiple_wake_cond.notify_one();
+
+ boost::thread thread3(wait_for_condvar_and_increase_count);
+
+ boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+ multiple_wake_cond.notify_one();
+ multiple_wake_cond.notify_all();
+ boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+
+ {
+ boost::mutex::scoped_lock lk(multiple_wake_mutex);
+ BOOST_CHECK(multiple_wake_count==3);
+ }
+
+ thread1.join();
+ thread2.join();
+ thread3.join();
+}
+
 void test_condition_notify_all()
 {
     timed_test(&do_test_condition_notify_all_wakes_from_wait, timeout_seconds);
@@ -166,6 +207,7 @@
     timed_test(&do_test_condition_notify_all_wakes_from_timed_wait, timeout_seconds);
     timed_test(&do_test_condition_notify_all_wakes_from_timed_wait_with_predicate, timeout_seconds);
     timed_test(&do_test_condition_notify_all_wakes_from_relative_timed_wait_with_predicate, timeout_seconds);
+ timed_test(&do_test_notify_all_following_notify_one_wakes_all_threads, timeout_seconds);
 }
 
 

Modified: branches/proto/v4/libs/thread/test/test_condition_notify_one.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_condition_notify_one.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_condition_notify_one.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -92,6 +92,47 @@
     BOOST_CHECK(data.woken);
 }
 
+namespace
+{
+ boost::mutex multiple_wake_mutex;
+ boost::condition_variable multiple_wake_cond;
+ unsigned multiple_wake_count=0;
+
+ void wait_for_condvar_and_increase_count()
+ {
+ boost::mutex::scoped_lock lk(multiple_wake_mutex);
+ multiple_wake_cond.wait(lk);
+ ++multiple_wake_count;
+ }
+
+}
+
+
+void do_test_multiple_notify_one_calls_wakes_multiple_threads()
+{
+ boost::thread thread1(wait_for_condvar_and_increase_count);
+ boost::thread thread2(wait_for_condvar_and_increase_count);
+
+ boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+ multiple_wake_cond.notify_one();
+
+ boost::thread thread3(wait_for_condvar_and_increase_count);
+
+ boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+ multiple_wake_cond.notify_one();
+ multiple_wake_cond.notify_one();
+ boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+
+ {
+ boost::mutex::scoped_lock lk(multiple_wake_mutex);
+ BOOST_CHECK(multiple_wake_count==3);
+ }
+
+ thread1.join();
+ thread2.join();
+ thread3.join();
+}
+
 void test_condition_notify_one()
 {
     timed_test(&do_test_condition_notify_one_wakes_from_wait, timeout_seconds, execution_monitor::use_mutex);
@@ -99,6 +140,7 @@
     timed_test(&do_test_condition_notify_one_wakes_from_timed_wait, timeout_seconds, execution_monitor::use_mutex);
     timed_test(&do_test_condition_notify_one_wakes_from_timed_wait_with_predicate, timeout_seconds, execution_monitor::use_mutex);
     timed_test(&do_test_condition_notify_one_wakes_from_relative_timed_wait_with_predicate, timeout_seconds, execution_monitor::use_mutex);
+ timed_test(&do_test_multiple_notify_one_calls_wakes_multiple_threads, timeout_seconds, execution_monitor::use_mutex);
 }
 
 

Modified: branches/proto/v4/libs/thread/test/test_shared_mutex_part_2.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_shared_mutex_part_2.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_shared_mutex_part_2.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -107,40 +107,6 @@
     CHECK_LOCKED_VALUE_EQUAL(unblocked_count_mutex,max_simultaneous_running,reader_count+1);
 }
 
-namespace
-{
- class simple_writing_thread
- {
- boost::shared_mutex& rwm;
- boost::mutex& finish_mutex;
- boost::mutex& unblocked_mutex;
- unsigned& unblocked_count;
-
- void operator=(simple_writing_thread&);
-
- public:
- simple_writing_thread(boost::shared_mutex& rwm_,
- boost::mutex& finish_mutex_,
- boost::mutex& unblocked_mutex_,
- unsigned& unblocked_count_):
- rwm(rwm_),finish_mutex(finish_mutex_),
- unblocked_mutex(unblocked_mutex_),unblocked_count(unblocked_count_)
- {}
-
- void operator()()
- {
- boost::unique_lock<boost::shared_mutex> lk(rwm);
-
- {
- boost::mutex::scoped_lock ulk(unblocked_mutex);
- ++unblocked_count;
- }
-
- boost::mutex::scoped_lock flk(finish_mutex);
- }
- };
-}
-
 void test_if_other_thread_has_write_lock_try_lock_shared_returns_false()
 {
 
@@ -175,40 +141,6 @@
     }
 }
 
-namespace
-{
- class simple_reading_thread
- {
- boost::shared_mutex& rwm;
- boost::mutex& finish_mutex;
- boost::mutex& unblocked_mutex;
- unsigned& unblocked_count;
-
- void operator=(simple_reading_thread&);
-
- public:
- simple_reading_thread(boost::shared_mutex& rwm_,
- boost::mutex& finish_mutex_,
- boost::mutex& unblocked_mutex_,
- unsigned& unblocked_count_):
- rwm(rwm_),finish_mutex(finish_mutex_),
- unblocked_mutex(unblocked_mutex_),unblocked_count(unblocked_count_)
- {}
-
- void operator()()
- {
- boost::shared_lock<boost::shared_mutex> lk(rwm);
-
- {
- boost::mutex::scoped_lock ulk(unblocked_mutex);
- ++unblocked_count;
- }
-
- boost::mutex::scoped_lock flk(finish_mutex);
- }
- };
-}
-
 void test_if_other_thread_has_shared_lock_try_lock_shared_returns_true()
 {
 
@@ -232,33 +164,6 @@
     writer.join();
 }
 
-void test_timed_lock_shared_times_out_if_write_lock_held()
-{
- boost::shared_mutex rw_mutex;
- boost::mutex finish_mutex;
- boost::mutex unblocked_mutex;
- unsigned unblocked_count=0;
- boost::mutex::scoped_lock finish_lock(finish_mutex);
- boost::thread writer(simple_writing_thread(rw_mutex,finish_mutex,unblocked_mutex,unblocked_count));
- boost::thread::sleep(delay(1));
- CHECK_LOCKED_VALUE_EQUAL(unblocked_mutex,unblocked_count,1u);
-
- boost::system_time const start=boost::get_system_time();
- boost::system_time const timeout=start+boost::posix_time::milliseconds(2000);
- boost::posix_time::milliseconds const timeout_resolution(20);
- bool const timed_lock_succeeded=rw_mutex.timed_lock_shared(timeout);
- BOOST_CHECK((timeout-timeout_resolution)<boost::get_system_time());
- BOOST_CHECK(!timed_lock_succeeded);
- if(timed_lock_succeeded)
- {
- rw_mutex.unlock_shared();
- }
-
- finish_lock.unlock();
- writer.join();
-}
-
-
 boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])
 {
     boost::unit_test_framework::test_suite* test =
@@ -269,7 +174,6 @@
     test->add(BOOST_TEST_CASE(&test_if_other_thread_has_write_lock_try_lock_shared_returns_false));
     test->add(BOOST_TEST_CASE(&test_if_no_thread_has_lock_try_lock_shared_returns_true));
     test->add(BOOST_TEST_CASE(&test_if_other_thread_has_shared_lock_try_lock_shared_returns_true));
- test->add(BOOST_TEST_CASE(&test_timed_lock_shared_times_out_if_write_lock_held));
 
     return test;
 }

Modified: branches/proto/v4/libs/type_traits/doc/function_traits.qbk
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/function_traits.qbk (original)
+++ branches/proto/v4/libs/type_traits/doc/function_traits.qbk 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -8,7 +8,7 @@
 [section:function_traits function_traits]
 [def __argN '''arg<replaceable>N</replaceable>_type''']
 
- template <class T>
+ template <class F>
    struct function_traits
    {
       static const std::size_t arity = __below;
@@ -19,7 +19,7 @@
 The class template function_traits will only compile if:
 
 * The compiler supports partial specialization of class templates.
-* The template argument `T` is a /function type/, note that this ['[*is not]]
+* The template argument `F` is a /function type/, note that this ['[*is not]]
 the same thing as a /pointer to a function/.
 
 [tip
@@ -30,11 +30,11 @@
 
 [table Function Traits Members
 [[Member] [Description]]
-[[`function_traits<T>::arity`]
+[[`function_traits<F>::arity`]
    [An integral constant expression that gives the number of arguments accepted by the function type `F`.]]
-[[`function_traits<T>::result_type`]
+[[`function_traits<F>::result_type`]
    [The type returned by function type `F`.]]
-[[`function_traits<T>::__argN`]
+[[`function_traits<F>::__argN`]
    [The '''<replaceable>N</replaceable>th''' argument type of function type `F`, where `1 <= N <= arity` of `F`.]]
 ]
 
@@ -47,7 +47,7 @@
 [[`function_traits<long (int)>::result_type`] [The type `long`.]]
 [[`function_traits<long (int)>::arg1_type`] [The type `int`.]]
 [[`function_traits<long (int, long, double, void*)>::arg4_type`] [The type `void*`.]]
-[[`function_traits<long (int, long, double, void*)>::arg5_type`] [A compiler error: there is no `arg4_type` since there are only three arguments.]]
+[[`function_traits<long (int, long, double, void*)>::arg5_type`] [A compiler error: there is no `arg5_type` since there are only four arguments.]]
 [[`function_traits<long (*)(void)>::arity`] [A compiler error: argument type is a /function pointer/, and not a /function type/.]]
 
 ]

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/background.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/background.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/background.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -56,7 +56,7 @@
       method available to them.
     </p>
 <a name="boost_typetraits.background.type_traits"></a><h5>
-<a name="id436271"></a>
+<a name="id436329"></a>
       <a href="background.html#boost_typetraits.background.type_traits">Type Traits</a>
     </h5>
 <p>
@@ -84,7 +84,7 @@
       given.
     </p>
 <a name="boost_typetraits.background.implementation"></a><h5>
-<a name="id436382"></a>
+<a name="id436440"></a>
       <a href="background.html#boost_typetraits.background.implementation">Implementation</a>
     </h5>
 <p>
@@ -174,7 +174,7 @@
       in the default template.
     </p>
 <a name="boost_typetraits.background.optimized_copy"></a><h5>
-<a name="id490300"></a>
+<a name="id490355"></a>
       <a href="background.html#boost_typetraits.background.optimized_copy">Optimized copy</a>
     </h5>
 <p>
@@ -247,7 +247,7 @@
       otherwise it will call the "slow but safe version".
     </p>
 <a name="boost_typetraits.background.was_it_worth_it_"></a><h5>
-<a name="id490845"></a>
+<a name="id490900"></a>
       <a href="background.html#boost_typetraits.background.was_it_worth_it_">Was it worth it?</a>
     </h5>
 <p>
@@ -280,7 +280,7 @@
       </li>
 </ul></div>
 <div class="table">
-<a name="id490916"></a><p class="title"><b>Table 1.1. Time taken to copy 1000 elements using `copy&lt;const
+<a name="id490971"></a><p class="title"><b>Table 1.1. Time taken to copy 1000 elements using `copy&lt;const
     T*, T*&gt;` (times in micro-seconds)</b></p>
 <div class="table-contents"><table class="table" summary="Time taken to copy 1000 elements using `copy&lt;const
     T*, T*&gt;` (times in micro-seconds)">
@@ -379,7 +379,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="boost_typetraits.background.pair_of_references"></a><h5>
-<a name="id491072"></a>
+<a name="id491128"></a>
       <a href="background.html#boost_typetraits.background.pair_of_references">Pair of References</a>
     </h5>
 <p>
@@ -416,7 +416,7 @@
       to hold non-reference types, references, and constant references:
     </p>
 <div class="table">
-<a name="id491434"></a><p class="title"><b>Table 1.2. Required Constructor Argument Types</b></p>
+<a name="id491489"></a><p class="title"><b>Table 1.2. Required Constructor Argument Types</b></p>
 <div class="table-contents"><table class="table" summary="Required Constructor Argument Types">
 <colgroup>
 <col>
@@ -481,7 +481,7 @@
       adds a reference to its type, unless it is already a reference.
     </p>
 <div class="table">
-<a name="id491559"></a><p class="title"><b>Table 1.3. Using add_reference to synthesize the correct constructor
+<a name="id491614"></a><p class="title"><b>Table 1.3. Using add_reference to synthesize the correct constructor
     type</b></p>
 <div class="table-contents"><table class="table" summary="Using add_reference to synthesize the correct constructor
     type">
@@ -598,7 +598,7 @@
       easier to maintain and easier to understand.
     </p>
 <a name="boost_typetraits.background.conclusion"></a><h5>
-<a name="id492181"></a>
+<a name="id492236"></a>
       <a href="background.html#boost_typetraits.background.conclusion">Conclusion</a>
     </h5>
 <p>
@@ -611,7 +611,7 @@
       can be optimal as well as generic.
     </p>
 <a name="boost_typetraits.background.acknowledgements"></a><h5>
-<a name="id492227"></a>
+<a name="id492282"></a>
       <a href="background.html#boost_typetraits.background.acknowledgements">Acknowledgements</a>
     </h5>
 <p>
@@ -619,7 +619,7 @@
       comments when preparing this article.
     </p>
 <a name="background.references"></a><a name="boost_typetraits.background.references"></a><h5>
-<a name="id492261"></a>
+<a name="id492316"></a>
       <a href="background.html#boost_typetraits.background.references">References</a>
     </h5>
 <div class="orderedlist"><ol type="1">

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/category/transform.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/category/transform.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/category/transform.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -91,7 +91,7 @@
 <span class="keyword">struct</span> remove_volatile<span class="special">;</span>
 </pre>
 <a name="boost_typetraits.category.transform.broken_compiler_workarounds_"></a><h5>
-<a name="id496208"></a>
+<a name="id496263"></a>
         <a href="transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">Broken
         Compiler Workarounds:</a>
       </h5>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/intrinsics.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/intrinsics.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/intrinsics.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -71,7 +71,7 @@
       of the following macros:
     </p>
 <div class="table">
-<a name="id498446"></a><p class="title"><b>Table 1.4. Macros for Compiler Intrinsics</b></p>
+<a name="id498501"></a><p class="title"><b>Table 1.4. Macros for Compiler Intrinsics</b></p>
 <div class="table-contents"><table class="table" summary="Macros for Compiler Intrinsics">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_const.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_const.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_const.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -53,7 +53,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id503581"></a><p class="title"><b>Table 1.5. Examples</b></p>
+<a name="id503636"></a><p class="title"><b>Table 1.5. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_cv.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_cv.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_cv.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -54,7 +54,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id504219"></a><p class="title"><b>Table 1.6. Examples</b></p>
+<a name="id504275"></a><p class="title"><b>Table 1.6. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_pointer.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_pointer.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_pointer.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -56,7 +56,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id504931"></a><p class="title"><b>Table 1.7. Examples</b></p>
+<a name="id504987"></a><p class="title"><b>Table 1.7. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_reference.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_reference.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_reference.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -53,7 +53,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id505569"></a><p class="title"><b>Table 1.8. Examples</b></p>
+<a name="id505624"></a><p class="title"><b>Table 1.8. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_volatile.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_volatile.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/add_volatile.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -53,7 +53,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id506198"></a><p class="title"><b>Table 1.9. Examples</b></p>
+<a name="id506254"></a><p class="title"><b>Table 1.9. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/decay.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/decay.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/decay.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -48,7 +48,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id507857"></a><p class="title"><b>Table 1.10. Examples</b></p>
+<a name="id507911"></a><p class="title"><b>Table 1.10. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/floating_point_promotion.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/floating_point_promotion.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/floating_point_promotion.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -49,7 +49,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id509642"></a><p class="title"><b>Table 1.11. Examples</b></p>
+<a name="id509697"></a><p class="title"><b>Table 1.11. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_typetraits.reference.function_traits"></a> function_traits
 </h3></div></div></div>
-<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">function_traits</span>
 <span class="special">{</span>
    <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">arity</span> <span class="special">=</span> <em class="replaceable"><code>see-below</code></em><span class="special">;</span>
@@ -42,7 +42,7 @@
           The compiler supports partial specialization of class templates.
         </li>
 <li>
- The template argument <code class="computeroutput"><span class="identifier">T</span></code>
+ The template argument <code class="computeroutput"><span class="identifier">F</span></code>
           is a <span class="emphasis"><em>function type</em></span>, note that this <span class="emphasis"><em><span class="bold"><strong>is not</strong></span></em></span> the same thing as a <span class="emphasis"><em>pointer
           to a function</em></span>.
         </li>
@@ -59,7 +59,7 @@
         </p></td></tr>
 </table></div>
 <div class="table">
-<a name="id510122"></a><p class="title"><b>Table 1.12. Function Traits Members</b></p>
+<a name="id510177"></a><p class="title"><b>Table 1.12. Function Traits Members</b></p>
 <div class="table-contents"><table class="table" summary="Function Traits Members">
 <colgroup>
 <col>
@@ -81,7 +81,7 @@
 <tr>
 <td>
             <p>
- <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">arity</span></code>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;::</span><span class="identifier">arity</span></code>
             </p>
             </td>
 <td>
@@ -94,7 +94,7 @@
 <tr>
 <td>
             <p>
- <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
             </p>
             </td>
 <td>
@@ -106,7 +106,7 @@
 <tr>
 <td>
             <p>
- <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span>arg<em class="replaceable"><code>N</code></em>_type</code>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;::</span>arg<em class="replaceable"><code>N</code></em>_type</code>
             </p>
             </td>
 <td>
@@ -122,7 +122,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id510400"></a><p class="title"><b>Table 1.13. Examples</b></p>
+<a name="id510455"></a><p class="title"><b>Table 1.13. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>
@@ -233,8 +233,8 @@
             </td>
 <td>
             <p>
- A compiler error: there is no <code class="computeroutput"><span class="identifier">arg4_type</span></code>
- since there are only three arguments.
+ A compiler error: there is no <code class="computeroutput"><span class="identifier">arg5_type</span></code>
+ since there are only four arguments.
             </p>
             </td>
 </tr>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/integral_promotion.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/integral_promotion.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/integral_promotion.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -49,7 +49,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id515889"></a><p class="title"><b>Table 1.14. Examples</b></p>
+<a name="id515944"></a><p class="title"><b>Table 1.14. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/make_signed.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/make_signed.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/make_signed.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -54,7 +54,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id536228"></a><p class="title"><b>Table 1.15. Examples</b></p>
+<a name="id536284"></a><p class="title"><b>Table 1.15. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/make_unsigned.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/make_unsigned.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/make_unsigned.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -54,7 +54,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id536861"></a><p class="title"><b>Table 1.16. Examples</b></p>
+<a name="id536916"></a><p class="title"><b>Table 1.16. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/promote.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/promote.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/promote.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -51,7 +51,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id537561"></a><p class="title"><b>Table 1.17. Examples</b></p>
+<a name="id537616"></a><p class="title"><b>Table 1.17. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_all_extents.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_all_extents.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_all_extents.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -54,7 +54,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id538994"></a><p class="title"><b>Table 1.18. Examples</b></p>
+<a name="id539049"></a><p class="title"><b>Table 1.18. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_const.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_const.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_const.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -53,7 +53,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id539715"></a><p class="title"><b>Table 1.19. Examples</b></p>
+<a name="id539771"></a><p class="title"><b>Table 1.19. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_cv.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_cv.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_cv.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -53,7 +53,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id540419"></a><p class="title"><b>Table 1.20. Examples</b></p>
+<a name="id540474"></a><p class="title"><b>Table 1.20. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_extent.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_extent.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_extent.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -54,7 +54,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id541122"></a><p class="title"><b>Table 1.21. Examples</b></p>
+<a name="id541178"></a><p class="title"><b>Table 1.21. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_pointer.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_pointer.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_pointer.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -53,7 +53,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id541858"></a><p class="title"><b>Table 1.22. Examples</b></p>
+<a name="id541913"></a><p class="title"><b>Table 1.22. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_reference.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_reference.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_reference.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -53,7 +53,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id542538"></a><p class="title"><b>Table 1.23. Examples</b></p>
+<a name="id542592"></a><p class="title"><b>Table 1.23. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_volatile.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_volatile.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/boost_typetraits/reference/remove_volatile.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -53,7 +53,7 @@
         or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
       </p>
 <div class="table">
-<a name="id543144"></a><p class="title"><b>Table 1.24. Examples</b></p>
+<a name="id543198"></a><p class="title"><b>Table 1.24. Examples</b></p>
 <div class="table-contents"><table class="table" summary="Examples">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/type_traits/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/type_traits/doc/html/index.html (original)
+++ branches/proto/v4/libs/type_traits/doc/html/index.html 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -30,7 +30,7 @@
       Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
       Ramey and Jeremy Siek</p></div>
 <div><div class="legalnotice">
-<a name="id437579"></a><p>
+<a name="id437635"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>

Modified: branches/proto/v4/libs/utility/operators_test.cpp
==============================================================================
--- branches/proto/v4/libs/utility/operators_test.cpp (original)
+++ branches/proto/v4/libs/utility/operators_test.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -7,6 +7,7 @@
 // See http://www.boost.org/libs/utility for documentation.
 
 // Revision History
+// 03 Apr 08 Added convertible_to_bool (Daniel Frey)
 // 01 Oct 01 Added tests for "left" operators
 // and new grouped operators. (Helmut Zeisel)
 // 20 May 01 Output progress messages. Added tests for new operator
@@ -43,6 +44,23 @@
     unsigned char true_value(unsigned char x) { return x; }
     unsigned short true_value(unsigned short x) { return x; }
 
+ // verify the minimum requirements for some operators
+ class convertible_to_bool
+ {
+ private:
+ bool _value;
+
+ typedef bool convertible_to_bool::*unspecified_bool_type;
+
+ void operator!() const;
+
+ public:
+ convertible_to_bool( const bool value ) : _value( value ) {}
+
+ operator unspecified_bool_type() const
+ { return _value ? &convertible_to_bool::_value : 0; }
+ };
+
     // The use of operators<> here tended to obscure
     // interactions with certain compiler bugs
     template <class T>
@@ -54,8 +72,10 @@
         explicit Wrapped1( T v = T() ) : _value(v) {}
         T value() const { return _value; }
 
- bool operator<(const Wrapped1& x) const { return _value < x._value; }
- bool operator==(const Wrapped1& x) const { return _value == x._value; }
+ convertible_to_bool operator<(const Wrapped1& x) const
+ { return _value < x._value; }
+ convertible_to_bool operator==(const Wrapped1& x) const
+ { return _value == x._value; }
         
         Wrapped1& operator+=(const Wrapped1& x)
           { _value += x._value; return *this; }
@@ -97,8 +117,10 @@
         explicit Wrapped2( T v = T() ) : _value(v) {}
         T value() const { return _value; }
 
- bool operator<(const Wrapped2& x) const { return _value < x._value; }
- bool operator==(const Wrapped2& x) const { return _value == x._value; }
+ convertible_to_bool operator<(const Wrapped2& x) const
+ { return _value < x._value; }
+ convertible_to_bool operator==(const Wrapped2& x) const
+ { return _value == x._value; }
         
         Wrapped2& operator+=(const Wrapped2& x)
           { _value += x._value; return *this; }
@@ -123,9 +145,13 @@
         Wrapped2& operator++() { ++_value; return *this; }
         Wrapped2& operator--() { --_value; return *this; }
          
- bool operator<(U u) const { return _value < u; }
- bool operator>(U u) const { return _value > u; }
- bool operator==(U u) const { return _value == u; }
+ convertible_to_bool operator<(U u) const
+ { return _value < u; }
+ convertible_to_bool operator>(U u) const
+ { return _value > u; }
+ convertible_to_bool operator==(U u) const
+ { return _value == u; }
+
         Wrapped2& operator+=(U u) { _value += u; return *this; }
         Wrapped2& operator-=(U u) { _value -= u; return *this; }
         Wrapped2& operator*=(U u) { _value *= u; return *this; }
@@ -153,7 +179,8 @@
         explicit Wrapped3( T v = T() ) : _value(v) {}
         T value() const { return _value; }
 
- bool operator<(const Wrapped3& x) const { return _value < x._value; }
+ convertible_to_bool operator<(const Wrapped3& x) const
+ { return _value < x._value; }
         
     private:
         T _value;
@@ -174,10 +201,13 @@
         explicit Wrapped4( T v = T() ) : _value(v) {}
         T value() const { return _value; }
 
- bool operator<(const Wrapped4& x) const { return _value < x._value; }
+ convertible_to_bool operator<(const Wrapped4& x) const
+ { return _value < x._value; }
          
- bool operator<(U u) const { return _value < u; }
- bool operator>(U u) const { return _value > u; }
+ convertible_to_bool operator<(U u) const
+ { return _value < u; }
+ convertible_to_bool operator>(U u) const
+ { return _value > u; }
 
     private:
         T _value;
@@ -198,11 +228,18 @@
         Wrapped5(U u) : _value(u) {}
 
         T value() const { return _value; }
- bool operator<(const Wrapped5& x) const { return _value < x._value; }
- bool operator<(U u) const { return _value < u; }
- bool operator>(U u) const { return _value > u; }
- bool operator==(const Wrapped5& u) const { return _value == u._value; }
- bool operator==(U u) const { return _value == u; }
+
+ convertible_to_bool operator<(const Wrapped5& x) const
+ { return _value < x._value; }
+ convertible_to_bool operator<(U u) const
+ { return _value < u; }
+ convertible_to_bool operator>(U u) const
+ { return _value > u; }
+ convertible_to_bool operator==(const Wrapped5& u) const
+ { return _value == u._value; }
+ convertible_to_bool operator==(U u) const
+ { return _value == u; }
+
         Wrapped5& operator/=(const Wrapped5& u) { _value /= u._value; return *this;}
         Wrapped5& operator/=(U u) { _value /= u; return *this;}
         Wrapped5& operator*=(const Wrapped5& u) { _value *= u._value; return *this;}
@@ -231,11 +268,18 @@
         Wrapped6(U u) : _value(u) {}
 
         T value() const { return _value; }
- bool operator<(const Wrapped6& x) const { return _value < x._value; }
- bool operator<(U u) const { return _value < u; }
- bool operator>(U u) const { return _value > u; }
- bool operator==(const Wrapped6& u) const { return _value == u._value; }
- bool operator==(U u) const { return _value == u; }
+
+ convertible_to_bool operator<(const Wrapped6& x) const
+ { return _value < x._value; }
+ convertible_to_bool operator<(U u) const
+ { return _value < u; }
+ convertible_to_bool operator>(U u) const
+ { return _value > u; }
+ convertible_to_bool operator==(const Wrapped6& u) const
+ { return _value == u._value; }
+ convertible_to_bool operator==(U u) const
+ { return _value == u; }
+
         Wrapped6& operator%=(const Wrapped6& u) { _value %= u._value; return *this;}
         Wrapped6& operator%=(U u) { _value %= u; return *this;}
         Wrapped6& operator/=(const Wrapped6& u) { _value /= u._value; return *this;}
@@ -276,10 +320,10 @@
     template <class X1, class Y1, class X2, class Y2>
     void test_less_than_comparable_aux(X1 x1, Y1 y1, X2 x2, Y2 y2)
     {
- BOOST_CHECK( (x1 < y1) == (x2 < y2) );
- BOOST_CHECK( (x1 <= y1) == (x2 <= y2) );
- BOOST_CHECK( (x1 >= y1) == (x2 >= y2) );
- BOOST_CHECK( (x1 > y1) == (x2 > y2) );
+ BOOST_CHECK( static_cast<bool>(x1 < y1) == static_cast<bool>(x2 < y2) );
+ BOOST_CHECK( static_cast<bool>(x1 <= y1) == static_cast<bool>(x2 <= y2) );
+ BOOST_CHECK( static_cast<bool>(x1 >= y1) == static_cast<bool>(x2 >= y2) );
+ BOOST_CHECK( static_cast<bool>(x1 > y1) == static_cast<bool>(x2 > y2) );
     }
     
     template <class X1, class Y1, class X2, class Y2>
@@ -293,8 +337,8 @@
     template <class X1, class Y1, class X2, class Y2>
     void test_equality_comparable_aux(X1 x1, Y1 y1, X2 x2, Y2 y2)
     {
- BOOST_CHECK( (x1 == y1) == (x2 == y2) );
- BOOST_CHECK( (x1 != y1) == (x2 != y2) );
+ BOOST_CHECK( static_cast<bool>(x1 == y1) == static_cast<bool>(x2 == y2) );
+ BOOST_CHECK( static_cast<bool>(x1 != y1) == static_cast<bool>(x2 != y2) );
     }
     
     template <class X1, class Y1, class X2, class Y2>
@@ -614,14 +658,14 @@
 
     PRIVATE_EXPR_TEST( (i = i2), (i.value() == 2) );
 
- BOOST_CHECK( i2 == i );
- BOOST_CHECK( i1 != i2 );
- BOOST_CHECK( i1 < i2 );
- BOOST_CHECK( i1 <= i2 );
- BOOST_CHECK( i <= i2 );
- BOOST_CHECK( i2 > i1 );
- BOOST_CHECK( i2 >= i1 );
- BOOST_CHECK( i2 >= i );
+ BOOST_CHECK( static_cast<bool>(i2 == i) );
+ BOOST_CHECK( static_cast<bool>(i1 != i2) );
+ BOOST_CHECK( static_cast<bool>(i1 < i2) );
+ BOOST_CHECK( static_cast<bool>(i1 <= i2) );
+ BOOST_CHECK( static_cast<bool>(i <= i2) );
+ BOOST_CHECK( static_cast<bool>(i2 > i1) );
+ BOOST_CHECK( static_cast<bool>(i2 >= i1) );
+ BOOST_CHECK( static_cast<bool>(i2 >= i) );
 
     PRIVATE_EXPR_TEST( (i = i1 + i2), (i.value() == 3) );
     PRIVATE_EXPR_TEST( (i = i + i2), (i.value() == 5) );
@@ -653,78 +697,78 @@
 
     PRIVATE_EXPR_TEST( (j = j2), (j.value() == 2) );
     
- BOOST_CHECK( j2 == j );
- BOOST_CHECK( 2 == j );
- BOOST_CHECK( j2 == 2 );
- BOOST_CHECK( j == j2 );
- BOOST_CHECK( j1 != j2 );
- BOOST_CHECK( j1 != 2 );
- BOOST_CHECK( 1 != j2 );
- BOOST_CHECK( j1 < j2 );
- BOOST_CHECK( 1 < j2 );
- BOOST_CHECK( j1 < 2 );
- BOOST_CHECK( j1 <= j2 );
- BOOST_CHECK( 1 <= j2 );
- BOOST_CHECK( j1 <= j );
- BOOST_CHECK( j <= j2 );
- BOOST_CHECK( 2 <= j2 );
- BOOST_CHECK( j <= 2 );
- BOOST_CHECK( j2 > j1 );
- BOOST_CHECK( 2 > j1 );
- BOOST_CHECK( j2 > 1 );
- BOOST_CHECK( j2 >= j1 );
- BOOST_CHECK( 2 >= j1 );
- BOOST_CHECK( j2 >= 1 );
- BOOST_CHECK( j2 >= j );
- BOOST_CHECK( 2 >= j );
- BOOST_CHECK( j2 >= 2 );
+ BOOST_CHECK( static_cast<bool>(j2 == j) );
+ BOOST_CHECK( static_cast<bool>(2 == j) );
+ BOOST_CHECK( static_cast<bool>(j2 == 2) );
+ BOOST_CHECK( static_cast<bool>(j == j2) );
+ BOOST_CHECK( static_cast<bool>(j1 != j2) );
+ BOOST_CHECK( static_cast<bool>(j1 != 2) );
+ BOOST_CHECK( static_cast<bool>(1 != j2) );
+ BOOST_CHECK( static_cast<bool>(j1 < j2) );
+ BOOST_CHECK( static_cast<bool>(1 < j2) );
+ BOOST_CHECK( static_cast<bool>(j1 < 2) );
+ BOOST_CHECK( static_cast<bool>(j1 <= j2) );
+ BOOST_CHECK( static_cast<bool>(1 <= j2) );
+ BOOST_CHECK( static_cast<bool>(j1 <= j) );
+ BOOST_CHECK( static_cast<bool>(j <= j2) );
+ BOOST_CHECK( static_cast<bool>(2 <= j2) );
+ BOOST_CHECK( static_cast<bool>(j <= 2) );
+ BOOST_CHECK( static_cast<bool>(j2 > j1) );
+ BOOST_CHECK( static_cast<bool>(2 > j1) );
+ BOOST_CHECK( static_cast<bool>(j2 > 1) );
+ BOOST_CHECK( static_cast<bool>(j2 >= j1) );
+ BOOST_CHECK( static_cast<bool>(2 >= j1) );
+ BOOST_CHECK( static_cast<bool>(j2 >= 1) );
+ BOOST_CHECK( static_cast<bool>(j2 >= j) );
+ BOOST_CHECK( static_cast<bool>(2 >= j) );
+ BOOST_CHECK( static_cast<bool>(j2 >= 2) );
 
- BOOST_CHECK( (j1 + 2) == 3 );
- BOOST_CHECK( (1 + j2) == 3 );
+ BOOST_CHECK( static_cast<bool>((j1 + 2) == 3) );
+ BOOST_CHECK( static_cast<bool>((1 + j2) == 3) );
     PRIVATE_EXPR_TEST( (j = j1 + j2), (j.value() == 3) );
     
- BOOST_CHECK( (j + 2) == 5 );
- BOOST_CHECK( (3 + j2) == 5 );
+ BOOST_CHECK( static_cast<bool>((j + 2) == 5) );
+ BOOST_CHECK( static_cast<bool>((3 + j2) == 5) );
     PRIVATE_EXPR_TEST( (j = j + j2), (j.value() == 5) );
     
- BOOST_CHECK( (j - 1) == 4 );
+ BOOST_CHECK( static_cast<bool>((j - 1) == 4) );
     PRIVATE_EXPR_TEST( (j = j - j1), (j.value() == 4) );
     
- BOOST_CHECK( (j * 2) == 8 );
- BOOST_CHECK( (4 * j2) == 8 );
+ BOOST_CHECK( static_cast<bool>((j * 2) == 8) );
+ BOOST_CHECK( static_cast<bool>((4 * j2) == 8) );
     PRIVATE_EXPR_TEST( (j = j * j2), (j.value() == 8) );
     
- BOOST_CHECK( (j / 2) == 4 );
+ BOOST_CHECK( static_cast<bool>((j / 2) == 4) );
     PRIVATE_EXPR_TEST( (j = j / j2), (j.value() == 4) );
     
- BOOST_CHECK( (j % 3) == 1 );
+ BOOST_CHECK( static_cast<bool>((j % 3) == 1) );
     PRIVATE_EXPR_TEST( (j = j % ( j - j1 )), (j.value() == 1) );
     
     PRIVATE_EXPR_TEST( (j = j2 + j2), (j.value() == 4) );
     
- BOOST_CHECK( (1 | j2 | j) == 7 );
- BOOST_CHECK( (j1 | 2 | j) == 7 );
- BOOST_CHECK( (j1 | j2 | 4) == 7 );
+ BOOST_CHECK( static_cast<bool>((1 | j2 | j) == 7) );
+ BOOST_CHECK( static_cast<bool>((j1 | 2 | j) == 7) );
+ BOOST_CHECK( static_cast<bool>((j1 | j2 | 4) == 7) );
     PRIVATE_EXPR_TEST( (j = j1 | j2 | j), (j.value() == 7) );
     
- BOOST_CHECK( (7 & j2) == 2 );
- BOOST_CHECK( (j & 2) == 2 );
+ BOOST_CHECK( static_cast<bool>((7 & j2) == 2) );
+ BOOST_CHECK( static_cast<bool>((j & 2) == 2) );
     PRIVATE_EXPR_TEST( (j = j & j2), (j.value() == 2) );
     
     PRIVATE_EXPR_TEST( (j = j | j1), (j.value() == 3) );
     
- BOOST_CHECK( (3 ^ j1) == 2 );
- BOOST_CHECK( (j ^ 1) == 2 );
+ BOOST_CHECK( static_cast<bool>((3 ^ j1) == 2) );
+ BOOST_CHECK( static_cast<bool>((j ^ 1) == 2) );
     PRIVATE_EXPR_TEST( (j = j ^ j1), (j.value() == 2) );
     
     PRIVATE_EXPR_TEST( (j = ( j + j1 ) * ( j2 | j1 )), (j.value() == 9) );
 
- BOOST_CHECK( (j1 << 2) == 4 );
- BOOST_CHECK( (j2 << 1) == 4 );
+ BOOST_CHECK( static_cast<bool>((j1 << 2) == 4) );
+ BOOST_CHECK( static_cast<bool>((j2 << 1) == 4) );
     PRIVATE_EXPR_TEST( (j = j1 << j2), (j.value() == 4) );
 
- BOOST_CHECK( (j >> 2) == 1 );
- BOOST_CHECK( (j2 >> 1) == 1 );
+ BOOST_CHECK( static_cast<bool>((j >> 2) == 1) );
+ BOOST_CHECK( static_cast<bool>((j2 >> 1) == 1) );
     PRIVATE_EXPR_TEST( (j = j2 >> j1), (j.value() == 1) );
     
     cout << "Performed tests on MyLong objects.\n";
@@ -741,14 +785,14 @@
 
     PRIVATE_EXPR_TEST( (k = k2), (k.value() == 2) );
 
- BOOST_CHECK( k2 == k );
- BOOST_CHECK( k1 != k2 );
- BOOST_CHECK( k1 < k2 );
- BOOST_CHECK( k1 <= k2 );
- BOOST_CHECK( k <= k2 );
- BOOST_CHECK( k2 > k1 );
- BOOST_CHECK( k2 >= k1 );
- BOOST_CHECK( k2 >= k );
+ BOOST_CHECK( static_cast<bool>(k2 == k) );
+ BOOST_CHECK( static_cast<bool>(k1 != k2) );
+ BOOST_CHECK( static_cast<bool>(k1 < k2) );
+ BOOST_CHECK( static_cast<bool>(k1 <= k2) );
+ BOOST_CHECK( static_cast<bool>(k <= k2) );
+ BOOST_CHECK( static_cast<bool>(k2 > k1) );
+ BOOST_CHECK( static_cast<bool>(k2 >= k1) );
+ BOOST_CHECK( static_cast<bool>(k2 >= k) );
     
     cout << "Performed tests on MyChar objects.\n";
 
@@ -764,31 +808,31 @@
 
     PRIVATE_EXPR_TEST( (l = l2), (l.value() == 2) );
     
- BOOST_CHECK( l2 == l );
- BOOST_CHECK( 2 == l );
- BOOST_CHECK( l2 == 2 );
- BOOST_CHECK( l == l2 );
- BOOST_CHECK( l1 != l2 );
- BOOST_CHECK( l1 != 2 );
- BOOST_CHECK( 1 != l2 );
- BOOST_CHECK( l1 < l2 );
- BOOST_CHECK( 1 < l2 );
- BOOST_CHECK( l1 < 2 );
- BOOST_CHECK( l1 <= l2 );
- BOOST_CHECK( 1 <= l2 );
- BOOST_CHECK( l1 <= l );
- BOOST_CHECK( l <= l2 );
- BOOST_CHECK( 2 <= l2 );
- BOOST_CHECK( l <= 2 );
- BOOST_CHECK( l2 > l1 );
- BOOST_CHECK( 2 > l1 );
- BOOST_CHECK( l2 > 1 );
- BOOST_CHECK( l2 >= l1 );
- BOOST_CHECK( 2 >= l1 );
- BOOST_CHECK( l2 >= 1 );
- BOOST_CHECK( l2 >= l );
- BOOST_CHECK( 2 >= l );
- BOOST_CHECK( l2 >= 2 );
+ BOOST_CHECK( static_cast<bool>(l2 == l) );
+ BOOST_CHECK( static_cast<bool>(2 == l) );
+ BOOST_CHECK( static_cast<bool>(l2 == 2) );
+ BOOST_CHECK( static_cast<bool>(l == l2) );
+ BOOST_CHECK( static_cast<bool>(l1 != l2) );
+ BOOST_CHECK( static_cast<bool>(l1 != 2) );
+ BOOST_CHECK( static_cast<bool>(1 != l2) );
+ BOOST_CHECK( static_cast<bool>(l1 < l2) );
+ BOOST_CHECK( static_cast<bool>(1 < l2) );
+ BOOST_CHECK( static_cast<bool>(l1 < 2) );
+ BOOST_CHECK( static_cast<bool>(l1 <= l2) );
+ BOOST_CHECK( static_cast<bool>(1 <= l2) );
+ BOOST_CHECK( static_cast<bool>(l1 <= l) );
+ BOOST_CHECK( static_cast<bool>(l <= l2) );
+ BOOST_CHECK( static_cast<bool>(2 <= l2) );
+ BOOST_CHECK( static_cast<bool>(l <= 2) );
+ BOOST_CHECK( static_cast<bool>(l2 > l1) );
+ BOOST_CHECK( static_cast<bool>(2 > l1) );
+ BOOST_CHECK( static_cast<bool>(l2 > 1) );
+ BOOST_CHECK( static_cast<bool>(l2 >= l1) );
+ BOOST_CHECK( static_cast<bool>(2 >= l1) );
+ BOOST_CHECK( static_cast<bool>(l2 >= 1) );
+ BOOST_CHECK( static_cast<bool>(l2 >= l) );
+ BOOST_CHECK( static_cast<bool>(2 >= l) );
+ BOOST_CHECK( static_cast<bool>(l2 >= 2) );
     
     cout << "Performed tests on MyShort objects.\n";
     
@@ -807,37 +851,37 @@
 
     PRIVATE_EXPR_TEST( (di = di2), (di.value() == 2) );
     
- BOOST_CHECK( di2 == di );
- BOOST_CHECK( 2 == di );
- BOOST_CHECK( di == 2 );
- BOOST_CHECK( di1 < di2 );
- BOOST_CHECK( 1 < di2 );
- BOOST_CHECK( di1 <= di2 );
- BOOST_CHECK( 1 <= di2 );
- BOOST_CHECK( di2 > di1 );
- BOOST_CHECK( di2 > 1 );
- BOOST_CHECK( di2 >= di1 );
- BOOST_CHECK( di2 >= 1 );
- BOOST_CHECK( di1 / di2 == half );
- BOOST_CHECK( di1 / 2 == half );
- BOOST_CHECK( 1 / di2 == half );
- PRIVATE_EXPR_TEST( (tmp=di1), ((tmp/=2) == half) );
- PRIVATE_EXPR_TEST( (tmp=di1), ((tmp/=di2) == half) );
- BOOST_CHECK( di1 * di2 == di2 );
- BOOST_CHECK( di1 * 2 == di2 );
- BOOST_CHECK( 1 * di2 == di2 );
- PRIVATE_EXPR_TEST( (tmp=di1), ((tmp*=2) == di2) );
- PRIVATE_EXPR_TEST( (tmp=di1), ((tmp*=di2) == di2) );
- BOOST_CHECK( di2 - di1 == di1 );
- BOOST_CHECK( di2 - 1 == di1 );
- BOOST_CHECK( 2 - di1 == di1 );
- PRIVATE_EXPR_TEST( (tmp=di2), ((tmp-=1) == di1) );
- PRIVATE_EXPR_TEST( (tmp=di2), ((tmp-=di1) == di1) );
- BOOST_CHECK( di1 + di1 == di2 );
- BOOST_CHECK( di1 + 1 == di2 );
- BOOST_CHECK( 1 + di1 == di2 );
- PRIVATE_EXPR_TEST( (tmp=di1), ((tmp+=1) == di2) );
- PRIVATE_EXPR_TEST( (tmp=di1), ((tmp+=di1) == di2) );
+ BOOST_CHECK( static_cast<bool>(di2 == di) );
+ BOOST_CHECK( static_cast<bool>(2 == di) );
+ BOOST_CHECK( static_cast<bool>(di == 2) );
+ BOOST_CHECK( static_cast<bool>(di1 < di2) );
+ BOOST_CHECK( static_cast<bool>(1 < di2) );
+ BOOST_CHECK( static_cast<bool>(di1 <= di2) );
+ BOOST_CHECK( static_cast<bool>(1 <= di2) );
+ BOOST_CHECK( static_cast<bool>(di2 > di1) );
+ BOOST_CHECK( static_cast<bool>(di2 > 1) );
+ BOOST_CHECK( static_cast<bool>(di2 >= di1) );
+ BOOST_CHECK( static_cast<bool>(di2 >= 1) );
+ BOOST_CHECK( static_cast<bool>(di1 / di2 == half) );
+ BOOST_CHECK( static_cast<bool>(di1 / 2 == half) );
+ BOOST_CHECK( static_cast<bool>(1 / di2 == half) );
+ PRIVATE_EXPR_TEST( (tmp=di1), static_cast<bool>((tmp/=2) == half) );
+ PRIVATE_EXPR_TEST( (tmp=di1), static_cast<bool>((tmp/=di2) == half) );
+ BOOST_CHECK( static_cast<bool>(di1 * di2 == di2) );
+ BOOST_CHECK( static_cast<bool>(di1 * 2 == di2) );
+ BOOST_CHECK( static_cast<bool>(1 * di2 == di2) );
+ PRIVATE_EXPR_TEST( (tmp=di1), static_cast<bool>((tmp*=2) == di2) );
+ PRIVATE_EXPR_TEST( (tmp=di1), static_cast<bool>((tmp*=di2) == di2) );
+ BOOST_CHECK( static_cast<bool>(di2 - di1 == di1) );
+ BOOST_CHECK( static_cast<bool>(di2 - 1 == di1) );
+ BOOST_CHECK( static_cast<bool>(2 - di1 == di1) );
+ PRIVATE_EXPR_TEST( (tmp=di2), static_cast<bool>((tmp-=1) == di1) );
+ PRIVATE_EXPR_TEST( (tmp=di2), static_cast<bool>((tmp-=di1) == di1) );
+ BOOST_CHECK( static_cast<bool>(di1 + di1 == di2) );
+ BOOST_CHECK( static_cast<bool>(di1 + 1 == di2) );
+ BOOST_CHECK( static_cast<bool>(1 + di1 == di2) );
+ PRIVATE_EXPR_TEST( (tmp=di1), static_cast<bool>((tmp+=1) == di2) );
+ PRIVATE_EXPR_TEST( (tmp=di1), static_cast<bool>((tmp+=di1) == di2) );
 
     cout << "Performed tests on MyDoubleInt objects.\n";
 
@@ -854,42 +898,42 @@
 
     PRIVATE_EXPR_TEST( (li = li2), (li.value() == 2) );
     
- BOOST_CHECK( li2 == li );
- BOOST_CHECK( 2 == li );
- BOOST_CHECK( li == 2 );
- BOOST_CHECK( li1 < li2 );
- BOOST_CHECK( 1 < li2 );
- BOOST_CHECK( li1 <= li2 );
- BOOST_CHECK( 1 <= li2 );
- BOOST_CHECK( li2 > li1 );
- BOOST_CHECK( li2 > 1 );
- BOOST_CHECK( li2 >= li1 );
- BOOST_CHECK( li2 >= 1 );
- BOOST_CHECK( li1 % li2 == li1 );
- BOOST_CHECK( li1 % 2 == li1 );
- BOOST_CHECK( 1 % li2 == li1 );
- PRIVATE_EXPR_TEST( (tmp2=li1), ((tmp2%=2) == li1) );
- PRIVATE_EXPR_TEST( (tmp2=li1), ((tmp2%=li2) == li1) );
- BOOST_CHECK( li1 / li2 == 0 );
- BOOST_CHECK( li1 / 2 == 0 );
- BOOST_CHECK( 1 / li2 == 0 );
- PRIVATE_EXPR_TEST( (tmp2=li1), ((tmp2/=2) == 0) );
- PRIVATE_EXPR_TEST( (tmp2=li1), ((tmp2/=li2) == 0) );
- BOOST_CHECK( li1 * li2 == li2 );
- BOOST_CHECK( li1 * 2 == li2 );
- BOOST_CHECK( 1 * li2 == li2 );
- PRIVATE_EXPR_TEST( (tmp2=li1), ((tmp2*=2) == li2) );
- PRIVATE_EXPR_TEST( (tmp2=li1), ((tmp2*=li2) == li2) );
- BOOST_CHECK( li2 - li1 == li1 );
- BOOST_CHECK( li2 - 1 == li1 );
- BOOST_CHECK( 2 - li1 == li1 );
- PRIVATE_EXPR_TEST( (tmp2=li2), ((tmp2-=1) == li1) );
- PRIVATE_EXPR_TEST( (tmp2=li2), ((tmp2-=li1) == li1) );
- BOOST_CHECK( li1 + li1 == li2 );
- BOOST_CHECK( li1 + 1 == li2 );
- BOOST_CHECK( 1 + li1 == li2 );
- PRIVATE_EXPR_TEST( (tmp2=li1), ((tmp2+=1) == li2) );
- PRIVATE_EXPR_TEST( (tmp2=li1), ((tmp2+=li1) == li2) );
+ BOOST_CHECK( static_cast<bool>(li2 == li) );
+ BOOST_CHECK( static_cast<bool>(2 == li) );
+ BOOST_CHECK( static_cast<bool>(li == 2) );
+ BOOST_CHECK( static_cast<bool>(li1 < li2) );
+ BOOST_CHECK( static_cast<bool>(1 < li2) );
+ BOOST_CHECK( static_cast<bool>(li1 <= li2) );
+ BOOST_CHECK( static_cast<bool>(1 <= li2) );
+ BOOST_CHECK( static_cast<bool>(li2 > li1) );
+ BOOST_CHECK( static_cast<bool>(li2 > 1) );
+ BOOST_CHECK( static_cast<bool>(li2 >= li1) );
+ BOOST_CHECK( static_cast<bool>(li2 >= 1) );
+ BOOST_CHECK( static_cast<bool>(li1 % li2 == li1) );
+ BOOST_CHECK( static_cast<bool>(li1 % 2 == li1) );
+ BOOST_CHECK( static_cast<bool>(1 % li2 == li1) );
+ PRIVATE_EXPR_TEST( (tmp2=li1), static_cast<bool>((tmp2%=2) == li1) );
+ PRIVATE_EXPR_TEST( (tmp2=li1), static_cast<bool>((tmp2%=li2) == li1) );
+ BOOST_CHECK( static_cast<bool>(li1 / li2 == 0) );
+ BOOST_CHECK( static_cast<bool>(li1 / 2 == 0) );
+ BOOST_CHECK( static_cast<bool>(1 / li2 == 0) );
+ PRIVATE_EXPR_TEST( (tmp2=li1), static_cast<bool>((tmp2/=2) == 0) );
+ PRIVATE_EXPR_TEST( (tmp2=li1), static_cast<bool>((tmp2/=li2) == 0) );
+ BOOST_CHECK( static_cast<bool>(li1 * li2 == li2) );
+ BOOST_CHECK( static_cast<bool>(li1 * 2 == li2) );
+ BOOST_CHECK( static_cast<bool>(1 * li2 == li2) );
+ PRIVATE_EXPR_TEST( (tmp2=li1), static_cast<bool>((tmp2*=2) == li2) );
+ PRIVATE_EXPR_TEST( (tmp2=li1), static_cast<bool>((tmp2*=li2) == li2) );
+ BOOST_CHECK( static_cast<bool>(li2 - li1 == li1) );
+ BOOST_CHECK( static_cast<bool>(li2 - 1 == li1) );
+ BOOST_CHECK( static_cast<bool>(2 - li1 == li1) );
+ PRIVATE_EXPR_TEST( (tmp2=li2), static_cast<bool>((tmp2-=1) == li1) );
+ PRIVATE_EXPR_TEST( (tmp2=li2), static_cast<bool>((tmp2-=li1) == li1) );
+ BOOST_CHECK( static_cast<bool>(li1 + li1 == li2) );
+ BOOST_CHECK( static_cast<bool>(li1 + 1 == li2) );
+ BOOST_CHECK( static_cast<bool>(1 + li1 == li2) );
+ PRIVATE_EXPR_TEST( (tmp2=li1), static_cast<bool>((tmp2+=1) == li2) );
+ PRIVATE_EXPR_TEST( (tmp2=li1), static_cast<bool>((tmp2+=li1) == li2) );
 
     cout << "Performed tests on MyLongInt objects.\n";
 

Modified: branches/proto/v4/status/Jamfile.v2
==============================================================================
--- branches/proto/v4/status/Jamfile.v2 (original)
+++ branches/proto/v4/status/Jamfile.v2 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -19,14 +19,12 @@
 
 import testing ;
 
-alias test_exec_monitor : ../libs/test/build//boost_test_exec_monitor/<link>static ;
-alias unit_test_framework : ../libs/test/build//boost_unit_test_framework/<link>static ;
-
 # Tests from Jamfiles in individual library test subdirectories
 # Please keep these in alphabetic order by test-suite name
 build-project ../libs/accumulators/test ; # test-suite accumulators
 build-project ../libs/algorithm/minmax/test ; # test-suite algorith/minmax
 build-project ../libs/algorithm/string/test ; # test-suite algorithm/string
+build-project ../libs/array/test ; # test-suite array
 build-project ../libs/asio/test ; # test-suite asio
 build-project ../libs/assign/test ; # test-suite assign
 build-project ../libs/any/test ; # test-suite any
@@ -35,6 +33,7 @@
 build-project ../libs/circular_buffer/test ; # test-suite circular_buffer
 build-project ../libs/concept_check ; # test-suite concept_check
 build-project ../libs/conversion/test ; # test-suite conversion
+build-project ../libs/crc/test ; # test-suite crc
 build-project ../libs/date_time/test ; # test-suite date_time
 build-project ../libs/disjoint_sets ; # test-suite disjoint_sets
 build-project ../libs/dynamic_bitset ; # test-suite dynamic_bitset
@@ -78,7 +77,7 @@
 build-project ../libs/serialization/test ; # test-suite serialization
 build-project ../libs/signals/test ; # test-suite signals
 build-project ../libs/smart_ptr/test ; # test-suite smart_ptr
-build-project ../libs/spirit/test ; # test-suite spirit
+build-project ../libs/spirit/classic/test ; # test-suite classic spirit
 build-project ../libs/statechart/test ; # test-suite statechart
 build-project ../libs/static_assert ; # test-suite static_assert
 build-project ../libs/system/test ; # test-suite system
@@ -98,6 +97,11 @@
 
 # Tests specified in this Jamfile
 
+alias test_exec_monitor : ../libs/test/build//boost_test_exec_monitor/<link>static ;
+explicit test_exec_monitor ;
+alias unit_test_framework : ../libs/test/build//boost_unit_test_framework/<link>static ;
+explicit unit_test_framework ;
+
     test-suite config
         :
           # FIXME: Ideally, this should be just an alias to 'main' test suite
@@ -107,13 +111,21 @@
           # interpreted by humans.
           # But such change will require tweaking libs/config/tools/generate.cpp
           # so postponing to later.
- [ run libs/config/test/config_test.cpp test_exec_monitor
+ [ run libs/config/test/config_test.cpp
+ : #args
+ : #input-files
+ : #requirements
+ <threading>multi
+ : config_test_threaded
+ ]
+ [ run libs/config/test/config_test.cpp
                 : #args
                 : #input-files
                 : #requirements
- <threading>multi #!!!<no-warn>config_test.cpp
+ <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static
           ]
- [ run libs/config/test/config_info.cpp : : : <test-info>always_show_run_output ]
+ [ run libs/config/test/config_info.cpp : : : <test-info>always_show_run_output <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ]
+ [ run libs/config/test/config_info.cpp : : : <test-info>always_show_run_output <threading>multi : config_info_threaded ]
            [ run libs/config/test/math_info.cpp : : : <test-info>always_show_run_output <toolset>borland:<runtime-link>static <toolset>borland:<link>static ]
            [ run libs/config/test/abi/abi_test.cpp libs/config/test/abi/main.cpp ]
            [ run libs/config/test/limits_test.cpp test_exec_monitor ]
@@ -131,17 +143,6 @@
           [ compile-fail libs/config/test/threads/test_thread_fail2.cpp ]
         ;
 
- test-suite array_suite # !!!
- : [ run libs/array/array0.cpp ]
- [ run libs/array/array1.cpp ]
- [ run libs/array/array2.cpp ]
- [ run libs/array/array3.cpp ]
- [ run libs/array/array4.cpp ]
- [ run libs/array/array5.cpp ]
- ;
-
- run libs/crc/crc_test.cpp test_exec_monitor ;
-
     run libs/functional/function_test.cpp ;
 
 
@@ -185,8 +186,3 @@
           [ run libs/tokenizer/simple_example_4.cpp ]
           [ run libs/tokenizer/simple_example_5.cpp ]
         ;
-
-
-
-
-

Modified: branches/proto/v4/tools/build/v2/test/BoostBuild.py
==============================================================================
--- branches/proto/v4/tools/build/v2/test/BoostBuild.py (original)
+++ branches/proto/v4/tools/build/v2/test/BoostBuild.py 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -668,8 +668,11 @@
         if exact:
             matched = fnmatch.fnmatch(actual,content)
         else:
- actual_ = map(lambda x: sorted(x.split()),actual.splitlines())
- content_ = map(lambda x: sorted(x.split()),content.splitlines())
+ def sorted_(x):
+ x.sort()
+ return x
+ actual_ = map(lambda x: sorted_(x.split()),actual.splitlines())
+ content_ = map(lambda x: sorted_(x.split()),content.splitlines())
             if len(actual_) == len(content_):
                 matched = map(
                     lambda x,y: map(lambda n,p: fnmatch.fnmatch(n,p),x,y),

Modified: branches/proto/v4/tools/build/v2/tools/builtin.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/builtin.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/builtin.jam 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -29,7 +29,7 @@
 import types/register ;
 
 
-.os-names = amiga aix bsd cygwin darwin dos emx freebsd hpux linux netbsd
+.os-names = amiga aix bsd cygwin darwin dos emx freebsd hpux iphone linux netbsd
     openbsd osf qnx qnxnto sgi solaris sun sunos svr4 sysv ultrix unix unixware
     vms windows ;
 
@@ -206,6 +206,9 @@
 
     # HP/PA-RISC
     parisc
+
+ # Advanced RISC Machines
+ arm
 
     # Combined architectures for platforms/toolsets that support building for
     # multiple architectures at once. "combined" would be the default multi-arch
@@ -243,6 +246,9 @@
 
     # HP/PA-RISC
     700 7100 7100lc 7200 7300 8000
+
+ # Advanced RISC Machines
+ armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5te armv6 armv6j iwmmxt ep9312
 
     : propagated optional ;
 

Modified: branches/proto/v4/tools/build/v2/tools/common.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/common.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/common.jam 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -145,10 +145,11 @@
 # extend it with all the values.
 #
 # The return value from this rule is a condition to be used for flags settings.
-rule check-init-parameters ( toolset : * )
+rule check-init-parameters ( toolset requirement * : * )
 {
     local sig = $(toolset) ;
     local condition = <toolset>$(toolset) ;
+ local subcondition ;
     for local index in 2 3 4 5 6 7 8 9
     {
         local name = $($(index)[1]) ;
@@ -185,6 +186,7 @@
                 .had-value.$(toolset).$(name) = true ;
             }
             feature.extend-subfeature toolset $(t) : $(name) : $(value) ;
+ subcondition += <toolset-$(t):$(name)>$(value) ;
         }
         else
         {
@@ -219,11 +221,25 @@
     .all-signatures += $(sig) ;
     .init-loc.$(sig) = [ errors.nearest-user-location ] ;
 
+ # If we have a requirement, this version should only be applied under that
+ # condition. To accomplish this we add a toolset requirement that imposes
+ # the toolset subcondition, which encodes the version.
+ if $(requirement)
+ {
+ local r = <toolset>$(toolset) $(requirement) ;
+ r = $(r:J=,) ;
+ toolset.add-requirements $(r):$(subcondition) ;
+ }
+
+ # We add the requirements, if any, to the condition to scope the toolset
+ # variables and options to this specific version.
+ condition += $(requirement) ;
+
     if $(.show-configuration)
     {
         ECHO notice: $(condition) ;
     }
- return $(condition) ;
+ return $(condition:J=/) ;
 }
 
 
@@ -628,7 +644,8 @@
 # value as the version number.
 # <property:/property-name/>[joiner]
 # :: Direct lookup of the given property-name value in the
-# build properties.
+# build properties. /property-name/ is a regular expression.
+# e.g. <property:toolset-.*:flavor> will match every toolset.
 # /otherwise/
 # :: The literal value of the format argument.
 #
@@ -678,12 +695,15 @@
 
                 case <property:*> :
                 local key = [ MATCH <property:(.*)> : $(f:G) ] ;
- local p = [ $(property-set).get [ MATCH <property:(.*)> : $(f:G) ] ] ;
- if $(p)
- {
- result += [ join-tag $(f:G=) : $(p) ] ;
+ local p0 = [ MATCH <($(key))> : [ $(property-set).raw ] ] ;
+ if $(p0) {
+ local p = [ $(property-set).get <$(p0)> ] ;
+ if $(p)
+ {
+ result += [ join-tag $(f:G=) : $(p) ] ;
+ }
                 }
-
+
                 case * :
                 result += $(f:G=) ;
             }
@@ -798,7 +818,7 @@
     # toolset, the tag rules won't even see <runtime-debugging>. Similar
     # functionality in V2 is not implemented yet, so we just check for toolsets
     # which are known to care about runtime debug.
- if <toolset>msvc in $(properties)
+ if <toolset>msvc in $(properties)
       || <stdlib>stlport in $(properties)
       || <toolset-intel:platform>win in $(properties)
     {

Modified: branches/proto/v4/tools/build/v2/tools/darwin.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/darwin.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/darwin.jam 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -3,7 +3,7 @@
 # Copyright 2003, 2004, 2005, 2006 Vladimir Prus
 # Copyright 2005-2007 Mat Marcus
 # Copyright 2005-2007 Adobe Systems Incorporated
-# Copyright 2007 Rene Rivera
+# Copyright 2007-2008 Rene Rivera
 # Distributed under the Boost Software License, Version 1.0.
 # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 
@@ -31,6 +31,9 @@
 toolset.inherit-rules darwin : gcc ;
 toolset.inherit-flags darwin : gcc
   : <runtime-link>static
+ <architecture>arm/<address-model>32
+ <architecture>arm/<address-model>64
+ <architecture>arm/<instruction-set>
      <architecture>x86/<address-model>32
      <architecture>x86/<address-model>64
      <architecture>x86/<instruction-set>
@@ -39,9 +42,9 @@
      <architecture>power/<instruction-set> ;
 
 # No additional initialization should be necessary
-rule init ( version ? : command * : options * )
+rule init ( version ? : command * : options * : requirement * )
 {
- local condition = [ common.check-init-parameters darwin : version $(version) ] ;
+ condition = [ common.check-init-parameters darwin $(requirement) : version $(version) ] ;
     local command = [ common.get-invocation-command darwin : g++ : $(command) ] ;
     
     common.handle-options darwin : $(condition) : $(command) : $(options) ;
@@ -54,8 +57,47 @@
     }
 
     gcc.init-link-flags darwin darwin $(condition) ;
-
- flags darwin.link NEED_STRIP $(condition)/<debug-symbols>off : "" ;
+
+ # - The symbol strip program.
+ if <striper> in $(options)
+ {
+ # We can turn off strip by specifying it as empty. In which
+ # case we switch to using the linker to do the strip.
+ flags darwin.link.dll OPTIONS
+ $(condition)/<main-target-type>LIB/<link>shared/<address-model>32/<debug-symbols>off : -Wl,-x ;
+ flags darwin.link.dll OPTIONS
+ $(condition)/<main-target-type>LIB/<link>shared/<address-model>/<debug-symbols>off : -Wl,-x ;
+ flags darwin.link OPTIONS
+ $(condition)/<main-target-type>EXE/<address-model>32/<debug-symbols>off : -s ;
+ flags darwin.link OPTIONS
+ $(condition)/<main-target-type>EXE/<address-model>/<debug-symbols>off : -s ;
+ }
+ else
+ {
+ # Otherwise we need to find a strip program to use. And hence
+ # also tell the link action that we need to use a strip
+ # post-process.
+ flags darwin.link NEED_STRIP $(condition)/<debug-symbols>off : "" ;
+ local strip =
+ [ common.get-invocation-command darwin
+ : strip : [ feature.get-values <striper> : $(options) ] : $(bin) : search-path ] ;
+ flags darwin.link .STRIP $(condition) : $(strip[1]) ;
+ if $(.debug-configuration)
+ {
+ ECHO notice: using strip :: $(condition) :: $(strip[1]) ;
+ }
+ }
+
+ # - The archive builder (libtool is the default as creating
+ # archives in darwin is complicated.
+ local archiver =
+ [ common.get-invocation-command darwin
+ : libtool : [ feature.get-values <archiver> : $(options) ] : $(bin) : search-path ] ;
+ flags darwin.archive .LIBTOOL $(condition) : $(archiver[1]) ;
+ if $(.debug-configuration)
+ {
+ ECHO notice: using archiver :: $(condition) :: $(archiver[1]) ;
+ }
 }
 
 feature framework : : free ;
@@ -107,10 +149,10 @@
 }
 
 # Add the found SDK version only to the allowed set. The "latests" SDKs
-# wil be first in the list, and hence the default.
+# will be first in the list, and hence the default.
 feature macosx-version
     : [ available-macosx-versions ]
- : propagated link-incompatible symmetric ;
+ : propagated link-incompatible symmetric optional ;
 if 10.4 in [ feature.values macosx-version ]
 {
     feature.set-default macosx-version : 10.4 ;
@@ -119,11 +161,11 @@
 # Add the options for all the found SDKs.
 for local sdk in $(.macosx-sdk)
 {
- flags darwin.compile OPTIONS <macosx-version>$(sdk) :
+ flags darwin.compile OPTIONS <target-os>darwin/<macosx-version>$(sdk) :
         -isysroot $(.macosx-sdk.$(sdk))
         -mmacosx-version-min=$(sdk)
         ;
- flags darwin.link OPTIONS <macosx-version>$(sdk) :
+ flags darwin.link OPTIONS <target-os>darwin/<macosx-version>$(sdk) :
         -isysroot $(.macosx-sdk.$(sdk))
         -mmacosx-version-min=$(sdk)
         ;
@@ -155,6 +197,8 @@
 arch-addr-flags darwin OPTIONS : power : 32 : -arch ppc : default ;
 arch-addr-flags darwin OPTIONS : power : 64 : -arch ppc64 ;
 
+arch-addr-flags darwin OPTIONS : arm : 32 : -arch arm : default ;
+
 
 flags darwin.link OPTIONS <runtime-link>static
     : -nodefaultlibs -shared-libgcc -lstdc++-static -lgcc_eh -lgcc -lSystem ;
@@ -168,7 +212,7 @@
 
 # This is flag is useful for debugging the link step
 # uncomment to see what libtool is doing under the hood
-# flags darwin.link.dll OPTIONS : -Wl,-v ;
+#~ flags darwin.link.dll OPTIONS : -Wl,-v ;
 
 _ = " " ;
 
@@ -195,8 +239,8 @@
 
 actions link bind LIBRARIES
 {
- $(CONFIG_COMMAND) -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) $(FRAMEWORK_PATH) -framework$(_)$(FRAMEWORK:D=:S=) $(OPTIONS) $(USER_OPTIONS)
- $(NEED_STRIP)strip $(NEED_STRIP)"$(<)"
+ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) $(FRAMEWORK_PATH) -framework$(_)$(FRAMEWORK:D=:S=) $(OPTIONS) $(USER_OPTIONS)
+ $(NEED_STRIP)"$(.STRIP)" $(NEED_STRIP)"$(<)"
 }
 
 rule link.dll
@@ -206,12 +250,12 @@
 
 actions link.dll bind LIBRARIES
 {
- $(CONFIG_COMMAND) -dynamiclib -install_name "$(<:B)$(<:S)" -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) $(FRAMEWORK_PATH) -framework$(_)$(FRAMEWORK:D=:S=) $(OPTIONS) $(USER_OPTIONS)
+ "$(CONFIG_COMMAND)" -dynamiclib -Wl,-single_module -install_name "$(<:B)$(<:S)" -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) $(FRAMEWORK_PATH) -framework$(_)$(FRAMEWORK:D=:S=) $(OPTIONS) $(USER_OPTIONS)
 }
 
 # We use libtool instead of ar to support universal binary linking
 # TODO: Find a way to use the underlying tools, i.e. lipo, to do this.
 actions piecemeal archive
 {
- libtool -static -o "$(<:T)" $(ARFLAGS) "$(>:T)"
+ "$(.LIBTOOL)" -static -o "$(<:T)" $(ARFLAGS) "$(>:T)"
 }

Modified: branches/proto/v4/tools/build/v2/tools/gcc.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/gcc.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/gcc.jam 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -712,7 +712,7 @@
     case SunOS* :
         {
         flags gcc OPTIONS <threading>multi : -pthreads ;
- flags gcc FINDLIBS-SA <threading>multi : rt ;
+ flags gcc FINDLIBS-SA : rt ;
         }
     case BeOS :
         {
@@ -740,7 +740,7 @@
     case * :
         {
         flags gcc OPTIONS <threading>multi : -pthread ;
- flags gcc FINDLIBS-SA <threading>multi : rt ;
+ flags gcc FINDLIBS-SA : rt ;
         }
     }
 }

Modified: branches/proto/v4/tools/jam/src/lists.c
==============================================================================
--- branches/proto/v4/tools/jam/src/lists.c (original)
+++ branches/proto/v4/tools/jam/src/lists.c 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -13,12 +13,12 @@
  *
  * This implementation essentially uses a singly linked list, but
  * guarantees that the head element of every list has a valid pointer
- * to the tail of the list, so the new elements can efficiently and
+ * to the tail of the list, so the new elements can efficiently and
  * properly be appended to the end of a list.
  *
  * To avoid massive allocation, list_free() just tacks the whole freed
  * chain onto freelist and list_new() looks on freelist first for an
- * available list struct. list_free() does not free the strings in the
+ * available list struct. list_free() does not free the strings in the
  * chain: it lazily lets list_new() do so.
  *
  * 08/23/94 (seiwald) - new list_append()
@@ -32,7 +32,7 @@
  */
 
 LIST *
-list_append(
+list_append(
         LIST *l,
         LIST *nl )
 {
@@ -59,7 +59,7 @@
  */
 
 LIST *
-list_new(
+list_new(
         LIST *head,
         char *string )
 {
@@ -102,7 +102,7 @@
  */
 
 LIST *
-list_copy(
+list_copy(
         LIST *l,
         LIST *nl )
 {
@@ -117,7 +117,7 @@
  */
 
 LIST *
-list_sublist(
+list_sublist(
         LIST *l,
         int start,
         int count )
@@ -133,82 +133,42 @@
         return nl;
 }
 
+static int str_ptr_compare(const void *va, const void *vb)
+{
+ char* a = *( (char**)va );
+ char* b = *( (char**)vb );
+ return strcmp(a, b);
+}
+
 LIST *
 list_sort(
     LIST *l)
 {
-
- LIST* first = 0;
- LIST* second = 0;
- LIST* merged = l;
- LIST* result;
+ int len, ii;
+ char** strings;
+ LIST* listp;
+ LIST* result = 0;
 
     if (!l)
         return L0;
 
- for(;;) {
-
- /* Split the list in two */
- LIST** dst = &first;
- LIST* src = merged;
-
- for(;;) {
-
- *dst = list_append(*dst, list_new(0, src->string));
-
- if (!src->next)
- break;
-
- if (strcmp(src->string, src->next->string) > 0)
- {
- if (dst == &first)
- dst = &second;
- else
- dst = &first;
- }
-
- src = src->next;
- }
+ len = list_length(l);
+ strings = (char**)BJAM_MALLOC( len * sizeof(char*) );
 
- if (merged != l)
- list_free( merged );
- merged = 0;
-
- if (second == 0) {
- result = first;
- break;
- }
+ listp = l;
+ for (ii = 0; ii < len; ++ii) {
+ strings[ii] = listp->string;
+ listp = listp->next;
+ }
 
-
- /* Merge lists 'first' and 'second' into 'merged' and free
- 'first'/'second'. */
- {
- LIST* f = first;
- LIST* s = second;
+ qsort(strings, len, sizeof(char*), str_ptr_compare);
 
- while(f && s)
- {
- if (strcmp(f->string, s->string) < 0)
- {
- merged = list_append( merged, list_new(0, f->string ));
- f = f->next;
- }
- else
- {
- merged = list_append( merged, list_new(0, s->string ));
- s = s->next;
- }
- }
-
- merged = list_copy( merged, f );
- merged = list_copy( merged, s );
- list_free( first );
- list_free( second );
- first = 0;
- second = 0;
- }
+ for (ii = 0; ii < len; ++ii) {
+ result = list_append( result, list_new(0, strings[ii]) );
     }
 
+ BJAM_FREE(strings);
+
     return result;
 }
 
@@ -251,12 +211,12 @@
 void
 list_print( LIST *l )
 {
- LIST *p = 0;
+ LIST *p = 0;
         for( ; l; p = l, l = list_next( l ) )
- if ( p )
+ if ( p )
                 printf( "%s ", p->string );
         if ( p )
- printf( "%s", p->string );
+ printf( "%s", p->string );
 }
 
 /*
@@ -274,7 +234,7 @@
         return n;
 }
 
-int
+int
 list_in(LIST* l, char* value)
 {
     for(; l; l = l->next)
@@ -283,7 +243,7 @@
     return 0;
 }
 
-LIST *
+LIST *
 list_unique( LIST *sorted_list)
 {
     LIST* result = 0;
@@ -297,7 +257,7 @@
             last_added = sorted_list;
         }
     }
- return result;
+ return result;
 }
 
 
@@ -316,7 +276,7 @@
  */
 
 void
-lol_add(
+lol_add(
         LOL *lol,
         LIST *l )
 {
@@ -344,7 +304,7 @@
  */
 
 LIST *
-lol_get(
+lol_get(
         LOL *lol,
         int i )
 {

Modified: branches/proto/v4/tools/quickbook/detail/actions.cpp
==============================================================================
--- branches/proto/v4/tools/quickbook/detail/actions.cpp (original)
+++ branches/proto/v4/tools/quickbook/detail/actions.cpp 2008-04-14 01:18:26 EDT (Mon, 14 Apr 2008)
@@ -12,6 +12,7 @@
 #include <functional>
 #include <boost/bind.hpp>
 #include <boost/filesystem/convenience.hpp>
+#include <boost/filesystem/fstream.hpp>
 #include <boost/lexical_cast.hpp>
 #include "./actions.hpp"
 #include "./utils.hpp"
@@ -324,7 +325,11 @@
         temp.swap(str);
         phrase.swap(save);
 
- out << "<programlisting>\n";
+ //
+ // We must not place a \n after the <programlisting> tag
+ // otherwise PDF output starts code blocks with a blank line:
+ //
+ out << "<programlisting>";
         out << str;
         out << "</programlisting>\n";
     }
@@ -376,9 +381,73 @@
     {
         fs::path const img_path(std::string(first, last));
 
+ std::string attr_text;
+ if(fs::extension(img_path) == ".svg")
+ {
+ //
+ // SVG's need special handling:
+ //
+ // 1) We must set the "format" attribute, otherwise
+ // HTML generation produces code that will not display
+ // the image at all.
+ // 2) We need to set the "contentwidth" and "contentdepth"
+ // attributes, otherwise the image will be displayed inside
+ // a tiny box with scrollbars (Firefox), or else cropped to
+ // fit in a tiny box (IE7).
+ //
+ attr_text = " format=\"SVG\"";
+ //
+ // Image paths are relative to the html subdirectory:
+ //
+ fs::path img;
+ if(img_path.root_path().empty())
+ img = "html" / img_path; // relative path
+ else
+ img = img_path; // absolute path
+ //
+ // Now load the SVG file:
+ //
+ std::string svg_text;
+ fs::ifstream fs(img);
+ char c;
+ while(fs.get(c) && fs.good())
+ svg_text.push_back(c);
+ //
+ // Extract the svg header from the file:
+ //
+ std::string::size_type a, b;
+ a = svg_text.find("<svg");
+ b = svg_text.find('>', a);
+ svg_text = (a == std::string::npos) ? "" : svg_text.substr(a, b - a);
+ //
+ // Now locate the "width" and "height" attributes
+ // and borrow their values:
+ //
+ a = svg_text.find("width");
+ a = svg_text.find('=', a);
+ a = svg_text.find('\"', a);
+ b = svg_text.find('\"', a + 1);
+ if(a != std::string::npos)
+ {
+ attr_text.append(" contentwidth=");
+ attr_text.append(svg_text.begin() + a, svg_text.begin() + b + 1);
+ }
+ a = svg_text.find("height");
+ a = svg_text.find('=', a);
+ a = svg_text.find('\"', a);
+ b = svg_text.find('\"', a + 1);
+ if(a != std::string::npos)
+ {
+ attr_text.append(" contentdepth=");
+ attr_text.append(svg_text.begin() + a, svg_text.begin() + b + 1);
+ }
+ }
+
         phrase << "<inlinemediaobject>";
 
- phrase << "<imageobject><imagedata fileref=\"";
+ phrase << "<imageobject><imagedata ";
+ phrase << attr_text;
+ phrase << " fileref=\"";
         while (first != last)
             detail::print_char(*first++, phrase.get());
         phrase << "\"></imagedata></imageobject>";


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk