Compare commits

..

138 Commits

Author SHA1 Message Date
Antony Polukhin 90af36b0fb Put tests to test folder, remove unrequired files, fix permissions 2013-12-04 20:11:33 +04:00
Antony Polukhin 8a40965a1b Merge remote-tracking branches 'origin/svn-branches/RC_1_31_0', 'origin/svn-branches/RC_1_32_0', 'origin/svn-branches/RC_1_33_0', 'origin/svn-branches/SPIRIT_1_6', 'origin/svn-branches/SPIRIT_MINIBOOST', 'origin/svn-branches/bcbboost', 'origin/svn-branches/bitten', 'origin/svn-branches/compiler_supported_error_messages', 'origin/svn-branches/cpp0x', 'origin/svn-branches/doc', 'origin/svn-branches/maintenance/1_41', 'origin/svn-branches/maintenance/1_50_0', 'origin/svn-branches/maintenance/1_54_0', 'origin/svn-branches/maintenance/1_55_0', 'origin/svn-branches/mpl_v2_2', 'origin/svn-branches/multi_array', 'origin/svn-branches/pdimov_pre_136', 'origin/svn-branches/phoenix_v3', 'origin/svn-branches/proto/v3', 'origin/svn-branches/proto/v4', 'origin/svn-branches/proto/v4.bak', 'origin/svn-branches/python-v2-dev', 'origin/svn-branches/quickbook-dev', 'origin/svn-branches/quickbook-filenames', 'origin/svn-branches/regex-sub', 'origin/svn-branches/serialization_next_release', 'origin/svn-branches/split-config', 'origin/svn-branches/sredl_2009_05_proptree_update', 'origin/svn-branches/system', 'origin/svn-branches/thread_rewrite', 'origin/svn-branches/units/autoprefix', 'origin/svn-branches/unlabeled-1.1.2', 'origin/svn-tags/RC_1_34_0_freeze', 'origin/svn-tags/SPIRIT_1_6_4_MINIBOOST', 'origin/svn-tags/SPIRIT_1_8_5_MINIBOOST', 'origin/svn-tags/SPIRIT_MINIBOOST_1_34_0', 'origin/svn-tags/conversion-merge-1', 'origin/svn-tags/merged_to_RC_', 'origin/svn-tags/merged_to_RC_1_30_0', 'origin/svn-tags/merged_to_RC_1_31_0', 'origin/svn-tags/merged_to_RC_1_33_0' and 'origin/svn-tags/merged_to_RC_1_34_0' into develop 2013-12-04 15:40:59 +04:00
Antony Polukhin f8d8793370 qMerge remote-tracking branches 'origin/svn-branches/modular-build', 'origin/svn-branches/xpressive/nested_dynamic_regex', 'origin/svn-tags/boost_python_llnl_', 'origin/svn-tags/minmax', 'origin/svn-tags/start/Version_1_18_3' and 'origin/svn-tags/tools/jam/Perforce_Jam_2_4_merge_1' into develop
Conflicts:
	cast.htm
	cast_test.cpp
	lexical_cast.htm
	lexical_cast_test.cpp
	test.hpp
2013-12-04 15:25:43 +04:00
Antony Polukhin b4d5c3e558 Merge remote-tracking branches 'origin/svn-branches/b2', 'origin/svn-branches/boost-graph-library', 'origin/svn-branches/doc-tools-docs', 'origin/svn-branches/filesystem-v3', 'origin/svn-branches/filesystem-v3a', 'origin/svn-branches/filesystem3', 'origin/svn-branches/fix-links', 'origin/svn-branches/function_signature_patches_1_31', 'origin/svn-branches/hash', 'origin/svn-branches/initializer-list', 'origin/svn-branches/inspect', 'origin/svn-branches/iostreams_dev', 'origin/svn-branches/iter-adaptor-and-categories' and 'origin/svn-branches/iterator-adaptors' into develop
Conflicts:
2013-12-04 15:19:24 +04:00
Antony Polukhin a57aa55fc8 Merge remote-tracking branch 'origin/svn-branches/RC_1_30_0' into develop
Conflicts:
	include/boost/lexical_cast.hpp
	lexical_cast.htm
	lexical_cast_test.cpp
2013-12-04 13:33:54 +04:00
Antony Polukhin 18016b4b72 Merge remote-tracking branches 'origin/svn-branches/RC_1_27_0', 'origin/svn-branches/RC_1_28_0' and 'origin/svn-branches/RC_1_29_0' into develop 2013-12-04 13:26:47 +04:00
Antony Polukhin 06201b2677 Merge remote-tracking branches 'origin/sandbox-branches/bhy/py3k', 'origin/sandbox-branches/birbacher/fix_documentation', 'origin/sandbox-branches/birbacher/fix_iostreams', 'origin/sandbox-branches/birbacher/propertymap-functormap', 'origin/sandbox-branches/intrusive_fix_SunCC', 'origin/sandbox-branches/optional_optimization' and 'origin/sandbox-branches/straszheim/merge_me_into_trunk' into develop 2013-12-04 13:15:48 +04:00
Daniel James 1435140d54 Create maintenance branch for 1.55.0
[SVN r86623]
2013-11-11 20:02:05 +00:00
Marshall Clow a0f276556a Release 1.55.0
[SVN r86621]
2013-11-11 19:45:21 +00:00
Vladimir Prus ea2cc4772b Create branch to keep WIP patch for modular build.
[SVN r85883]
2013-09-25 08:12:19 +00:00
Daniel James 38394f33e5 Create a maintenance branch for Boost 1.54.0
[SVN r84945]
2013-07-03 21:01:45 +00:00
Daniel James 88afdea9d8 Create a maintenance branch for 1.50.
I know we don't normally do this, but I wanted to store a fix for a bug in
unordered somewhere.


[SVN r79440]
2012-07-12 10:15:53 +00:00
Beman Dawes 3271717a5d Release 1.50.0
[SVN r79156]
2012-06-28 12:37:29 +00:00
Beman Dawes 2b82fa52cd Branch for 2nd try at V2 removal
[SVN r77497]
2012-03-23 12:04:44 +00:00
Frank Birbacher ae8ff308b8 Created branch to extend PropertyMap:
add a readable functor map that calls a given functor or function upon lookup.
Ideas from: http://comments.gmane.org/gmane.comp.lib.boost.user/54397
and: http://comments.gmane.org/gmane.comp.lib.boost.user/73358


[SVN r77438]
2012-03-20 20:11:17 +00:00
Beman Dawes a7df10e078 Create branches/filesystem-v3 for v2 removal
[SVN r77385]
2012-03-18 20:54:17 +00:00
Daniel James 77728aada4 Quickbook: Merge from trunk.
Includes blocks in lists fixes, and some documentation changes.


[SVN r77347]
2012-03-16 08:48:10 +00:00
Christopher Hite e41b6e430d optional_optimization branch
[SVN r77091]
2012-02-22 10:37:27 +00:00
Daniel James 105c713326 Quickbook: Merge to quickbook-dev
[SVN r76630]
2012-01-21 21:43:17 +00:00
Daniel James 5638b5dbec Quickbook: Merge from trunk to quickbook-dev.
[SVN r76255]
2012-01-01 13:35:27 +00:00
Daniel James 82d366cfb4 Quickbook: Merge from trunk to quickbook-dev.
[SVN r75846]
2011-12-07 09:40:30 +00:00
Daniel James 0ff14c8595 Quickbook: Merge from trunk to quickbook-dev
[SVN r75739]
2011-11-30 01:35:25 +00:00
Daniel James c4e1e924ce Quickbook: Copy trunk libs into quickbook-dev branch.
[SVN r75213]
2011-11-01 13:04:29 +00:00
Daniel James f9fd2d3e7c Quickbook: Copy trunk headers into quickbook-dev.
[SVN r75212]
2011-11-01 13:03:44 +00:00
Daniel James cf5989e779 Quickbook: New branch for development.
From now on this will be my development branch.


[SVN r70613]
2011-03-27 10:17:05 +00:00
Daniel James 9fb010da02 Branch for working on the documentation tools documentation.
[SVN r68640]
2011-02-04 21:18:24 +00:00
Daniel James 942057aa79 Branch to work on filename handling without disturbing trunk.
[SVN r68345]
2011-01-21 09:17:08 +00:00
Beman Dawes f6a47bfbba v2, v3, integration branch
[SVN r62649]
2010-06-09 11:34:33 +00:00
Daniel James cbd8204ae0 Create a branch for inspect fixes.
[SVN r61439]
2010-04-20 21:11:27 +00:00
Frank Birbacher 11166a55d2 new branch to fix documentation
[SVN r60575]
2010-03-14 07:44:37 +00:00
Steven Watanabe 8cf6f55354 Create a branch for autoprefixing
[SVN r59996]
2010-02-28 19:19:07 +00:00
Vladimir Prus f5b1744069 Branch for merging Boost.Build and Boost.Jam completely.
[SVN r59143]
2010-01-19 20:47:20 +00:00
Vladimir Prus 257ab58a8d Create maintenance branch for 1.41.
[SVN r57781]
2009-11-19 06:09:27 +00:00
Beman Dawes 21ab509eca Release 1.41.0
[SVN r57747]
2009-11-18 14:58:26 +00:00
Christopher Hite 61246ef4a7 creating branch to fix intrusive for Sun CC (#3339)
[SVN r55764]
2009-08-24 17:08:35 +00:00
Eric Niebler 3829ff5728 Phoenix Reloaded
[SVN r53348]
2009-05-28 17:15:17 +00:00
Troy D. Straszheim 176ad6d5c8 mergme
[SVN r53280]
2009-05-26 14:05:46 +00:00
Sebastian Redl 528e4efa11 Branch for big updates, so that I can have broken intermediate states.
[SVN r53026]
2009-05-15 15:15:42 +00:00
Haoyu Bai d26a461366 Redo py3k branching from trunk again
[SVN r52115]
2009-04-01 16:55:33 +00:00
Eric Niebler c28088c912 merged from trunk
[SVN r49607]
2008-11-06 00:15:47 +00:00
Eric Niebler d8819d1b8e merged from trunk
[SVN r49439]
2008-10-22 20:32:22 +00:00
Nicola Musatti 80446f3947 bcbboost branch rebased on current release
[SVN r49389]
2008-10-19 14:43:01 +00:00
Eric Niebler 3fb54557d2 merged from trunk
[SVN r49133]
2008-10-05 01:47:33 +00:00
Nicola Musatti 6202d68105 CodeGear patch
[SVN r49051]
2008-09-29 21:48:52 +00:00
Nicola Musatti 9058a24729 Merge from trunk
[SVN r48991]
2008-09-28 21:23:55 +00:00
Nicola Musatti 6ca60264f4 Patches for Codegear C++ Builder 2009
[SVN r48981]
2008-09-27 08:59:20 +00:00
Daniel James 8c0f4acb52 Branch for adding initializer list support (only in the unreleased gcc 4.4 at the moment).
[SVN r48931]
2008-09-23 19:45:43 +00:00
Eric Niebler 8fba6804dc merged from trunk
[SVN r48028]
2008-08-08 09:14:18 +00:00
Peter Dimov 379866271c Save state before 1.36 merges.
[SVN r47337]
2008-07-12 09:06:42 +00:00
Beman Dawes cb4221abcc Branch at revision 46530
[SVN r46531]
2008-06-19 18:57:10 +00:00
Eric Niebler d0bac6af0a merged from trunk
[SVN r45844]
2008-05-28 00:03:07 +00:00
Eric Niebler da2d8cd8df merged from trunk
[SVN r45230]
2008-05-08 21:41:48 +00:00
Daniel James 5db4fabba7 Create a branch for documentation work.
[SVN r44584]
2008-04-19 14:48:18 +00:00
Eric Niebler d394a05556 Merged revisions 44452,44472-44484,44486-44493,44495-44497,44499,44506-44507 via svnmerge from
https://svn.boost.org/svn/boost/trunk

................
  r44452 | johnmaddock | 2008-04-16 04:57:29 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Reinstated real_cast to that STLPort tests can pass.
................
  r44472 | emildotchevski | 2008-04-16 11:24:17 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Added #define NOMINMAX to preserve standard behavior of std::min and std::max. Is including <windows.h> here necessary?
................
  r44473 | emildotchevski | 2008-04-16 11:36:30 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Reverting previous change... #define NOMINMAX isn't a good idea either.
................
  r44474 | nasonov | 2008-04-16 14:13:25 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Use make_unsigned and get rid of gcc warnings when -DBOOST_LEXICAL_CAST_ASSUME_C_LOCALE
................
  r44475 | hkaiser | 2008-04-16 15:50:47 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Spirit V2: started to address regression test failures
................
  r44476 | emildotchevski | 2008-04-16 15:55:19 -0700 (Wed, 16 Apr 2008) | 1 line
  
  minor documentation fixes.
................
  r44477 | hkaiser | 2008-04-16 15:56:15 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Wave: fixed a newly introduced compilation error specific to certain platforms.
................
  r44478 | hkaiser | 2008-04-16 16:17:24 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Spirit V2: Fixed more regression problems.
................
  r44479 | hkaiser | 2008-04-16 16:18:18 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Wave: minor edits...
................
  r44480 | jurko | 2008-04-16 17:20:33 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Added a workaround for a compilation failure when including some Boost Serialization headers before some Boost Pool headers using MSVC 7.1 or 8.0. Source of the problem is a compiler bug fixed in MSVC 9.0 and workaround consists of referencing some Windows API identifiers using their fully qualified names. Added a related regression test for the Boost Pool library. See the test code comments for more detailed information on the bug.
................
  r44481 | jurko | 2008-04-16 17:27:30 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Corrected the documentation related to installing new internal property types.
................
  r44482 | hkaiser | 2008-04-16 18:04:19 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Wave: minor edits...
................
  r44483 | hkaiser | 2008-04-16 18:56:25 -0700 (Wed, 16 Apr 2008) | 1 line
  
  Wave: Fixed slex test
................
  r44484 | hkaiser | 2008-04-16 19:00:20 -0700 (Wed, 16 Apr 2008) | 2 lines
  
  Wave: Fixed slex test
................
  r44486 | danieljames | 2008-04-17 00:34:15 -0700 (Thu, 17 Apr 2008) | 35 lines
  
  Movable unordered containers, full support only for compilers with rvalue references.
  
  Merged revisions 44076-44414 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/unordered/trunk
  
  ........
    r44076 | danieljames | 2008-04-06 20:41:19 +0100 (Sun, 06 Apr 2008) | 1 line
    
    Move semantics for compilers with rvalue references.
  ........
    r44077 | danieljames | 2008-04-06 20:48:59 +0100 (Sun, 06 Apr 2008) | 1 line
    
    Do move assignment 'properly'.
  ........
    r44085 | danieljames | 2008-04-06 22:46:04 +0100 (Sun, 06 Apr 2008) | 1 line
    
    Use normal references for the move members, reset the source buckets_ pointer to stop the buckets getting deleted, and remove a superflous pointer check.
  ........
    r44109 | danieljames | 2008-04-07 23:49:36 +0100 (Mon, 07 Apr 2008) | 1 line
    
    Add missing tests.
  ........
    r44366 | danieljames | 2008-04-13 12:59:46 +0100 (Sun, 13 Apr 2008) | 1 line
    
    Avoid using rvalue references in the implementation files.
  ........
    r44368 | danieljames | 2008-04-13 15:13:33 +0100 (Sun, 13 Apr 2008) | 6 lines
    
    Use a cut down version of the work in progress move library to implement move
    semantics on more compilers. Unfortunately the move constructor with allocator
    isn't really practical at the moment, since in the case where the container
    can't be moved, and the allocators aren't equal it will copy the container
    twice.
  ........
................
  r44487 | danieljames | 2008-04-17 00:39:24 -0700 (Thu, 17 Apr 2008) | 13 lines
  
  Use Boost.Test's minimal test library for unordered & hash. It's closer to
  Boster.Test which makes it easier to switch to take advantage of Boost.Test's
  extra testing facilities.
  
  Merged revisions 44420 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/unordered/trunk
  
  ........
    r44420 | danieljames | 2008-04-14 19:02:03 +0100 (Mon, 14 Apr 2008) | 1 line
    
    Use Boost.Test's minimal test library.
  ........
................
  r44488 | danieljames | 2008-04-17 00:42:47 -0700 (Thu, 17 Apr 2008) | 19 lines
  
  A few tweaks for the unordered tests.
  
  Merged revisions 44461-44462,44466 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/unordered/trunk
  
  ........
    r44461 | danieljames | 2008-04-16 18:34:48 +0100 (Wed, 16 Apr 2008) | 2 lines
    
    Try to get some more tests working on Borland.
  ........
    r44462 | danieljames | 2008-04-16 18:34:59 +0100 (Wed, 16 Apr 2008) | 2 lines
    
    Write out the number of copies when the unnecessary copy test fails.
  ........
    r44466 | danieljames | 2008-04-16 18:35:44 +0100 (Wed, 16 Apr 2008) | 2 lines
    
    Add compile test for get_allocator.
  ........
................
  r44489 | danieljames | 2008-04-17 00:45:20 -0700 (Thu, 17 Apr 2008) | 36 lines
  
  Refactor the hash table implementation a little bit. Some of the changes are to
  make implementing emplace easier.
  
  Merged revisions 44458-44460,44463-44465 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/unordered/trunk
  
  ........
    r44458 | danieljames | 2008-04-16 18:31:35 +0100 (Wed, 16 Apr 2008) | 2 lines
    
    Pull out the buffered functions.
  ........
    r44459 | danieljames | 2008-04-16 18:31:45 +0100 (Wed, 16 Apr 2008) | 4 lines
    
    Inline construct_node and create_node into copy_group - these used to be used
    in the implementation of insert but aren't now because of insert's exception
    requirements, so keeping them around was just confusing.
  ........
    r44460 | danieljames | 2008-04-16 18:31:54 +0100 (Wed, 16 Apr 2008) | 4 lines
    
    Change link_node so that it takes a node_constructor containing a constructed
    node instead of a node - this makes the code a little cleaner and also
    simplifies exception safety.
  ........
    r44463 | danieljames | 2008-04-16 18:35:11 +0100 (Wed, 16 Apr 2008) | 2 lines
    
    Explicitly name the different insert overloads.
  ........
    r44464 | danieljames | 2008-04-16 18:35:22 +0100 (Wed, 16 Apr 2008) | 2 lines
    
    Explicitly name the different erase overloads.
  ........
    r44465 | danieljames | 2008-04-16 18:35:33 +0100 (Wed, 16 Apr 2008) | 2 lines
    
    Call the erase methods in hash_table_data directly.
  ........
................
  r44490 | danieljames | 2008-04-17 00:49:45 -0700 (Thu, 17 Apr 2008) | 11 lines
  
  Fix an error on compilers without SFINAE.
  
  Merged revisions 44470 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/unordered/trunk
  
  ........
    r44470 | danieljames | 2008-04-16 18:36:26 +0100 (Wed, 16 Apr 2008) | 2 lines
    
    Missing semi-colon.
  ........
................
  r44491 | djowel | 2008-04-17 02:01:51 -0700 (Thu, 17 Apr 2008) | 1 line
  
  char-sets
................
  r44492 | djowel | 2008-04-17 02:02:03 -0700 (Thu, 17 Apr 2008) | 1 line
  
  char-sets
................
  r44493 | djowel | 2008-04-17 02:44:31 -0700 (Thu, 17 Apr 2008) | 1 line
  
  fixed redundancy in namespace qi::detail::detail
................
  r44495 | jurko | 2008-04-17 04:56:16 -0700 (Thu, 17 Apr 2008) | 1 line
  
  Removed an extra unused 'executed' feature attribute.
................
  r44496 | hkaiser | 2008-04-17 05:22:33 -0700 (Thu, 17 Apr 2008) | 1 line
  
  Spirit V2: Fixed a gcc complaint
................
  r44497 | hkaiser | 2008-04-17 05:29:18 -0700 (Thu, 17 Apr 2008) | 1 line
  
  Spirit V2: Fixed a gcc complaint
................
  r44499 | fmhess | 2008-04-17 06:40:44 -0700 (Thu, 17 Apr 2008) | 3 lines
  
  Added another BOOST_ASSERT to enable_shared_from_this::_internal_accept_owner.
................
  r44506 | johnmaddock | 2008-04-17 08:49:39 -0700 (Thu, 17 Apr 2008) | 1 line
  
  Change <functional> include so that it still works when Boost.TR1 is in the include path.
................
  r44507 | johnmaddock | 2008-04-17 09:21:04 -0700 (Thu, 17 Apr 2008) | 1 line
  
  Try and fix the remaining Intel-Linux failures.
................


[SVN r44523]
2008-04-17 21:50:51 +00:00
Eric Niebler 7df8ff783b really screwy merge trancking behavior, starting over
[SVN r44394]
2008-04-14 05:45:24 +00:00
Rene Rivera bbc8d26d66 Cleanup release tags.
[SVN r44232]
2008-04-12 03:12:43 +00:00
Eric Niebler 978c39d888 post-review proto version
[SVN r44061]
2008-04-05 18:00:00 +00:00
Eric Niebler b8c0c988a7 Merged revisions 42451-43517 via svnmerge from
https://svn.boost.org/svn/boost/trunk

................
  r42455 | johnmaddock | 2008-01-04 08:54:35 -0800 (Fri, 04 Jan 2008) | 1 line
  
  Fix typos.
................
  r42456 | eric_niebler | 2008-01-04 09:14:53 -0800 (Fri, 04 Jan 2008) | 1 line
  
  mark up borland and sun accumulators failures
................
  r42459 | andreas_huber69 | 2008-01-04 10:23:18 -0800 (Fri, 04 Jan 2008) | 1 line
  
  This should fix template parameter shadowing errors for gcc and Intel compilers.
................
  r42462 | bgubenko | 2008-01-04 15:55:43 -0800 (Fri, 04 Jan 2008) | 1 line
  
  mark Accumulators tests for gcc 4.2.1 affected by GCC Bugzilla Bug 33580
................
  r42471 | turkanis | 2008-01-04 20:51:49 -0800 (Fri, 04 Jan 2008) | 1 line
  
  merged changes from iostreams_dev, revisions 42441-42469; added 'std::' for Intel on Linux/Darwin; added STDCXX workaround for codecvt; fixed docs for invert.hpp
................
  r42473 | turkanis | 2008-01-04 23:35:44 -0800 (Fri, 04 Jan 2008) | 1 line
  
  new iostreams expected failures: stream_offset_64bit_test.cpp on Borland, and wide stream tests on gcc-3.4.2_hpux_pa_risc
................
  r42475 | andreas_huber69 | 2008-01-05 04:42:02 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Added defaults for in_state_reaction template parameters and updated tests accordingly.
................
  r42476 | bemandawes | 2008-01-05 06:41:55 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Disable Microsoft "secure" overloads in Dinkumware libraries since they cause compile errors with Intel versions 9 and 10
................
  r42478 | jurko | 2008-01-05 07:19:53 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Typo corrections. Minor stylistic changes.
................
  r42479 | jurko | 2008-01-05 08:53:03 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Updated Boost.Jam command line option texts. Minor stylistic changes.
................
  r42480 | jurko | 2008-01-05 08:55:36 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Typo corrections. Minor stylistic changes.
................
  r42481 | jurko | 2008-01-05 08:56:42 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Typo correction. Corrected an invalid command-line option name.
................
  r42482 | jurko | 2008-01-05 08:57:17 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Corrected an invalid command-line option name reference.
................
  r42483 | jurko | 2008-01-05 08:58:01 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Corrected an out-of-date comment listing all command-line options.
................
  r42484 | jurko | 2008-01-05 09:11:50 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Corrected the used file suffix for the VERBATIM file type. Now the documentation is in sync with the 'customization' example. This also closes the Trac ticket 134. Minor stylistic changes.
................
  r42485 | jurko | 2008-01-05 09:46:45 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Stylistic comment changes & typo corrections.
................
  r42486 | jurko | 2008-01-05 09:52:31 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Stylistic comment changes & typo corrections in several files. Corrected an incorrect error message in boost-build/build/project.jam displayed when a --build-dir command-line option and a non top-level project build-dir attribute are specified.
................
  r42487 | jurko | 2008-01-05 09:54:02 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Cleaned up some import rule calls.
................
  r42488 | jurko | 2008-01-05 10:02:23 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Documentation wording cleaned up a bit.
................
  r42489 | jurko | 2008-01-05 10:13:10 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Removed or simplified some import calls. Comment updates. Minor stylistic changes.
................
  r42490 | jurko | 2008-01-05 10:14:20 -0800 (Sat, 05 Jan 2008) | 2 lines
  
  Simplified the used make rules. Removed some dead code. Minor stylistic changes.
................
  r42492 | jurko | 2008-01-05 10:29:36 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Removed trailing spaces and some empty lines.
................
  r42494 | jurko | 2008-01-05 12:02:24 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Minor stylistic changes such as: comment typo corrections, wrapping lines to 80 characters, indentations, removing trailing spaces, etc.
................
  r42495 | jurko | 2008-01-05 12:06:15 -0800 (Sat, 05 Jan 2008) | 2 lines
  
  Cleaned up where the stage module is imported in tools/builtin.jam. Added a missing import in tools/stage.jam that causes errors with the previous fix. Minor stylistic changes in tools/stage.jam.
................
  r42496 | jurko | 2008-01-05 12:14:48 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Comment cleanup.
................
  r42497 | jurko | 2008-01-05 12:37:44 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Minor stylistic changes - cleaned up import calls, wrapped much text at 80 characters updated comments, typo corrections, removed trailing spaces, etc.
................
  r42498 | jurko | 2008-01-05 12:48:50 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Renamed some Jamfile and project-root.jam references to Jamfile.jam and Jamroot.jam respectively.
................
  r42499 | jurko | 2008-01-05 13:37:15 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Test code cleaned up a bit. No functional changes.
................
  r42502 | hkaiser | 2008-01-05 14:44:28 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Wave: updated copyright messages to include the year 2008 (merged from release branch).
................
  r42504 | jurko | 2008-01-05 15:18:17 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Refactored the test into two separate test functions. Made the 'directory names with dots' test use the expect_output_line() tool instead of a manual find, causing a better diagnostic to be displayed in case of a failure. Made one of the test Jam scripts more compact. Made the test use the Jamroot.jam file instead of project-root.jam.
................
  r42505 | bgubenko | 2008-01-05 15:35:05 -0800 (Sat, 05 Jan 2008) | 1 line
  
  mark up accumulators library test weighted_kurtosis for acc toolset
................
  r42506 | jurko | 2008-01-05 16:25:48 -0800 (Sat, 05 Jan 2008) | 1 line
  
  No functional changes but only stylistic changes such as: comment typo corrections, wrapping lines to 80 characters, indentations, removing trailing spaces, removing empty lines, made tests use Jamfile.jam and Jamroot.jam Boost Build script names, removed unnecessary module imports, etc.
................
  r42507 | jurko | 2008-01-05 16:53:09 -0800 (Sat, 05 Jan 2008) | 1 line
  
  No functional changes but only stylistic changes such as: comment typo corrections, wrapping lines to 80 characters, indentations, removing trailing spaces, removing empty lines, removed unnecessary module imports, etc.
................
  r42508 | jurko | 2008-01-05 22:15:39 -0800 (Sat, 05 Jan 2008) | 5 lines
  
  Refactored build-system.jam. Added many detailed comments.
  
  Test configuration module now gets loaded the same as all other configuration modules.
  
  In addition to being able to specify which user configuration to load, user may now also prevent loading the user configuration by specifying an empty file name for it.
................
  r42509 | jurko | 2008-01-05 22:50:56 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Added a --test-config command-line option for specifying where the test configuration file should be loaded from instead of always being looked up in Boost Build's test folder. This allows non-test builds to not use test config when it exists on the system and different tests to use different test configurations when needed.
................
  r42510 | jurko | 2008-01-05 22:58:24 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Specifying that a build uses test configuration no longer prevents toolset auto-configuration and therefore no longer causes --toolset options to be ignored.
................
  r42511 | jurko | 2008-01-05 23:13:28 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Minor stylistic comment changes.
................
  r42512 | jurko | 2008-01-05 23:17:08 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Added support for choosing the toolset and toolset version to be used 'by default' by Boost Build. Allows testing of default toolset functionality.
................
  r42513 | jurko | 2008-01-05 23:26:46 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Upgraded the tool for testing that a certain line exists in the given output support so that it now also knows how to test that a certain line does not exist in the given output.
................
  r42514 | jurko | 2008-01-05 23:28:47 -0800 (Sat, 05 Jan 2008) | 1 line
  
  Added the --ignore-site-config option telling Boost.Build not to load the site configuration file.
................
  r42516 | jurko | 2008-01-06 00:16:34 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Stylistic changes: typo corrections, comment alignments, output string updates, no functional changes, etc.
................
  r42527 | andreas_huber69 | 2008-01-06 05:49:31 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Various doc updates.
................
  r42528 | danieljames | 2008-01-06 08:47:16 -0800 (Sun, 06 Jan 2008) | 2 lines
  
  Add Boost.Unordered and add to the documentation. Not fully integrated yet.
................
  r42529 | danieljames | 2008-01-06 08:48:36 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Add more libraries that use Boost.Hash to its intro.
................
  r42530 | danieljames | 2008-01-06 08:49:11 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Add Boost.Unordered to Boost.Hash's intro.
................
  r42531 | danieljames | 2008-01-06 08:59:18 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Combine the 'container' and 'unordered' tests.
................
  r42532 | danieljames | 2008-01-06 08:59:49 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Give the unordered exception test suite its own name.
................
  r42533 | danieljames | 2008-01-06 09:13:15 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Add the contents of compile_tests.cpp to set_compile.cpp and map_compile.cpp
................
  r42534 | danieljames | 2008-01-06 09:16:51 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Rename the test-suites to match other libraries' style.
................
  r42535 | danieljames | 2008-01-06 09:23:16 -0800 (Sun, 06 Jan 2008) | 2 lines
  
  Add forwarding html files for Boost.Unordered.
................
  r42536 | danieljames | 2008-01-06 09:40:32 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Add Boost.Unordered to the regression tests.
................
  r42537 | eric_niebler | 2008-01-06 09:44:06 -0800 (Sun, 06 Jan 2008) | 1 line
  
  add myself as maintainer of accumulators
................
  r42538 | danieljames | 2008-01-06 09:45:18 -0800 (Sun, 06 Jan 2008) | 2 lines
  
  Add library identification.
................
  r42539 | danieljames | 2008-01-06 09:48:11 -0800 (Sun, 06 Jan 2008) | 2 lines
  
  Add the unordered library to the maintainers list.
................
  r42540 | danieljames | 2008-01-06 09:56:06 -0800 (Sun, 06 Jan 2008) | 2 lines
  
  Add unordered to the library list.
................
  r42544 | turkanis | 2008-01-06 10:32:05 -0800 (Sun, 06 Jan 2008) | 18 lines
  
  copy.hpp: 
  
      fix for Visual Age: std::min was passed arguments of different types; replaced std:: min with conditional
  
  detail/streambuf/indirect_streambuf.hpp: 
  
      removed trailing comma in enum definition
  
  test/combine_test.cpp:
  test/symmetric_filter_test.cpp:
  test/compose_test.cpp:
  test/close_test.cpp:
  test/invert_test.cpp:
  test/tee_test.cpp:
  test/restrict_test.cpp:
  test/Jamfile.v2:
  
      moved tests for close() into the test files for various adapters
................
  r42546 | jurko | 2008-01-06 12:06:33 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Corrected a bug with the customized default toolset being read from the toolset module but defined in the build-system module. Effect was that customized default toolsets were getting ignored.
................
  r42547 | jurko | 2008-01-06 12:37:55 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Simple code cleanup. Typo corrections.
................
  r42548 | jurko | 2008-01-06 12:43:25 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Added support for tests configuring whether they want their Boost Build to ignore toolset requirements instead of always ignoring them. Minor stylistic changes.
................
  r42549 | jurko | 2008-01-06 12:56:20 -0800 (Sun, 06 Jan 2008) | 1 line
  
  Added new tests related to Boost Build's default toolset handling. They test that the correct default toolset gets use and that when it gets used that has no different status than any other explicitly specified toolset.
................
  r42563 | turkanis | 2008-01-06 17:26:52 -0800 (Sun, 06 Jan 2008) | 1 line
  
  marked restrict_test.cpp as failing on vacpp and stream_offset_64bit_test as failing on sun (iostreams)
................
  r42564 | turkanis | 2008-01-06 17:32:29 -0800 (Sun, 06 Jan 2008) | 1 line
  
  alphabetized the iostreams failures
................
  r42565 | turkanis | 2008-01-06 21:20:32 -0800 (Sun, 06 Jan 2008) | 5 lines
  
  merged changes from branches/iostreams_dev, revisions 42544-42544
  
  - added "slice" as an alias for "restrict", for platforms on which "restrict" is a keyword
  - attempted to configure file_descriptor for __IBMCPP__
  - added better error output to stream_offset_64bit_test.cpp
................
  r42566 | jurko | 2008-01-07 09:00:59 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Corrected explicitly specified user-config file handling. Was not looking for the specified file in the regular path instead of the current folder and did not work with absolute paths.
................
  r42567 | jurko | 2008-01-07 10:15:13 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Code cleanup. Converted to using True/False instead of 1/0. Changed to obey documented coding conventions regarding whitespace and function parameters. Renamed private member functions to use the __ name prefix.
................
  r42568 | jurko | 2008-01-07 10:38:28 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Added a new configuration test making sure that the bug with not being able to process absolute user-config configuration file references never rears its ugly head again.
................
  r42570 | eric_niebler | 2008-01-07 11:06:31 -0800 (Mon, 07 Jan 2008) | 1 line
  
  s/order/tail/
................
  r42571 | eric_niebler | 2008-01-07 11:08:16 -0800 (Mon, 07 Jan 2008) | 1 line
  
  add missing includes, fix signed/unsigned warnings, clean-up trailing whitespace, fixes #1552
................
  r42572 | danieljames | 2008-01-07 11:40:32 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Rename the exception tests so that they don't clash with the normal tests.
................
  r42573 | danieljames | 2008-01-07 11:41:05 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Remove some development code.
................
  r42575 | danieljames | 2008-01-07 11:44:13 -0800 (Mon, 07 Jan 2008) | 3 lines
  
  Add missing 'use namespace std'. Which I should have done when I was told about
  them before. Sorry.
................
  r42576 | danieljames | 2008-01-07 11:46:27 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Add support for multiple copyrights in the library info.
................
  r42578 | danieljames | 2008-01-07 11:51:02 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Reneame the set and map compile tests so they'll be adjacent in the test results.
................
  r42580 | danieljames | 2008-01-07 12:06:15 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Avoid some uses of an invalid pointer.
................
  r42581 | danieljames | 2008-01-07 12:07:12 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Use the default location for the reference documentation.
................
  r42587 | danieljames | 2008-01-07 13:05:42 -0800 (Mon, 07 Jan 2008) | 5 lines
  
  Fix a bug which was causing the memory area stuff to fail.
  
  I should probably try to be less clever and use memory area's lower
  bounds as the key, and do the extra work required to get that working.
................
  r42588 | danieljames | 2008-01-07 13:07:43 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Fix an off by one error.
................
  r42591 | danieljames | 2008-01-07 13:47:24 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Merge in spell check.
................
  r42596 | turkanis | 2008-01-07 15:13:26 -0800 (Mon, 07 Jan 2008) | 5 lines
  
  merged changes from branches/iostreams_dev, revisions 42565-42595:
  
  - Simplified implementation with the help to the C-runtime function _get_osfhandle so that on Windows only a single HANDLE is stored and the POSIX-style implementation is never needed; added the handle_type on POSIX systems (typedef for int) and a function returning the underlying handle as an instance of handle_type
  - fixed the bug described in ticket Ticket #1551 (stream_buffer::seekpos ignores openmode parameter)
  - fixed test/operation_sequence_test.cpp file description
................
  r42598 | grafik | 2008-01-07 18:49:25 -0800 (Mon, 07 Jan 2008) | 1 line
  
  Mostly fix bad path calc for direct html from doxygen doc generation. (fixes #1562)
................
  r42600 | turkanis | 2008-01-07 19:49:23 -0800 (Mon, 07 Jan 2008) | 1 line
  
  merged changes from branches/iostreams_dev revisions 42595-42599; applied Dinkumware implementation of positioning functions to IBM Visual Age; simplified and corrected implementation
................
  r42602 | turkanis | 2008-01-07 20:20:38 -0800 (Mon, 07 Jan 2008) | 1 line
  
  removed unneeded headers, one of which (restrict.hpp) causes failures on IBM Visual Age
................
  r42603 | turkanis | 2008-01-07 20:52:54 -0800 (Mon, 07 Jan 2008) | 1 line
  
  removed spurious '.cpp' extension from test names (iostreams)
................
  r42612 | danieljames | 2008-01-08 05:59:01 -0800 (Tue, 08 Jan 2008) | 3 lines
  
  Merge in latest unordered developments (revisions 42607-42611).
................
  r42613 | jurko | 2008-01-08 06:40:24 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Added a new test making sure properties conditioned on multiple different feature values are handled correctly. This especially includes testing the case when one of those features is <toolset> and the value given for it includes a toolset version.
................
  r42614 | jurko | 2008-01-08 07:21:15 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Made some debugging messages more consistent.
................
  r42615 | eric_niebler | 2008-01-08 09:42:20 -0800 (Tue, 08 Jan 2008) | 1 line
  
  support for LaTeX formulas in Doxygen comments
................
  r42616 | eric_niebler | 2008-01-08 09:43:34 -0800 (Tue, 08 Jan 2008) | 1 line
  
  automatically generate png files from LaTeX formulas using doxygen
................
  r42617 | jurko | 2008-01-08 09:51:30 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Comment correction.
................
  r42619 | danieljames | 2008-01-08 10:15:01 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Merge: Another missing 'using namespace std'
................
  r42620 | eric_niebler | 2008-01-08 10:43:43 -0800 (Tue, 08 Jan 2008) | 1 line
  
  fix signed/unsigned warnings, clean up trailing whitespace
................
  r42624 | eric_niebler | 2008-01-08 13:40:52 -0800 (Tue, 08 Jan 2008) | 1 line
  
  disable iterator debugging for all msvc versions
................
  r42625 | turkanis | 2008-01-08 14:25:01 -0800 (Tue, 08 Jan 2008) | 1 line
  
  merged changes from branches/iostreams_dev, revisions 42602-42624: adding missing included to fix #1550; fix for positioning on IBM; fix for file_descriptor on POSIX; restructed the version range for the Borland workaround in large_file_test.cpp
................
  r42626 | jurko | 2008-01-08 17:09:26 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Minor stylistic code indentation changes.
................
  r42627 | jurko | 2008-01-08 17:11:03 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Tried trailing spaces. Minor comment typo corrections.
................
  r42628 | jurko | 2008-01-08 17:18:38 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Remove trailing spaces. Removed an empty line.
................
  r42629 | jurko | 2008-01-08 20:05:29 -0800 (Tue, 08 Jan 2008) | 8 lines
  
  Updated the __ACTION_RULE__ to not return its action command output as a single string but instead split it into a list of output lines. This allows Jam code using this output to work correctly independently of what newline character combinations are in use. This was causing problems with Boost Build unit tests which can now be updated to pass.
  
  Consequences & checks:
    * Final __ACTION_RULE__ rule parameter has changed from output ? to output-lines *.
    * Updated corresponding Jam documentation.
    * Updated the all related Boost Build code.
    * No code on the Boost trunk uses this rule except for Boost Build itself.
................
  r42630 | jurko | 2008-01-08 20:15:35 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Fixed a failing test by making it access action output using the __ACTION_RULE__ rule so it would not be affected by the level of debug output given by Boost Build/Jam.
................
  r42631 | jurko | 2008-01-08 20:30:25 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Fixed a failing test by making it access its action results using the __ACTION_RULE__ rule. Now it works with the default debug level settings (i.e. no action output displayed).
................
  r42632 | grafik | 2008-01-08 20:31:58 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Revert various changes that break backward compatibility, and also some minor edits.
................
  r42633 | grafik | 2008-01-08 20:34:12 -0800 (Tue, 08 Jan 2008) | 1 line
  
  Revert various changes that break backward compatibility, and also some minor edits.
................
  r42637 | jurko | 2008-01-09 06:36:37 -0800 (Wed, 09 Jan 2008) | 1 line
  
  Updated the test so it passes on Windows. Had to change it to enable action output logging and compensate for the fact that now action names are sent to the output as well. Minor stylistic changes.
................
  r42639 | jurko | 2008-01-09 09:03:45 -0800 (Wed, 09 Jan 2008) | 1 line
  
  Updated the test so it passes on Windows. Had to change it to enable action output logging and compensate for the fact that now action names are sent to the output as well. Minor stylistic changes.
................
  r42641 | eric_niebler | 2008-01-09 12:21:51 -0800 (Wed, 09 Jan 2008) | 1 line
  
  copy the png files to where fop will look for them when building pdf
................
  r42642 | eric_niebler | 2008-01-09 12:33:05 -0800 (Wed, 09 Jan 2008) | 1 line
  
  fix more signed/unsigned warnings
................
  r42644 | turkanis | 2008-01-09 15:13:57 -0800 (Wed, 09 Jan 2008) | 1 line
  
  marked stream_offset_64bit_test as an expected failure on vacpp (iostreams)
................
  r42645 | turkanis | 2008-01-09 15:16:17 -0800 (Wed, 09 Jan 2008) | 1 line
  
  replaced 2 occurrences of the identifier 'restrict' with BOOST_IOSTREAMS_RESTRICT
................
  r42646 | turkanis | 2008-01-09 19:27:51 -0800 (Wed, 09 Jan 2008) | 1 line
  
  added expected failures for Sun and IBM; removed a Borland intermittent failure; removed some obsolete toolsets (iostreams)
................
  r42647 | troyer | 2008-01-10 01:49:16 -0800 (Thu, 10 Jan 2008) | 1 line
  
  Optimizations for Boost.MPI
................
  r42648 | troyer | 2008-01-10 03:54:36 -0800 (Thu, 10 Jan 2008) | 1 line
  
  Undid backward-compatibility breaking change in pair serialization
................
  r42651 | johnmaddock | 2008-01-10 04:10:37 -0800 (Thu, 10 Jan 2008) | 1 line
  
  Apply patch from Issue #1187.
................
  r42657 | anthonyw | 2008-01-10 06:19:36 -0800 (Thu, 10 Jan 2008) | 1 line
  
  removed references to NULL
................
  r42658 | turkanis | 2008-01-10 10:50:19 -0800 (Thu, 10 Jan 2008) | 1 line
  
  marked up two moe expected failures for sun-5.7-5.8 (iostreams)
................
  r42664 | bgubenko | 2008-01-10 13:13:42 -0800 (Thu, 10 Jan 2008) | 1 line
  
  marked iostreams library compose_test for gcc-3.4.6_linux_ia64 : linking exceeds 10 min. limit
................
  r42665 | danieljames | 2008-01-10 14:25:35 -0800 (Thu, 10 Jan 2008) | 2 lines
  
  Initialise svnmerge for merging changes for unordered.
................
  r42666 | danieljames | 2008-01-10 14:30:46 -0800 (Thu, 10 Jan 2008) | 6 lines
  
  Merge latest unordered developments:
  
  Make simple_test test a little more.
  Use doubles for calculating max load factor.
  Some workarounds, mostly for Borland and running the tests.
................
  r42670 | turkanis | 2008-01-10 16:02:36 -0800 (Thu, 10 Jan 2008) | 1 line
  
  merged changes from branches/iostreams_dev, revisions 42645=42660; fix for Intel-darwin; removed dependence of file_descriptor_test and mapped_file_test on library boost_iostreams
................
  r42672 | turkanis | 2008-01-10 17:35:46 -0800 (Thu, 10 Jan 2008) | 1 line
  
  force static runtime-link for intel-darwin
................
  r42674 | johnmaddock | 2008-01-11 01:55:43 -0800 (Fri, 11 Jan 2008) | 1 line
  
  Fix bugs reported by Will Drewry: certain invalid regexes can cause the library to access invalid memory, changed to ensure that the correct exception is thrown long before this happens.
................
  r42676 | jurko | 2008-01-11 05:44:51 -0800 (Fri, 11 Jan 2008) | 1 line
  
  Removed the manual boost-build.jam file creation since that file already exists in the SVN repository and this only overwrote it with the same content minus the copyright notice. Removed a reference to the no longer existing boost_build_v2.html file.
................
  r42677 | johnmaddock | 2008-01-11 05:48:57 -0800 (Fri, 11 Jan 2008) | 1 line
  
  Update for Intel-10.1.
................
  r42684 | turkanis | 2008-01-11 11:12:22 -0800 (Fri, 11 Jan 2008) | 1 line
  
  another attempt to fix linking for compression tests on intel-darwin
................
  r42688 | turkanis | 2008-01-11 14:58:21 -0800 (Fri, 11 Jan 2008) | 1 line
  
  merged changes from iostreams_dev; fixes for IBM and more documentation
................
  r42689 | turkanis | 2008-01-11 18:45:55 -0800 (Fri, 11 Jan 2008) | 1 line
  
  more detailed note for vacpp (iostreams)
................
  r42691 | eric_niebler | 2008-01-11 22:43:28 -0800 (Fri, 11 Jan 2008) | 1 line
  
  new style transforms a-la proto v3
................
  r42693 | nesotto | 2008-01-12 04:38:57 -0800 (Sat, 12 Jan 2008) | 1 line
  
  doc fixes
................
  r42698 | danieljames | 2008-01-12 06:43:40 -0800 (Sat, 12 Jan 2008) | 9 lines
  
  Merge the latest unordered changes. These are concerned with getting the tests
  working on more compilers. The biggest change is that the exception tests have
  been changed to use a very simple exception testing mechanism on top of
  lightweight_test. This was because Boost.Test exception testing isn't working
  on several platforms. I'm trying to set this up so that I can use Boost.Test on
  compilers which it completely supports, and lightweight test on others.
  Boost.Test tests more than my simple exception testing code ever will so it's
  worth using where I can.
................
  r42700 | eric_niebler | 2008-01-12 09:09:17 -0800 (Sat, 12 Jan 2008) | 1 line
  
  missing includes
................
  r42701 | eric_niebler | 2008-01-12 09:40:40 -0800 (Sat, 12 Jan 2008) | 1 line
  
  more msvc-7.1-friendly default_context implementation, more missing headers
................
  r42706 | turkanis | 2008-01-12 12:19:42 -0800 (Sat, 12 Jan 2008) | 1 line
  
  corrected use of feature detection macros for AIX; simplified implementation slightly; updated docs
................
  r42707 | turkanis | 2008-01-12 12:20:35 -0800 (Sat, 12 Jan 2008) | 1 line
  
  removed intel-darwin sepcific code, since it didn't work
................
  r42708 | eric_niebler | 2008-01-12 13:19:45 -0800 (Sat, 12 Jan 2008) | 1 line
  
  port toy_spirit example to proto v3
................
  r42713 | turkanis | 2008-01-12 23:17:07 -0800 (Sat, 12 Jan 2008) | 1 line
  
  improved docs
................
  r42715 | nesotto | 2008-01-13 03:37:41 -0800 (Sun, 13 Jan 2008) | 1 line
  
  fixed #if to #ifdef
................
  r42722 | bgubenko | 2008-01-13 07:52:12 -0800 (Sun, 13 Jan 2008) | 1 line
  
  better note for iostreams library test compose_test on gcc-3.4.6_linux_ia64
................
  r42723 | bgubenko | 2008-01-13 08:12:37 -0800 (Sun, 13 Jan 2008) | 1 line
  
  marked up random library test random_test for gcc-3.4.6_linux_ia64
................
  r42724 | danieljames | 2008-01-13 08:19:26 -0800 (Sun, 13 Jan 2008) | 3 lines
  
  Merge in latest changes to Boost.Unordered. Some compiler workarounds and
  starting to clean up the tests a little.
................
  r42729 | eric_niebler | 2008-01-13 11:39:54 -0800 (Sun, 13 Jan 2008) | 1 line
  
  work around msvc-7.1 bug
................
  r42741 | eric_niebler | 2008-01-13 13:56:56 -0800 (Sun, 13 Jan 2008) | 1 line
  
  boost template instantiation depth on darwin
................
  r42745 | johnmaddock | 2008-01-14 01:46:12 -0800 (Mon, 14 Jan 2008) | 1 line
  
  Ooops, fix broken escape sequence.
................
  r42747 | johnmaddock | 2008-01-14 01:58:36 -0800 (Mon, 14 Jan 2008) | 1 line
  
  Fix documentation typos.
................
  r42750 | chris_kohlhoff | 2008-01-14 05:13:35 -0800 (Mon, 14 Jan 2008) | 2 lines
  
  Fix concept name in comment.
................
  r42751 | johnmaddock | 2008-01-14 05:17:09 -0800 (Mon, 14 Jan 2008) | 1 line
  
  Patch regex concept checks and TR1 library to work with VC9 + MS TR1 feature pack.
................
  r42752 | chris_kohlhoff | 2008-01-14 05:20:06 -0800 (Mon, 14 Jan 2008) | 2 lines
  
  Add missing broken pipe error.
................
  r42753 | chris_kohlhoff | 2008-01-14 05:21:37 -0800 (Mon, 14 Jan 2008) | 3 lines
  
  Don't include sys/time.h when compiling with aCC, as that header does not
  supply pselect(), which is needed for HP-UX/aCC to work correctly.
................
  r42754 | chris_kohlhoff | 2008-01-14 05:22:21 -0800 (Mon, 14 Jan 2008) | 2 lines
  
  Disable noisy and incorrect /Wp64 warnings generated by MSVC.
................
  r42755 | chris_kohlhoff | 2008-01-14 05:24:28 -0800 (Mon, 14 Jan 2008) | 3 lines
  
  Don't call epoll_wait/kevent if there are no old operations (where old means
  added prior to the last epoll_wait/kevent call) needing to be demultiplexed.
................
  r42756 | chris_kohlhoff | 2008-01-14 05:25:24 -0800 (Mon, 14 Jan 2008) | 2 lines
  
  Silence some integer truncation warnings.
................
  r42758 | chris_kohlhoff | 2008-01-14 05:27:52 -0800 (Mon, 14 Jan 2008) | 8 lines
  
  Silence some integer truncation warnings.
  
  Only perform the windows-bug workaround where we use a short timeout with
  GetQueuedCompletionStatus from one thread, i.e. the timer thread.
  
  Keep track of the number of OVERLAPPED-derived operations to ensure that
  they all get cleaned up when the io_service is destroyed.
................
  r42759 | chris_kohlhoff | 2008-01-14 05:29:08 -0800 (Mon, 14 Jan 2008) | 5 lines
  
  Check for truncation when converting buffer size from size_t to openssl's
  int argument.
  
  Try to fix possible thread-safety issues in SSL wrapper.
................
  r42766 | eric_niebler | 2008-01-14 08:49:32 -0800 (Mon, 14 Jan 2008) | 1 line
  
  register mpl::bool_ with typeof
................
  r42767 | dgregor | 2008-01-14 09:01:26 -0800 (Mon, 14 Jan 2008) | 1 line
  
  Improved suggestion for dealing with Qt MOC, from Niels Dekker
................
  r42771 | niels_dekker | 2008-01-14 10:17:30 -0800 (Mon, 14 Jan 2008) | 1 line
  
  Documented value_init workaround to compiler issues, added new introduction, updated to 2003 edition of C++ Standard -- reviewed by Fernando Cacciola
................
  r42773 | guwi17 | 2008-01-14 11:04:43 -0800 (Mon, 14 Jan 2008) | 2 lines
  
  - fixed typo
................
  r42776 | eric_niebler | 2008-01-14 12:26:58 -0800 (Mon, 14 Jan 2008) | 1 line
  
  add skip(), for specifying a skip regex
................
  r42778 | turkanis | 2008-01-14 12:47:17 -0800 (Mon, 14 Jan 2008) | 1 line
  
  overhaul of dual_use filters: close() is now called just once; suppressed Borland/Dinkumware warnings in mapped_file.hpp
................
  r42779 | niels_dekker | 2008-01-14 13:46:20 -0800 (Mon, 14 Jan 2008) | 1 line
  
  Minor "beautifications" of value_init documentation, inc. placing references in order of appearance
................
  r42780 | lbourdev | 2008-01-14 14:06:07 -0800 (Mon, 14 Jan 2008) | 3 lines
  
  Changed size_t to std::size_t
................
  r42781 | lbourdev | 2008-01-14 15:25:10 -0800 (Mon, 14 Jan 2008) | 3 lines
  
  GIL: Changing size_t to std::size_t
................
  r42788 | eric_niebler | 2008-01-14 22:46:39 -0800 (Mon, 14 Jan 2008) | 1 line
  
  code clean-up, begin updating the transform section in proto's docs
................
  r42789 | eric_niebler | 2008-01-14 23:46:51 -0800 (Mon, 14 Jan 2008) | 1 line
  
  try disabling iterator debugging for intel-win toolset
................
  r42797 | t_schwinger | 2008-01-15 11:46:10 -0800 (Tue, 15 Jan 2008) | 3 lines
  
  adds missing #include
................
  r42798 | niels_dekker | 2008-01-15 11:53:28 -0800 (Tue, 15 Jan 2008) | 1 line
  
  value_init doc + test: Added revision date.
................
  r42801 | jurko | 2008-01-15 13:13:52 -0800 (Tue, 15 Jan 2008) | 1 line
  
  Minor stylistic comment changes. Removed trailing spaces.
................
  r42804 | eric_niebler | 2008-01-15 14:06:51 -0800 (Tue, 15 Jan 2008) | 1 line
  
  document call<>, make<> and bind<>
................
  r42807 | turkanis | 2008-01-15 14:54:40 -0800 (Tue, 15 Jan 2008) | 1 line
  
  rewrote treatment of result_of in terms of a new (hopefully temporary) config macro BOOST_IOSTREAMS_NO_RESULT_OF; fixed docs
................
  r42811 | turkanis | 2008-01-15 17:14:04 -0800 (Tue, 15 Jan 2008) | 1 line
  
  reverted last change except for doc fixes; regression was result of test runner's local patch
................
  r42813 | turkanis | 2008-01-15 17:16:36 -0800 (Tue, 15 Jan 2008) | 1 line
  
  botched last commit
................
  r42814 | djenkins | 2008-01-15 22:39:34 -0800 (Tue, 15 Jan 2008) | 1 line
  
  missing include
................
  r42815 | niels_dekker | 2008-01-16 01:35:12 -0800 (Wed, 16 Jan 2008) | 1 line
  
  Added convenience class initialized_value, as announced at http://article.gmane.org/gmane.comp.lib.boost.devel/169833
................
  r42816 | niels_dekker | 2008-01-16 01:37:25 -0800 (Wed, 16 Jan 2008) | 1 line
  
  Added test and documentation for convenience class initialized_value, that was added with changeset [42815]
................
  r42817 | chris_kohlhoff | 2008-01-16 05:46:01 -0800 (Wed, 16 Jan 2008) | 2 lines
  
  Set the openssl callback function for getting a thread ID.
................
  r42818 | anthonyw | 2008-01-16 07:23:36 -0800 (Wed, 16 Jan 2008) | 1 line
  
  Provide tss_cleanup_implemented as a dummy function on Windows CE to allow tests to run
................
  r42821 | t_schwinger | 2008-01-16 11:16:37 -0800 (Wed, 16 Jan 2008) | 3 lines
  
  works around MSVC7.1 problems (hopefully)
................
  r42822 | t_schwinger | 2008-01-16 11:17:09 -0800 (Wed, 16 Jan 2008) | 3 lines
  
  attempts to fix Borland regressions
................
  r42823 | eric_niebler | 2008-01-16 11:24:33 -0800 (Wed, 16 Jan 2008) | 1 line
  
  document when<> and is_callable<>
................
  r42825 | turkanis | 2008-01-16 12:46:56 -0800 (Wed, 16 Jan 2008) | 1 line
  
  replaced __IBMCPP__ with _AIX
................
  r42827 | turkanis | 2008-01-16 16:50:14 -0800 (Wed, 16 Jan 2008) | 1 line
  
  added pgi to toolsets expected to fail seekawble_file_test (iostreams)
................
  r42836 | eric_niebler | 2008-01-17 14:47:54 -0800 (Thu, 17 Jan 2008) | 1 line
  
  stl_iterator does better error handling
................
  r42837 | jurko | 2008-01-17 17:14:17 -0800 (Thu, 17 Jan 2008) | 1 line
  
  Stylistic changes. Removed trailing spaces. Removed empty lines. Corrected comment typos and wording.
................
  r42839 | eric_niebler | 2008-01-17 23:56:31 -0800 (Thu, 17 Jan 2008) | 1 line
  
  tweaks for better doxygen-ated output
................
  r42840 | eric_niebler | 2008-01-17 23:56:59 -0800 (Thu, 17 Jan 2008) | 1 line
  
  updated reference section
................
  r42841 | eric_niebler | 2008-01-17 23:58:48 -0800 (Thu, 17 Jan 2008) | 1 line
  
  add back reference section, document user-defined transforms
................
  r42843 | t_schwinger | 2008-01-18 06:37:41 -0800 (Fri, 18 Jan 2008) | 3 lines
  
  makes member object support work with BCC
................
  r42851 | johnmaddock | 2008-01-18 08:56:57 -0800 (Fri, 18 Jan 2008) | 1 line
  
  Add needed <iostream> include.
................
  r42852 | johnmaddock | 2008-01-18 09:05:35 -0800 (Fri, 18 Jan 2008) | 1 line
  
  We don't have a tr1::hash functor if the std lib is the Apache version.
................
  r42853 | hkaiser | 2008-01-18 09:56:53 -0800 (Fri, 18 Jan 2008) | 1 line
  
  Wave: removed T_DEFINED token id from the library.
................
  r42855 | johnmaddock | 2008-01-18 10:18:17 -0800 (Fri, 18 Jan 2008) | 1 line
  
  Needs to #include <cstring> in order to use std::memset.
................
  r42856 | danieljames | 2008-01-18 11:35:55 -0800 (Fri, 18 Jan 2008) | 2 lines
  
  Merge in some changes to the unordered tests.
................
  r42857 | t_schwinger | 2008-01-18 12:05:56 -0800 (Fri, 18 Jan 2008) | 3 lines
  
  simplifies function_types markup
................
  r42858 | t_schwinger | 2008-01-18 12:52:06 -0800 (Fri, 18 Jan 2008) | 3 lines
  
  attempts to fix BCB 5.9 regression in synthesis/mem_func_ptr_cv_ptr_to_this test
................
  r42859 | t_schwinger | 2008-01-18 13:06:44 -0800 (Fri, 18 Jan 2008) | 3 lines
  
  attempts to fix pathscale failure 
................
  r42868 | niels_dekker | 2008-01-19 12:21:18 -0800 (Sat, 19 Jan 2008) | 1 line
  
  value_init_test now works around Borland 5.82 bug ("Error E2015: Ambiguity..." when using initialized_value), that is fixed with a newer compiler version
................
  r42869 | niels_dekker | 2008-01-19 12:52:04 -0800 (Sat, 19 Jan 2008) | 1 line
  
  Removed local named variable from     value_initialized::operator=, as Fernando Cacciola suggested me to avoid unnecessary named variables.
................
  r42873 | bemandawes | 2008-01-19 18:01:35 -0800 (Sat, 19 Jan 2008) | 1 line
  
  Remove extraneous defines since they are inherited from library build Jamfile
................
  r42877 | johnmaddock | 2008-01-20 01:42:35 -0800 (Sun, 20 Jan 2008) | 1 line
  
  Add include of <eh.h> for msvc.
................
  r42878 | igaztanaga | 2008-01-20 03:54:47 -0800 (Sun, 20 Jan 2008) | 5 lines
  
  Updated Interprocess and Intrusive:
  
  -> Added linear slist to intrusive
  -> Updated all allocators to version 2 allocators in Interprocess
  -> Optimized rbtree_best_fit size overhead to 1 std:size_t.
................
  r42881 | danieljames | 2008-01-20 09:37:21 -0800 (Sun, 20 Jan 2008) | 1 line
  
  Include <new> to get std::bad_alloc.
................
  r42882 | danieljames | 2008-01-20 10:55:57 -0800 (Sun, 20 Jan 2008) | 22 lines
  
  Merged revisions 42856-42881 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/unordered/trunk
  
  ........
    r42880 | danieljames | 2008-01-20 16:10:43 +0000 (Sun, 20 Jan 2008) | 17 lines
    
    Simplify the tests a little:
    
    Add a parameter to random_values to control what sort of values it generates.
    This means that instead of using equivalent_object to test collisions (which
    was a total hack) we now just need another parameter.
    
    This requires some meta programming to act differently for maps and sets.
    Because of this pairs no longer need to be generated so remove the code for
    doing that (which doesn't work on some compilers).
    
    Remove the generator object, just call generate directly.
    
    Remove some of the tests using int containers, they didn't really add to
    anthing other than the compile time (some tests are timing out).
  ........
................
  r42884 | jurko | 2008-01-20 12:18:50 -0800 (Sun, 20 Jan 2008) | 5 lines
  
  Minor stylistic changes:
    * Removed trailing spaces.
    * Added a comment for code discovering the user's home-directories.
    * Removed a stale regex import.
    * Removed an old corpse 'identity' rule found inside the __test__ rule.
................
  r42890 | johnmaddock | 2008-01-21 01:41:17 -0800 (Mon, 21 Jan 2008) | 1 line
  
  Only disable wide character support for HP aCC: for gcc the logic is already taken care of in libstdcpp3.hpp.
................
  r42897 | hkaiser | 2008-01-21 08:13:31 -0800 (Mon, 21 Jan 2008) | 1 line
  
  Removed a duplicate entry.
................
  r42898 | rogeeff | 2008-01-21 09:02:53 -0800 (Mon, 21 Jan 2008) | 1 line
  
  changed output of booleans
................
  r42899 | johnmaddock | 2008-01-21 10:11:09 -0800 (Mon, 21 Jan 2008) | 1 line
  
  Updated type traits library so that everything compiles with -Wall -pedantic with GCC.
................
  r42904 | davedeakins | 2008-01-21 11:38:44 -0800 (Mon, 21 Jan 2008) | 1 line
  
  Don't include <eh.h> for WinCE (since WinCE does not have this header)
................
  r42906 | eric_niebler | 2008-01-21 12:39:35 -0800 (Mon, 21 Jan 2008) | 1 line
  
  minor clean-up
................
  r42909 | rogeeff | 2008-01-21 19:41:23 -0800 (Mon, 21 Jan 2008) | 1 line
  
  missing header
................
  r42911 | igaztanaga | 2008-01-22 08:49:22 -0800 (Tue, 22 Jan 2008) | 1 line
  
  Refactor some allocation code and fix instantiation problem in 64 bit platforms
................
  r42916 | eric_niebler | 2008-01-22 12:42:18 -0800 (Tue, 22 Jan 2008) | 1 line
  
  add concepts section to proto reference
................
  r42917 | hljin | 2008-01-22 14:10:48 -0800 (Tue, 22 Jan 2008) | 1 line
  
  GIL: fixed the problem with std::hex by adding #include <ios>
................
  r42918 | eric_niebler | 2008-01-22 18:23:15 -0800 (Tue, 22 Jan 2008) | 1 line
  
  proto works with boost 1.34.1
................
  r42929 | johnmaddock | 2008-01-23 08:08:44 -0800 (Wed, 23 Jan 2008) | 1 line
  
  Applies fix for issue #1598: added missing #include.
................
  r42931 | igaztanaga | 2008-01-23 11:34:39 -0800 (Wed, 23 Jan 2008) | 1 line
  
  Ticket #1593: [interprocess] 'streamoff' : is not a member of 'std'
................
  r42934 | andreas_huber69 | 2008-01-23 13:46:58 -0800 (Wed, 23 Jan 2008) | 1 line
  
  Fixes #1594
................
  r42935 | eric_niebler | 2008-01-23 13:57:47 -0800 (Wed, 23 Jan 2008) | 1 line
  
  fix dependency issue in Jamfile
................
  r42938 | jano_gaspar | 2008-01-23 15:04:57 -0800 (Wed, 23 Jan 2008) | 1 line
  
  circular_buffer: updated documentation
................
  r42939 | eric_niebler | 2008-01-23 15:25:24 -0800 (Wed, 23 Jan 2008) | 1 line
  
  fix quickbook scanner to recognize the [import ...] block
................
  r42943 | danieljames | 2008-01-23 15:39:59 -0800 (Wed, 23 Jan 2008) | 60 lines
  
  Merged revisions 42882-42941 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/unordered/trunk
  
  ................
    r42887 | danieljames | 2008-01-20 21:32:04 +0000 (Sun, 20 Jan 2008) | 10 lines
    
    Merged revisions 42590-42664,42667-42697,42699-42723,42725-42855,42857-42881 via svnmerge from 
    https://svn.boost.org/svn/boost/trunk
    
    ........
      r42881 | danieljames | 2008-01-20 17:37:21 +0000 (Sun, 20 Jan 2008) | 1 line
      
      Include <new> to get std::bad_alloc.
    ........
  ................
    r42892 | danieljames | 2008-01-21 13:03:16 +0000 (Mon, 21 Jan 2008) | 1 line
    
    On some compilers the Rogue Wave/Apache stdcxx library doesn't have the normal std::distance, but instead has a variant that takes the result as the third parameter so it doesn't have to work out the type from the iterator.
  ................
    r42893 | danieljames | 2008-01-21 13:07:58 +0000 (Mon, 21 Jan 2008) | 1 line
    
    Fix a typo in the last commit.
  ................
    r42895 | danieljames | 2008-01-21 13:33:29 +0000 (Mon, 21 Jan 2008) | 1 line
    
    Remove tabs from the last checkin.
  ................
    r42896 | danieljames | 2008-01-21 15:51:40 +0000 (Mon, 21 Jan 2008) | 1 line
    
    Use Boost config to tell when we have a std::distance function. Also, no need for a macro.
  ................
    r42908 | danieljames | 2008-01-21 21:37:04 +0000 (Mon, 21 Jan 2008) | 1 line
    
    Use boost::long_long_type and boost::ulong_long_type.
  ................
    r42921 | danieljames | 2008-01-23 11:43:35 +0000 (Wed, 23 Jan 2008) | 1 line
    
    Remove some tabs.
  ................
    r42922 | danieljames | 2008-01-23 11:46:28 +0000 (Wed, 23 Jan 2008) | 2 lines
    
    Add missing include. Refs #1596
  ................
    r42923 | danieljames | 2008-01-23 11:52:47 +0000 (Wed, 23 Jan 2008) | 2 lines
    
    Always use void const* for the second parameter of allocate. Refs #1596.
  ................
    r42936 | danieljames | 2008-01-23 22:22:16 +0000 (Wed, 23 Jan 2008) | 1 line
    
    Use Boost style library name in the documentation.
  ................
    r42937 | danieljames | 2008-01-23 22:22:32 +0000 (Wed, 23 Jan 2008) | 1 line
    
    More tabs.
  ................
    r42941 | danieljames | 2008-01-23 23:35:01 +0000 (Wed, 23 Jan 2008) | 1 line
    
    Fix all the allocators.
  ................
................
  r42948 | turkanis | 2008-01-23 22:50:32 -0800 (Wed, 23 Jan 2008) | 1 line
  
  merged changes from iostreams_dev, revisions 42825-42947
................
  r42950 | t_schwinger | 2008-01-24 10:56:27 -0800 (Thu, 24 Jan 2008) | 3 lines
  
  correctsbroken compiler support for MPL
................
  r42951 | eric_niebler | 2008-01-24 13:06:23 -0800 (Thu, 24 Jan 2008) | 1 line
  
  peeker optimization looks inside independent sub-expressions
................
  r42952 | nesotto | 2008-01-24 14:22:35 -0800 (Thu, 24 Jan 2008) | 1 line
  
  test of output iterators
................
  r42953 | nesotto | 2008-01-24 14:26:36 -0800 (Thu, 24 Jan 2008) | 1 line
  
  output iterator test
................
  r42954 | nesotto | 2008-01-24 14:27:27 -0800 (Thu, 24 Jan 2008) | 1 line
  
  output iterators for ptr_containers 
................
  r42957 | t_schwinger | 2008-01-24 16:26:16 -0800 (Thu, 24 Jan 2008) | 3 lines
  
  simplifies preprocessing code
................
  r42958 | t_schwinger | 2008-01-24 16:28:15 -0800 (Thu, 24 Jan 2008) | 3 lines
  
  touched
................
  r42960 | noel_belcourt | 2008-01-24 20:41:16 -0800 (Thu, 24 Jan 2008) | 6 lines
  
  Changed the -soname and -shared options in intel-darwin.jam
  to use -dynamiclib and -install_name, as done in darwin.jam.
  Apparently the Intel compilers on the Mac support the same 
  options as gcc for setting the internal dynamic library name.
................
  r42963 | nesotto | 2008-01-24 23:52:14 -0800 (Thu, 24 Jan 2008) | 1 line
  
  renaming ...
................
  r42964 | nesotto | 2008-01-24 23:52:56 -0800 (Thu, 24 Jan 2008) | 1 line
  
  renaming
................
  r42965 | nesotto | 2008-01-24 23:54:28 -0800 (Thu, 24 Jan 2008) | 1 line
  
  renaming
................
  r42970 | turkanis | 2008-01-25 09:56:25 -0800 (Fri, 25 Jan 2008) | 1 line
  
  merged changes from iostreams_dev, revisions 42947-42962: fixed tickets 1003, 1139, 1140, 1149
................
  r42971 | noel_belcourt | 2008-01-25 11:52:47 -0800 (Fri, 25 Jan 2008) | 2 lines
  
  Fixed a typo to yesterdays patch.
................
  r42972 | dgregor | 2008-01-25 13:07:14 -0800 (Fri, 25 Jan 2008) | 2 lines
  
  Include <ios> to get std::boolalpha. Fixes #1586
................
  r42974 | igaztanaga | 2008-01-25 15:07:51 -0800 (Fri, 25 Jan 2008) | 4 lines
  
  1)Fixed gcc release mode warnings.
  2)Replaced throw with BOOST_RETHROW when BOOST_TRY is used.
  3)Fixed issues with singly linked lists
................
  r42976 | hkaiser | 2008-01-25 17:24:21 -0800 (Fri, 25 Jan 2008) | 2 lines
  
  Wave: Fixed a problem in flex_string::compare() (#include_next was non-functional).
................
  r42977 | hkaiser | 2008-01-25 17:36:20 -0800 (Fri, 25 Jan 2008) | 1 line
  
  Wave: Added new testcase.
................
  r42980 | hkaiser | 2008-01-25 17:44:32 -0800 (Fri, 25 Jan 2008) | 1 line
  
  Wave: Tweaked new testcase.
................
  r42982 | igaztanaga | 2008-01-26 03:52:25 -0800 (Sat, 26 Jan 2008) | 1 line
  
  Refactored common slist functions in a single class
................
  r42984 | noel_belcourt | 2008-01-26 10:35:59 -0800 (Sat, 26 Jan 2008) | 7 lines
  
  Fixes #416
  
  Fixed spelling of Jack Edmonds name and renamed files
  where necessary.  Updated the documentation as well.
  Tested changes by building/running tests in libs/graph/test.
................
  r42985 | noel_belcourt | 2008-01-26 10:51:28 -0800 (Sat, 26 Jan 2008) | 5 lines
  
  Fixes #640
  
  Corrected the mpl push_front html documentation.
................
  r42986 | eric_niebler | 2008-01-26 11:38:44 -0800 (Sat, 26 Jan 2008) | 1 line
  
  optimize repeated searches with patterns that have leading repeats
................
  r42987 | t_schwinger | 2008-01-26 13:50:14 -0800 (Sat, 26 Jan 2008) | 3 lines
  
  attempts to allow some preprocessing with VACPP (IBM)
................
  r42988 | noel_belcourt | 2008-01-26 14:21:57 -0800 (Sat, 26 Jan 2008) | 5 lines
  
  Fixes #1539
  
  Fixed typo in the random documentation.
................
  r42989 | noel_belcourt | 2008-01-26 15:06:24 -0800 (Sat, 26 Jan 2008) | 6 lines
  
  Fixes #965
  
  Patched the XML and will check to ensure the html
  page reflects this change.
................
  r42990 | eric_niebler | 2008-01-26 21:56:46 -0800 (Sat, 26 Jan 2008) | 1 line
  
  updated vcproj
................
  r42991 | eric_niebler | 2008-01-26 21:57:08 -0800 (Sat, 26 Jan 2008) | 1 line
  
  fix typo
................
  r42992 | johnmaddock | 2008-01-27 10:43:35 -0800 (Sun, 27 Jan 2008) | 1 line
  
  Extended leading repeat optimization to more cases.
................
  r42997 | vladimir_prus | 2008-01-28 09:59:27 -0800 (Mon, 28 Jan 2008) | 1 line
  
  Correct speliing of --build-dir in --help output
................
  r43000 | eric_niebler | 2008-01-28 12:03:41 -0800 (Mon, 28 Jan 2008) | 1 line
  
  update acknowledgement of john maddock
................
  r43001 | bgubenko | 2008-01-28 13:27:13 -0800 (Mon, 28 Jan 2008) | 1 line
  
  marked 2 asio library tests for gcc-4.2.1_hpux_ia64 (HP-UX 11.23 with gcc)
................
  r43002 | eric_niebler | 2008-01-28 14:55:30 -0800 (Mon, 28 Jan 2008) | 1 line
  
  doc more concepts, misc clean-up
................
  r43003 | eric_niebler | 2008-01-28 14:56:46 -0800 (Mon, 28 Jan 2008) | 1 line
  
  proto doxygen comments, misc clean-up
................
  r43006 | eric_niebler | 2008-01-28 18:20:45 -0800 (Mon, 28 Jan 2008) | 1 line
  
  more proto doxygen comments, update copyright
................
  r43007 | vladimir_prus | 2008-01-28 22:28:09 -0800 (Mon, 28 Jan 2008) | 1 line
  
  Retain top-level boost-build.jam
................
  r43008 | vladimir_prus | 2008-01-28 22:40:06 -0800 (Mon, 28 Jan 2008) | 4 lines
  
  Disable relinking when <target-os> is either windows or cygwin.
  
  Fixes #1062.
................
  r43009 | eric_niebler | 2008-01-28 23:03:03 -0800 (Mon, 28 Jan 2008) | 1 line
  
  add tests for deep_copy, make_expr, unpack_expr; fix bugs; update more copyrights
................
  r43012 | djenkins | 2008-01-29 08:41:12 -0800 (Tue, 29 Jan 2008) | 1 line
  
  fix typo
................
  r43013 | djenkins | 2008-01-29 08:43:51 -0800 (Tue, 29 Jan 2008) | 1 line
  
  update copyright and misc cleanup
................
  r43014 | bgubenko | 2008-01-29 09:47:01 -0800 (Tue, 29 Jan 2008) | 1 line
  
  marked interprocess library unusable on gcc-4.2.1_hpux_ia64 (until it is ported to HP-UX platform)
................
  r43016 | eric_niebler | 2008-01-29 13:02:52 -0800 (Tue, 29 Jan 2008) | 1 line
  
  make_expr and unpack_expr improvements, fix scary transform::arg_c bug
................
  r43018 | djenkins | 2008-01-29 19:39:02 -0800 (Tue, 29 Jan 2008) | 1 line
  
  use skip directive to simplify example
................
  r43023 | eric_niebler | 2008-01-30 14:10:13 -0800 (Wed, 30 Jan 2008) | 1 line
  
  finally, a make_expr() I can live with
................
  r43024 | eric_niebler | 2008-01-30 14:26:34 -0800 (Wed, 30 Jan 2008) | 1 line
  
  regenerated boostbook reference
................
  r43025 | niels_dekker | 2008-01-30 14:42:23 -0800 (Wed, 30 Jan 2008) | 1 line
  
  value_init: Removed aligned_storage::address() calls, to improve TR1 compatibility, as confirmed by John Maddock. Added internal helper function, wrapper_address(), as discussed with Fernando.
................
  r43026 | eric_niebler | 2008-01-30 15:03:36 -0800 (Wed, 30 Jan 2008) | 1 line
  
  minor tweak to make_expr result_of return type calculation
................
  r43031 | eric_niebler | 2008-01-30 23:36:28 -0800 (Wed, 30 Jan 2008) | 1 line
  
  simplify make_expr.hpp, user docs for make_expr()
................
  r43035 | eric_niebler | 2008-01-31 10:44:17 -0800 (Thu, 31 Jan 2008) | 1 line
  
  minor tweak to fusion value_of and value_at for expressions, for better interop with proto::unpack_expr
................
  r43037 | vladimir_prus | 2008-01-31 11:47:12 -0800 (Thu, 31 Jan 2008) | 1 line
  
  Build in MT mode (as long as wave links to boost.thread)
................
  r43038 | hkaiser | 2008-01-31 12:57:47 -0800 (Thu, 31 Jan 2008) | 1 line
  
  Wave: fixed expanding_function_like_macro()
................
  r43040 | eric_niebler | 2008-01-31 13:12:44 -0800 (Thu, 31 Jan 2008) | 1 line
  
  finish documentation for expression construction utilities
................
  r43041 | hkaiser | 2008-01-31 14:33:43 -0800 (Thu, 31 Jan 2008) | 1 line
  
  Wave: Added additional configuration possibility to allow control threading support.
................
  r43042 | hkaiser | 2008-01-31 14:48:56 -0800 (Thu, 31 Jan 2008) | 1 line
  
  Wave: Added additional configuration possibility to allow control threading support. Updated the documentation.
................
  r43043 | jurko | 2008-01-31 16:27:31 -0800 (Thu, 31 Jan 2008) | 1 line
  
  Reverted changes made in rev 43038 which seem to have been committed by mistake and include some user specific settings in it local to the comitter's environment while this file is intended to be used as generic template for actual user-config.jam files and do nothing in case user does not specify his own settings there.
................
  r43044 | jurko | 2008-01-31 16:44:23 -0800 (Thu, 31 Jan 2008) | 1 line
  
  Minor stylistic spacing changes. Remove trailing spaces.
................
  r43045 | jurko | 2008-01-31 16:46:50 -0800 (Thu, 31 Jan 2008) | 1 line
  
  Corrected outputting native Windows paths so that it works correctly for absolute paths without the drive letter being explicitly specified, e.g. \aaa\bbb or /aaa/bbb.
................
  r43046 | jurko | 2008-01-31 17:49:16 -0800 (Thu, 31 Jan 2008) | 1 line
  
  Added the missing end-of-line character when outputting DEBUG_SEARCH debug messages from file_build1(). This cleans up the -d+6 bjam output a lot.
................
  r43050 | eric_niebler | 2008-02-01 12:30:29 -0800 (Fri, 01 Feb 2008) | 1 line
  
  add future group example
................
  r43052 | noel_belcourt | 2008-02-01 18:41:23 -0800 (Fri, 01 Feb 2008) | 4 lines
  
  Fix a typo in pgi.jam that prevented shared libraries
  from being built correctly.
................
  r43054 | chris_kohlhoff | 2008-02-02 03:37:45 -0800 (Sat, 02 Feb 2008) | 4 lines
  
  Ensure that the workaround for the MSVC secure iterator problem is only
  used when compiling with MSVC. The workaround causes g++'s library debug
  mode to report errors due to the assignment from a singular iterator.
................
  r43055 | chris_kohlhoff | 2008-02-02 03:39:17 -0800 (Sat, 02 Feb 2008) | 2 lines
  
  Fix "possible loss of data" warning when building for Windows 2000 targets.
................
  r43056 | chris_kohlhoff | 2008-02-02 04:02:23 -0800 (Sat, 02 Feb 2008) | 3 lines
  
  The latest Windows SDKs don't support IPv6 when building for Windows 2000,
  so we need to use the SDK emulation in that case.
................
  r43057 | eric_niebler | 2008-02-02 04:27:16 -0800 (Sat, 02 Feb 2008) | 1 line
  
  port test to boost version 1.34.1
................
  r43061 | turkanis | 2008-02-02 14:10:46 -0800 (Sat, 02 Feb 2008) | 1 line
  
  merged changes from iostreams_dev, revisions 42962-43059: updated copyright notices
................
  r43080 | eric_niebler | 2008-02-03 10:40:03 -0800 (Sun, 03 Feb 2008) | 1 line
  
  fix bug found by L. Evans re: fusion and stateful function objects
................
  r43083 | johnmaddock | 2008-02-04 01:13:36 -0800 (Mon, 04 Feb 2008) | 1 line
  
  Added missing file.
................
  r43085 | johnmaddock | 2008-02-04 01:17:35 -0800 (Mon, 04 Feb 2008) | 1 line
  
  Removed dead file.
................
  r43087 | johnmaddock | 2008-02-04 01:20:46 -0800 (Mon, 04 Feb 2008) | 1 line
  
  Removed dead files.
................
  r43089 | johnmaddock | 2008-02-04 01:23:28 -0800 (Mon, 04 Feb 2008) | 1 line
  
  Removed dead files.
................
  r43094 | anthonyw | 2008-02-04 05:16:32 -0800 (Mon, 04 Feb 2008) | 1 line
  
  added test for duration overloads of timed_lock, and added missing implementation to win32 version
................
  r43101 | hkaiser | 2008-02-04 11:21:46 -0800 (Mon, 04 Feb 2008) | 1 line
  
  Wave: trying to fix stdcxx_gcc regression.
................
  r43103 | matias | 2008-02-04 13:01:06 -0800 (Mon, 04 Feb 2008) | 1 line
  
  hooking --> additional information in html docs
................
  r43106 | eric_niebler | 2008-02-04 18:09:51 -0800 (Mon, 04 Feb 2008) | 1 line
  
  fleshing out evaluation.qbk, document transforms of if_, not_, and_ and or_
................
  r43107 | eric_niebler | 2008-02-04 21:33:12 -0800 (Mon, 04 Feb 2008) | 1 line
  
  eliminate warnings under msvc's -W4
................
  r43111 | eric_niebler | 2008-02-04 22:03:01 -0800 (Mon, 04 Feb 2008) | 1 line
  
  fix typo
................
  r43112 | marshall | 2008-02-05 08:07:19 -0800 (Tue, 05 Feb 2008) | 1 line
  
  Fix typo (bug #1434)
................
  r43113 | marshall | 2008-02-05 08:15:35 -0800 (Tue, 05 Feb 2008) | 1 line
  
  Applied patch (fixes bug #1307)
................
  r43117 | dgregor | 2008-02-05 12:51:23 -0800 (Tue, 05 Feb 2008) | 1 line
  
  Fix add_vertex and add_vertices when the CSR graph has vertex properties
................
  r43118 | danieljames | 2008-02-05 12:57:02 -0800 (Tue, 05 Feb 2008) | 13 lines
  
  Merged revisions 42942-43116 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/unordered/trunk
  
  ........
    r42975 | danieljames | 2008-01-26 00:29:32 +0000 (Sat, 26 Jan 2008) | 1 line
    
    Typedef some types before using them, to make life easier for Borland.
  ........
    r43116 | danieljames | 2008-02-05 20:47:44 +0000 (Tue, 05 Feb 2008) | 1 line
    
    Some compilers and libraries combinations have problems with deques of non-assingable types. Using a list instead.
  ........
................
  r43120 | eric_niebler | 2008-02-05 13:07:31 -0800 (Tue, 05 Feb 2008) | 1 line
  
  add missing #include
................
  r43121 | bemandawes | 2008-02-05 18:01:46 -0800 (Tue, 05 Feb 2008) | 1 line
  
  Add circular_buffer to the alphabetic list
................
  r43125 | t_schwinger | 2008-02-06 05:00:08 -0800 (Wed, 06 Feb 2008) | 3 lines
  
  attempts to make synthesis metafunctions work with sun compiler
................
  r43129 | danieljames | 2008-02-06 11:02:38 -0800 (Wed, 06 Feb 2008) | 2 lines
  
  In the boostbook navbar, link FAQ and people to the website.
................
  r43130 | eric_niebler | 2008-02-06 11:57:51 -0800 (Wed, 06 Feb 2008) | 1 line
  
  untabify
................
  r43132 | nesotto | 2008-02-06 14:46:19 -0800 (Wed, 06 Feb 2008) | 1 line
  
  cleanup to pass inspection report
................
  r43133 | nesotto | 2008-02-06 14:46:31 -0800 (Wed, 06 Feb 2008) | 1 line
  
  cleanup to pass inspection report
................
  r43134 | eric_niebler | 2008-02-06 14:57:57 -0800 (Wed, 06 Feb 2008) | 1 line
  
  add handy get() accessors on literal<> wrapper
................
  r43135 | nesotto | 2008-02-06 15:12:21 -0800 (Wed, 06 Feb 2008) | 1 line
  
  cleanup to pass inspection tool
................
  r43136 | eric_niebler | 2008-02-06 16:05:01 -0800 (Wed, 06 Feb 2008) | 1 line
  
  reasonably complete user docs for expression evaluation
................
  r43138 | eric_niebler | 2008-02-07 00:06:29 -0800 (Thu, 07 Feb 2008) | 1 line
  
  tweaks for doxygen 1.5.4, document matches<>
................
  r43141 | johnmaddock | 2008-02-07 01:55:41 -0800 (Thu, 07 Feb 2008) | 1 line
  
  Fix last checked version.
................
  r43143 | johnmaddock | 2008-02-07 02:03:16 -0800 (Thu, 07 Feb 2008) | 1 line
  
  Remove tabs.
................
  r43145 | johnmaddock | 2008-02-07 02:13:31 -0800 (Thu, 07 Feb 2008) | 1 line
  
  Fix min/max usage violation.
................
  r43147 | vladimir_prus | 2008-02-07 02:17:03 -0800 (Thu, 07 Feb 2008) | 2 lines
  
  Attempt to unbreak <library-file>
................
  r43148 | johnmaddock | 2008-02-07 02:24:29 -0800 (Thu, 07 Feb 2008) | 1 line
  
  Added comment to suppress inspect warning.
................
  r43150 | johnmaddock | 2008-02-07 02:29:59 -0800 (Thu, 07 Feb 2008) | 1 line
  
  Added fix for inspection report.
................
  r43152 | vladimir_prus | 2008-02-07 03:04:30 -0800 (Thu, 07 Feb 2008) | 4 lines
  
  Fix <framework> with no path.
  
  Patch from Jon Olsson.
................
  r43154 | bemandawes | 2008-02-07 05:22:34 -0800 (Thu, 07 Feb 2008) | 1 line
  
  Remove obsolete CVS scripts, add 1.35.0 SVN scripts, beginning of docs page
................
  r43155 | nesotto | 2008-02-07 06:41:04 -0800 (Thu, 07 Feb 2008) | 6 lines
  
  
  iterator_range disables msvc warning 4996
      <http://svn.boost.org/trac/boost/ticket/1565>
  
  [range] sub_range assignment issue
      <http://svn.boost.org/trac/boost/ticket/1284> 
................
  r43156 | nesotto | 2008-02-07 06:46:19 -0800 (Thu, 07 Feb 2008) | 1 line
  
  test
................
  r43157 | joaquin | 2008-02-07 08:29:27 -0800 (Thu, 07 Feb 2008) | 1 line
  
  updated according to latest regression tests results, fixed a broken link, typo
................
  r43159 | turkanis | 2008-02-07 09:07:28 -0800 (Thu, 07 Feb 2008) | 1 line
  
  added missing 'self.' qualification
................
  r43165 | dgregor | 2008-02-07 13:08:09 -0800 (Thu, 07 Feb 2008) | 1 line
  
  Support for non-blocking MPI operations in Python, from Andreas Kloeckner
................
  r43166 | dgregor | 2008-02-07 13:09:38 -0800 (Thu, 07 Feb 2008) | 1 line
  
  Note addition of nonblocking operations to the Python interface
................
  r43171 | nesotto | 2008-02-08 01:58:35 -0800 (Fri, 08 Feb 2008) | 1 line
  
  silence of warnings for unused arguments
................
  r43175 | nesotto | 2008-02-08 07:25:01 -0800 (Fri, 08 Feb 2008) | 1 line
  
  missing ) fixed
................
  r43176 | noel_belcourt | 2008-02-08 08:32:35 -0800 (Fri, 08 Feb 2008) | 14 lines
  
  Force PPC Darwin to use fork instead of vfork.  This change
  requires both the parent and child process to explicitly set
  the process group id. Vfork guarantees the child process 
  runs to the exec before it releases the parent process.  
  Now that we use fork instead of vfork, it's possible for the 
  parent to wait on the child process without having the child 
  setpgid on itself.  This eliminates spurious hangs on ppc
  darwin caused by either a race condition between vfork and
  execvp, or a bug in the vfork implementation.
  
  Added a test to ensure we don't try to read from the
  stderr pipe descriptor if the descriptor's not valid.
................
  r43177 | eric_niebler | 2008-02-08 09:11:57 -0800 (Fri, 08 Feb 2008) | 1 line
  
  reserve some c_type bits for dinkumware on windows, fixes #1625
................
  r43179 | noel_belcourt | 2008-02-08 09:53:50 -0800 (Fri, 08 Feb 2008) | 13 lines
  
  I've added the -single_module option to the intel-darwin.link.dll
  action to fix this linker error when linking dylibs:
  
  ld: common symbols not allowed with MH_DYLIB output format with the -multi_module option
  boost/bin.v2/libs/system/build/intel-darwin-9.1/debug/macosx-version-10.4/error_code.o 
    definition of common __ZGVZNK5boost6system14error_category7messageEiE1s (size 16)
  boost/bin.v2/libs/system/build/intel-darwin-9.1/debug/macosx-version-10.4/error_code.o 
    definition of common __ZZNK5boost6system14error_category7messageEiE1s (size 16)
  
  though I would note that the common symbols problem occurs in a number of
  other libraries (test, graph, spirit, ...) as well.
................
  r43188 | danieljames | 2008-02-09 04:29:02 -0800 (Sat, 09 Feb 2008) | 2 lines
  
  Fix a link in the intrusive redirect.
................
  r43189 | danieljames | 2008-02-09 04:37:00 -0800 (Sat, 09 Feb 2008) | 1 line
  
  Fix another redirect link.
................
  r43190 | danieljames | 2008-02-09 04:38:19 -0800 (Sat, 09 Feb 2008) | 1 line
  
  Update link to Jamfile, to link to the version 2 jamfile.
................
  r43191 | danieljames | 2008-02-09 04:39:06 -0800 (Sat, 09 Feb 2008) | 1 line
  
  Fix a link.
................
  r43192 | danieljames | 2008-02-09 04:45:32 -0800 (Sat, 09 Feb 2008) | 2 lines
  
  Add a forwarding header for hash/custom.html as Boost.Bimap links to it.
................
  r43193 | danieljames | 2008-02-09 05:02:45 -0800 (Sat, 09 Feb 2008) | 1 line
  
  Fix the link to the license.
................
  r43199 | eric_niebler | 2008-02-09 12:32:27 -0800 (Sat, 09 Feb 2008) | 1 line
  
  more doxygen comments, const-correctness tweak for fusion::at() on proto expression
................
  r43200 | eric_niebler | 2008-02-09 12:34:33 -0800 (Sat, 09 Feb 2008) | 1 line
  
  document how to access children of proto expressions
................
  r43204 | eric_niebler | 2008-02-09 22:57:24 -0800 (Sat, 09 Feb 2008) | 1 line
  
  fix oops in proto fusion interface
................
  r43205 | eric_niebler | 2008-02-09 23:02:54 -0800 (Sat, 09 Feb 2008) | 1 line
  
  suppress msvc warning
................
  r43206 | danieljames | 2008-02-10 01:55:03 -0800 (Sun, 10 Feb 2008) | 1 line
  
  Fix some broken links.
................
  r43207 | vladimir_prus | 2008-02-10 05:13:41 -0800 (Sun, 10 Feb 2008) | 4 lines
  
  Tolerate argc being zero.
  
  Patch from C. K. Jester-Young.
................
  r43209 | danieljames | 2008-02-10 06:56:22 -0800 (Sun, 10 Feb 2008) | 1 line
  
  Link to people pages on the website, as they've been removed from the download.
................
  r43210 | danieljames | 2008-02-10 07:02:17 -0800 (Sun, 10 Feb 2008) | 1 line
  
  Point links to the pages that used to be in 'more' to the site.
................
  r43212 | danieljames | 2008-02-10 08:10:16 -0800 (Sun, 10 Feb 2008) | 1 line
  
  Fix links on the home page as well.
................
  r43213 | danieljames | 2008-02-10 08:21:22 -0800 (Sun, 10 Feb 2008) | 1 line
  
  Generated documentation which is no longer generated.
................
  r43220 | eric_niebler | 2008-02-10 19:48:41 -0800 (Sun, 10 Feb 2008) | 1 line
  
  include config.hpp and workaround.hpp before uses of BOOST_WORKAROUND and BOOST_MSVC
................
  r43221 | chris_kohlhoff | 2008-02-11 05:59:44 -0800 (Mon, 11 Feb 2008) | 2 lines
  
  Need to define _XOPEN_SOURCE_EXTENDED when compiling for HP-UX.
................
  r43226 | djenkins | 2008-02-11 12:49:19 -0800 (Mon, 11 Feb 2008) | 1 line
  
  cleanup using local<> and skip()
................
  r43239 | turkanis | 2008-02-12 21:43:39 -0800 (Tue, 12 Feb 2008) | 1 line
  
  fixed return value of read(), to correctly handle eof
................
  r43240 | turkanis | 2008-02-12 21:47:44 -0800 (Tue, 12 Feb 2008) | 1 line
  
  merged changes from iostreams_dev, revisions 43059-43238: better debug output for mapped file; fixed large_file_test.cpp under UNICODE on Windows
................
  r43241 | turkanis | 2008-02-13 11:38:52 -0800 (Wed, 13 Feb 2008) | 1 line
  
  added markup for stdcxx failures (iostreams)
................
  r43243 | turkanis | 2008-02-13 11:42:10 -0800 (Wed, 13 Feb 2008) | 1 line
  
  switched from <wchar.h> to <cwchar>, for stdcxx (which is conforming in this case)
................
  r43246 | matias | 2008-02-14 09:33:12 -0800 (Thu, 14 Feb 2008) | 1 line
  
  remove local admonitions
................
  r43247 | matias | 2008-02-14 09:43:52 -0800 (Thu, 14 Feb 2008) | 1 line
  
  optional docs fixes
................
  r43248 | matias | 2008-02-14 09:44:21 -0800 (Thu, 14 Feb 2008) | 1 line
  
  redirect optional docs to new version
................
  r43251 | matias | 2008-02-14 10:08:16 -0800 (Thu, 14 Feb 2008) | 1 line
  
  conversion docs fixes
................
  r43252 | matias | 2008-02-14 10:09:34 -0800 (Thu, 14 Feb 2008) | 1 line
  
  redirect to new conversion docs
................
  r43253 | matias | 2008-02-14 10:19:34 -0800 (Thu, 14 Feb 2008) | 1 line
  
  redirect optional and numeric/conversion docs to new version
................
  r43254 | matias | 2008-02-14 11:03:55 -0800 (Thu, 14 Feb 2008) | 1 line
  
  bimap doc fixes
................
  r43255 | matias | 2008-02-14 11:05:04 -0800 (Thu, 14 Feb 2008) | 1 line
  
  fix tabs in files
................
  r43256 | matias | 2008-02-14 11:22:15 -0800 (Thu, 14 Feb 2008) | 1 line
  
  fix tabs in files
................
  r43260 | matias | 2008-02-14 13:24:11 -0800 (Thu, 14 Feb 2008) | 1 line
  
  add missing images
................
  r43262 | hkaiser | 2008-02-14 14:01:54 -0800 (Thu, 14 Feb 2008) | 1 line
  
  Fixed a whitespace insertion glitch, where whitespace got inserted unconditionally between two operators even if one of these was a comma.
................
  r43264 | hkaiser | 2008-02-14 15:52:33 -0800 (Thu, 14 Feb 2008) | 1 line
  
  Wave: More fixes to whitespace insertion engine.
................
  r43266 | hkaiser | 2008-02-15 06:35:36 -0800 (Fri, 15 Feb 2008) | 1 line
  
  Wave: More fixes to whitespace insertion engine.
................
  r43269 | pdimov | 2008-02-15 10:40:36 -0800 (Fri, 15 Feb 2008) | 1 line
  
  Added support for &&, ||
................
  r43272 | andreas_huber69 | 2008-02-16 02:13:08 -0800 (Sat, 16 Feb 2008) | 1 line
  
  Updated statechart markup
................
  r43274 | andreas_huber69 | 2008-02-16 02:19:49 -0800 (Sat, 16 Feb 2008) | 2 lines
  
  Silenced GCC 4.0.1 warning (patch supplied by Euan)
  <http://thread.gmane.org/gmane.comp.lib.boost.devel/171071>
................
  r43280 | jurko | 2008-02-16 08:50:42 -0800 (Sat, 16 Feb 2008) | 1 line
  
  Corrected comments related to the allowed linker & linker-type values. Minor stylistic changes.
................
  r43281 | jurko | 2008-02-16 08:53:33 -0800 (Sat, 16 Feb 2008) | 1 line
  
  Added support for compiling C++ programs without RTTI support using the gcc toolset.
................
  r43282 | jurko | 2008-02-16 09:03:54 -0800 (Sat, 16 Feb 2008) | 1 line
  
  Made the msvc toolset always explicitly enable or disable rtti support based on the <rtti> feature value instead of only setting it if <rtti>on and depending on it being disabled by default. The original behaviour did not work well with msvc 8.0 for which there was not way to disable rtti support as that compiler enables rtti support by default.
................
  r43283 | bemandawes | 2008-02-16 18:01:32 -0800 (Sat, 16 Feb 2008) | 1 line
  
  Show output of example program
................
  r43290 | hkaiser | 2008-02-17 08:45:08 -0800 (Sun, 17 Feb 2008) | 1 line
  
  Wave: Extended a workaround to newest Intel compiler version (Linux V10.1)
................
  r43292 | nesotto | 2008-02-17 08:49:38 -0800 (Sun, 17 Feb 2008) | 1 line
  
  support for comparinson operators
................
  r43293 | nesotto | 2008-02-17 08:50:02 -0800 (Sun, 17 Feb 2008) | 1 line
  
  support for comparison operators
................
  r43294 | hkaiser | 2008-02-17 09:00:20 -0800 (Sun, 17 Feb 2008) | 1 line
  
  Wave: Fixed test cases to reflect recent changes to whitespace insertion.
................
  r43296 | eric_niebler | 2008-02-17 12:53:18 -0800 (Sun, 17 Feb 2008) | 1 line
  
  proto documentation improvements
................
  r43299 | turkanis | 2008-02-17 21:48:13 -0800 (Sun, 17 Feb 2008) | 1 line
  
  merged changes from iostreams_dev, revisions 43243-43298: overhaul of category_of and close(): stringstream is now dual_seekable; standard file streams and string streams are closable; public Boost.Iostreams streams and streambufs are closable; close() pops filtering streams and streambufs
................
  r43300 | eric_niebler | 2008-02-17 22:16:27 -0800 (Sun, 17 Feb 2008) | 1 line
  
  remove dependence on boost.lambda, make numeric function objects work with std binders
................
  r43301 | chris_kohlhoff | 2008-02-18 05:31:26 -0800 (Mon, 18 Feb 2008) | 2 lines
  
  Fix printing of error messages.
................
  r43302 | chris_kohlhoff | 2008-02-18 05:33:23 -0800 (Mon, 18 Feb 2008) | 2 lines
  
  Only define _XOPEN_SOURCE_EXTENDED when building with gcc on HP-UX.
................
  r43303 | chris_kohlhoff | 2008-02-18 05:35:15 -0800 (Mon, 18 Feb 2008) | 3 lines
  
  Add missing #include of socket_types.hpp needed for the SSL unit tests
  to compile successfully on Windows.
................
  r43306 | eric_niebler | 2008-02-18 10:29:29 -0800 (Mon, 18 Feb 2008) | 1 line
  
  remove post_construct docs, fix link to boost.parameter library
................
  r43308 | niels_dekker | 2008-02-18 14:11:19 -0800 (Mon, 18 Feb 2008) | 1 line
  
  Fixed the assignment of value_initialized<T> for T being a C-style array. (The previous version would trigger a compile error in this case.)
................
  r43309 | niels_dekker | 2008-02-18 14:13:21 -0800 (Mon, 18 Feb 2008) | 1 line
  
  Tested the assignment of value_initialized<T>, for T being a C-style array. Related to the fix of changeset [43308]
................
  r43310 | eric_niebler | 2008-02-18 15:03:23 -0800 (Mon, 18 Feb 2008) | 1 line
  
  some doxygen comments for proto/traits.hpp
................
  r43311 | eric_niebler | 2008-02-18 21:56:52 -0800 (Mon, 18 Feb 2008) | 1 line
  
  more proto documentation tweaks, remove unnecessary result_of::arg_c instantiation
................
  r43312 | eric_niebler | 2008-02-18 23:14:37 -0800 (Mon, 18 Feb 2008) | 1 line
  
  fix droppable accumulators
................
  r43314 | eric_niebler | 2008-02-18 23:33:30 -0800 (Mon, 18 Feb 2008) | 1 line
  
  darn, back out bad droppable changes
................
  r43316 | pdimov | 2008-02-19 05:18:58 -0800 (Tue, 19 Feb 2008) | 1 line
  
  Fixes #1590.
................
  r43317 | pdimov | 2008-02-19 06:01:13 -0800 (Tue, 19 Feb 2008) | 1 line
  
  Fixes #1444.
................
  r43318 | pdimov | 2008-02-19 06:26:36 -0800 (Tue, 19 Feb 2008) | 1 line
  
  Fix #398, as long as the macros BOOST_NO_STD_TYPEINFO and BOOST_NO_IOSTREAM are defined. I don't know how Boost.Config needs to be changed to autodetect eVC4 and set these on its own.
................
  r43319 | pdimov | 2008-02-19 06:51:10 -0800 (Tue, 19 Feb 2008) | 1 line
  
  Fix #1641.
................
  r43320 | pdimov | 2008-02-19 06:59:28 -0800 (Tue, 19 Feb 2008) | 1 line
  
  Fix #1646.
................
  r43321 | pdimov | 2008-02-19 07:09:10 -0800 (Tue, 19 Feb 2008) | 1 line
  
  Fix #1642.
................
  r43322 | nesotto | 2008-02-19 07:10:05 -0800 (Tue, 19 Feb 2008) | 1 line
  
  fixed problem with operator()() when the value_type was abstract.
................
  r43323 | pdimov | 2008-02-19 07:40:58 -0800 (Tue, 19 Feb 2008) | 1 line
  
  Fix #1643.
................
  r43325 | turkanis | 2008-02-19 11:34:07 -0800 (Tue, 19 Feb 2008) | 1 line
  
  stringstreams are no longer closable; the semantics of close() for these devices was illconsidered
................
  r43328 | turkanis | 2008-02-19 16:09:06 -0800 (Tue, 19 Feb 2008) | 1 line
  
  menu fix from iostreams_dev
................
  r43329 | turkanis | 2008-02-19 19:20:17 -0800 (Tue, 19 Feb 2008) | 1 line
  
  markup for pgi-7.0 (iostreams)
................
  r43330 | bemandawes | 2008-02-20 05:46:49 -0800 (Wed, 20 Feb 2008) | 1 line
  
  Add .z7 archive generation
................
  r43332 | grafik | 2008-02-20 09:32:09 -0800 (Wed, 20 Feb 2008) | 1 line
  
  New readme page for now standalone release.
................
  r43334 | grafik | 2008-02-20 11:15:16 -0800 (Wed, 20 Feb 2008) | 1 line
  
  Fix link to getting started docs.
................
  r43335 | grafik | 2008-02-20 14:50:03 -0800 (Wed, 20 Feb 2008) | 1 line
  
  Add the <python.interpreter> to all requirements to allow other toolsets to use the currently configured python instead of relying on python being in the path.
................
  r43336 | grafik | 2008-02-20 15:01:43 -0800 (Wed, 20 Feb 2008) | 1 line
  
  Use the configured python interpreter instead of assuming it's in the path.
................
  r43337 | grafik | 2008-02-20 15:03:28 -0800 (Wed, 20 Feb 2008) | 1 line
  
  Add missing, and assumed, white background for screen rendering.
................
  r43338 | grafik | 2008-02-20 15:26:58 -0800 (Wed, 20 Feb 2008) | 1 line
  
  Doc cleanups.
................
  r43344 | eric_niebler | 2008-02-20 23:18:24 -0800 (Wed, 20 Feb 2008) | 1 line
  
  More Proto documentation
................
  r43346 | johnmaddock | 2008-02-21 02:37:59 -0800 (Thu, 21 Feb 2008) | 3 lines
  
  Fix typo in example.
  Added links to PDF versions of the docs.
  Regenerated all the docs to fix people links.
................
  r43347 | johnmaddock | 2008-02-21 03:53:59 -0800 (Thu, 21 Feb 2008) | 1 line
  
  Update main overview page.
................
  r43349 | bemandawes | 2008-02-21 04:46:11 -0800 (Thu, 21 Feb 2008) | 1 line
  
  Fix typo; .z7 should be .7z
................
  r43351 | johnmaddock | 2008-02-21 04:58:15 -0800 (Thu, 21 Feb 2008) | 1 line
  
  Added link to PDF docs, and regenerated.
................
  r43354 | johnmaddock | 2008-02-21 05:51:18 -0800 (Thu, 21 Feb 2008) | 1 line
  
  Added link to PDF docs, and regenerated.
................
  r43357 | johnmaddock | 2008-02-21 08:49:59 -0800 (Thu, 21 Feb 2008) | 1 line
  
  Added link to PDF docs.
................
  r43359 | johnmaddock | 2008-02-21 09:01:26 -0800 (Thu, 21 Feb 2008) | 1 line
  
  Regenerated docs to fix links.
................
  r43361 | bemandawes | 2008-02-21 12:11:32 -0800 (Thu, 21 Feb 2008) | 1 line
  
  Fix still another typo
................
  r43362 | eric_niebler | 2008-02-21 12:12:02 -0800 (Thu, 21 Feb 2008) | 1 line
  
  doxygen comments for proto::when<>
................
  r43363 | eric_niebler | 2008-02-21 16:42:12 -0800 (Thu, 21 Feb 2008) | 1 line
  
  fix crash when actions are in keep() expressions
................
  r43364 | eric_niebler | 2008-02-21 18:01:46 -0800 (Thu, 21 Feb 2008) | 1 line
  
  doxygen comments
................
  r43365 | grafik | 2008-02-21 21:26:39 -0800 (Thu, 21 Feb 2008) | 1 line
  
  Rename readme.html to index.html, and add forwarding index.htm for backward compatibility.
................
  r43368 | danieljames | 2008-02-22 01:21:22 -0800 (Fri, 22 Feb 2008) | 2 lines
  
  Update the index.html link in the navbar.
................
  r43371 | grafik | 2008-02-22 08:25:21 -0800 (Fri, 22 Feb 2008) | 1 line
  
  Remove obsolete getting started files. They where replaced by more/getting_started/*.
................
  r43377 | chris_kohlhoff | 2008-02-22 14:43:54 -0800 (Fri, 22 Feb 2008) | 2 lines
  
  Use the correct vector of timer queues when dispatching timers.
................
  r43390 | turkanis | 2008-02-22 16:05:49 -0800 (Fri, 22 Feb 2008) | 2 lines
  
  Ported change from iostreams_dev
................
  r43391 | turkanis | 2008-02-22 16:06:24 -0800 (Fri, 22 Feb 2008) | 2 lines
  
  Ported changes from iostreams_dev
................
  r43392 | turkanis | 2008-02-22 16:07:13 -0800 (Fri, 22 Feb 2008) | 1 line
  
  merged changes from iostreams_dev, revisions 43327-43389
................
  r43393 | turkanis | 2008-02-22 16:11:07 -0800 (Fri, 22 Feb 2008) | 1 line
  
  merged changes from iostreams_dev
................
  r43395 | turkanis | 2008-02-22 22:07:59 -0800 (Fri, 22 Feb 2008) | 1 line
  
  updated to test close() on filtering streambufs
................
  r43399 | turkanis | 2008-02-22 23:44:58 -0800 (Fri, 22 Feb 2008) | 1 line
  
  merged changes from iostreams_dev
................
  r43402 | bemandawes | 2008-02-23 06:04:02 -0800 (Sat, 23 Feb 2008) | 1 line
  
  Give the 1st and 2nd level index.html files a common look-and-feel.
................
  r43405 | vladimir_prus | 2008-02-24 04:59:04 -0800 (Sun, 24 Feb 2008) | 3 lines
  
  Recognize that fact, for that for intel-win, <runtime-debuggin>
  matters and should be added to the library name.
................
  r43409 | bemandawes | 2008-02-24 16:53:26 -0800 (Sun, 24 Feb 2008) | 1 line
  
  Fix html boo boo
................
  r43410 | schoepflin | 2008-02-25 00:37:10 -0800 (Mon, 25 Feb 2008) | 1 line
  
  Added missing template keyword.
................
  r43411 | t_schwinger | 2008-02-25 03:45:51 -0800 (Mon, 25 Feb 2008) | 3 lines
  
  removes unnecessary escaping
................
  r43412 | t_schwinger | 2008-02-25 03:47:59 -0800 (Mon, 25 Feb 2008) | 3 lines
  
  removes unnecessary comment
................
  r43416 | hkaiser | 2008-02-26 11:25:05 -0800 (Tue, 26 Feb 2008) | 1 line
  
  Wave: Fixed expanding_function_like_macro preprocessing hook.
................
  r43417 | danieljames | 2008-02-26 14:04:55 -0800 (Tue, 26 Feb 2008) | 2 lines
  
  Fix a link to Boost.Bimap.
................
  r43418 | danieljames | 2008-02-26 14:07:25 -0800 (Tue, 26 Feb 2008) | 2 lines
  
  Change another link that's no longer in the repository to link to the website.
................
  r43419 | hkaiser | 2008-02-26 14:36:36 -0800 (Tue, 26 Feb 2008) | 1 line
  
  Fixed a compilation problem on pathscale
................
  r43421 | eric_niebler | 2008-02-27 10:48:22 -0800 (Wed, 27 Feb 2008) | 1 line
  
  partially revert breaking change to independent sub-expressions until I can make a proper fix
................
  r43422 | danieljames | 2008-02-27 10:51:14 -0800 (Wed, 27 Feb 2008) | 1 line
  
  Fix broken copyright urls. Fixes #1573.
................
  r43423 | danieljames | 2008-02-27 11:22:01 -0800 (Wed, 27 Feb 2008) | 1 line
  
  Fix incorrect links to copyright of the form 'http:#www.boost.org
................
  r43424 | eric_niebler | 2008-02-27 11:39:43 -0800 (Wed, 27 Feb 2008) | 1 line
  
  fix bug in use_simple_repeat calculation
................
  r43428 | eric_niebler | 2008-02-27 16:03:15 -0800 (Wed, 27 Feb 2008) | 1 line
  
  add test case for use_simple_repeat fix
................
  r43433 | eric_niebler | 2008-02-28 14:47:12 -0800 (Thu, 28 Feb 2008) | 1 line
  
  fix oops
................
  r43434 | johnmaddock | 2008-02-29 01:49:42 -0800 (Fri, 29 Feb 2008) | 1 line
  
  Apply fixes to issue #1658 which fixes some broken URL's.
................
  r43435 | johnmaddock | 2008-02-29 01:58:30 -0800 (Fri, 29 Feb 2008) | 1 line
  
  Fix broken link as per report #1658.
................
  r43437 | chris_kohlhoff | 2008-02-29 04:57:57 -0800 (Fri, 29 Feb 2008) | 2 lines
  
  Add missing tie().
................
  r43438 | schoepflin | 2008-02-29 07:13:41 -0800 (Fri, 29 Feb 2008) | 2 lines
  
  Added expected failure markup for the test weighted_tail_variate_means on Tru64/CXX.
................
  r43441 | eric_niebler | 2008-03-01 11:32:56 -0800 (Sat, 01 Mar 2008) | 1 line
  
  add map_assign example
................
  r43458 | turkanis | 2008-03-02 22:20:14 -0800 (Sun, 02 Mar 2008) | 1 line
  
  merged changes from iostreams_dev, revisions 43399-43457
................
  r43461 | anthonyw | 2008-03-03 00:44:42 -0800 (Mon, 03 Mar 2008) | 1 line
  
  Test and fix for issue #1665
................
  r43464 | anthonyw | 2008-03-03 02:52:44 -0800 (Mon, 03 Mar 2008) | 1 line
  
  thread constructor now accepts up to three additional arguments to pass to thread function
................
  r43467 | danieljames | 2008-03-03 04:10:35 -0800 (Mon, 03 Mar 2008) | 2 lines
  
  Tell subversion that date_time.doc is a text file, not a word document.
................
  r43468 | danieljames | 2008-03-03 04:11:25 -0800 (Mon, 03 Mar 2008) | 1 line
  
  Fix license link in date_time.doc
................
  r43469 | chris_kohlhoff | 2008-03-03 05:21:05 -0800 (Mon, 03 Mar 2008) | 4 lines
  
  Disable use of CancelIo by default, due to the possibility of silent
  failure on some system configurations. Swallow error returned by CancelIoEx
  if there are no operations to be cancelled.
................
  r43470 | chris_kohlhoff | 2008-03-03 05:27:06 -0800 (Mon, 03 Mar 2008) | 2 lines
  
  Add missing 'boost_' prefix to helper namespace.
................
  r43471 | chris_kohlhoff | 2008-03-03 05:36:35 -0800 (Mon, 03 Mar 2008) | 2 lines
  
  Regenerate documentation.
................
  r43472 | chris_kohlhoff | 2008-03-03 06:05:35 -0800 (Mon, 03 Mar 2008) | 1 line
  
  Update copyright notices.
................
  r43473 | chris_kohlhoff | 2008-03-03 06:13:01 -0800 (Mon, 03 Mar 2008) | 2 lines
  
  Update copyright notices.
................
  r43476 | eric_niebler | 2008-03-03 11:44:54 -0800 (Mon, 03 Mar 2008) | 1 line
  
  add Map Assign example to documentation
................
  r43478 | eric_niebler | 2008-03-03 11:47:47 -0800 (Mon, 03 Mar 2008) | 1 line
  
  second attempt at fixing actions in independent expressions
................
  r43484 | eric_niebler | 2008-03-03 15:48:17 -0800 (Mon, 03 Mar 2008) | 1 line
  
  handle static regexes with actions nested in dynamic independent subexpressions
................
  r43485 | emildotchevski | 2008-03-03 17:41:17 -0800 (Mon, 03 Mar 2008) | 1 line
  
  boost exception
................
  r43496 | eric_niebler | 2008-03-04 10:51:07 -0800 (Tue, 04 Mar 2008) | 1 line
  
  rename numeric::empty to numeric::default_, fixes #1650
................
  r43501 | eric_niebler | 2008-03-04 11:31:57 -0800 (Tue, 04 Mar 2008) | 1 line
  
  eliminate msvc level 4 warnings, fixes #1631
................
  r43502 | eric_niebler | 2008-03-04 11:42:36 -0800 (Tue, 04 Mar 2008) | 1 line
  
  add Dave Jenkin's evil static/dynamic actions in keep test case
................
  r43503 | eric_niebler | 2008-03-04 13:09:47 -0800 (Tue, 04 Mar 2008) | 1 line
  
  work around msvc bug 331418, fixes #1652
................
  r43506 | eric_niebler | 2008-03-04 15:01:17 -0800 (Tue, 04 Mar 2008) | 1 line
  
  fix bad interaction between boyer-moore optimization and partial match feature, fixes #1564
................
  r43508 | eric_niebler | 2008-03-04 22:32:39 -0800 (Tue, 04 Mar 2008) | 1 line
  
  add BOOST_REVERSE_FOREACH, fixes #1071
................
  r43509 | eric_niebler | 2008-03-04 23:12:03 -0800 (Tue, 04 Mar 2008) | 1 line
  
  fix bug iterating over abstract base
................


[SVN r43519]
2008-03-05 20:37:04 +00:00
Daniel James 6bdc42d48a Change people links to link to the site.
[SVN r43168]
2008-02-07 22:27:50 +00:00
Daniel James 322f38f032 Roll back links to the beta site.
[SVN r43163]
2008-02-07 20:47:08 +00:00
Daniel James 7b9faca0b4 Merge from trunk.
[SVN r42243]
2007-12-22 15:36:31 +00:00
Eric Niebler 95e7d06560 Merged revisions 42067-42179 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r42067 | johnmaddock | 2007-12-15 04:32:18 -0800 (Sat, 15 Dec 2007) | 1 line
  
  MSVC warning suppression.
........
  r42069 | bemandawes | 2007-12-15 06:26:16 -0800 (Sat, 15 Dec 2007) | 1 line
  
  Correct misspelling of library name
........
  r42074 | johnmaddock | 2007-12-15 09:10:03 -0800 (Sat, 15 Dec 2007) | 1 line
  
  Fix error messages so they work with Boost.Format.
........
  r42076 | johnmaddock | 2007-12-15 09:36:31 -0800 (Sat, 15 Dec 2007) | 1 line
  
  Trivial patches to silence MSVC warnings.
........
  r42078 | johnmaddock | 2007-12-15 10:29:29 -0800 (Sat, 15 Dec 2007) | 1 line
  
  Disable long double tests if there's no long double support.
........
  r42080 | johnmaddock | 2007-12-15 10:49:13 -0800 (Sat, 15 Dec 2007) | 1 line
  
  Yet another MSVC warning suppression.
........
  r42082 | bgubenko | 2007-12-15 10:53:01 -0800 (Sat, 15 Dec 2007) | 1 line
  
  mark up Boost.Test tests for Linux ia64 gcc; make Boost.Interprocess unsupported on Linux ia64 gcc and PA-RISC
........
  r42086 | anthonyw | 2007-12-15 14:34:30 -0800 (Sat, 15 Dec 2007) | 1 line
  
  added timed_wait overloads that take a duration
........
  r42087 | anthonyw | 2007-12-15 14:36:43 -0800 (Sat, 15 Dec 2007) | 1 line
  
  explicit move functions for threads, with a test
........
  r42105 | andreas_huber69 | 2007-12-16 06:58:24 -0800 (Sun, 16 Dec 2007) | 1 line
  
  Removed markup for now passing Sandia tests.
........
  r42112 | bemandawes | 2007-12-16 14:39:32 -0800 (Sun, 16 Dec 2007) | 1 line
  
  Add intel-win-10.0 as required
........
  r42116 | djowel | 2007-12-17 01:27:42 -0800 (Mon, 17 Dec 2007) | 1 line
  
  fixed documentation bug
........
  r42117 | anthonyw | 2007-12-17 03:24:13 -0800 (Mon, 17 Dec 2007) | 1 line
  
  Updated move function test to be fair to Borland
........
  r42118 | anthonyw | 2007-12-17 04:52:50 -0800 (Mon, 17 Dec 2007) | 1 line
  
  boost::move support for locks
........
  r42119 | chris_kohlhoff | 2007-12-17 05:04:30 -0800 (Mon, 17 Dec 2007) | 2 lines
  
  Fixes for older HP-UX.
........
  r42120 | chris_kohlhoff | 2007-12-17 05:08:10 -0800 (Mon, 17 Dec 2007) | 2 lines
  
  Bump version number.
........
  r42121 | chris_kohlhoff | 2007-12-17 05:17:46 -0800 (Mon, 17 Dec 2007) | 2 lines
  
  Documentation fixes.
........
  r42127 | bgubenko | 2007-12-17 10:06:11 -0800 (Mon, 17 Dec 2007) | 1 line
  
  markup test library test prg_exec_fail2 for PA-RISC
........
  r42138 | johnmaddock | 2007-12-18 08:37:23 -0800 (Tue, 18 Dec 2007) | 1 line
  
  Fixes #1525.
........
  r42141 | marshall | 2007-12-18 10:33:55 -0800 (Tue, 18 Dec 2007) | 1 line
  
  Patches to fixe #1423 and #1473
........
  r42145 | fmhess | 2007-12-18 12:14:01 -0800 (Tue, 18 Dec 2007) | 4 lines
  
  Prevented "classname"/"methodname"/etc. elements inside "type" elements 
  inside "static-constant" elements from getting dropped.
........
  r42164 | djowel | 2007-12-19 02:33:14 -0800 (Wed, 19 Dec 2007) | 1 line
  
  bug fix for end_impl.
........
  r42165 | djowel | 2007-12-19 02:33:39 -0800 (Wed, 19 Dec 2007) | 1 line
  
  bug fix for end_impl. (test)
........
  r42166 | anthonyw | 2007-12-19 02:39:45 -0800 (Wed, 19 Dec 2007) | 1 line
  
  Updated thread ID, and added tests
........
  r42167 | djowel | 2007-12-19 02:42:04 -0800 (Wed, 19 Dec 2007) | 1 line
  
  tweakbug fix for end_impl (tweak).
........
  r42168 | anthonyw | 2007-12-19 02:45:01 -0800 (Wed, 19 Dec 2007) | 1 line
  
  Implement hardware_concurrency for pthread
........
  r42169 | johnmaddock | 2007-12-19 08:41:54 -0800 (Wed, 19 Dec 2007) | 1 line
  
  Fix graph title.
........


[SVN r42185]
2007-12-19 22:46:16 +00:00
Jonathan Turkanis 9c1b024a9f Branch for Iostreams development
[SVN r42144]
2007-12-18 20:08:11 +00:00
Daniel James 07a4656255 Merge from trunk, finally.
[SVN r41817]
2007-12-07 01:12:02 +00:00
Eric Niebler 706704b72c Merged revisions 41678-41775 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r41679 | anthonyw | 2007-12-03 23:57:23 -0800 (Mon, 03 Dec 2007) | 1 line
  
  fixed typo in condition_variable_any::timed_wait
........
  r41681 | anthonyw | 2007-12-04 01:15:37 -0800 (Tue, 04 Dec 2007) | 1 line
  
  changed boost::move to boost::detail::thread_move to fix issue #1492
........
  r41682 | anthonyw | 2007-12-04 02:04:30 -0800 (Tue, 04 Dec 2007) | 1 line
  
  split shared mutex tests in two to take less time
........
  r41683 | anthonyw | 2007-12-04 03:44:25 -0800 (Tue, 04 Dec 2007) | 1 line
  
  don't dllexport/dllimport inline functions
........
  r41684 | anthonyw | 2007-12-04 04:08:38 -0800 (Tue, 04 Dec 2007) | 1 line
  
  add explicit casts to remove warnings
........
  r41686 | anthonyw | 2007-12-04 05:02:58 -0800 (Tue, 04 Dec 2007) | 1 line
  
  Added test for thread move constructor; implemented move on pthreads
........
  r41687 | anthonyw | 2007-12-04 06:07:01 -0800 (Tue, 04 Dec 2007) | 1 line
  
  changed order of declaration to eliminate warnings
........
  r41688 | nesotto | 2007-12-04 06:41:44 -0800 (Tue, 04 Dec 2007) | 1 line
  
  ticket 1488
........
  r41696 | fmhess | 2007-12-04 11:42:08 -0800 (Tue, 04 Dec 2007) | 2 lines
  
  Make sure output filenames don't include any illegal characters.
........
  r41697 | fmhess | 2007-12-04 11:45:10 -0800 (Tue, 04 Dec 2007) | 4 lines
  
  Fixed printing of object name for nested classes (merge of
  revision 41421 from sandbox/boost_docs).
........
  r41698 | fmhess | 2007-12-04 11:55:50 -0800 (Tue, 04 Dec 2007) | 17 lines
  
  Made generated ids for functions and overloaded functions human-readable 
  which also results in (mostly) human-readable names for 
  their .html output files. Made generate.id template properly use 
  its node parameter (merge of parts of revision 41461 from sandbox/boost_docs). 
  
  Made class name in synopsis a link to class reference page, which is useful 
  for nested classes (merge of revision 41435 from sandbox/boost_docs). 
  
  Removed spurious new line in synopisis between a nested class 
  and the comment describing its purpose (merge of revision 41434 from
  sandbox/boost_docs). 
  
  Added a warning if an "inherit" element has 
  no "type" child element (partial merge of revision 41463 from
  sandbox/boost_docs). 
........
  r41701 | chris_kohlhoff | 2007-12-04 13:28:42 -0800 (Tue, 04 Dec 2007) | 2 lines
  
  Prevent deprecated function warnings for MSVC >= 8.
........
  r41703 | nasonov | 2007-12-04 13:49:51 -0800 (Tue, 04 Dec 2007) | 1 line
  
  Link to html version of [Tuning] and BOOST_LEXICAL_CAST_ASSUME_C_LOCALE synopsis
........
  r41704 | igaztanaga | 2007-12-04 14:05:28 -0800 (Tue, 04 Dec 2007) | 1 line
  
  Added Leopard workaround. _POSIX_THREAD_PROCESS_SHARED is defined but does not seem to work. For the moment, Mac OS will use emulation code
........
  r41705 | djenkins | 2007-12-04 14:19:58 -0800 (Tue, 04 Dec 2007) | 1 line
  
  Fix msvc-9.0 code analysis problem
........
  r41707 | noel_belcourt | 2007-12-04 15:18:38 -0800 (Tue, 04 Dec 2007) | 6 lines
  
  Fixes to get pgi shared libraries working, executables
  that don't core, and limiting the number of error
  messages emitted by the compiler so as to reduce the
  size of the log file.
........
  r41727 | grafik | 2007-12-04 16:32:04 -0800 (Tue, 04 Dec 2007) | 1 line
  
  Switch FTP site for results.
........
  r41734 | noel_belcourt | 2007-12-04 19:11:25 -0800 (Tue, 04 Dec 2007) | 5 lines
  
  Pgi compilers can't accept shared library with Boost version 
  suffix appended to it.  Add logic to tag rule in Jamroot to 
  suppress appending version suffix for pgi toolset.
........
  r41735 | noel_belcourt | 2007-12-04 19:20:30 -0800 (Tue, 04 Dec 2007) | 3 lines
  
  Patch pgi shared library use.
........
  r41736 | grafik | 2007-12-04 20:33:36 -0800 (Tue, 04 Dec 2007) | 1 line
  
  Fix parsing of macosx version numbers from detected SDKs.
........
  r41738 | anthonyw | 2007-12-05 00:27:44 -0800 (Wed, 05 Dec 2007) | 1 line
  
  added missing include of detail/config.hpp
........
  r41739 | t_schwinger | 2007-12-05 02:24:21 -0800 (Wed, 05 Dec 2007) | 3 lines
  
  clarifies #error message
........
  r41740 | t_schwinger | 2007-12-05 02:26:16 -0800 (Wed, 05 Dec 2007) | 2 lines
  
  updates function_types failures
........
  r41741 | anthonyw | 2007-12-05 02:58:45 -0800 (Wed, 05 Dec 2007) | 1 line
  
  improved timeout checks
........
  r41742 | t_schwinger | 2007-12-05 05:20:13 -0800 (Wed, 05 Dec 2007) | 3 lines
  
  attempts to fix strange problems with Pathscale compilers
........
  r41762 | chris_kohlhoff | 2007-12-05 13:46:19 -0800 (Wed, 05 Dec 2007) | 2 lines
  
  Don't use deprecated function workaround when compiling for Windows CE.
........
  r41770 | ramey | 2007-12-05 18:33:59 -0800 (Wed, 05 Dec 2007) | 2 lines
  
  change to fix failures with gcc 4.1+
  modification to string input primitives
........
  r41775 | djenkins | 2007-12-05 22:23:55 -0800 (Wed, 05 Dec 2007) | 1 line
  
  Avoid bug in Microsoft Code Analysis
........


[SVN r41776]
2007-12-06 07:20:07 +00:00
Daniel James 8b9a9a519f Fix the people links in the conversion documentation.
[SVN r41599]
2007-12-02 23:55:38 +00:00
Daniel James 703f75e029 Create a branch to fix links on.
[SVN r41573]
2007-12-02 10:07:42 +00:00
Eric Niebler 42f6163f18 Merged revisions 41399-41442 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r41400 | igaztanaga | 2007-11-26 08:34:13 -0800 (Mon, 26 Nov 2007) | 1 line
  
  Added missing #include <typeinfo>
........
  r41401 | anthonyw | 2007-11-26 09:01:08 -0800 (Mon, 26 Nov 2007) | 1 line
  
  once_flag uses zero-initialization on POSIX as well as windows
........
  r41402 | niels_dekker | 2007-11-26 09:36:52 -0800 (Mon, 26 Nov 2007) | 1 line
  
  Marked value_init_test failures on Borland C++ as "expected failures", as discussed with Fernando Cacciola.
........
  r41404 | rwgk | 2007-11-26 12:46:28 -0800 (Mon, 26 Nov 2007) | 1 line
  
  g++ 4.3.0 compatibility (4.3.0 20071125 (experimental))
........
  r41405 | anthonyw | 2007-11-26 13:15:04 -0800 (Mon, 26 Nov 2007) | 1 line
  
  reverted accidental checkin of new timed_wait functions on condition_variable
........
  r41406 | nasonov | 2007-11-26 13:29:04 -0800 (Mon, 26 Nov 2007) | 3 lines
  
  Remove redundant BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION.
........
  r41407 | chris_kohlhoff | 2007-11-26 13:29:38 -0800 (Mon, 26 Nov 2007) | 3 lines
  
  WinCE doesn't work with all multicast addresses, and even though it doesn't
  support the multicast::enable_loopback option you can still get the value.
........
  r41408 | dave | 2007-11-26 14:01:50 -0800 (Mon, 26 Nov 2007) | 2 lines
  
  Try to extend the workaround to SunPro 5.9, since we're marked as not working on 5.8
........
  r41409 | dave | 2007-11-26 17:40:01 -0800 (Mon, 26 Nov 2007) | 3 lines
  
  Allow Sun-5.7 and Sun-5.8 to fail loudly for Boost.Python so I can see
  what's really wrong.
........
  r41413 | anthonyw | 2007-11-27 06:24:29 -0800 (Tue, 27 Nov 2007) | 1 line
  
  add support for relative timeouts to condition timed_wait
........
  r41414 | grafik | 2007-11-27 09:53:56 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Remove non-existent option info.
........
  r41415 | grafik | 2007-11-27 09:55:13 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Add some utility output formatting functions.
........
  r41416 | grafik | 2007-11-27 09:57:15 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Check empty string invariants, instead of assuming all strings are allocated. And reset strings when they are freed.
........
  r41417 | grafik | 2007-11-27 09:58:50 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Fix buffer overrun bug in expanding @() subexpressions.
........
  r41418 | hkaiser | 2007-11-27 10:18:10 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Wave: Fixed gcc warning, bumped version number.
........
  r41419 | djenkins | 2007-11-27 10:57:48 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Changes for msvc-9.0 /clr flag
........
  r41420 | djenkins | 2007-11-27 10:59:06 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Changes for msvc-9.0 /clr flag
........
  r41423 | niels_dekker | 2007-11-27 13:34:08 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Added value_init test for struct as used in MSVC bug report regarding value-initialization.
........
  r41429 | noel_belcourt | 2007-11-27 18:27:13 -0800 (Tue, 27 Nov 2007) | 3 lines
  
  Fix pathscale rpath issue per Alain Minussi's suggestion.
........
  r41430 | grafik | 2007-11-27 23:08:13 -0800 (Tue, 27 Nov 2007) | 1 line
  
  Add test for result status values of simple actions, i.e. empty actions.
........
  r41431 | grafik | 2007-11-27 23:21:49 -0800 (Tue, 27 Nov 2007) | 19 lines
  
  build-system.jam
  * Reflect added start/end timestamps for actions in xml output. And update action rules for new args.
  
  execcmd.h
  * Add start/end timestamps to action timing info.
  
  execnt.c
  * Fix filetime_seconds calculation when time is larger than low 32 bit value.
  * Add calc of C time_t from Windows FILETIME.
  * Add start/end timestamps recording to action timing info.
  
  execunix.c
  * Add start/end timestamps recording to action timing info.
  
  jam.c
  * Change JAMDATE to use common ISO date format.
  
  make1.c
  * Redo __TIMING_RULE__ and __ACTION__RULE__ invocations to new argument ordering and added end/result timestamp values.
........
  r41432 | chris_kohlhoff | 2007-11-28 05:26:33 -0800 (Wed, 28 Nov 2007) | 3 lines
  
  Make async operations fail with an error if the socket descriptor doesn't
  fit into the select call's fd_set.
........
  r41433 | bgubenko | 2007-11-28 07:33:16 -0800 (Wed, 28 Nov 2007) | 1 line
  
  add "gcc*hpux*" toolset for serialization library bug on big endian platforms
........
  r41436 | niels_dekker | 2007-11-28 09:19:37 -0800 (Wed, 28 Nov 2007) | 1 line
  
  Added tests for two more struct types to value_init_test -- discussed with Fernando Cacciola
........
  r41439 | bgubenko | 2007-11-28 11:04:53 -0800 (Wed, 28 Nov 2007) | 1 line
  
  add "<linkflags>-lrt" for acc* toolsets
........
  r41440 | grafik | 2007-11-28 12:24:17 -0800 (Wed, 28 Nov 2007) | 1 line
  
  Fix for latest Doxygen namespace file names. And support for method groups. From Samuel Debionne.
........


[SVN r41444]
2007-11-28 22:03:59 +00:00
Eric Niebler eec77cd040 Merged revisions 41268-41398 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r41270 | dgregor | 2007-11-20 21:50:21 -0800 (Tue, 20 Nov 2007) | 1 line
  
  Fixes #1456
........
  r41271 | johnmaddock | 2007-11-21 01:39:00 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Added super/subscript styling as per boost-docs mailing list discussion.
........
  r41272 | johnmaddock | 2007-11-21 01:46:36 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Fix << iostream operator for the NTL bindings.
........
  r41273 | anthonyw | 2007-11-21 02:44:22 -0800 (Wed, 21 Nov 2007) | 1 line
  
  changed platform split to allow bjam to track includes and check dependencies
........
  r41274 | schoepflin | 2007-11-21 03:00:18 -0800 (Wed, 21 Nov 2007) | 2 lines
  
  Added myself to the platform maintainers file.
........
  r41276 | bgubenko | 2007-11-21 03:43:00 -0800 (Wed, 21 Nov 2007) | 1 line
  
  fix typo in the marking of function_types library tests
........
  r41277 | johnmaddock | 2007-11-21 04:09:28 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Change warning suppression, to suppress warnings for VC8 as well.
........
  r41278 | johnmaddock | 2007-11-21 06:03:16 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Apply warning fix for VC8 and later only: earlier versions warn about the warning suppression :-(
........
  r41279 | schoepflin | 2007-11-21 07:21:53 -0800 (Wed, 21 Nov 2007) | 2 lines
  
  Marked function_types failures depending on stdcall as expected on Tru64/CXX.
........
  r41280 | igaztanaga | 2007-11-21 08:18:29 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Added offset_ptr test
........
  r41281 | igaztanaga | 2007-11-21 08:19:19 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Fixed offset_ptr issues with volatile values.
........
  r41282 | igaztanaga | 2007-11-21 08:39:48 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Changed precalculated sqrt(2) values selection to use enable_if.
........
  r41284 | igaztanaga | 2007-11-21 09:32:20 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Added performance Jamfile to the project
........
  r41285 | hkaiser | 2007-11-21 09:53:37 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Wave: Fixed #line statements in generated files not to contain Windows paths anymore.
........
  r41286 | marshall | 2007-11-21 11:20:15 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Bug fixes #284, #836, #991
........
  r41287 | grafik | 2007-11-21 11:29:55 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Fix search for Boost.Build so that it only finds the approved version.
........
  r41288 | djowel | 2007-11-21 14:24:37 -0800 (Wed, 21 Nov 2007) | 1 line
  
  updated the master css
........
  r41289 | matias | 2007-11-21 20:55:54 -0800 (Wed, 21 Nov 2007) | 1 line
  
  Explicit failure markup for Bimap
........
  r41290 | matias | 2007-11-21 21:18:38 -0800 (Wed, 21 Nov 2007) | 1 line
  
  remove wrong placed typename
........
  r41297 | joaquin | 2007-11-21 23:59:28 -0800 (Wed, 21 Nov 2007) | 1 line
  
  included an exe filename modifying rule to avoid interference problems with Vista UAC (fixes #1429)
........
  r41299 | djowel | 2007-11-22 00:39:46 -0800 (Thu, 22 Nov 2007) | 1 line
  
  bug fix
........
  r41300 | schoepflin | 2007-11-22 01:32:15 -0800 (Thu, 22 Nov 2007) | 3 lines
  
  Marked failures for kolmogorov_max_flow_test and max_flow_test in the graph
  library as expected for cxx and acc.
........
  r41301 | johnmaddock | 2007-11-22 01:59:38 -0800 (Thu, 22 Nov 2007) | 1 line
  
  Added try...catch around TSS initialisation.
........
  r41302 | johnmaddock | 2007-11-22 02:38:48 -0800 (Thu, 22 Nov 2007) | 1 line
  
  Fixes #501 #1334.
........
  r41303 | bgubenko | 2007-11-22 03:33:09 -0800 (Thu, 22 Nov 2007) | 1 line
  
  fix typo in r41302 causing validation error
........
  r41304 | rogeeff | 2007-11-22 11:44:12 -0800 (Thu, 22 Nov 2007) | 1 line
  
  Try to make it work in release build
........
  r41305 | rogeeff | 2007-11-22 11:56:58 -0800 (Thu, 22 Nov 2007) | 1 line
  
  new file
........
  r41308 | rogeeff | 2007-11-22 12:56:07 -0800 (Thu, 22 Nov 2007) | 2 lines
  
  negative chars test added
  some statements added to the online_test
........
  r41310 | rogeeff | 2007-11-22 13:57:16 -0800 (Thu, 22 Nov 2007) | 1 line
  
  issue with class base test cases addressed
........
  r41311 | anthonyw | 2007-11-22 14:01:30 -0800 (Thu, 22 Nov 2007) | 1 line
  
  Removed thread::self in favour of allowing interruption through a thread::id; no longer requires DuplicateHandle
........
  r41312 | rogeeff | 2007-11-22 14:06:59 -0800 (Thu, 22 Nov 2007) | 1 line
  
  comments cleanup
........
  r41313 | grafik | 2007-11-22 18:57:42 -0800 (Thu, 22 Nov 2007) | 1 line
  
  Produce less regression reports to reduce the cycle time for test reporting.
........
  r41314 | grafik | 2007-11-22 18:58:14 -0800 (Thu, 22 Nov 2007) | 1 line
  
  Produce less regression reports to reduce the cycle time for test reporting.
........
  r41315 | joaquin | 2007-11-22 23:57:15 -0800 (Thu, 22 Nov 2007) | 1 line
  
  added .exe suffix missing at rev 41297
........
  r41317 | johnmaddock | 2007-11-23 09:05:25 -0800 (Fri, 23 Nov 2007) | 1 line
  
  Remove the log files, we don't need these in SVN Trunk.
........
  r41318 | grafik | 2007-11-23 12:43:38 -0800 (Fri, 23 Nov 2007) | 1 line
  
  Add --skip-script-download option to run.py to avoid repeated regression script downloads. Thanks to _m_ for the changes.
........
  r41319 | bemandawes | 2007-11-23 14:55:48 -0800 (Fri, 23 Nov 2007) | 1 line
  
  Add the instructions formerly in the (now deleted) runner sub-directory
........
  r41320 | anthonyw | 2007-11-23 15:09:36 -0800 (Fri, 23 Nov 2007) | 1 line
  
  Integrate TSS with thread data; test to ensure cleanup done for native threads as well as boost::thread-launched threads now runs for pthread API as well as win32 API
........
  r41324 | grafik | 2007-11-23 18:16:50 -0800 (Fri, 23 Nov 2007) | 1 line
  
  Allow use of "conditional" to multiply a condition that already has the full condition in it.
........
  r41325 | igaztanaga | 2007-11-24 01:44:30 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Marked msvc-8.0-wm5 as unusable
........
  r41326 | niels_dekker | 2007-11-24 03:51:03 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Checked the result of value_init test function, hoping to pinpoint exactly for what particular type T value_initialized<T> might fail, on some platforms
........
  r41327 | johnmaddock | 2007-11-24 04:25:25 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Apply patches for building regex on WinCE see: http://lists.boost.org/Archives/boost/2007/11/130839.php
........
  r41328 | bemandawes | 2007-11-24 05:15:03 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Bring required compilers list closer into sync with actual testers and list discussion
........
  r41330 | bemandawes | 2007-11-24 06:59:08 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Remove mingw plus some compilers no longer being tested from required list
........
  r41331 | nasonov | 2007-11-24 07:22:52 -0800 (Sat, 24 Nov 2007) | 1 line
  
  minor changes
........
  r41333 | bemandawes | 2007-11-24 08:39:30 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Change long name inspection to follow ISO 9660:1997, thus replacing all length requirements with a single 207 maximum path length requirement. 
........
  r41338 | garcia | 2007-11-24 10:19:22 -0800 (Sat, 24 Nov 2007) | 2 lines
  
  A bunch of review dates have been added.
........
  r41339 | johnmaddock | 2007-11-24 10:34:17 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Changed meaning of "at_end" needs copy-constructor fix.
........
  r41341 | noel_belcourt | 2007-11-24 11:09:56 -0800 (Sat, 24 Nov 2007) | 6 lines
  
  Replace mpi wrappers with native pathscale compilers.
  Fixed how we invoke f77 (pathf90 -f77).
  
  Thanks to Alain Miniussi for reporting this.
........
  r41342 | igaztanaga | 2007-11-24 11:47:58 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Added workaround for systems without SEM_FAILED and semaphores based on filesystem
........
  r41343 | rogeeff | 2007-11-24 11:49:24 -0800 (Sat, 24 Nov 2007) | 5 lines
  
  switch to nasic_cstring.hpp instead of fwd header
  added failed expression to the system error
  system_error is caught and reported in cpp_main.ipp
  64 bit compatibility issue in debug.ipp fixed
  missing headers in algorithm.hpp added
........
  r41344 | davedeakins | 2007-11-24 12:30:50 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Define the BOOST_NO_SWPRINTF macro for WinCE.  WinCE's CRT does not have a conforming swprintf signature.
........
  r41348 | igaztanaga | 2007-11-24 16:55:14 -0800 (Sat, 24 Nov 2007) | 1 line
  
  Marked pathscale and vacpp as unusable for Interprocess/Intrusive
........
  r41350 | davedeakins | 2007-11-24 20:30:02 -0800 (Sat, 24 Nov 2007) | 1 line
  
  A few corrections to the WinCE patches
........
  r41352 | dave | 2007-11-25 01:02:01 -0800 (Sun, 25 Nov 2007) | 2 lines
  
  Attempt SunPro workaround
........
  r41353 | guwi17 | 2007-11-25 05:34:20 -0800 (Sun, 25 Nov 2007) | 6 lines
  
  - fix and close #1237
  - symmetric resize used wrong internal resize method
  -- Dese und die folgenden Zeilen werden ignoriert --
  
  M    symmetric.hpp
........
  r41355 | bemandawes | 2007-11-25 05:56:09 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Remove extra ) from prior commit
........
  r41356 | danieljames | 2007-11-25 06:10:05 -0800 (Sun, 25 Nov 2007) | 2 lines
  
  Deleting the BoostCon* files. Fixes #1256
........
  r41357 | bemandawes | 2007-11-25 07:08:28 -0800 (Sun, 25 Nov 2007) | 1 line
  
  clear # 1230, mbstate uninitialized
........
  r41358 | igaztanaga | 2007-11-25 07:18:04 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Marked intel-linux-8.* as unusable for Interprocess and Intrusive
........
  r41359 | johnmaddock | 2007-11-25 07:47:58 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Oops, previous commit messed up POSIX timing code, now fixed.
........
  r41361 | johnmaddock | 2007-11-25 08:26:36 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Redirection file.
........
  r41362 | grafik | 2007-11-25 09:06:17 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Move buildbot support to sandbox until we decide what to do with it.
........
  r41363 | grafik | 2007-11-25 09:12:42 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Some cleanup of tools documentation. Add boostbook redir file. Delete duplicate time_string.hpp. Repoint regression instructions to web site.
........
  r41364 | johnmaddock | 2007-11-25 09:23:25 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Fix date.
........
  r41378 | bemandawes | 2007-11-25 11:56:10 -0800 (Sun, 25 Nov 2007) | 1 line
  
  remove hp_cxx-71_006_tru64 as required.
........
  r41380 | grafik | 2007-11-25 12:10:10 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Add --build-type option to root build. Two choices possible at the moment "minimal" and "complete". With minimal as the default we only build the common release variant. The old behavior of building many variants is available with "complete".
........
  r41381 | fcacciola | 2007-11-25 12:26:14 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Cast to base added to avoid a call to the convertir constructor/assignment (see Tickes 1419 and 1420)
........
  r41383 | burbelgruff | 2007-11-25 13:16:46 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Revert to old sizeof based solution for retrieving the type from a typeof hack. This is in order to overcome problems with the code analysis module introduced in Visual Studio 2005.
........
  r41384 | davedeakins | 2007-11-25 13:53:26 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Added a primitive tmpnam function for WinCE (which does not supply any kind of tmpnam in its CRT)
........
  r41385 | nasonov | 2007-11-25 14:28:16 -0800 (Sun, 25 Nov 2007) | 3 lines
  
  Pass unsigned type to lcast_put_unsigned.
........
  r41387 | nasonov | 2007-11-25 15:08:50 -0800 (Sun, 25 Nov 2007) | 2 lines
  
  Support for string with non-default char_traits and allocator.
........
  r41391 | davedeakins | 2007-11-25 22:36:55 -0800 (Sun, 25 Nov 2007) | 1 line
  
  Nearly all test for the intrusive library pass on the MSVC8/WM5 platform.
........
  r41394 | joaquin | 2007-11-26 03:52:03 -0800 (Mon, 26 Nov 2007) | 1 line
  
  added missing traits template arg to a lexical_stream instantiation
........
  r41395 | anthonyw | 2007-11-26 04:17:45 -0800 (Mon, 26 Nov 2007) | 1 line
  
  workaround for Borland compiler
........
  r41396 | anthonyw | 2007-11-26 05:29:15 -0800 (Mon, 26 Nov 2007) | 1 line
  
  Don't compare native_handle_t against 0 --- do appropriate checks in create_native_thread for platforms where pthread_t is not comparable
........
  r41397 | joaquin | 2007-11-26 05:48:36 -0800 (Mon, 26 Nov 2007) | 1 line
  
  ADL-based swap call moved to an utility function (after mistaken attempt at rev 41220 to solve name-hiding issues)
........
  r41398 | anthonyw | 2007-11-26 07:44:07 -0800 (Mon, 26 Nov 2007) | 1 line
  
  fixed import/export declarations so new once code works with pthread-win32
........


[SVN r41399]
2007-11-26 16:25:40 +00:00
Eric Niebler 7bc8f85c41 Merged revisions 41247-41267 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r41249 | schoepflin | 2007-11-20 01:07:05 -0800 (Tue, 20 Nov 2007) | 2 lines
  
  Fixed SNAFU caused by last checkin.
........
  r41251 | johnmaddock | 2007-11-20 03:12:36 -0800 (Tue, 20 Nov 2007) | 1 line
  
  aCC on PA-RISC emits hard errors if a numeric constant underflows: enable existing workaround for that compiler.
........
  r41252 | johnmaddock | 2007-11-20 03:18:48 -0800 (Tue, 20 Nov 2007) | 1 line
  
  Changed order of #includes to keep Borland C++ 5.5.1 happy.
........
  r41253 | hkaiser | 2007-11-20 03:20:47 -0800 (Tue, 20 Nov 2007) | 1 line
  
  Wave: Suppressed MS warning for tests.
........
  r41254 | johnmaddock | 2007-11-20 03:40:28 -0800 (Tue, 20 Nov 2007) | 4 lines
  
  Added missing #include.
  Fix warnings on MSVC: the code should now be clean with -W4.
  Fix warnings on gcc: the code should now be clean with -Wall -Wshadow.
  This fixes Track issues #585, #980, #1196, #1278 and #1340.
........
  r41256 | garcia | 2007-11-20 07:56:29 -0800 (Tue, 20 Nov 2007) | 3 lines
  
  Added a simple test that changes index bases while resizing (thanks to
  wasti.redl@gmx.net for this code, which caught a bug).
........
  r41257 | garcia | 2007-11-20 07:56:51 -0800 (Tue, 20 Nov 2007) | 2 lines
  
  Fixes #1461
........
  r41258 | eric_niebler | 2007-11-20 08:52:43 -0800 (Tue, 20 Nov 2007) | 1 line
  
  fix warning in gcc-4.3
........
  r41259 | johnmaddock | 2007-11-20 08:57:32 -0800 (Tue, 20 Nov 2007) | 1 line
  
  Added warning suppression for VC-9.
........
  r41260 | grafik | 2007-11-20 09:51:21 -0800 (Tue, 20 Nov 2007) | 1 line
  
  Allow indication of the Boost.Build location with an argument. This allows to override the built-in BB when testing.
........
  r41262 | bgubenko | 2007-11-20 10:51:04 -0800 (Tue, 20 Nov 2007) | 1 line
  
  fixed markup validation error: consolidated two consequtive notes
........
  r41263 | bgubenko | 2007-11-20 11:09:33 -0800 (Tue, 20 Nov 2007) | 1 line
  
  mark some function_types and serialization library tests for acc toolset
........


[SVN r41268]
2007-11-20 21:11:19 +00:00
Eric Niebler ef06decf65 Merged revisions 41161-41246 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r41161 | bemandawes | 2007-11-16 15:21:47 -0800 (Fri, 16 Nov 2007) | 1 line
  
  Fix markup error
........
  r41163 | bgubenko | 2007-11-16 17:28:10 -0800 (Fri, 16 Nov 2007) | 1 line
  
  mark some fusion library tests for acc toolset
........
  r41164 | djowel | 2007-11-16 17:51:04 -0800 (Fri, 16 Nov 2007) | 1 line
  
  fix for trac ticket #1450
........
  r41165 | lbourdev | 2007-11-16 19:38:25 -0800 (Fri, 16 Nov 2007) | 10 lines
  
  Updated to version 2.1.2
  Added support for more compilers.
  Added new flag GIL_NONWORD_POINTER_ALIGNMENT_SUPPORTED to indicate whether dereferencing on non-word
  boundary is supported. Enabling this flag improves performance.
  Fixed two bugs related to non-byte-aligned images. The image alignment parameter is now specified in
  bytes, and has a default of 0, which means "packed" alignment. In particular, for non-byte-aligned
  images alignment of 0 means there are no padding bits at the ends of rows.
  Added the allocator as an optional parameter to image constructors and image recreate methods.
........
  r41167 | grafik | 2007-11-16 20:11:49 -0800 (Fri, 16 Nov 2007) | 1 line
  
  Add "--out-xml=xyz.xml" option that dumps the output of all actions, and the test.jam information, to the given file. Changes are mostly from Dave.
........
  r41169 | johnmaddock | 2007-11-17 02:00:43 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Ooops, check on wrong index, now fixed.
........
  r41170 | johnmaddock | 2007-11-17 04:17:05 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Fix WinCE issues.
........
  r41172 | johnmaddock | 2007-11-17 10:41:29 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Changed test to catch throw exceptions from thread creation.
........
  r41173 | bemandawes | 2007-11-17 12:13:16 -0800 (Sat, 17 Nov 2007) | 1 line
  
  // Add or correct comment identifying Boost library this header is associated with.
........
  r41174 | grafik | 2007-11-17 12:14:24 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Add in Dave's comments, and expand information in XML output to include action names, sources, properties, bjam info, and platform info. This required one minor change to actions to keep track of the action object generating the targets.
........
  r41175 | nesotto | 2007-11-17 12:22:05 -0800 (Sat, 17 Nov 2007) | 1 line
  
  minor update of comments
........
  r41176 | nesotto | 2007-11-17 12:22:20 -0800 (Sat, 17 Nov 2007) | 1 line
  
  last updates
........
  r41177 | nesotto | 2007-11-17 12:44:29 -0800 (Sat, 17 Nov 2007) | 1 line
  
  works after local test with vc8
........
  r41178 | nesotto | 2007-11-17 13:02:22 -0800 (Sat, 17 Nov 2007) | 1 line
  
  added missing header
........
  r41180 | nesotto | 2007-11-17 13:19:13 -0800 (Sat, 17 Nov 2007) | 1 line
  
  iostream macro patch
........
  r41181 | nesotto | 2007-11-17 13:21:53 -0800 (Sat, 17 Nov 2007) | 1 line
  
  removed some warnings
........
  r41182 | grafik | 2007-11-17 13:22:40 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Add working dir to build description, move jam version to an attribute.
........
  r41183 | nesotto | 2007-11-17 13:24:16 -0800 (Sat, 17 Nov 2007) | 1 line
  
  macro patch
........
  r41185 | nesotto | 2007-11-17 13:43:32 -0800 (Sat, 17 Nov 2007) | 1 line
  
  minor change to define the value type of the iterators better
........
  r41186 | grafik | 2007-11-17 14:09:26 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Change "actual" to the more natural "target", and change "target" to "path". Add bjam command and bb version to XML.
........
  r41187 | bemandawes | 2007-11-17 14:48:06 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Add or correct comment identifying Boost library this header is associated with.
........
  r41188 | andreas_huber69 | 2007-11-17 16:08:46 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Added markup for statechart failures on msvc-8.0~wm5~stlport5.1
........
  r41192 | grafik | 2007-11-17 22:42:14 -0800 (Sat, 17 Nov 2007) | 1 line
  
  Add to XML output the known targets and dependencies to allow creation of the full build dependency graph. Merge from Dave's Bitten branch.
........
  r41193 | johnmaddock | 2007-11-18 02:07:14 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Ooops: previous commit broke platforms/compilers with no long double support, added workaround as fix.
........
  r41194 | igaztanaga | 2007-11-18 02:41:57 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Interprocess changes to support systems with filesystem-based shared memory
........
  r41195 | igaztanaga | 2007-11-18 02:43:35 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Added scapegoat trees and an option to store the hash value in the hook for unordered containers
........
  r41196 | igaztanaga | 2007-11-18 02:44:56 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Added scapegoat trees and an option to store the hash value in the hook for unordered containers
........
  r41197 | igaztanaga | 2007-11-18 02:51:19 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Interprocess changes to support systems with filesystem-based shared memory
........
  r41198 | igaztanaga | 2007-11-18 02:54:48 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Interprocess changes to support systems with filesystem-based shared memory
........
  r41199 | johnmaddock | 2007-11-18 04:23:37 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Added missing template argument to specialisations.
........
  r41200 | johnmaddock | 2007-11-18 04:24:42 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Fix IMB xlc error limits, added workarounds where these were missed by the last commit.
........
  r41201 | t_schwinger | 2007-11-18 06:06:47 -0800 (Sun, 18 Nov 2007) | 3 lines
  
  adds comment to fusion aCC failure markup
........
  r41202 | danieljames | 2007-11-18 08:10:12 -0800 (Sun, 18 Nov 2007) | 2 lines
  
  Move the instructions for running regression tests to the new site. Fixes #1265.
........
  r41210 | danieljames | 2007-11-18 12:18:04 -0800 (Sun, 18 Nov 2007) | 2 lines
  
  Move the 'implementation variations' page to the new site. Fixes #1355.
........
  r41211 | eric_niebler | 2007-11-18 12:19:55 -0800 (Sun, 18 Nov 2007) | 1 line
  
  vc6 doesn't like BOOST_MPL_ASSERT_MSG
........
  r41212 | grafik | 2007-11-18 12:24:25 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Inspection report fixes.
........
  r41213 | grafik | 2007-11-18 12:53:28 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Cleanup tools/regression to remove obsolete runner scripts, move existing docs to doc subdir, and clean html docs into valid xhtml.
........
  r41214 | grafik | 2007-11-18 13:02:51 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Add missing <cstring> include, for std::strchr function.
........
  r41215 | grafik | 2007-11-18 13:07:26 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Add keyword tags.
........
  r41216 | niels_dekker | 2007-11-18 14:11:57 -0800 (Sun, 18 Nov 2007) | 1 line
  
  Code refactoring: removed private base classes of value_initialized, as suggested by Fernando Cacciola.
........
  r41217 | djowel | 2007-11-18 16:05:43 -0800 (Sun, 18 Nov 2007) | 1 line
  
  added link to docs
........
  r41218 | johnmaddock | 2007-11-19 02:02:16 -0800 (Mon, 19 Nov 2007) | 1 line
  
  Oops: added missing template specialisation argument.
........
  r41219 | johnmaddock | 2007-11-19 02:20:36 -0800 (Mon, 19 Nov 2007) | 1 line
  
  No user32.lib on WinCE
........
  r41220 | joaquin | 2007-11-19 03:08:11 -0800 (Mon, 19 Nov 2007) | 1 line
  
  moved some ADL stuff out of a potentially name-hiding scope
........
  r41221 | troyer | 2007-11-19 04:15:58 -0800 (Mon, 19 Nov 2007) | 1 line
  
  made complex seriaqlization more portable
........
  r41222 | anthonyw | 2007-11-19 04:17:31 -0800 (Mon, 19 Nov 2007) | 1 line
  
  fixed TSS cleanup on 64-bit Windows
........
  r41223 | anthonyw | 2007-11-19 04:29:14 -0800 (Mon, 19 Nov 2007) | 1 line
  
  fixed problems with TSS cleanup when using LoadLibrary and when threads finish after thread_specific_ptr instance has been destroyed
........
  r41224 | garcia | 2007-11-19 05:28:00 -0800 (Mon, 19 Nov 2007) | 2 lines
  
  A bunch of review volunteers.
........
  r41225 | garcia | 2007-11-19 06:01:34 -0800 (Mon, 19 Nov 2007) | 2 lines
  
  Added boost.range update
........
  r41226 | anthonyw | 2007-11-19 06:29:22 -0800 (Mon, 19 Nov 2007) | 1 line
  
  added copyright
........
  r41227 | aaron_windsor | 2007-11-19 07:28:26 -0800 (Mon, 19 Nov 2007) | 1 line
  
  Cleaning up #includes to avoid errors on gcc 4.1 and above.
........
  r41234 | igaztanaga | 2007-11-19 08:55:23 -0800 (Mon, 19 Nov 2007) | 1 line
  
  Fixed errors detected by gcc-4.3
........
  r41235 | hljin | 2007-11-19 09:26:12 -0800 (Mon, 19 Nov 2007) | 1 line
  
  GIL: updated the design guide based on the new changes
........
  r41236 | grafik | 2007-11-19 09:44:31 -0800 (Mon, 19 Nov 2007) | 1 line
  
  Make quietly actions really quiet by not printing the command output. The output for the quietly actions is still available through "__ACTION_RULE__".
........
  r41237 | grafik | 2007-11-19 10:02:43 -0800 (Mon, 19 Nov 2007) | 1 line
  
  Add architecture and instruction-set values for HP/PA-RISC.
........
  r41238 | igaztanaga | 2007-11-19 10:09:13 -0800 (Mon, 19 Nov 2007) | 1 line
  
  Corrected ifdef
........
  r41240 | igaztanaga | 2007-11-19 10:32:12 -0800 (Mon, 19 Nov 2007) | 1 line
  
  Fixed 64 bit std::size_t specialization error
........
  r41241 | hljin | 2007-11-19 10:34:59 -0800 (Mon, 19 Nov 2007) | 1 line
  
  GIL: broke the main test into small tests
........
  r41242 | bgubenko | 2007-11-19 11:25:21 -0800 (Mon, 19 Nov 2007) | 1 line
  
  add OSPLAT=PARISC for HP-UX PA-RISC
........


[SVN r41247]
2007-11-20 07:41:38 +00:00
Dave Abrahams e79c00d659 Branch for developing Bitten client/server testing
[SVN r41004]
2007-11-10 22:53:12 +00:00
Beman Dawes 7bcb4d9091 Branch for development of boost.system related changes
[SVN r40931]
2007-11-08 14:20:16 +00:00
Eric Niebler 49c4f0e060 Merged revisions 40815-40850 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r40816 | nasonov | 2007-11-05 14:22:48 -0800 (Mon, 05 Nov 2007) | 1 line
  
  #839 fixed: local variable shadow patch
........
  r40817 | danmarsden | 2007-11-05 14:24:53 -0800 (Mon, 05 Nov 2007) | 1 line
  
  fixed spelling mistake in documentation
........
  r40818 | noel_belcourt | 2007-11-05 14:39:49 -0800 (Mon, 05 Nov 2007) | 3 lines
  
  Commit patch submitted by John Maddock.
........
  r40819 | grafik | 2007-11-05 14:48:41 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Add missing action for --skip-tests option since it's a boolean flag.
........
  r40820 | grafik | 2007-11-05 14:49:09 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Oops, forgot a comma.
........
  r40822 | djowel | 2007-11-05 17:44:49 -0800 (Mon, 05 Nov 2007) | 1 line
  
  fix for real number parsers with custom types that do not have a std::numeric_limits specialization.
........
  r40824 | bemandawes | 2007-11-05 18:29:50 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Make message test conditional for Windows, Linux, HP-UX, OSF, and VMS (Boris Gubenko)
........
  r40825 | bemandawes | 2007-11-05 18:54:29 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Remove prematurely committed portion of prior change
........
  r40827 | djowel | 2007-11-06 02:09:38 -0800 (Tue, 06 Nov 2007) | 1 line
  
  doc updates to reflect structure changes
........
  r40828 | djowel | 2007-11-06 03:40:27 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Regenerating/reorganizing docs
........
  r40829 | schoepflin | 2007-11-06 03:52:01 -0800 (Tue, 06 Nov 2007) | 2 lines
  
  Again removed markup which has been wrongly reintroduced by @40735.
........
  r40830 | djowel | 2007-11-06 03:58:37 -0800 (Tue, 06 Nov 2007) | 1 line
  
  doc updates + some more header tweaks
........
  r40831 | djowel | 2007-11-06 04:05:12 -0800 (Tue, 06 Nov 2007) | 1 line
  
  doc updates + some more header tweaks
........
  r40832 | djowel | 2007-11-06 04:13:52 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Regenerating/reorganizing docs
........
  r40833 | djowel | 2007-11-06 04:17:26 -0800 (Tue, 06 Nov 2007) | 1 line
  
  todo update
........
  r40834 | bemandawes | 2007-11-06 05:24:38 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Add missing Boost.System entry
........
  r40835 | bemandawes | 2007-11-06 05:41:19 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Add missing copyright and license
........
  r40836 | aaron_windsor | 2007-11-06 05:55:05 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Renaming planar graph test files to under 32 characters each.
........
  r40837 | bemandawes | 2007-11-06 06:22:00 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Add license
........
  r40838 | joaquin | 2007-11-06 06:33:59 -0800 (Tue, 06 Nov 2007) | 1 line
  
  updated according to latest regression tests results
........
  r40840 | bemandawes | 2007-11-06 08:10:11 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Add repository URL and revision number, plus other minor tweaks and fixes.
........
  r40841 | igaztanaga | 2007-11-06 08:56:28 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Corrected _CRT_SECURE_NO_DEPRECATE detection 
........
  r40842 | igaztanaga | 2007-11-06 08:56:48 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Initialized native handle to avoid warnings in Visual2005
........
  r40843 | johnmaddock | 2007-11-06 08:58:46 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Disabled static assertions for compilers that don't support them.
........
  r40844 | johnmaddock | 2007-11-06 09:02:26 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Still trying to get the Solaris error rates correct.
........
  r40845 | johnmaddock | 2007-11-06 09:09:33 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Still trying to get those Solaris error rates correct.
........
  r40846 | anthonyw | 2007-11-06 09:15:50 -0800 (Tue, 06 Nov 2007) | 1 line
  
  use condition so we know when threads have unblocked, to avoid hard-coding a delay
........
  r40847 | johnmaddock | 2007-11-06 09:21:28 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Fix for Mac OS error rates.
........
  r40848 | johnmaddock | 2007-11-06 10:32:57 -0800 (Tue, 06 Nov 2007) | 1 line
  
  Updates for new toolset Sun-5.9.
........
  r40850 | hljin | 2007-11-06 11:15:03 -0800 (Tue, 06 Nov 2007) | 1 line
  
  GIL: removed an extra semi-colon and made some cosmetic changes
........


[SVN r40851]
2007-11-06 20:13:21 +00:00
Eric Niebler f7c2a160b0 Merged revisions 38539-40814 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r38547 | djowel | 2007-08-08 19:07:16 -0700 (Wed, 08 Aug 2007) | 1 line
  
  fix line endings
........
  r38548 | djowel | 2007-08-08 19:10:29 -0700 (Wed, 08 Aug 2007) | 1 line
  
  fixed error (wrong include file assign_key.hh)
........
  r38549 | djowel | 2007-08-09 00:23:00 -0700 (Thu, 09 Aug 2007) | 1 line
  
  added fusion to libraries list.
........
  r38551 | johnmaddock | 2007-08-09 02:26:56 -0700 (Thu, 09 Aug 2007) | 1 line
  
  Updated.
........
  r38553 | bemandawes | 2007-08-09 07:56:05 -0700 (Thu, 09 Aug 2007) | 1 line
  
  Get boost.png from web site
........
  r38555 | johnmaddock | 2007-08-09 10:13:18 -0700 (Thu, 09 Aug 2007) | 1 line
  
  Added another entry
........
  r38558 | speedsnail | 2007-08-09 18:22:59 -0700 (Thu, 09 Aug 2007) | 1 line
  
  made the feature "format" propagated
........
  r38559 | djowel | 2007-08-09 18:45:05 -0700 (Thu, 09 Aug 2007) | 1 line
  
  push/pop pragma warning
........
  r38560 | djowel | 2007-08-09 18:45:21 -0700 (Thu, 09 Aug 2007) | 1 line
  
  push/pop pragma warning
........
  r38561 | johnmaddock | 2007-08-10 03:10:05 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Added two more entries.
........
  r38562 | johnmaddock | 2007-08-10 03:11:03 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Tidied up msvc-warning suppression code.
........
  r38563 | (no author) | 2007-08-10 03:32:21 -0700 (Fri, 10 Aug 2007) | 4 lines
  
  Add overloads of hash_value for more built in types. They're not strictly
  needed and aren't in the original specifiction but they avoid a warning. See
  ticket #1095 for details.
........
  r38564 | (no author) | 2007-08-10 04:08:19 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Add some missing 'inline's.
........
  r38565 | (no author) | 2007-08-10 04:22:54 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Add -Wsign-promo to the hash test compile flags since I'm now trying to avoid the warning. I still need to check that it won't break older versions of gcc.
........
  r38567 | bemandawes | 2007-08-10 05:53:52 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Fix #995 by adding inline
........
  r38568 | hkaiser | 2007-08-10 08:03:46 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Wave: Added missing file to real_positions example, fixed corresponding Jamfile.
........
  r38576 | vladimir_prus | 2007-08-10 09:33:48 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Fix typo. Closes #1150.
........
  r38587 | grafik | 2007-08-10 17:32:25 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Add test to check 'bjam -n'.
........
  r38588 | grafik | 2007-08-10 17:42:32 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Minor adjustment to -n test, and add corresponding -d2 test.
........
  r38590 | grafik | 2007-08-10 19:39:13 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Bring back midding output of -n option. The -o option continues to be broken as it has been for a long time now because of the @ file feature. (fixes #1155)
........
  r38591 | grafik | 2007-08-10 19:46:49 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Make shell script executable.
........
  r38592 | grafik | 2007-08-10 19:58:04 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Adjust test to reflect real results of empty strings instead of empty values.
........
  r38593 | vladimir_prus | 2007-08-10 22:15:54 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Stop BoostBuild.py from crashing on certain test failures.
........
  r38594 | grafik | 2007-08-10 22:53:37 -0700 (Fri, 10 Aug 2007) | 1 line
  
  Update GC support to work with Boehm GC 7.0.
........
  r38605 | djowel | 2007-08-11 18:24:22 -0700 (Sat, 11 Aug 2007) | 1 line
  
  pragma push/pop added
........
  r38606 | agurtovoy | 2007-08-11 23:10:45 -0700 (Sat, 11 Aug 2007) | 1 line
  
  Move /libs/expected_results.xml to the /status/ directory
........
  r38614 | agurtovoy | 2007-08-12 21:36:40 -0700 (Sun, 12 Aug 2007) | 1 line
  
  CVS -> SVN
........
  r38615 | grafik | 2007-08-12 23:11:14 -0700 (Sun, 12 Aug 2007) | 1 line
  
  SVN update and bjam build commands working.
........
  r38616 | agurtovoy | 2007-08-13 01:14:34 -0700 (Mon, 13 Aug 2007) | 1 line
  
  Update http://www.boost.org/regression/ redirects
........
  r38618 | speedsnail | 2007-08-13 08:35:16 -0700 (Mon, 13 Aug 2007) | 2 lines
  
  Revert the last change, since the directory passed to boost-build should be first in searched paths, else project local build system will not be picked correctly.
  The order had been changed to allow searching of alternate user-config.jam files from boost build. This better should be done with --user-config= switch or similar. 
........
  r38619 | bemandawes | 2007-08-13 09:27:31 -0700 (Mon, 13 Aug 2007) | 1 line
  
  Final agreement. Effective date August 10, 2007. Signed by Beman G. Dawes on August 7, 2007, for Boost, and Bradley M. Kuhn on August 10, 2007, for the Software Freedom Conservancy. 
........
  r38620 | speedsnail | 2007-08-13 09:39:02 -0700 (Mon, 13 Aug 2007) | 1 line
  
  Added support for BOOST_USER_CONFIG environment variable. This variable is able to take the same rhs as --user-config= switch. The switch still overrides the variable when present. (This has been added to allow for the BOOST_BUILD_PATH to be restored to its original i.e. documented behaviour.)
........
  r38626 | johnmaddock | 2007-08-13 10:54:01 -0700 (Mon, 13 Aug 2007) | 1 line
  
  Added some missing match_flag_type options.
........
  r38638 | hkaiser | 2007-08-13 18:19:20 -0700 (Mon, 13 Aug 2007) | 1 line
  
  Wave: Fixed test Jamfile.v2
........
  r38647 | danieljames | 2007-08-14 02:53:55 -0700 (Tue, 14 Aug 2007) | 3 lines
  
  Test the hash library with warning level 4 on Visual C++ - although there's
  still one warning for hashing long doubles.
........
  r38662 | garcia | 2007-08-14 12:30:31 -0700 (Tue, 14 Aug 2007) | 2 lines
  
  scope exit review begins.
........
  r38669 | igaztanaga | 2007-08-14 17:18:10 -0700 (Tue, 14 Aug 2007) | 1 line
  
  Corrected incorrect iterator definition
........
  r38679 | danieljames | 2007-08-15 07:35:39 -0700 (Wed, 15 Aug 2007) | 1 line
  
  Avoid a comparison with zero warning on gcc when compiling with -Wextra.
........
  r38688 | grafik | 2007-08-15 10:25:46 -0700 (Wed, 15 Aug 2007) | 1 line
  
  Trow ValueError exception from remove functions to match the set.remove functionality.
........
  r38694 | grafik | 2007-08-15 11:35:11 -0700 (Wed, 15 Aug 2007) | 1 line
  
  Change remove() to glob_remove() in expect_modification, even though this check is not used.
........
  r38702 | grafik | 2007-08-15 13:15:36 -0700 (Wed, 15 Aug 2007) | 1 line
  
  Do some normalizing of paths to remove some of the variant feature subdirs that may be different based on platform and toolset. This fixes some tests that pass on GCC/Linux and not on MSVC/Windows.
........
  r38704 | hljin | 2007-08-15 15:19:48 -0700 (Wed, 15 Aug 2007) | 1 line
  
  GIL: added runtime endian-ness detection routines: little_endian() and big_endian()
........
  r38705 | hljin | 2007-08-15 15:21:06 -0700 (Wed, 15 Aug 2007) | 1 line
  
  GIL: fixed a endian-ness related bug in PNG IO routines
........
  r38710 | grafik | 2007-08-15 21:56:08 -0700 (Wed, 15 Aug 2007) | 1 line
  
  More changes to account for differing variant subdirs between toolsets, and of toolset expansion.
........
  r38711 | speedsnail | 2007-08-16 05:05:44 -0700 (Thu, 16 Aug 2007) | 1 line
  
  Changed BOOST_USER_CONFIG to BOOST_BUILD_USER_CONFIG as this is a more systematic name.
........
  r38717 | samuel_krempp | 2007-08-16 06:56:57 -0700 (Thu, 16 Aug 2007) | 3 lines
  
  updated - can't be a student forever !
........
  r38724 | grafik | 2007-08-16 09:51:10 -0700 (Thu, 16 Aug 2007) | 1 line
  
  Fix changed remote shell command argument names. Disable the svn poller as it taxes the server too much. Bjam build, bjam run, and test tools build working now.
........
  r38726 | samuel_krempp | 2007-08-16 10:00:13 -0700 (Thu, 16 Aug 2007) | 2 lines
  
  small fix (charset set to utf-8, + typo)
........
  r38727 | samuel_krempp | 2007-08-16 10:04:05 -0700 (Thu, 16 Aug 2007) | 2 lines
  
  previous commit was messed-up 
........
  r38729 | samuel_krempp | 2007-08-16 10:33:47 -0700 (Thu, 16 Aug 2007) | 3 lines
  
  bug fixed : prefix_ was not reset by make_or_reuse (all other buffers were).
  Solves ticket #570
........
  r38730 | samuel_krempp | 2007-08-16 11:48:03 -0700 (Thu, 16 Aug 2007) | 3 lines
  
  handle invalid format string (ends with %) without asserting, 
  closing ticket #493
........
  r38732 | grafik | 2007-08-16 14:30:21 -0700 (Thu, 16 Aug 2007) | 1 line
  
  Add testing step, which unfortunately doesn't work.
........
  r38740 | grafik | 2007-08-17 07:51:49 -0700 (Fri, 17 Aug 2007) | 1 line
  
  Minor fix to get btest step working.
........
  r38741 | dgregor | 2007-08-17 07:57:54 -0700 (Fri, 17 Aug 2007) | 1 line
  
  Revert inadvertent changes to csr_graph_test.cpp
........
  r38755 | grafik | 2007-08-18 10:11:07 -0700 (Sat, 18 Aug 2007) | 1 line
  
  Guard against empty result files.
........
  r38756 | grafik | 2007-08-18 23:05:26 -0700 (Sat, 18 Aug 2007) | 1 line
  
  Add support for posting to Dart server using the specified http proxy.
........
  r38777 | burbelgruff | 2007-08-19 23:51:54 -0700 (Sun, 19 Aug 2007) | 1 line
  
  #1188 Removed extra (unnecessary) semicolons in BOOST_TYPEOF_NESTED_TYPEDEF. 
........
  r38781 | chris_kohlhoff | 2007-08-20 06:48:38 -0700 (Mon, 20 Aug 2007) | 1 line
  
  Fix inspect errors.
........
  r38782 | chris_kohlhoff | 2007-08-20 06:50:30 -0700 (Mon, 20 Aug 2007) | 1 line
  
  Fix gcc warning about too few braces.
........
  r38783 | chris_kohlhoff | 2007-08-20 06:53:27 -0700 (Mon, 20 Aug 2007) | 3 lines
  
  Add a note to basic_socket<>::close() indicating that shutdown() should
  be used for portable graceful closure.
........
  r38784 | chris_kohlhoff | 2007-08-20 07:07:23 -0700 (Mon, 20 Aug 2007) | 4 lines
  
  Add a workaround for Windows Vista's handling of the boolean socket option
  tcp::no_delay, where ::getsockopt will return the size of the option as one
  byte, even though a four byte integer was passed in.
........
  r38785 | chris_kohlhoff | 2007-08-20 07:08:16 -0700 (Mon, 20 Aug 2007) | 2 lines
  
  Add missing static keyword to the service_id_matches functions.
........
  r38786 | chris_kohlhoff | 2007-08-20 07:11:46 -0700 (Mon, 20 Aug 2007) | 2 lines
  
  Fix order of initialisation problem with error categories.
........
  r38787 | chris_kohlhoff | 2007-08-20 07:12:31 -0700 (Mon, 20 Aug 2007) | 2 lines
  
  Fix unused argument warning.
........
  r38788 | chris_kohlhoff | 2007-08-20 07:17:15 -0700 (Mon, 20 Aug 2007) | 5 lines
  
  Increase number of buffers that may be sent or received in a single operation.
  
  Clean up win_iocp_socket_service's close-on-destruction handling to ensure
  non-blocking socket destructors.
........
  r38789 | chris_kohlhoff | 2007-08-20 07:19:49 -0700 (Mon, 20 Aug 2007) | 2 lines
  
  Use shutdown() for portable graceful connection closure.
........
  r38790 | chris_kohlhoff | 2007-08-20 07:21:47 -0700 (Mon, 20 Aug 2007) | 1 line
  
  Clean up gcc warnings.
........
  r38791 | chris_kohlhoff | 2007-08-20 07:32:05 -0700 (Mon, 20 Aug 2007) | 2 lines
  
  Fix unused argument warnings.
........
  r38792 | grafik | 2007-08-20 09:52:55 -0700 (Mon, 20 Aug 2007) | 1 line
  
  Merge changes from Version_1_34_1 back to trunk.
........
  r38800 | ramey | 2007-08-20 11:06:17 -0700 (Mon, 20 Aug 2007) | 2 lines
  
  Merged in additions from serialization_next_release branch to support validation of one's current boost installation on a either a library by library or global basis
........
  r38801 | burbelgruff | 2007-08-20 11:09:14 -0700 (Mon, 20 Aug 2007) | 1 line
  
  native typeof implementation for VC7.1 and VC8.0 now uses typeid() instead of sizeof() to map a type. This bypasses some bugs in Microsofts sizeof implementation, and removes a limitation on the number of typeof invocations that can be done in a single compilation unit
........
  r38803 | speedsnail | 2007-08-20 12:14:14 -0700 (Mon, 20 Aug 2007) | 1 line
  
  Merge from RC_1_34_0 (CVS 1.12.2.53) to trunk. CVS RC_1_34_0 - 1.12.2.23 and CVS HEAD - 1.51 are the last versions that were equal. Between these and trunk was only a small diff for HPUX that removed pthread lib. This fix seems to be already present in the merged in version. 
........
  r38804 | garcia | 2007-08-20 12:16:39 -0700 (Mon, 20 Aug 2007) | 2 lines
  
  Added "dimensionality" compile-time constant to the MultiArray concept.
........
  r38814 | johnmaddock | 2007-08-21 02:04:39 -0700 (Tue, 21 Aug 2007) | 1 line
  
  Added needed include: see http://article.gmane.org/gmane.comp.lib.boost.devel/163941.
........
  r38815 | garcia | 2007-08-21 05:27:05 -0700 (Tue, 21 Aug 2007) | 2 lines
  
  Time Series accepted.
........
  r38820 | garcia | 2007-08-21 06:54:25 -0700 (Tue, 21 Aug 2007) | 2 lines
  
  Added "dimensionality" compile-time constant to the MultiArray concept.
........
  r38821 | garcia | 2007-08-21 06:54:58 -0700 (Tue, 21 Aug 2007) | 2 lines
  
  Changed all uses of assert to BOOST_ASSERT.
........
  r38822 | vladimir_prus | 2007-08-21 06:55:41 -0700 (Tue, 21 Aug 2007) | 1 line
  
  Revive V1 Jamfiles at Christopher's request
........
  r38827 | dgregor | 2007-08-21 08:35:19 -0700 (Tue, 21 Aug 2007) | 3 lines
  
  Committed patch to eliminate warnings with GCC's -Wundef. Fixes #1197
........
  r38834 | igaztanaga | 2007-08-21 12:18:32 -0700 (Tue, 21 Aug 2007) | 1 line
  
  Erased temporarily until problems on Mac Os PowerPC are solved
........
  r38835 | vladimir_prus | 2007-08-22 05:14:05 -0700 (Wed, 22 Aug 2007) | 1 line
  
  Revive V1 Jamfile to please asio
........
  r38837 | vladimir_prus | 2007-08-22 05:40:34 -0700 (Wed, 22 Aug 2007) | 1 line
  
  Revive V1 Jamfile to please asio
........
  r38838 | johnmaddock | 2007-08-22 05:56:39 -0700 (Wed, 22 Aug 2007) | 1 line
  
  Fixed include guard.
........
  r38847 | vladimir_prus | 2007-08-22 08:02:20 -0700 (Wed, 22 Aug 2007) | 1 line
  
  Make 'library_status' target explicit
........
  r38853 | garcia | 2007-08-22 08:29:48 -0700 (Wed, 22 Aug 2007) | 2 lines
  
  Initial Revision.
........
  r38854 | garcia | 2007-08-22 08:30:47 -0700 (Wed, 22 Aug 2007) | 2 lines
  
  Added a new test case for replacing asserts with exceptions.
........
  r38856 | garcia | 2007-08-22 11:19:43 -0700 (Wed, 22 Aug 2007) | 2 lines
  
  Added mention of assert.cpp.
........
  r38857 | garcia | 2007-08-22 11:31:43 -0700 (Wed, 22 Aug 2007) | 2 lines
  
  was missing storage_order_convert.cpp
........
  r38864 | johnmaddock | 2007-08-23 02:06:24 -0700 (Thu, 23 Aug 2007) | 2 lines
  
  Fixes track issue #775, see http://svn.boost.org/trac/boost/ticket/775.
  All regex code should now compile warning free at level 4 with MSCV.
........
  r38868 | hljin | 2007-08-23 12:26:55 -0700 (Thu, 23 Aug 2007) | 1 line
  
  GIL: a further fix on the PNG IO 16-bit bug
........
  r38871 | vladimir_prus | 2007-08-23 12:51:47 -0700 (Thu, 23 Aug 2007) | 3 lines
  
  Apply patch to fix gcc warning.
  Fixes #1209.
........
  r38872 | vladimir_prus | 2007-08-23 12:57:23 -0700 (Thu, 23 Aug 2007) | 3 lines
  
  Support the address-model feature for the sun
  toolset. Addresses #1186.
........
  r38873 | danieljames | 2007-08-23 17:42:19 -0700 (Thu, 23 Aug 2007) | 6 lines
  
  Copy hash library from 1.34.1 over trunk.
  
  For the first merge with the release branch, I only want to include some of the
  changes I've been working on (fixes and some trivial changes), so I'm starting
  again from 1.34.1.
........
  r38876 | danieljames | 2007-08-23 18:05:36 -0700 (Thu, 23 Aug 2007) | 1 line
  
  Update the copyright in the hash library.
........
  r38877 | danieljames | 2007-08-23 18:11:33 -0700 (Thu, 23 Aug 2007) | 5 lines
  
  Remove the errno check when hashing floating point numbers. It's not really
  needed and was causing problems on the Microsoft Windows Smarthone Edition
  platform. Fixes #1064.
........
  r38878 | danieljames | 2007-08-23 18:16:54 -0700 (Thu, 23 Aug 2007) | 2 lines
  
  Merge some documentation improvements from the development branch.
........
  r38881 | danieljames | 2007-08-23 18:44:15 -0700 (Thu, 23 Aug 2007) | 1 line
  
  Add extra overloads for hash_value to cover all the specializations of boost::hash. Fixes 1095
........
  r38882 | danieljames | 2007-08-23 18:56:47 -0700 (Thu, 23 Aug 2007) | 1 line
  
  Add some missing hash_value documentation for the new overloads.
........
  r38883 | danieljames | 2007-08-23 19:01:47 -0700 (Thu, 23 Aug 2007) | 6 lines
  
  Change a comparison in the float hashing code, which can cause a warning on
  gcc. Although the warning doesn't currently turn up in this branch, it could
  be caused quite easily. Originally reported in:
  
  http://lists.boost.org/Archives/boost/2007/08/126084.php
........
  r38884 | danieljames | 2007-08-23 19:33:43 -0700 (Thu, 23 Aug 2007) | 2 lines
  
  Remove hash_complex_test - it should have been removed when I reverted to 1.34.1
........
  r38911 | igaztanaga | 2007-08-24 14:24:23 -0700 (Fri, 24 Aug 2007) | 1 line
  
  Erased old archives imported from CVS
........
  r38913 | grafik | 2007-08-24 16:03:10 -0700 (Fri, 24 Aug 2007) | 1 line
  
  Disable interprocess tests until parallel execution problem is fixed. (see ticket #1211)
........
  r38914 | grafik | 2007-08-24 16:27:14 -0700 (Fri, 24 Aug 2007) | 1 line
  
  Reverting changes from revision [http://svn.boost.org/trac/boost/changeset/38800 38800] as it break XSLT regression reports.
........
  r38918 | grafik | 2007-08-24 21:08:28 -0700 (Fri, 24 Aug 2007) | 1 line
  
  On Windows static libs have the lib prefix, but DLLs don't.
........
  r38919 | vladimir_prus | 2007-08-24 21:34:31 -0700 (Fri, 24 Aug 2007) | 1 line
  
  Use -KPIC for shared libs. Addresses #1186.
........
  r38920 | vladimir_prus | 2007-08-24 21:36:02 -0700 (Fri, 24 Aug 2007) | 1 line
  
  Revert mistaken commit
........
  r38923 | ramey | 2007-08-25 00:37:21 -0700 (Sat, 25 Aug 2007) | 1 line
  
  corrections for gcc compiler
........
  r38924 | johnmaddock | 2007-08-25 01:53:29 -0700 (Sat, 25 Aug 2007) | 1 line
  
  Fix for http://svn.boost.org/trac/boost/ticket/1075.
........
  r38934 | johnmaddock | 2007-08-25 05:26:25 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  Fixes for http://svn.boost.org/trac/boost/ticket/1104, http://svn.boost.org/trac/boost/ticket/1102, http://svn.boost.org/trac/boost/ticket/1103 and http://svn.boost.org/trac/boost/ticket/1105.
  Also updated tests for some previous macro additions.
........
  r38946 | igaztanaga | 2007-08-25 11:04:13 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38948 | igaztanaga | 2007-08-25 11:14:34 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38949 | igaztanaga | 2007-08-25 12:05:18 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38950 | igaztanaga | 2007-08-25 12:07:32 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38951 | igaztanaga | 2007-08-25 12:10:12 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38952 | igaztanaga | 2007-08-25 12:13:02 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38953 | igaztanaga | 2007-08-25 12:17:24 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38954 | igaztanaga | 2007-08-25 12:18:28 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38955 | igaztanaga | 2007-08-25 12:19:34 -0700 (Sat, 25 Aug 2007) | 2 lines
  
  #1211: Interprocess tests hang when run in parallel
  #1080 boost::interprocess win32 global file mapping issue 
........
  r38956 | aaron_windsor | 2007-08-25 14:11:06 -0700 (Sat, 25 Aug 2007) | 1 line
  
  merging planar graph algorithms into the BGL
........
  r38960 | igaztanaga | 2007-08-26 02:59:28 -0700 (Sun, 26 Aug 2007) | 1 line
  
  This file is a badly imported CVS file
........
  r38963 | vladimir_prus | 2007-08-26 08:53:45 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Make executable
........
  r38964 | grafik | 2007-08-26 09:14:44 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Read expected files with universal EOL translation enabled to account for comparing with newline only Python strings.
........
  r38965 | grafik | 2007-08-26 09:16:38 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Use some wildcard matching on the expected output as 'echo' on Windows outputs extra space before EOLs, which Unix doesn't.
........
  r38968 | vladimir_prus | 2007-08-26 10:15:51 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Use SVN for nightly builds
........
  r38969 | vladimir_prus | 2007-08-26 10:23:03 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Include svn revision in nightly build
........
  r38971 | vladimir_prus | 2007-08-26 11:32:21 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Fix quoting. Remove .svn directories
........
  r38973 | grafik | 2007-08-26 12:24:13 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Make rm try the glob_file in addition to regular glob. Clears alternatives and project_glob failures on windows.
........
  r38975 | pdimov | 2007-08-26 12:42:50 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Updated the unspecified_bool_type to match shared_ptr.
........
  r38976 | pdimov | 2007-08-26 13:34:40 -0700 (Sun, 26 Aug 2007) | 1 line
  
  BOOST_NO_TYPEID support (#1108).
........
  r38977 | pdimov | 2007-08-26 13:35:52 -0700 (Sun, 26 Aug 2007) | 1 line
  
  BOOST_NO_TYPEID support (#1108).
........
  r38981 | vladimir_prus | 2007-08-26 23:18:11 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Run svnversion before removing .svn
........
  r38984 | vladimir_prus | 2007-08-26 23:30:56 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Run svnversion before modifying anything
........
  r38985 | grafik | 2007-08-26 23:34:52 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Repoint tarball source to direct tarball generator.
........
  r38986 | vladimir_prus | 2007-08-26 23:41:18 -0700 (Sun, 26 Aug 2007) | 1 line
  
  Another svnversion fix
........
  r38987 | vladimir_prus | 2007-08-27 00:00:18 -0700 (Mon, 27 Aug 2007) | 1 line
  
  Another fix
........
  r38999 | garcia | 2007-08-27 04:51:04 -0700 (Mon, 27 Aug 2007) | 1 line
  
  *** empty log message ***
........
  r39007 | grafik | 2007-08-27 09:02:50 -0700 (Mon, 27 Aug 2007) | 1 line
  
  Bring back the interprocess tests, as they seem fixed now for parallel execution.
........
  r39009 | danieljames | 2007-08-27 10:59:54 -0700 (Mon, 27 Aug 2007) | 2 lines
  
  Comment out -Wextra because it doesn't work on older versions of gcc.
........
  r39014 | danieljames | 2007-08-27 11:16:54 -0700 (Mon, 27 Aug 2007) | 1 line
  
  Add proper support for long longs and unsigned long longs.
........
  r39020 | grafik | 2007-08-27 14:05:35 -0700 (Mon, 27 Aug 2007) | 1 line
  
  Tarball generation script.
........
  r39022 | grafik | 2007-08-27 14:19:41 -0700 (Mon, 27 Aug 2007) | 1 line
  
  Add copyright+BSL.
........
  r39052 | dgregor | 2007-08-29 09:00:53 -0700 (Wed, 29 Aug 2007) | 3 lines
  
  Constify status::count and status::cancelled. Fixes #1101
........
  r39060 | dgregor | 2007-08-29 11:59:16 -0700 (Wed, 29 Aug 2007) | 1 line
  
  Disable MSVC warning about native code generation. Fixes #1163
........
  r39061 | dgregor | 2007-08-29 12:06:11 -0700 (Wed, 29 Aug 2007) | 1 line
  
  Handle GCC's -fno-exceptions properly. Fixes #1198
........
  r39062 | dlwalker | 2007-08-29 12:54:14 -0700 (Wed, 29 Aug 2007) | 1 line
  
  Fixed comments listed in #766 that didn't match their described code
........
  r39073 | eric_niebler | 2007-08-30 08:21:00 -0700 (Thu, 30 Aug 2007) | 1 line
  
  example/main.cpp compiles clean with gcc -Wall
........
  r39075 | eric_niebler | 2007-08-30 08:40:34 -0700 (Thu, 30 Aug 2007) | 1 line
  
  dynamically optimizing TST, from Dave Jenkins
........
  r39089 | dgregor | 2007-08-31 10:23:51 -0700 (Fri, 31 Aug 2007) | 1 line
  
  Add empty directory
........
  r39090 | dgregor | 2007-08-31 10:24:36 -0700 (Fri, 31 Aug 2007) | 1 line
  
  Create an empty directory
........
  r39091 | igaztanaga | 2007-08-31 15:57:11 -0700 (Fri, 31 Aug 2007) | 1 line
  
  Added missing comma
........
  r39092 | chris_kohlhoff | 2007-08-31 23:08:45 -0700 (Fri, 31 Aug 2007) | 2 lines
  
  Need to try binding the acceptor to test whether IPv6 is supported.
........
  r39093 | chris_kohlhoff | 2007-08-31 23:13:02 -0700 (Fri, 31 Aug 2007) | 2 lines
  
  Ignore errors from shutdown().
........
  r39094 | chris_kohlhoff | 2007-08-31 23:20:19 -0700 (Fri, 31 Aug 2007) | 2 lines
  
  Enable buffer() overload workaround for Sun C++.
........
  r39095 | chris_kohlhoff | 2007-08-31 23:25:55 -0700 (Fri, 31 Aug 2007) | 3 lines
  
  Add AIX-specific compile time test for whether sockaddr_storage's family
  field is called ss_family or __ss_family.
........
  r39096 | chris_kohlhoff | 2007-08-31 23:28:40 -0700 (Fri, 31 Aug 2007) | 3 lines
  
  Ensure that a strand is kept alive as long as there are wrapped handlers
  for it.
........
  r39097 | chris_kohlhoff | 2007-08-31 23:33:44 -0700 (Fri, 31 Aug 2007) | 2 lines
  
  Add #include needed for IOV_MAX.
........
  r39098 | chris_kohlhoff | 2007-08-31 23:41:15 -0700 (Fri, 31 Aug 2007) | 7 lines
  
  Fix problem where a thread can go idle even if there are handlers that are
  ready to be dispatched.
  
  Remove need to have a mutex per idle thread.
  
  Remove need to have a mutex per idle thread.
........
  r39100 | chris_kohlhoff | 2007-09-01 00:32:28 -0700 (Sat, 01 Sep 2007) | 3 lines
  
  Define _WIN32_WINNT to suppress warnings. Add define necessary
  for building with cygwin.
........
  r39102 | vladimir_prus | 2007-09-01 01:55:35 -0700 (Sat, 01 Sep 2007) | 1 line
  
  Initial support for defining action body from Python.
........
  r39103 | vladimir_prus | 2007-09-01 13:28:42 -0700 (Sat, 01 Sep 2007) | 4 lines
  
  Fix glob excludes in subdirectories.
  
  Thanks to Norbert Unterberg for the bug report.
........
  r39104 | vladimir_prus | 2007-09-01 14:46:09 -0700 (Sat, 01 Sep 2007) | 5 lines
  
  Make free features on the command line affect all targets,
  not just directly requested ones.
  
  Fixes #985.
........
  r39105 | vladimir_prus | 2007-09-01 15:10:46 -0700 (Sat, 01 Sep 2007) | 4 lines
  
  Previously, I've accidentally committed a patch
  to make <tag> affect names of searched libraries.
  This commit greatly simplifies that.
........
  r39106 | speedsnail | 2007-09-02 08:57:36 -0700 (Sun, 02 Sep 2007) | 2 lines
  
  Merged in volodyas patch from RC_1_34_0
  http://lists.boost.org/boost-users/2007/05/27724.php
........
  r39107 | speedsnail | 2007-09-02 11:37:14 -0700 (Sun, 02 Sep 2007) | 1 line
  
  Changed library naming convention for mingw and cygwin. For details see comment in file. Also should resolve Ticket #1058 .
........
  r39112 | aaron_windsor | 2007-09-03 08:04:05 -0700 (Mon, 03 Sep 2007) | 1 line
  
  Modified odd_components_counter to fix signed/unsigned mismatch on Sandi pgi-6.1 tests.
........
  r39113 | speedsnail | 2007-09-03 12:38:40 -0700 (Mon, 03 Sep 2007) | 1 line
  
  Make use of gnu ld's -Bstatic and -Bdynamic switches to choose order of libraries searched by -l switch.
........
  r39120 | vladimir_prus | 2007-09-04 13:26:19 -0700 (Tue, 04 Sep 2007) | 2 lines
  
  Allow to print the tree delta to any file.
........
  r39121 | vladimir_prus | 2007-09-04 13:29:56 -0700 (Tue, 04 Sep 2007) | 1 line
  
  Unbreak the gcc_runtime test
........
  r39126 | eric_niebler | 2007-09-04 23:31:27 -0700 (Tue, 04 Sep 2007) | 1 line
  
  remove unused variables
........
  r39128 | vladimir_prus | 2007-09-05 01:03:17 -0700 (Wed, 05 Sep 2007) | 1 line
  
  Remove unnecessary line
........
  r39130 | bgubenko | 2007-09-05 10:14:29 -0700 (Wed, 05 Sep 2007) | 1 line
  
  missing conditionalization for g++ on HP-UX
........
  r39131 | burbelgruff | 2007-09-05 12:52:18 -0700 (Wed, 05 Sep 2007) | 1 line
  
  boost.typeof now supports native typeof for VC8.0
........
  r39132 | bgubenko | 2007-09-05 16:43:40 -0700 (Wed, 05 Sep 2007) | 1 line
  
  Boost.Build V2 toolset for the HP aC++ compiler on PA-RISC
........
  r39134 | burbelgruff | 2007-09-06 00:22:10 -0700 (Thu, 06 Sep 2007) | 1 line
  
  typeof: Implemented native typeof for DMC 8.50 based on the same bugfeature used to support VC6.5 and VC7.1
........
  r39150 | johnmaddock | 2007-09-06 10:10:05 -0700 (Thu, 06 Sep 2007) | 1 line
  
  Updated gcc config using STLport's settings so that TR1 functions correctly when Boost is installed in for example /usr/include/
........
  r39151 | bgubenko | 2007-09-06 12:01:07 -0700 (Thu, 06 Sep 2007) | 1 line
  
  marking up tests for acc_pa_risc toolset
........
  r39156 | bgubenko | 2007-09-07 10:02:12 -0700 (Fri, 07 Sep 2007) | 1 line
  
  markup test is_lvalue_iterator for acc_pa_risc toolset
........
  r39157 | nielsdekker | 2007-09-07 10:17:09 -0700 (Fri, 07 Sep 2007) | 1 line
  
  Added MSVC workaround to value_initialized, as described by ticket #1217, proposed at the Boost Developers mailing list, and discussed with Fernando Cacciola.
........
  r39158 | bgubenko | 2007-09-07 11:40:47 -0700 (Fri, 07 Sep 2007) | 1 line
  
  conditionalization for PA-RISC
........
  r39160 | vladimir_prus | 2007-09-07 14:34:27 -0700 (Fri, 07 Sep 2007) | 1 line
  
  Adjust faq entry about targets in site-config.jam
........
  r39161 | vladimir_prus | 2007-09-07 16:18:20 -0700 (Fri, 07 Sep 2007) | 4 lines
  
  Make output from test run nicer, and more structured.
  In future, we might be able to generate XML, or any other voodoo
  we want.
........
  r39162 | vladimir_prus | 2007-09-07 16:51:07 -0700 (Fri, 07 Sep 2007) | 1 line
  
  Undo #38702, which fixes alternative.py on linux. Real fix for win coming soon.
........
  r39163 | vladimir_prus | 2007-09-07 16:59:10 -0700 (Fri, 07 Sep 2007) | 1 line
  
  Make it work
........
  r39164 | vladimir_prus | 2007-09-07 16:59:54 -0700 (Fri, 07 Sep 2007) | 3 lines
  
  Implement --ignore-toolset-requirements and set in
  during testing.
........
  r39165 | vladimir_prus | 2007-09-07 17:15:23 -0700 (Fri, 07 Sep 2007) | 3 lines
  
  Fix remove_requirements test.  I have no idea how
  it could have passed as-is.
........
  r39166 | vladimir_prus | 2007-09-07 17:26:18 -0700 (Fri, 07 Sep 2007) | 1 line
  
  Print test results summary at the end
........
  r39168 | vladimir_prus | 2007-09-08 09:24:50 -0700 (Sat, 08 Sep 2007) | 4 lines
  
  	Fix the rebuilds test on linux.
  	* BoostBuild.py (wait_for_time_change): Use floor,
  	to avoid waiting 0.5 seconds.
  	* rebuilds.py: Wait for time change as necessary.
........
  r39169 | vladimir_prus | 2007-09-08 10:10:26 -0700 (Sat, 08 Sep 2007) | 1 line
  
  Record failure reason when we fail to open a file.
........
  r39173 | bemandawes | 2007-09-09 07:59:10 -0700 (Sun, 09 Sep 2007) | 1 line
  
  Merge system and filesystem branches, bringing them in sync with N2415. Several filesystem bugs fixed, and current_path setter added.
........
  r39174 | bemandawes | 2007-09-09 10:48:17 -0700 (Sun, 09 Sep 2007) | 1 line
  
  Posix and Linux fixes
........
  r39175 | johnmaddock | 2007-09-10 02:19:49 -0700 (Mon, 10 Sep 2007) | 8 lines
  
  Big type_traits update:
  
  Added make_signed, make_unsigned and is_complex.
  Added docs for some previously undocumented traits: is_signed, is_unsigned and decay.html
  Added synonyms for some traits that have changed name in the latest C++ std draft.
  Re-organised docs, moved docs out of the main doc build for now (it takes too long).
  
  This also fixes issues: http://svn.boost.org/trac/boost/ticket/492 and http://svn.boost.org/trac/boost/ticket/1008.
........
  r39176 | johnmaddock | 2007-09-10 03:35:51 -0700 (Mon, 10 Sep 2007) | 1 line
  
  Applied fix for http://svn.boost.org/trac/boost/ticket/883.
........
  r39177 | johnmaddock | 2007-09-10 03:37:19 -0700 (Mon, 10 Sep 2007) | 1 line
  
  Added optional code to test SGI rope with Regex.
........
  r39178 | johnmaddock | 2007-09-10 04:24:53 -0700 (Mon, 10 Sep 2007) | 1 line
  
  Try and force a date update.
........
  r39179 | johnmaddock | 2007-09-10 04:27:31 -0700 (Mon, 10 Sep 2007) | 1 line
  
  OK finally got date modified set right.
........
  r39181 | johnmaddock | 2007-09-10 09:22:35 -0700 (Mon, 10 Sep 2007) | 1 line
  
  Oops, doc update broke the tests, fixed now.
........
  r39183 | johnmaddock | 2007-09-10 10:18:16 -0700 (Mon, 10 Sep 2007) | 1 line
  
  Added new macros def's that are needed by the various additions that have been added to Boost.Config.
........
  r39186 | bemandawes | 2007-09-10 18:11:03 -0700 (Mon, 10 Sep 2007) | 1 line
  
  Chris Kohlhoff says change needed for asio to link correctly
........
  r39187 | bemandawes | 2007-09-10 19:05:58 -0700 (Mon, 10 Sep 2007) | 1 line
  
  Ha! Finally figured out how to shut off msvc exception switch warning.
........
  r39188 | bemandawes | 2007-09-10 19:07:50 -0700 (Mon, 10 Sep 2007) | 1 line
  
  Ha! Finally figured out how to shut off msvc exception switch warning. Also fix define misspelling.
........
  r39189 | chris_kohlhoff | 2007-09-11 04:17:56 -0700 (Tue, 11 Sep 2007) | 2 lines
  
  Use enum-based error code constants.
........
  r39190 | bgubenko | 2007-09-11 09:24:28 -0700 (Tue, 11 Sep 2007) | 1 line
  
  add conditionalization for g++ on HP-UX
........
  r39191 | rwgk | 2007-09-11 09:53:50 -0700 (Tue, 11 Sep 2007) | 1 line
  
  Patches by Nikolay Mladenov (nickm at sitius com): new pythonic signatures; docstring support for enums; fix unrelated Visual C++ 6 problem
........
  r39193 | bgubenko | 2007-09-11 11:54:50 -0700 (Tue, 11 Sep 2007) | 1 line
  
  base detection of EDG-based compiler on __EDG__ macro
........
  r39194 | vladimir_prus | 2007-09-11 12:16:06 -0700 (Tue, 11 Sep 2007) | 3 lines
  
  Don't try to apply --build-dir to standalone projects.
  Fixes build_dir test failure on linux.
........
  r39195 | vladimir_prus | 2007-09-11 12:17:49 -0700 (Tue, 11 Sep 2007) | 4 lines
  
          * BoostBuild.py (wait_for_time_change): Wait
          for more serious time change, in order to
          fix sporadic dependency_test failures.
........
  r39196 | bgubenko | 2007-09-11 12:31:55 -0700 (Tue, 11 Sep 2007) | 1 line
  
  define macros specific to RW V2.2 on HP-UX
........
  r39197 | vladimir_prus | 2007-09-11 12:36:48 -0700 (Tue, 11 Sep 2007) | 1 line
  
  Don't run gcc_runtime test on msvc
........
  r39198 | bgubenko | 2007-09-11 12:54:59 -0700 (Tue, 11 Sep 2007) | 1 line
  
  make sure HP-UX-specific macros are not redefined
........
  r39199 | pdimov | 2007-09-11 13:58:19 -0700 (Tue, 11 Sep 2007) | 1 line
  
  Fixes #1243
........
  r39204 | grafik | 2007-09-11 21:21:57 -0700 (Tue, 11 Sep 2007) | 1 line
  
  Add regression result pages automation script.
........
  r39211 | chris_kohlhoff | 2007-09-12 05:24:21 -0700 (Wed, 12 Sep 2007) | 2 lines
  
  AIX seems to have the socket address family as an unsigned char rather than unsigned short.
........
  r39219 | johnmaddock | 2007-09-12 09:44:16 -0700 (Wed, 12 Sep 2007) | 1 line
  
  Fixed is_base_of/is_base_and_derived so that you get a compiler error if you try and use them with an incomplete class type.
........
  r39220 | bemandawes | 2007-09-12 11:31:25 -0700 (Wed, 12 Sep 2007) | 1 line
  
  POSIX fix from Neal Becker
........
  r39223 | nikiml | 2007-09-12 14:31:39 -0700 (Wed, 12 Sep 2007) | 1 line
  
  fixed problem reported by Neal Becker; added a test case
........
  r39226 | bemandawes | 2007-09-12 14:43:20 -0700 (Wed, 12 Sep 2007) | 1 line
  
  Some compilers warn on trailing enum constant list commas, so remove these to quiet the warnings.
........
  r39227 | guwi17 | 2007-09-12 14:44:37 -0700 (Wed, 12 Sep 2007) | 2 lines
  
  lu.hpp: introduced temporary to avoid strange compiler problem.
........
  r39230 | bemandawes | 2007-09-12 20:17:17 -0700 (Wed, 12 Sep 2007) | 1 line
  
  Add Boost.System test suite
........
  r39231 | johnmaddock | 2007-09-13 02:04:12 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Fix for broken limits_test build.
........
  r39233 | guwi17 | 2007-09-13 05:13:20 -0700 (Thu, 13 Sep 2007) | 3 lines
  
  overview.htm: fixed typo 
........
  r39237 | bgubenko | 2007-09-13 09:11:38 -0700 (Thu, 13 Sep 2007) | 1 line
  
  reapply fix for gcc on HP-UX in -r39130
........
  r39238 | garcia | 2007-09-13 09:17:05 -0700 (Thu, 13 Sep 2007) | 2 lines
  
  added fast-track reviews.
........
  r39240 | dgregor | 2007-09-13 10:38:58 -0700 (Thu, 13 Sep 2007) | 7 lines
  
  function/function_base.hpp, function/function_template.hpp:
    - Switch from dynamic initialization of the vtable pointer to static
      initialization (Fixes #1260)
    - Handle member pointers properly, only using mem_fn within the invoker
      to deal with all of the messy bits of calling member pointers
........
  r39242 | dgregor | 2007-09-13 11:43:00 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Update the nag script to use Subversion
........
  r39243 | dgregor | 2007-09-13 11:50:50 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Work around bugs in Sun Studio 11
........
  r39244 | dgregor | 2007-09-13 12:06:53 -0700 (Thu, 13 Sep 2007) | 4 lines
  
  function_template.hpp:
    - Pass-by-reference internally, when we can. Fixes #1067
........
  r39245 | dgregor | 2007-09-13 12:31:03 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Don't use BOOST_TEST_DONT_PRINT_LOG_VALUE if it isn't defined
........
  r39246 | dgregor | 2007-09-13 12:41:27 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Teach cycle_ratio_tests to find its input files during regression testing
........
  r39247 | dgregor | 2007-09-13 12:58:30 -0700 (Thu, 13 Sep 2007) | 1 line
  
  We can no longer use is_base_and_derived with incomplete types, not that it worked well before
........
  r39248 | bemandawes | 2007-09-13 14:47:25 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Ensure error_category::operator< test works regardless of how compiler lays out memory.
........
  r39249 | hkaiser | 2007-09-13 14:49:01 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Wave: fixed test build/Jamfile.v2 to include threading library
........
  r39251 | hkaiser | 2007-09-13 14:54:32 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Wave: Fixed a bug in the Slex token class, which was the reason for some failing tests lately
........
  r39254 | bemandawes | 2007-09-13 18:58:20 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Add usage-requirements. See comment in file.
........
  r39255 | bemandawes | 2007-09-13 19:00:25 -0700 (Thu, 13 Sep 2007) | 1 line
  
  Remove <runtime-link>static to see if that is what is causing link problems on a few gcc platforms
........
  r39256 | bgubenko | 2007-09-13 19:25:06 -0700 (Thu, 13 Sep 2007) | 1 line
  
  on HP-UX, macro BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS should be defined only if macro _REENTRANT is defined
........
  r39258 | johnmaddock | 2007-09-14 01:54:31 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Apply sunpro fix from 1.34.1
........
  r39259 | johnmaddock | 2007-09-14 02:20:37 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Touched header to force rebuild of config tests.
........
  r39260 | johnmaddock | 2007-09-14 02:25:29 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Touched files to force tests to be re-run with new Jamfile.
........
  r39261 | bemandawes | 2007-09-14 03:37:11 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Supply errno values missing from Windows Mobile
........
  r39266 | garcia | 2007-09-14 08:04:41 -0700 (Fri, 14 Sep 2007) | 2 lines
  
  Updated the comments on the libraries that were newly released in 1.34.
........
  r39267 | vladimir_prus | 2007-09-14 08:28:13 -0700 (Fri, 14 Sep 2007) | 3 lines
  
          * gcc.jam (init-link-flags): Add missing
          'unchecked'. This was breaking intel.
........
  r39268 | vladimir_prus | 2007-09-14 08:30:42 -0700 (Fri, 14 Sep 2007) | 4 lines
  
  Remove acc_pa_risc.jam. Given that it's a copy
  of acc.jam with only toolset name changed, I see
  no point in having this file.
........
  r39269 | bemandawes | 2007-09-14 08:43:22 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Initial commit
........
  r39270 | bemandawes | 2007-09-14 08:45:36 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Replace docs with up-to-date contents, design
........
  r39273 | grafik | 2007-09-14 09:29:37 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Point dev reports to beta.boost.org site.
........
  r39274 | cepstein | 2007-09-14 10:18:02 -0700 (Fri, 14 Sep 2007) | 2 lines
  
  Quiet unused argument warnings from gcc.
........
  r39282 | pdimov | 2007-09-14 12:19:09 -0700 (Fri, 14 Sep 2007) | 1 line
  
  CINT support (Nils Krumnack)
........
  r39283 | garcia | 2007-09-14 13:56:59 -0700 (Fri, 14 Sep 2007) | 2 lines
  
  Initial Revision.
........
  r39284 | garcia | 2007-09-14 13:59:44 -0700 (Fri, 14 Sep 2007) | 2 lines
  
  Review Wizard Status Report for October 2007.
........
  r39285 | dgregor | 2007-09-14 14:05:46 -0700 (Fri, 14 Sep 2007) | 5 lines
  
  Finalizes the fix to Bug #1260, making vtable_base an actual POD type (oops)
  and playing more nicely with reinterpret_cast (thanks to Brad King for the
  fixes).
........
  r39286 | dgregor | 2007-09-14 14:17:06 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Fix the cycle ratio tests for real
........
  r39291 | djowel | 2007-09-14 17:19:44 -0700 (Fri, 14 Sep 2007) | 2 lines
  
  Fix Ticket Ticket #1235
  (http://svn.boost.org/trac/boost/ticket/1235)
........
  r39292 | bemandawes | 2007-09-14 18:36:14 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Missing std added to ::remove to clear problem in Sun tests
........
  r39295 | grafik | 2007-09-14 21:33:32 -0700 (Fri, 14 Sep 2007) | 1 line
  
  Call the correct subjam file.
........
  r39302 | rwgk | 2007-09-15 16:11:50 -0700 (Sat, 15 Sep 2007) | 1 line
  
  work around Visual C++ 7.1 internal compiler error
........
  r39307 | johnmaddock | 2007-09-16 01:50:09 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Fix msvc warnings.
........
  r39308 | niels_dekker | 2007-09-16 02:33:34 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Visual C++ 7.1 ICE workaround by Ralf W. Grosse-Kunstleve added to ~const_T_base() as well.  See also Boost Developers mailing list, subject "utility/value_init.hpp: VC 7.1 ICE & workaround" 
........
  r39309 | niels_dekker | 2007-09-16 02:48:28 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Added unit test to make sure that Visual C++ 7.1 ICE reported by Ralf W. Grosse-Kunstleve (Boost Developers mailing list, subject "utility/value_init.hpp: VC 7.1 ICE & workaround") will not occur anymore.
........
  r39315 | johnmaddock | 2007-09-16 04:20:25 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Added needed include (for CHAR_BIT).
........
  r39330 | grafik | 2007-09-16 14:35:19 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Implement @() expansion during parse phase. (fixes #721)
........
  r39331 | grafik | 2007-09-16 14:55:02 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Define OSPLAT var unconditionally, and more generically, when possible. (fixes #798)
........
  r39332 | grafik | 2007-09-16 15:13:02 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Fix undeclared INT_MAX on some platforms, i.e. Linux.
........
  r39334 | noel_belcourt | 2007-09-16 17:27:37 -0700 (Sun, 16 Sep 2007) | 14 lines
  
  Added missing #include <utility> and qualified
  make_pair with std:: to library_status.cpp.
  
  Added missing headers to make1.c and missing prototypes
  to builtin.h
  
  Modified execunix.c to add support for terminating
  processes that consume too much cpu or that hang and
  fail to consume cpu at all.  This in support of the
  bjam -lx option.
  
  http://svn.boost.org/trac/boost/ticket/1266#comment:2
........
  r39335 | grafik | 2007-09-16 17:44:16 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Add test for ticket #431.
........
  r39336 | grafik | 2007-09-16 17:54:20 -0700 (Sun, 16 Sep 2007) | 1 line
  
  Really fix missing INT_MAX declaration. And fix pma.jam test on Unix.
........
  r39337 | lbourdev | 2007-09-16 23:36:22 -0700 (Sun, 16 Sep 2007) | 3 lines
  
  GIL: Updating mandelbrot example with the new GIL.
........
  r39338 | lbourdev | 2007-09-17 00:53:06 -0700 (Mon, 17 Sep 2007) | 1 line
  
  fixing affine
........
  r39339 | lbourdev | 2007-09-17 01:12:19 -0700 (Mon, 17 Sep 2007) | 1 line
  
  GIL 2.0 to 2.1 (see http://opensource.adobe.com/gil/gil2.1_changes.pdf). GIL 2.1 to 2.1.1 (see http://sourceforge.net/forum/forum.php?thread_id=1824588&forum_id=648138)
........
  r39341 | grafik | 2007-09-17 01:32:24 -0700 (Mon, 17 Sep 2007) | 1 line
  
  Add internal dependencies for multi-file generating actions to indicate that the targets all only appear when the first target appears. (fixes ticket #431)
........
  r39342 | schoepflin | 2007-09-17 02:04:37 -0700 (Mon, 17 Sep 2007) | 1 line
  
  Corrections for Tru64/CXX.
........
  r39350 | grafik | 2007-09-17 09:16:29 -0700 (Mon, 17 Sep 2007) | 1 line
  
  Add redirect for trunk so that we can point the issues email link to a stable location.
........
  r39351 | grafik | 2007-09-17 09:17:52 -0700 (Mon, 17 Sep 2007) | 1 line
  
  Point issues link to stable location.
........
  r39352 | grafik | 2007-09-17 09:58:10 -0700 (Mon, 17 Sep 2007) | 1 line
  
  Add test of -l limit option now that it's implemented on windows and unix.
........
  r39353 | dgregor | 2007-09-17 11:33:20 -0700 (Mon, 17 Sep 2007) | 1 line
  
  Support Win64
........
  r39354 | vladimir_prus | 2007-09-17 12:29:06 -0700 (Mon, 17 Sep 2007) | 3 lines
  
  Allow to specify version, and explicitly specify
  the command, when initializing the acc toolset.
........
  r39355 | grafik | 2007-09-17 13:00:18 -0700 (Mon, 17 Sep 2007) | 1 line
  
  Add test for no-op @() expansion.
........
  r39357 | grafik | 2007-09-17 14:35:58 -0700 (Mon, 17 Sep 2007) | 1 line
  
  Handle invalid formats of @() as doing a straight substitution instead of erroring out.
........
  r39358 | noel_belcourt | 2007-09-17 16:30:57 -0700 (Mon, 17 Sep 2007) | 7 lines
  
  Rene found a problem with the code I committed to
  terminate expired processes.  This patch basically
  causes the select function to return after -l seconds.
  This gives me a shot at killing processes still
  running.
........
  r39359 | djowel | 2007-09-17 17:18:56 -0700 (Mon, 17 Sep 2007) | 1 line
  
  bugfix tuples::null_type and tuples::tuple<> iterators not comparing ok.
........
  r39360 | noel_belcourt | 2007-09-17 19:42:13 -0700 (Mon, 17 Sep 2007) | 7 lines
  
  Fix One more obscure way for the timeout to miss processes.
  
  If select times out (no processes terminated), then all running
  processes can be terminated.  Cleaned up code when this condition
  applies.
........
  r39361 | noel_belcourt | 2007-09-17 20:27:48 -0700 (Mon, 17 Sep 2007) | 7 lines
  
  A minor optimization to eliminate two OS calls (one
  to times, one to kill).  Now all expired processes
  are killed in one place.  If the select command
  times out, I set each processes start_time to zero
  to ensure it is picked up as an expired process.
........
  r39362 | vladimir_prus | 2007-09-18 04:44:13 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Expand aCC documentation
........
  r39363 | dgregor | 2007-09-18 05:09:53 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Second attempt at fixing usage of 64-bit integer type
........
  r39364 | chris_kohlhoff | 2007-09-18 06:13:40 -0700 (Tue, 18 Sep 2007) | 2 lines
  
  Fix unused argument warning.
........
  r39365 | bemandawes | 2007-09-18 08:37:36 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Remove files after tests
........
  r39366 | johnmaddock | 2007-09-18 09:32:29 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Added Mathias Kock and Joerg Walter.
........
  r39367 | grafik | 2007-09-18 10:02:04 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Replace breaks, to remove warnings, with custom structural templates.
........
  r39368 | nikiml | 2007-09-18 10:16:31 -0700 (Tue, 18 Sep 2007) | 1 line
  
  epydoc friendlier formatting
........
  r39369 | johnmaddock | 2007-09-18 10:19:41 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Updated licences using blanket_permission.txt.
........
  r39370 | nikiml | 2007-09-18 10:28:23 -0700 (Tue, 18 Sep 2007) | 1 line
  
  tabs removes, code reformatting
........
  r39371 | nikiml | 2007-09-18 10:32:06 -0700 (Tue, 18 Sep 2007) | 1 line
  
  epydoc friendlier formatting
........
  r39372 | nikiml | 2007-09-18 10:51:47 -0700 (Tue, 18 Sep 2007) | 1 line
  
  fixed cpp signature related test failure
........
  r39373 | garcia | 2007-09-18 12:03:47 -0700 (Tue, 18 Sep 2007) | 4 lines
  
  Added Tobias Schwinger as Review Manager for Exception.
  Added entry for X-files.
  Added download links for Property Maps and Graph.
........
  r39374 | garcia | 2007-09-18 12:10:12 -0700 (Tue, 18 Sep 2007) | 2 lines
  
  Split X-Files review into three separate reviews.
........
  r39375 | bemandawes | 2007-09-18 14:01:26 -0700 (Tue, 18 Sep 2007) | 1 line
  
  quiet compiler warning
........
  r39376 | hljin | 2007-09-18 14:19:05 -0700 (Tue, 18 Sep 2007) | 4 lines
  
  GIL:
  1. changed int to std::ptrdiff_t in utilities.hpp and iterator_from_2d.hpp for problems under 64-bit platforms
  2. removed several extra semi-colons after GIL_CLASS_REQUIRE
........
  r39377 | hljin | 2007-09-18 14:37:08 -0700 (Tue, 18 Sep 2007) | 1 line
  
  GIL: fixed incorrect header files for std::bad_cast
........
  r39378 | noel_belcourt | 2007-09-18 15:46:26 -0700 (Tue, 18 Sep 2007) | 14 lines
  
  Remove unnecessary overhead in execunix.c related to
  the timeout implementation.  Also removed unused variables
  as diagnosed by the Sgi (mipspro) compiler.
  
  Fixed const-correctness error in operations.hpp that
  Sgi complained about.
  
  There's no strerror_r function on Irix 6.5 so I replaced
  it with a strerror call.
  
  With these changes, I can now build process jam log and
  start running Sgi tests.
........
  r39379 | noel_belcourt | 2007-09-18 18:46:11 -0700 (Tue, 18 Sep 2007) | 4 lines
  
  Undo patch of operations.hpp, Sgi wants this fix
  but it causes svn trunk to break.
........
  r39381 | grafik | 2007-09-18 19:39:08 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Fix extra, missed, para inside warning admonition.
........
  r39382 | noel_belcourt | 2007-09-18 19:59:00 -0700 (Tue, 18 Sep 2007) | 8 lines
  
  Update the mipspro.jam file so have the compiler
  emit each referenced template in the object file
  where referenced and then rely on the linker to
  remove duplicates.
  
  Added some missing macros to sgi_mipspro.hpp.
........
  r39383 | grafik | 2007-09-18 20:59:52 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Style simplelist tables, to look like regular text lines.
........
  r39384 | grafik | 2007-09-18 21:03:22 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Don't make nav links white to prevent then from not showing up when the images are not present.
........
  r39385 | grafik | 2007-09-18 21:54:30 -0700 (Tue, 18 Sep 2007) | 1 line
  
  Remove some outdated comments as some bugs are now fixed. Try to work around boostbook XSL.
........
  r39392 | hljin | 2007-09-19 11:41:47 -0700 (Wed, 19 Sep 2007) | 1 line
  
  GIL: fixed the C4503 warnings under VC
........
  r39393 | hljin | 2007-09-19 11:45:30 -0700 (Wed, 19 Sep 2007) | 1 line
  
  GIL: commented out unnecessary pragma warning directives
........
  r39394 | bemandawes | 2007-09-19 12:28:56 -0700 (Wed, 19 Sep 2007) | 1 line
  
  Add get_posix_category, get_system_category, to solve order-of-initialization issues
........
  r39395 | grafik | 2007-09-19 12:29:31 -0700 (Wed, 19 Sep 2007) | 1 line
  
  Make get-values preserve the values exactly, instead of treating them like paths and hence munging them.
........
  r39396 | bemandawes | 2007-09-19 12:30:23 -0700 (Wed, 19 Sep 2007) | 1 line
  
  Add get_posix_category, get_system_category, to solve order-of-initialization issues
........
  r39397 | grafik | 2007-09-19 12:47:25 -0700 (Wed, 19 Sep 2007) | 1 line
  
  Work around boostbook path issues.
........
  r39398 | garcia | 2007-09-19 14:29:29 -0700 (Wed, 19 Sep 2007) | 2 lines
  
  made Tobias' reviews fast-track.
........
  r39399 | noel_belcourt | 2007-09-19 21:11:11 -0700 (Wed, 19 Sep 2007) | 15 lines
  
  Fix a bug Chris Cambly reported with the timeout code on
  AIX.  Apparently AIX doesn't permit a forked process to 
  reference (set) memory in the parent's address space.  No 
  other system seems to object to this practice but it taught
  me a lesson!
  
  The fix was to move the call to get the child process start 
  time directly before calling vfork.  This isn't really fair 
  to the forked process as we start counting time against the
  child process that we haven't even forked (we count the 
  vfork/exec call overhead against the child process).
  
  Tested Rene's test.sh script on Sun, Linux, AIX, and Sgi.
........
  r39400 | grafik | 2007-09-19 21:36:27 -0700 (Wed, 19 Sep 2007) | 1 line
  
  Now that the exec*.c files are really platform specific, adjust the build script to only build the needed ones for MinGW.
........
  r39401 | schoepflin | 2007-09-20 00:35:43 -0700 (Thu, 20 Sep 2007) | 1 line
  
  Added missing include for assert.
........
  r39404 | garcia | 2007-09-20 05:15:28 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  Fixed dates and filename.
........
  r39405 | johnmaddock | 2007-09-20 05:28:34 -0700 (Thu, 20 Sep 2007) | 1 line
  
  Updated ICU build options to fix build on Darwin and elsewhere.
........
  r39408 | johnmaddock | 2007-09-20 05:38:53 -0700 (Thu, 20 Sep 2007) | 3 lines
  
  Update to TR1 to better support gcc.
  Refactored configuration settings so if the .hpp versions of the headers are included then there's no need to figure out the location of the actual std lib headers.
  Updated docs to match.
........
  r39409 | bgubenko | 2007-09-20 05:42:27 -0700 (Thu, 20 Sep 2007) | 1 line
  
  add -AA to link actions, remove +DD64
........
  r39412 | garcia | 2007-09-20 08:34:17 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  Fixed the date, updated the copy.
........
  r39415 | garcia | 2007-09-20 08:59:57 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  Added Lexer.
........
  r39416 | grafik | 2007-09-20 09:31:44 -0700 (Thu, 20 Sep 2007) | 1 line
  
  Add partial code for indicating to the output function that a command finished because of a timeout.
........
  r39417 | bgubenko | 2007-09-20 09:34:31 -0700 (Thu, 20 Sep 2007) | 1 line
  
  more conditionalization for PA-RISC
........
  r39418 | bgubenko | 2007-09-20 09:59:45 -0700 (Thu, 20 Sep 2007) | 1 line
  
  check that on HP-UX, the Standard RW library is used
........
  r39421 | johnmaddock | 2007-09-20 10:54:55 -0700 (Thu, 20 Sep 2007) | 1 line
  
  Oops, forgot to add new file!!
........
  r39423 | noel_belcourt | 2007-09-20 12:06:54 -0700 (Thu, 20 Sep 2007) | 13 lines
  
  Added diagnostic message to output.c to inform users
  when a process has timed out and been killed.
  
  Because timed out processes now emit a diagnostic, I
  had to update option_l.jam so we wouldn't break test.sh
  when it runs.
  
  Minor cleanup to execunix.c to remove unneeded code
  and to set the process exit status as returned from
  waitpid.  The exit status is used to identify timed
  out processes so we can emit a diagnostic to the user.
........
  r39424 | garcia | 2007-09-20 12:39:53 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  Updated. Added links for constrained value.
........
  r39425 | bemandawes | 2007-09-20 12:55:32 -0700 (Thu, 20 Sep 2007) | 1 line
  
  Always update self. Updating based on file date was not reliable on all systems.
........
  r39427 | pdimov | 2007-09-20 13:46:56 -0700 (Thu, 20 Sep 2007) | 1 line
  
  defined(__ppc) added (Daniel P Furlani)
........
  r39428 | bemandawes | 2007-09-20 14:04:34 -0700 (Thu, 20 Sep 2007) | 1 line
  
  Strictly conforming compilers (EDG with --dep_name) require the make_* functions be defined before used. Report and fix from Markus Schopflin. EDG info from Boris Gubenko.
........
  r39429 | chris_kohlhoff | 2007-09-20 15:20:57 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  Larger storage size needed for Windows x64.
........
  r39430 | chris_kohlhoff | 2007-09-20 15:26:55 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  Move handler queue management to a separate class.
........
  r39431 | chris_kohlhoff | 2007-09-20 15:30:54 -0700 (Thu, 20 Sep 2007) | 3 lines
  
  Some compilers require namespace-scope declarations of use_service,
  has_service and add_service.
........
  r39432 | chris_kohlhoff | 2007-09-20 15:33:29 -0700 (Thu, 20 Sep 2007) | 3 lines
  
  Eliminate use of types and structure members that may not be present when
  build for non-XOPEN targets.
........
  r39433 | chris_kohlhoff | 2007-09-20 15:44:33 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  Regenerate documentation.
........
  r39434 | rwgk | 2007-09-20 16:20:45 -0700 (Thu, 20 Sep 2007) | 1 line
  
  gcc 4.3.0 compatibility (resolves new "changes meaning" error)
........
  r39435 | garcia | 2007-09-20 16:22:46 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  A little note to minimize confusion (I know I was confused).
........
  r39436 | chris_kohlhoff | 2007-09-20 22:42:55 -0700 (Thu, 20 Sep 2007) | 2 lines
  
  Fix documentation generation.
........
  r39438 | bemandawes | 2007-09-21 04:45:23 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Some compilers require all of the make_error_* functions be template specializations. See prior log message.
........
  r39440 | bemandawes | 2007-09-21 04:58:05 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Add revision to collected, uploaded, info
........
  r39441 | bemandawes | 2007-09-21 04:59:54 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Add revision to collected, uploaded, info. Add --have-source, --skip-tests options to ease regression.py testing.
........
  r39442 | garcia | 2007-09-21 05:33:31 -0700 (Fri, 21 Sep 2007) | 2 lines
  
  small html and grammar fixes.
........
  r39443 | chris_kohlhoff | 2007-09-21 05:34:19 -0700 (Fri, 21 Sep 2007) | 5 lines
  
  Strict compilers don't like it when you pass a function with C linkage
  as an argument when the parameter type has C++ linkage. Try using the type
  of the msghdr::msg_namelen field as an alternative way of deducing the
  socklen_t-equivalent type.
........
  r39447 | bemandawes | 2007-09-21 07:46:04 -0700 (Fri, 21 Sep 2007) | 1 line
  
  revision default needs actual value
........
  r39448 | danmarsden | 2007-09-21 08:44:57 -0700 (Fri, 21 Sep 2007) | 1 line
  
  fixing result of related fusion docs issues for fold, accumulate, and transform view/alg
........
  r39449 | bemandawes | 2007-09-21 09:42:27 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Fix order-of-initialization problem, add initialization_test.cpp to detect regression.
........
  r39450 | grafik | 2007-09-21 10:14:13 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Add svn_info.txt file to annotate the revision exported.
........
  r39464 | igaztanaga | 2007-09-21 13:45:14 -0700 (Fri, 21 Sep 2007) | 2 lines
  
  Glenn Schrader patch: Segmentation fault with 1.34+ on Linux x86_64.
  Reason: The ~ only complemented the 32 bit unsigned value. When the value was expanded into a size_t the value isn't sign extended so the upper 32 bits wind up being zero. Since this is used as an address mask the upper half of the address is zeroed.
........
  r39465 | bemandawes | 2007-09-21 13:57:44 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Eliminate Concept library use to reduce dependencies
........
  r39466 | grafik | 2007-09-21 14:01:45 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Adjust timing to avoid spurious test failures on busy machines.
........
  r39467 | noel_belcourt | 2007-09-21 15:38:17 -0700 (Fri, 21 Sep 2007) | 21 lines
  
  Another patch to fix the -lx timeout code.  Some actions spawn
  sub-processes after bjam forks a new process (for example, after
  g++ is forked by bjam, g++ then forks sub-processes like cc1plus).
  The timeout code would kill the g++ process, but might not kill
  the subprocesses spawned by g++.
  
  I fixed this problem by making the bjam fork'ed process (g++) a 
  session leader by calling setsid() before calling exec.  The setsid 
  call, in essence, gives all child processes a parent process id 
  (ppid) of the g++ process id.  This guarantees that killing g++ 
  will kill all child processes spawned by g++ as well.
  
  One last comment on the maximum process time before a process is actually
  killed.  The worst case process elapsed time is 2x seconds if -lx is
  given.  The reason is that a process might be one second away from being
  killed and, if there's no other signal activity, the select function will
  wait x seconds before timing out and killing any active processes.  So
  if you say -lx and monitor a build known to have lengthy processes, you 
  may see a process with up to 2x seconds of time before it is killed.
........
  r39468 | djowel | 2007-09-21 18:05:29 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Doc updates
........
  r39469 | djowel | 2007-09-21 18:08:51 -0700 (Fri, 21 Sep 2007) | 1 line
  
  bugfix tuples::null_type and tuples::tuple<> iterators not comparing ok.
........
  r39470 | igaztanaga | 2007-09-21 23:15:21 -0700 (Fri, 21 Sep 2007) | 1 line
  
  Sign extension bug. Not should be applied after the constant has been expanded to size_t. Thanks to Glenn Schrader.
........
  r39473 | johnmaddock | 2007-09-22 02:24:05 -0700 (Sat, 22 Sep 2007) | 1 line
  
  Fix for gcc -Wundef warnings. See http://svn.boost.org/trac/boost/ticket/1130.
........
  r39474 | t_schwinger | 2007-09-22 04:09:35 -0700 (Sat, 22 Sep 2007) | 2 lines
  
  adds concept examples
........
  r39475 | johnmaddock | 2007-09-22 04:27:25 -0700 (Sat, 22 Sep 2007) | 1 line
  
  Updated license declaration.
........
  r39477 | bemandawes | 2007-09-22 07:39:50 -0700 (Sat, 22 Sep 2007) | 1 line
  
  Add revision to column heads. Patch courtesy of Sebastian Redl.
........
  r39480 | aaron_windsor | 2007-09-22 10:41:18 -0700 (Sat, 22 Sep 2007) | 1 line
  
  Some fixes for errors and warnings on HP cxx.
........
  r39481 | eric_niebler | 2007-09-22 12:30:25 -0700 (Sat, 22 Sep 2007) | 1 line
  
  attempt to fix hp tru64
........
  r39484 | ramey | 2007-09-22 14:24:41 -0700 (Sat, 22 Sep 2007) | 1 line
  
  merged in changes - tested with gcc and msvc
........
  r39485 | nmusatti | 2007-09-23 05:47:52 -0700 (Sun, 23 Sep 2007) | 1 line
  
  Updated to support C++Builder 2007 Update 3 (bcc32 5.9.2)
........
  r39490 | johnmaddock | 2007-09-23 10:49:44 -0700 (Sun, 23 Sep 2007) | 1 line
  
  Fix up file so it can be compiled in C mode.
........
  r39492 | noel_belcourt | 2007-09-23 14:31:43 -0700 (Sun, 23 Sep 2007) | 5 lines
  
  Fix problems with Pathscale toolset (-G and -h options
  are unknown).   Thanks John Maddock for pointing these
  out.
........
  r39497 | djowel | 2007-09-23 23:03:12 -0700 (Sun, 23 Sep 2007) | 1 line
  
  added new import syntax for ignoring code.
........
  r39498 | schoepflin | 2007-09-24 00:31:43 -0700 (Mon, 24 Sep 2007) | 1 line
  
  Removed unused variable.
........
  r39499 | schoepflin | 2007-09-24 00:38:35 -0700 (Mon, 24 Sep 2007) | 1 line
  
  Add needed include (according to XOPEN) for definition of WIFEXITED and WEXITSTATUS.
........
  r39502 | chris_kohlhoff | 2007-09-24 05:53:37 -0700 (Mon, 24 Sep 2007) | 2 lines
  
  Use a switch rather than an array to translate system_category error codes to their corresponding default error conditions. Add translations for the Winsock error codes.
........
  r39503 | chris_kohlhoff | 2007-09-24 06:19:31 -0700 (Mon, 24 Sep 2007) | 2 lines
  
  Try making the ip::multicast::enable_loopback socket option an unsigned char on AIX.
........
  r39504 | chris_kohlhoff | 2007-09-24 06:21:03 -0700 (Mon, 24 Sep 2007) | 3 lines
  
  Check whether exceptions are enabled on the output iostream and throw or not
  throw errors accordingly.
........
  r39505 | chris_kohlhoff | 2007-09-24 06:21:49 -0700 (Mon, 24 Sep 2007) | 2 lines
  
  Output error codes and error messages when a test fails.
........
  r39506 | grafik | 2007-09-24 06:24:23 -0700 (Mon, 24 Sep 2007) | 1 line
  
  Make per target manifest files and a single global catalog files, so that one can have multiple boostbook targets in one project.
........
  r39507 | chris_kohlhoff | 2007-09-24 06:29:12 -0700 (Mon, 24 Sep 2007) | 2 lines
  
  Fix warning on AIX about omitted 'private' keyword when deriving from noncopyable.
........
  r39508 | bemandawes | 2007-09-24 06:32:43 -0700 (Mon, 24 Sep 2007) | 1 line
  
  Replace use of re in detecting revision with string functions. Nicola Musatti reported problems with Italian version of XP. Although this change should fix the crash, it isn't the final solution.
........
  r39509 | chris_kohlhoff | 2007-09-24 06:32:47 -0700 (Mon, 24 Sep 2007) | 2 lines
  
  Add extra library 'ipv6' needed on HP-UX.
........
  r39510 | hljin | 2007-09-24 11:20:56 -0700 (Mon, 24 Sep 2007) | 1 line
  
  GIL: fixed the test files to the new bit_aligned_pixel_reference interface
........
  r39511 | hljin | 2007-09-24 11:25:48 -0700 (Mon, 24 Sep 2007) | 1 line
  
  GIL: fixed endian-ness related bugs for bit_aligned_pixel_reference and pixel_aligned_pixel_iterator
........
  r39512 | hljin | 2007-09-24 11:45:57 -0700 (Mon, 24 Sep 2007) | 1 line
  
  GIL: added a MSVC macro in the Jamfile to suppress warnings on unsafe STL calls
........
  r39513 | guwi17 | 2007-09-24 14:01:11 -0700 (Mon, 24 Sep 2007) | 2 lines
  
  - Ticket #1234 : patch committed as suggested.
........
  r39514 | noel_belcourt | 2007-09-24 14:01:45 -0700 (Mon, 24 Sep 2007) | 7 lines
  
  Fix a problem with the -lx timeout code on ppc darwin.
  The intel based darwin system was killing subprocesses
  okay but for some reason, ppc systems were not.  This
  change fixes the timeout code so subprocesses are
  properly killed on ppc darwin systems.
........
  r39516 | guwi17 | 2007-09-24 14:26:00 -0700 (Mon, 24 Sep 2007) | 2 lines
  
  - Ticket #688 : Outer iterators can now skip empty rows. Thus matrix_assign works now as expected.
........
  r39517 | chris_kohlhoff | 2007-09-24 18:56:46 -0700 (Mon, 24 Sep 2007) | 2 lines
  
  Add missing "lib ipv6 ;" that's needed for HP-UX.
........
  r39518 | noel_belcourt | 2007-09-24 20:39:06 -0700 (Mon, 24 Sep 2007) | 3 lines
  
  Get pic and threading working with pathscale.
........
  r39519 | schoepflin | 2007-09-25 01:46:31 -0700 (Tue, 25 Sep 2007) | 1 line
  
  Added missing include.
........
  r39520 | bemandawes | 2007-09-25 06:45:52 -0700 (Tue, 25 Sep 2007) | 1 line
  
  Clear compiler warnings
........
  r39523 | garcia | 2007-09-25 08:32:23 -0700 (Tue, 25 Sep 2007) | 2 lines
  
  Initial Revision.  Stolen from the write-graphviz.html docs.
........
  r39524 | garcia | 2007-09-25 08:36:35 -0700 (Tue, 25 Sep 2007) | 2 lines
  
  Made the output of the example program more realistic.
........
  r39525 | bemandawes | 2007-09-25 10:27:04 -0700 (Tue, 25 Sep 2007) | 1 line
  
  Supply std:: to fix Borland 5.9.2 errors
........
  r39526 | bemandawes | 2007-09-25 10:55:58 -0700 (Tue, 25 Sep 2007) | 1 line
  
  Fix revision not propagating (Sebastian Redl)
........
  r39531 | noel_belcourt | 2007-09-25 13:34:36 -0700 (Tue, 25 Sep 2007) | 9 lines
  
  Add pgi.hpp configuration file for the Portland Group.
  
  Fixed problems with threading, pic code, missing math
  library, etc. to get mipspro toolset working better.
  
  Updated pgi toolset to fix various problems with the
  link line.
........
  r39532 | garcia | 2007-09-25 15:49:00 -0700 (Tue, 25 Sep 2007) | 2 lines
  
  set dates for reviews.
........
  r39534 | noel_belcourt | 2007-09-25 16:11:12 -0700 (Tue, 25 Sep 2007) | 9 lines
  
  Add macros to gcc.hpp to support pathscale toolset.
  
  Added an optimization to the -lx unix timeout code.  I
  compute the amount of time the select call should sleep
  until the "oldest" process times out.  This ensures that
  all processes that timeout will be killed within one
  second of their expiration.
........
  r39544 | garcia | 2007-09-26 08:07:19 -0700 (Wed, 26 Sep 2007) | 2 lines
  
  Thread-Safe Signals.
........
  r39545 | igaztanaga | 2007-09-26 08:07:29 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39546 | igaztanaga | 2007-09-26 08:11:38 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39547 | igaztanaga | 2007-09-26 08:25:36 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39548 | igaztanaga | 2007-09-26 08:26:35 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39549 | igaztanaga | 2007-09-26 10:35:50 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39550 | igaztanaga | 2007-09-26 10:38:32 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39551 | igaztanaga | 2007-09-26 10:39:06 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39552 | igaztanaga | 2007-09-26 10:46:34 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39553 | bemandawes | 2007-09-26 10:48:27 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Turns out the --dep_name errors were due to functions in the wrong namespace (Chris Kohlhoff)
........
  r39554 | igaztanaga | 2007-09-26 10:51:58 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39555 | igaztanaga | 2007-09-26 10:53:01 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Changes introduced by the new intrusive version.
........
  r39556 | bemandawes | 2007-09-26 11:11:27 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Win64 returns ERROR_BAD_PATHNAME for //nosuch, while Win32 returns ERROR_BAD_NETPATH
........
  r39561 | bemandawes | 2007-09-26 17:22:16 -0700 (Wed, 26 Sep 2007) | 1 line
  
  Get rid of <runtime-link>static. Appears to cause problems on Sun and perhaps other Unix boxes.
........
  r39563 | noel_belcourt | 2007-09-26 20:41:11 -0700 (Wed, 26 Sep 2007) | 4 lines
  
  Fix pathscale.jam so -rpath is passed correctly to the
  linker.
........
  r39574 | bemandawes | 2007-09-27 06:44:55 -0700 (Thu, 27 Sep 2007) | 1 line
  
  Change location of svn_info.txt to boost_root, as that's where it is in the tarball
........
  r39575 | garcia | 2007-09-27 08:52:41 -0700 (Thu, 27 Sep 2007) | 2 lines
  
  exception review dates.
........
  r39576 | igaztanaga | 2007-09-27 09:38:14 -0700 (Thu, 27 Sep 2007) | 1 line
  
  Updated unusable toolsets for Interprocess and Intrusive
........
  r39577 | bemandawes | 2007-09-27 09:56:23 -0700 (Thu, 27 Sep 2007) | 1 line
  
  AIX treats ENOTEMPTY and EEXIST as the same value. Reported by Chris Cambly
........
  r39583 | t_schwinger | 2007-09-27 14:25:18 -0700 (Thu, 27 Sep 2007) | 3 lines
  
  changes review dates for Boost.Exception as agreed on with Ron
........
  r39584 | cepstein | 2007-09-27 18:30:27 -0700 (Thu, 27 Sep 2007) | 1 line
  
  Changed required toolset gcc-4.1.1_sunos_i86pc to gcc-4.1.2_sunos_i86pc
........
  r39585 | bemandawes | 2007-09-27 19:03:29 -0700 (Thu, 27 Sep 2007) | 1 line
  
  Quiet compiler warnings
........
  r39586 | schoepflin | 2007-09-28 00:19:29 -0700 (Fri, 28 Sep 2007) | 1 line
  
  Added missing include.
........
  r39587 | schoepflin | 2007-09-28 03:28:26 -0700 (Fri, 28 Sep 2007) | 1 line
  
  Added two missing fwd declarations and a Tru64/CXX specific workaround.
........
  r39588 | garcia | 2007-09-28 12:39:57 -0700 (Fri, 28 Sep 2007) | 2 lines
  
  Exception has begun.
........
  r39589 | burbelgruff | 2007-09-28 13:09:01 -0700 (Fri, 28 Sep 2007) | 1 line
  
  Implement typeof emulation for the Borland compiler. Tested with Borland 5.8.2
........
  r39590 | burbelgruff | 2007-09-28 13:11:32 -0700 (Fri, 28 Sep 2007) | 1 line
  
  Modified tests to account for Borland compiler
........
  r39591 | burbelgruff | 2007-09-28 13:16:39 -0700 (Fri, 28 Sep 2007) | 1 line
  
  Updated failures markup to account for typeof support for Borland
........
  r39592 | grafik | 2007-09-28 18:50:16 -0700 (Fri, 28 Sep 2007) | 1 line
  
  Minor adjustment to save half of the upload bandwidth, at the cost of another layer of compression on both ends.
........
  r39595 | eric_niebler | 2007-09-29 08:45:08 -0700 (Sat, 29 Sep 2007) | 1 line
  
  remove unnecessary semicolons
........
  r39596 | eric_niebler | 2007-09-29 08:51:29 -0700 (Sat, 29 Sep 2007) | 1 line
  
  mark xpressive unusable with sun compiler
........
  r39597 | vladimir_prus | 2007-09-29 10:12:49 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Summarize changes
........
  r39601 | vladimir_prus | 2007-09-29 10:28:10 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Update version.
........
  r39602 | vladimir_prus | 2007-09-29 10:29:49 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Update download locations.
........
  r39603 | vladimir_prus | 2007-09-29 10:31:44 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Adjust date
........
  r39605 | vladimir_prus | 2007-09-29 11:17:27 -0700 (Sat, 29 Sep 2007) | 7 lines
  
  Adjust boostbook test for boostbook changes. It
  seems that doxygen target now produces a target
  with different name, and it does not produce
  any target unless there's explicit dependency
  on it. I'm not sure I like the change, but
  anyway.
........
  r39606 | vladimir_prus | 2007-09-29 11:21:49 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Adjust Qt4 example test
........
  r39607 | vladimir_prus | 2007-09-29 11:22:57 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Set executable flag
........
  r39608 | grafik | 2007-09-29 11:30:06 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Fix action multi-generation for case when there are no targets for the action.
........
  r39609 | bemandawes | 2007-09-29 12:40:23 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Limit Windows expected message check to US English
........
  r39610 | grafik | 2007-09-29 12:48:51 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Update distribution and build scripts to account for inclusion of boehm_gc sources. Add history of changes to docs.
........
  r39611 | grafik | 2007-09-29 12:58:28 -0700 (Sat, 29 Sep 2007) | 1 line
  
  Set executable flag.
........
  r39612 | noel_belcourt | 2007-09-29 13:23:29 -0700 (Sat, 29 Sep 2007) | 6 lines
  
  When terminating unix processes I forgot to check for negative 
  time differences.  This patch only sets the select timeout if
  the difference between the requested and consumed time is 
  positive.
........
  r39613 | noel_belcourt | 2007-09-29 14:47:24 -0700 (Sat, 29 Sep 2007) | 15 lines
  
  Renamed variables used in timeout code so I don't make
  silly mistakes like using a negative time for the select
  timeout.  
  
  Also added the setrlimit call back in since the
  named_condition_test occassionally consumes multiple cpus
  worth of time.  That is, when I ran this test -j4, I found
  the named_condition test consuming 4 cpus worth of time so
  after 300 seconds of elapsed time when the test timed out, 
  it had consumed almost 1200 seconds worth of cpu.  While the 
  test is killed after the elapsed time expired, setting a hard 
  cpu limit ensures it's killed after consuming either -lx seconds 
  worth of cpu or -lx seconds of elapsed time.
........
  r39614 | eric_niebler | 2007-09-29 21:05:31 -0700 (Sat, 29 Sep 2007) | 1 line
  
  slightly more informative test errors
........
  r39615 | garcia | 2007-09-30 07:58:38 -0700 (Sun, 30 Sep 2007) | 2 lines
  
  FSM dates.
........
  r39616 | grafik | 2007-09-30 08:52:31 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Fix missing files in tar generation, by using a tar format that doesn't have short limits on file name lengths. (and that is still readable by the Python tarfile module)
........
  r39617 | grafik | 2007-09-30 09:33:36 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Fix copying the wrong files for the archive, and prefer using POSIX/pax format.
........
  r39619 | johnmaddock | 2007-09-30 10:29:54 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Fix for failing Borland test results.
........
  r39620 | grafik | 2007-09-30 10:33:21 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Bump to bjam version 3.1.16
........
  r39621 | johnmaddock | 2007-09-30 10:35:14 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Touched file to force regressions runners to rebuild the test.
........
  r39623 | vladimir_prus | 2007-09-30 12:05:38 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Update example test-config.jam
........
  r39624 | vladimir_prus | 2007-09-30 12:06:19 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Update roll.sh
........
  r39630 | vladimir_prus | 2007-09-30 23:04:17 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Correct example test-config.jam
........
  r39631 | vladimir_prus | 2007-09-30 23:05:03 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Update release procedure
........
  r39632 | vladimir_prus | 2007-09-30 23:06:25 -0700 (Sun, 30 Sep 2007) | 1 line
  
  Set release date
........
  r39633 | johnmaddock | 2007-10-01 01:29:15 -0700 (Mon, 01 Oct 2007) | 1 line
  
  Disable test for Intel-10.
........
  r39634 | johnmaddock | 2007-10-01 02:38:05 -0700 (Mon, 01 Oct 2007) | 1 line
  
  Almost get things building with Borland.
........
  r39635 | johnmaddock | 2007-10-01 02:39:07 -0700 (Mon, 01 Oct 2007) | 1 line
  
  Added workarounds for broken WCHAR_MAX.
........
  r39638 | guwi17 | 2007-10-01 06:04:29 -0700 (Mon, 01 Oct 2007) | 2 lines
  
  - added redirect from index.html to real start page: index.htm
........
  r39641 | vladimir_prus | 2007-10-01 10:29:11 -0700 (Mon, 01 Oct 2007) | 3 lines
  
  Allow to specify the list of bound targets
  and flags, when defining action from Python.
........
  r39642 | vladimir_prus | 2007-10-01 10:34:43 -0700 (Mon, 01 Oct 2007) | 2 lines
  
  Fix gcc on HP-UX. Patch from Boris Gubenko. 
........
  r39643 | vladimir_prus | 2007-10-01 11:27:53 -0700 (Mon, 01 Oct 2007) | 3 lines
  
  Append .lib suffix to library names without :S= modifier.
  The latter will remove any existing suffix.
........
  r39644 | vladimir_prus | 2007-10-01 11:40:44 -0700 (Mon, 01 Oct 2007) | 4 lines
  
          * builtin.jam (searched-lib-generator.run):
          When no <name> feature present, use requested
          name.
........
  r39645 | vladimir_prus | 2007-10-01 11:44:44 -0700 (Mon, 01 Oct 2007) | 8 lines
  
  STLPort improvements:
          - Add _static in library name as necessary
          - Define _STLP_USE_DYNAMIC_LIB depending
          on <runtime-link>, not <runtime-debugging>
  
  Patch from David Deakins.
  Addresses #1177.
........
  r39646 | vladimir_prus | 2007-10-01 11:53:05 -0700 (Mon, 01 Oct 2007) | 5 lines
  
  Disallow using stlport by just adding /stlport//stlport
  to sources.  This logic was trying to use non-free
  usage requirements that are not supported, and can
  potentially result in inconsistent builds.
........
  r39647 | bemandawes | 2007-10-01 14:50:02 -0700 (Mon, 01 Oct 2007) | 1 line
  
  Detect and report missing boost-test lines in input log file
........
  r39648 | bemandawes | 2007-10-01 18:33:00 -0700 (Mon, 01 Oct 2007) | 1 line
  
  Add --compile-time and --run-time options
........
  r39649 | eric_niebler | 2007-10-01 23:47:58 -0700 (Mon, 01 Oct 2007) | 1 line
  
  attempt to fix xpressive formatting bug on tru64
........
  r39651 | hkaiser | 2007-10-02 08:10:05 -0700 (Tue, 02 Oct 2007) | 1 line
  
  [Wave] Unterminated C++/C comment diagnostics are now a warning and not an error anymore.
........
  r39652 | bemandawes | 2007-10-02 09:30:04 -0700 (Tue, 02 Oct 2007) | 1 line
  
  Remove dependency on boost::bind so that tests will still work on broken compilers where bind fails.
........
  r39654 | hkaiser | 2007-10-02 10:24:17 -0700 (Tue, 02 Oct 2007) | 1 line
  
  Wave: Fixed the waveidl example
........
  r39655 | johnmaddock | 2007-10-02 10:28:01 -0700 (Tue, 02 Oct 2007) | 1 line
  
  Update for Borland compilers: new Borland versions, and new tests, but otherwise the same failures as before.
........
  r39657 | johnmaddock | 2007-10-02 10:41:35 -0700 (Tue, 02 Oct 2007) | 1 line
  
  Fix for Borland compilers.
........
  r39658 | eric_niebler | 2007-10-02 10:58:33 -0700 (Tue, 02 Oct 2007) | 1 line
  
  work around msvc-7.1 bugs
........
  r39660 | bgubenko | 2007-10-02 12:07:37 -0700 (Tue, 02 Oct 2007) | 1 line
  
  mark lambda library test control_structures for gcc 4.2 series
........
  r39663 | nmusatti | 2007-10-02 13:32:05 -0700 (Tue, 02 Oct 2007) | 1 line
  
  Updated to support C++Builder 2007 Update 3 (bcc32 5.9.2)
........
  r39664 | chris_kohlhoff | 2007-10-02 18:40:55 -0700 (Tue, 02 Oct 2007) | 2 lines
  
  Add missing #include needed for MinGW.
........
  r39665 | chris_kohlhoff | 2007-10-02 18:43:08 -0700 (Tue, 02 Oct 2007) | 3 lines
  
  Try using an unsigned char for the multicast::enable_loopback socket option
  when compiling for Tru64.
........
  r39673 | hkaiser | 2007-10-03 06:18:23 -0700 (Wed, 03 Oct 2007) | 1 line
  
  Wave: Fixed a regex definition problem in the Slex lexer.
........
  r39674 | hkaiser | 2007-10-03 06:44:42 -0700 (Wed, 03 Oct 2007) | 1 line
  
  Wave: Fixed a minor problem in the predefined macros code.
........
  r39675 | hkaiser | 2007-10-03 06:51:32 -0700 (Wed, 03 Oct 2007) | 1 line
  
  Wave: Updated test to reflect recent error text changes.
........
  r39676 | bemandawes | 2007-10-03 10:30:23 -0700 (Wed, 03 Oct 2007) | 1 line
  
  Add revision number to heading if boost-root is subversion working copy. Use BOOST_PLATFORM for platform description. Fix problem if test type was run_pyd. Make Boost build v2 the default. Link to www.boost.org for boost.png.
........
  r39677 | burbelgruff | 2007-10-03 11:45:56 -0700 (Wed, 03 Oct 2007) | 1 line
  
  Mark borland 5.6.4 as unusable
........
  r39678 | noel_belcourt | 2007-10-03 12:00:18 -0700 (Wed, 03 Oct 2007) | 3 lines
  
  Fix problem with -rpath for pathscale compiler.
........
  r39680 | vladimir_prus | 2007-10-04 01:15:13 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Redo homepage
........
  r39681 | vladimir_prus | 2007-10-04 01:18:40 -0700 (Thu, 04 Oct 2007) | 3 lines
  
  When building docs, use the same Boost.Build that
  we're rolling.
........
  r39682 | johnmaddock | 2007-10-04 02:18:16 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Added tip to function_traits.qbk, rebuilt docs.
........
  r39683 | schoepflin | 2007-10-04 04:51:51 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Added missing boost namespace reference to as_literal.
........
  r39684 | hkaiser | 2007-10-04 08:01:23 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Wave: Changed an error text.
........
  r39685 | igaztanaga | 2007-10-04 09:41:15 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Marked acc as n/a for Interprocess.
........
  r39686 | hkaiser | 2007-10-04 10:49:20 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Trying to work around a SUN 5.8 compiler error.
........
  r39687 | hkaiser | 2007-10-04 10:55:20 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Wave: Silenced a SUN compiler warning.
........
  r39688 | hkaiser | 2007-10-04 16:37:25 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Wave: Trying to fix MSVC regressions.
........
  r39689 | grafik | 2007-10-04 20:09:03 -0700 (Thu, 04 Oct 2007) | 1 line
  
  Fix mislabeled argument to collect_logs().
........
  r39690 | eric_niebler | 2007-10-04 23:50:00 -0700 (Thu, 04 Oct 2007) | 1 line
  
  one more try at getting tru64 tests to pass
........
  r39691 | burbelgruff | 2007-10-05 00:06:13 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Update typeof emulation to support Borland 5.9.2
........
  r39692 | danieljames | 2007-10-05 02:43:01 -0700 (Fri, 05 Oct 2007) | 2 lines
  
  Fix an if statement.
........
  r39693 | anthonyw | 2007-10-05 02:46:00 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Updated in line with RC 1.34
........
  r39694 | danieljames | 2007-10-05 02:46:22 -0700 (Fri, 05 Oct 2007) | 3 lines
  
  On Cygwin use a binary based hash function for floating point numbers, as
  Cygwin doesn't have decent floating point functions for long doubles.
........
  r39701 | anthonyw | 2007-10-05 05:10:06 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Changed call_once to header-only template that takes arbitrary function objects; this changes parameter order
........
  r39702 | anthonyw | 2007-10-05 05:20:50 -0700 (Fri, 05 Oct 2007) | 1 line
  
  added platform-specific call_once implementations
........
  r39703 | anthonyw | 2007-10-05 05:21:55 -0700 (Fri, 05 Oct 2007) | 1 line
  
  added platform dispatcher
........
  r39704 | burbelgruff | 2007-10-05 05:39:15 -0700 (Fri, 05 Oct 2007) | 1 line
  
  typeof support for template template arguments for Borland 5.9.2 (also used for Borland 5.8.2) (reverted to old scheme for other compilers)
........
  r39705 | anthonyw | 2007-10-05 05:50:29 -0700 (Fri, 05 Oct 2007) | 1 line
  
  include config header from right place for pthread/once.hpp
........
  r39707 | burbelgruff | 2007-10-05 07:32:04 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Better support for BOOST_TYPEOF_NESTED_TYPEDEF for Borland
........
  r39708 | johnmaddock | 2007-10-05 08:00:40 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Disable PP-logic for __DECCXX compiler: WCAHR_MAX is defined but doesn't work in PP-logic on that platform.
........
  r39709 | johnmaddock | 2007-10-05 08:07:44 -0700 (Fri, 05 Oct 2007) | 1 line
  
  run_random was failing in the last release with Borland but wasn't marked up for some reason.
........
  r39710 | johnmaddock | 2007-10-05 08:47:02 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Markup for common_factor_test and Borland along with explanation of the issue (a code generation bug apparently).
........
  r39711 | danieljames | 2007-10-05 09:57:38 -0700 (Fri, 05 Oct 2007) | 2 lines
  
  Generate documentation for typedef members of classes. Fixes #1218.
........
  r39714 | johnmaddock | 2007-10-05 10:49:12 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Update Jamfiles to make PDF generation easier.
........
  r39715 | igaztanaga | 2007-10-05 10:54:39 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Marked hpp_cxx* as broken for Interprocess/Intrusive, and acc for Interprocess.
........
  r39716 | hkaiser | 2007-10-05 11:48:56 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Pool: Added detection of availability of pthreads using the BOOST_HAS_PTHREADS constant.
........
  r39717 | eric_niebler | 2007-10-05 12:00:43 -0700 (Fri, 05 Oct 2007) | 1 line
  
  put format string argument in non-deduced context
........
  r39718 | hkaiser | 2007-10-05 15:04:04 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Added a compiler workaround for IntelV9.1/linux.
........
  r39719 | hkaiser | 2007-10-05 16:25:09 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Wave: Fixed missing test case in regression status pages.
........
  r39720 | hkaiser | 2007-10-05 16:27:43 -0700 (Fri, 05 Oct 2007) | 1 line
  
  ProgramOptions: Silenced VC++ warnings.
........
  r39721 | hkaiser | 2007-10-05 17:26:30 -0700 (Fri, 05 Oct 2007) | 1 line
  
  Wave: Fixed typos in comments.
........
  r39722 | pdimov | 2007-10-06 01:59:01 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Marked up bind_placeholder_test
........
  r39723 | johnmaddock | 2007-10-06 04:12:33 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Fix Borland infinite looping issue.
........
  r39724 | djowel | 2007-10-06 07:10:30 -0700 (Sat, 06 Oct 2007) | 1 line
  
  fix for incomplete type is not allowed when tuple is forward declared. fixed the other as_xxx files as well.
........
  r39725 | johnmaddock | 2007-10-06 10:40:20 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Fix typo.
........
  r39726 | hkaiser | 2007-10-06 10:43:08 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Wave: Fixed Jamfile for regression tests.
........
  r39727 | johnmaddock | 2007-10-06 10:46:25 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Update docs to match quickbook.
........
  r39728 | hkaiser | 2007-10-06 10:54:28 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Wave: added a missing header.
........
  r39729 | vladimir_prus | 2007-10-06 11:24:04 -0700 (Sat, 06 Oct 2007) | 3 lines
  
  When we skip build of a target, say about that
  in --debug-building output.
........
  r39731 | grafik | 2007-10-06 12:46:39 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Remove BPL build conditional as it prevents normal build failures.
........
  r39751 | nmusatti | 2007-10-06 14:32:05 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Updated to support C++Builder 2007 Update 3 (bcc32 5.9.2)
........
  r39752 | chris_kohlhoff | 2007-10-06 17:11:25 -0700 (Sat, 06 Oct 2007) | 5 lines
  
  The epoll_wait function can produce EPOLLHUP events for a descriptor even
  if not specifically requested, resulting in a tight loop of calls to
  epoll_wait. Delete a descriptor from epoll if an EPOLLHUP event is
  received and there are no registered operations for the descriptor.
........
  r39753 | troyer | 2007-10-06 23:57:36 -0700 (Sat, 06 Oct 2007) | 1 line
  
  Fix for Borland
........
  r39755 | johnmaddock | 2007-10-07 04:08:51 -0700 (Sun, 07 Oct 2007) | 1 line
  
  math_info doesn't link with Borland unless built against the static runtime.
........
  r39756 | johnmaddock | 2007-10-07 04:09:45 -0700 (Sun, 07 Oct 2007) | 1 line
  
  math_info doesn't link with Borland unless built against the static runtime.
........
  r39757 | johnmaddock | 2007-10-07 04:10:24 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Added expm1 and lop1p support.
........
  r39759 | hkaiser | 2007-10-07 07:46:52 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Spirit: Fixed a couple of pedantic gcc warnings.
........
  r39760 | hkaiser | 2007-10-07 07:51:46 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Wave: Silenced a couple of pedantic gcc warnings.
........
  r39761 | hkaiser | 2007-10-07 08:55:00 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Spirit: Fixed a failing unit test.
........
  r39762 | hkaiser | 2007-10-07 08:57:37 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Spirit: Silenced some warnings.
........
  r39763 | aaron_windsor | 2007-10-07 09:52:39 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Fixing some errors and warnings on the planar graph tests coming from Sun compilers.
........
  r39766 | danieljames | 2007-10-07 11:08:35 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Include the size of function pointers, void* and std::size_t in the output of the function pointer hash test, to give me a clue why it's failling on a platform.
........
  r39767 | aaron_windsor | 2007-10-07 11:43:16 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Fix config issue for cycle ratio tests - the path to the input file used in the test should be relative to the graph test subdirectory.
........
  r39772 | bemandawes | 2007-10-07 14:59:46 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Appy Godegear patches from Nicola Musatti. Ticket #1304
........
  r39773 | aaron_windsor | 2007-10-07 16:49:07 -0700 (Sun, 07 Oct 2007) | 1 line
  
  Adding some missing typenames
........
  r39774 | eric_niebler | 2007-10-07 17:44:52 -0700 (Sun, 07 Oct 2007) | 1 line
  
  add awesome number parser from Dave Jenkins
........
  r39776 | eric_niebler | 2007-10-07 18:15:01 -0700 (Sun, 07 Oct 2007) | 1 line
  
  fix warnings under msvc
........
  r39777 | anthonyw | 2007-10-08 00:18:27 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Use InterlockedCompareExchange when _ReadWriteBarrier not available
........
  r39778 | agurtovoy | 2007-10-08 01:06:15 -0700 (Mon, 08 Oct 2007) | 1 line
  
  MPL: more inclusive markup for the gcc 4.1 regression
........
  r39780 | anthonyw | 2007-10-08 02:48:57 -0700 (Mon, 08 Oct 2007) | 1 line
  
  added extended test for new call_once
........
  r39781 | anthonyw | 2007-10-08 02:55:56 -0700 (Mon, 08 Oct 2007) | 1 line
  
  call_once passes exceptions to caller and leaves flag unset
........
  r39784 | anthonyw | 2007-10-08 08:41:05 -0700 (Mon, 08 Oct 2007) | 1 line
  
  New mutex implementations, more akin to C++0x
........
  r39785 | anthonyw | 2007-10-08 08:44:13 -0700 (Mon, 08 Oct 2007) | 1 line
  
  added backwards-compatibility overload for call_once
........
  r39786 | eric_niebler | 2007-10-08 08:49:09 -0700 (Mon, 08 Oct 2007) | 1 line
  
  fix postinc/assign problem with case_converting_iterator
........
  r39787 | eric_niebler | 2007-10-08 08:57:04 -0700 (Mon, 08 Oct 2007) | 1 line
  
  doc tweaks
........
  r39788 | burbelgruff | 2007-10-08 09:35:06 -0700 (Mon, 08 Oct 2007) | 1 line
  
  [typeof] Updated failures list to include failing borland tests and some failing native tests
........
  r39789 | burbelgruff | 2007-10-08 09:37:01 -0700 (Mon, 08 Oct 2007) | 1 line
  
  [typeof] native typeof support added for the Digital Mars compiler (same as the typeof hack used for Visual C++)
........
  r39790 | eric_niebler | 2007-10-08 09:49:00 -0700 (Mon, 08 Oct 2007) | 1 line
  
  work around msvc-7.1 bug
........
  r39792 | johnmaddock | 2007-10-08 09:58:15 -0700 (Mon, 08 Oct 2007) | 2 lines
  
  Initial math-toolkit commit.
  Includes all code and tests, but no docs yet.
........
  r39793 | eric_niebler | 2007-10-08 10:12:56 -0700 (Mon, 08 Oct 2007) | 1 line
  
  better fix for case_converting_iterator as suggested by Steven Watanabe
........
  r39794 | eric_niebler | 2007-10-08 10:13:29 -0700 (Mon, 08 Oct 2007) | 1 line
  
  clean up gcc unused parameter warnings
........
  r39796 | burbelgruff | 2007-10-08 10:46:23 -0700 (Mon, 08 Oct 2007) | 1 line
  
  [typeof] testing for typeof hacks on all compilers
........
  r39805 | vladimir_prus | 2007-10-08 10:54:17 -0700 (Mon, 08 Oct 2007) | 1 line
  
  New changes
........
  r39812 | johnmaddock | 2007-10-08 11:03:19 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Initial commit of math-toolkit docs.
........
  r39817 | vladimir_prus | 2007-10-08 14:10:41 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Windows fix
........
  r39818 | vladimir_prus | 2007-10-08 14:13:05 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Windows fix
........
  r39819 | eric_niebler | 2007-10-08 14:14:14 -0700 (Mon, 08 Oct 2007) | 1 line
  
  escape accented character
........
  r39820 | vladimir_prus | 2007-10-08 14:28:09 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Windows fix
........
  r39821 | vladimir_prus | 2007-10-08 14:47:05 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Windows fix
........
  r39823 | eric_niebler | 2007-10-08 15:41:00 -0700 (Mon, 08 Oct 2007) | 1 line
  
  symbols docs, acknowledgement for dave j., doxygen tweaks
........
  r39826 | eric_niebler | 2007-10-08 16:48:25 -0700 (Mon, 08 Oct 2007) | 1 line
  
  fix warning
........
  r39828 | vladimir_prus | 2007-10-08 22:33:45 -0700 (Mon, 08 Oct 2007) | 2 lines
  
  Make NORMALIZE_PATH convert \ to /.
........
  r39829 | vladimir_prus | 2007-10-08 22:35:48 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Make it compile, even
........
  r39830 | vladimir_prus | 2007-10-08 22:38:31 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Make it work, for extra benefit ('=' vs '==' bug)
........
  r39831 | vladimir_prus | 2007-10-08 23:37:00 -0700 (Mon, 08 Oct 2007) | 1 line
  
  Attemp to fix searched_lib on windows
........
  r39832 | anthonyw | 2007-10-08 23:59:14 -0700 (Mon, 08 Oct 2007) | 1 line
  
  added missing move.hpp header
........
  r39833 | danieljames | 2007-10-09 00:19:30 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Output some info about a test failure when hashing function pointers.
........
  r39834 | johnmaddock | 2007-10-09 04:15:11 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Fix problem with GCC on Linux not finding std_real_concept overload for fmod.
........
  r39835 | johnmaddock | 2007-10-09 04:30:19 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Added HTML docs, changed some section names to shorten the file names produced.
........
  r39836 | anthonyw | 2007-10-09 05:23:09 -0700 (Tue, 09 Oct 2007) | 1 line
  
  fixed direction of conditional
........
  r39837 | johnmaddock | 2007-10-09 05:26:27 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Disabled long double support on some platforms.
........
  r39838 | anthonyw | 2007-10-09 05:45:46 -0700 (Tue, 09 Oct 2007) | 1 line
  
  fixed typo in pthread_cond_timedwait and ETIMEDOUT
........
  r39839 | anthonyw | 2007-10-09 07:08:22 -0700 (Tue, 09 Oct 2007) | 1 line
  
  fixed typo in pthread_cond_timedwait and ETIMEDOUT
........
  r39840 | garcia | 2007-10-09 07:28:42 -0700 (Tue, 09 Oct 2007) | 2 lines
  
  Exception review period has ended.
........
  r39841 | anthonyw | 2007-10-09 07:44:37 -0700 (Tue, 09 Oct 2007) | 1 line
  
  fixed more has-timed-lock backwards conditions
........
  r39842 | johnmaddock | 2007-10-09 07:49:04 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Changed call signatures to keep Borland happy.
........
  r39843 | johnmaddock | 2007-10-09 07:49:37 -0700 (Tue, 09 Oct 2007) | 1 line
  
  A few fixes to keep Borland happy.
........
  r39848 | bemandawes | 2007-10-09 09:39:13 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Apply dll fixes from David Deakins
........
  r39849 | igaztanaga | 2007-10-09 09:49:47 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Marked acc as n/a for Interprocess.
........
  r39850 | johnmaddock | 2007-10-09 10:16:58 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Added refactored docs for existing Boost.Math libraries.
........
  r39851 | johnmaddock | 2007-10-09 10:17:50 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Added refactored docs for existing Boost.Math libraries.
........
  r39852 | johnmaddock | 2007-10-09 10:25:30 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Added refactored docs for existing Boost.Math libraries.
........
  r39853 | eric_niebler | 2007-10-09 10:56:18 -0700 (Tue, 09 Oct 2007) | 1 line
  
  fix broken link to OASIS DocBook DTD
........
  r39854 | johnmaddock | 2007-10-09 11:11:17 -0700 (Tue, 09 Oct 2007) | 1 line
  
  More Borland workarounds.
........
  r39855 | johnmaddock | 2007-10-09 11:12:06 -0700 (Tue, 09 Oct 2007) | 1 line
  
  More Borland workarounds.
........
  r39863 | chris_kohlhoff | 2007-10-09 14:47:07 -0700 (Tue, 09 Oct 2007) | 2 lines
  
  Assume that HP-UX and AIX both need to have SIGPIPE blocked.
........
  r39864 | chris_kohlhoff | 2007-10-09 14:47:40 -0700 (Tue, 09 Oct 2007) | 3 lines
  
  HP-UX with aCC uses a variant of select() that takes int* arguments rather
  than fd_set*.
........
  r39865 | chris_kohlhoff | 2007-10-09 14:59:38 -0700 (Tue, 09 Oct 2007) | 3 lines
  
  Try changing the default target to Windows XP rather than Windows 2000 to see
  effect on borland-5.9.2.
........
  r39867 | eric_niebler | 2007-10-09 15:25:18 -0700 (Tue, 09 Oct 2007) | 1 line
  
  more user docs for semantic actions
........
  r39868 | eric_niebler | 2007-10-09 15:26:59 -0700 (Tue, 09 Oct 2007) | 1 line
  
  add xpressive::function<> for defining function objects for use in semantic actions
........
  r39869 | djowel | 2007-10-09 16:15:12 -0700 (Tue, 09 Oct 2007) | 1 line
  
  adding fusion
........
  r39870 | eric_niebler | 2007-10-09 18:46:53 -0700 (Tue, 09 Oct 2007) | 1 line
  
  fix buggy predicate_matcher and stomp more msvc warnings
........
  r39871 | aaron_windsor | 2007-10-09 19:18:37 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Trying to clear some errors from Sun CC.
........
  r39872 | hkaiser | 2007-10-09 19:25:35 -0700 (Tue, 09 Oct 2007) | 1 line
  
  Boost.Thread now depends on Boost.DateTime.
........
  r39873 | vladimir_prus | 2007-10-10 00:40:05 -0700 (Wed, 10 Oct 2007) | 4 lines
  
  Add values of variables specified with -s to .EVNRION
  module, so that we can override environment on
  command line.
........
  r39874 | schoepflin | 2007-10-10 00:42:19 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Disambiguate the identifier 'exception' and fix vector construction to make the test pass on Tru64/CXX.
........
  r39875 | schoepflin | 2007-10-10 01:21:36 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Blind shot trying to fix error blocking regression runs.
........
  r39876 | vladimir_prus | 2007-10-10 01:25:27 -0700 (Wed, 10 Oct 2007) | 2 lines
  
  New bjam.variable function exposed to Python.
........
  r39881 | johnmaddock | 2007-10-10 02:28:48 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Adjusted limits for Win64 and Sun OS.
........
  r39884 | johnmaddock | 2007-10-10 02:31:44 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Tentative Sunpro workaround.
........
  r39885 | joaquin | 2007-10-10 03:20:43 -0700 (Wed, 10 Oct 2007) | 1 line
  
  reverted 36306 for CW 8.3
........
  r39886 | vladimir_prus | 2007-10-10 03:23:20 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Add link to PythonPort page
........
  r39887 | vladimir_prus | 2007-10-10 03:35:07 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Fix URL
........
  r39890 | hkaiser | 2007-10-10 05:42:16 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Wave: Updated Jamfiles to include Boost.DateTime.
........
  r39891 | anthonyw | 2007-10-10 08:33:49 -0700 (Wed, 10 Oct 2007) | 1 line
  
  read_write_mutex makes a comeback --- as shared_mutex
........
  r39892 | bemandawes | 2007-10-10 08:49:32 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Fix date_time boo boo that was causing all regression tests to fail
........
  r39893 | johnmaddock | 2007-10-10 09:05:26 -0700 (Wed, 10 Oct 2007) | 7 lines
  
  Added Compaq CXX long long workaround to real_concept.hpp.
  Added missing forward declaration to ellint_1.hpp.
  Adjusted native log1p support for aCC.
  Removed bad forward declaration of fpclassify: correct declaration appears later in the file.
  Adjusted compile_test/test_compile_result.hpp to not return a NULL reference.
  Adjusted permitted error-limits for new platforms.
  Split some of the tests into smaller units so we don't get compiler timeouts when building (hopefully!)
........
  r39894 | hkaiser | 2007-10-10 09:44:29 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Wave: Fixed Jamfiles. 
........
  r39897 | eric_niebler | 2007-10-10 11:13:18 -0700 (Wed, 10 Oct 2007) | 1 line
  
  work around gcc bug in proto, add test for custom assertions, fix more gcc warnings
........
  r39898 | vladimir_prus | 2007-10-10 12:07:57 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Add logo, tweak the page
........
  r39899 | vladimir_prus | 2007-10-10 12:10:45 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Revert mistaken commit
........
  r39900 | johnmaddock | 2007-10-10 12:12:46 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Workaround for msvc+stlport.
........
  r39901 | vladimir_prus | 2007-10-10 12:18:25 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Upload logo, too
........
  r39902 | vladimir_prus | 2007-10-10 12:26:30 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Keep the logo
........
  r39903 | vladimir_prus | 2007-10-10 12:39:04 -0700 (Wed, 10 Oct 2007) | 1 line
  
  Doh. Fix link
........
  r39909 | eric_niebler | 2007-10-10 14:20:49 -0700 (Wed, 10 Oct 2007) | 1 line
  
  extra test for custom assertions, fix nasty bug in custom assertion handling
........
  r39913 | chris_kohlhoff | 2007-10-10 16:12:06 -0700 (Wed, 10 Oct 2007) | 2 lines
  
  Add a /dev/poll reactor implementation for Solaris.
........
  r39914 | eric_niebler | 2007-10-10 17:44:57 -0700 (Wed, 10 Oct 2007) | 1 line
  
  document user-defined assertions
........
  r39915 | eric_niebler | 2007-10-10 19:12:07 -0700 (Wed, 10 Oct 2007) | 1 line
  
  document placeholder<> and match_results<>::let()
........
  r39918 | schoepflin | 2007-10-11 00:36:41 -0700 (Thu, 11 Oct 2007) | 1 line
  
  Fixed bug preventing compilation on Tru64/CXX.
........
  r39921 | johnmaddock | 2007-10-11 03:51:10 -0700 (Thu, 11 Oct 2007) | 1 line
  
  Removed math docs from central build
........
  r39922 | joaquin | 2007-10-11 03:57:30 -0700 (Thu, 11 Oct 2007) | 77 lines
  
  Boost 1.35 version of Boost.MultiIndex
  allocator_utilities.hpp: added partial_std_allocator_wrapper::value_type
  composite_key.hpp: used hash_fwd.hpp
  auto_space.hpp: added support for non-standard allocators
  bidir_node_iterator.hpp: moved friend-injected operators out of class
  copy_map.hpp: added support for non-standard allocators
  hash_index_args.hpp: removed deprecated use of <boost/functional/hash/hash.hpp>
  hash_index_iterator.hpp: moved friend-injected operators our of class
  hash_index_node.hpp: added support for non-standard allocators
  header_holder.hpp:added support for non-standard allocators
  index_base.hpp: added support for non-standard allocators, added modify_rollback, added small improvement to modify
  index_loader.hpp: added support for non-standard allocators
  index_matcher.hpp: added support for non-standard allocators
  index_node_base.hpp: added support for non-standard allocators
  iter_adaptor.hpp: added some out-of-class operators to alleviate a MSVC++ 6.0 problem
  modify_key_adaptor.hpp: renamed some vars to accomudate broader usage scope
  node_type.hpp: added support for non-standard allocators
  ord_index_node.hpp: added support for non-standard allocators
  ord_index_ops.hpp: implemented a more efficient equal_range
  rnd_index_loader.hpp: added support for non-standard allocators
  rnd_index_node.hpp: added support for non-standard allocators
  rnd_index_ops.hpp: added support for non-standard allocators
  rnd_index_ptr_array.hpp: added support for non-standard allocators
  rnd_node_iterator.hpp: moved friend-injected operators out of class
  seq_index_node.hpp: added support for non-standard allocators
  seq_index_ops.hpp: added support for non-standard allocators
  uintptr_type.hpp: added support for __int64
  unbounded.hpp: fixed ODR problem
  value_compare.hpp: fixed a small unefficiency
  global_fun: initial commit
  hashed_index.hpp: added support for non-standard allocators, added c[r]{begin|end}, [local_]iterator_to, rollback modify
  identity_fwd.hpp: fixed wrong include guard name
  key_extractors.hpp: added global_fun
  mem_fun.hpp: removed superfluous =0's
  ordered_index.hpp: added support for non-standard allocators, added c[r]{begin|end}, iterator_to, rollback modify, improved equal_range and range, added conformance to DR 233
  random_access_index.hpp: added support for non-standard allocators, added c[r]{begin|end}, iterator_to, rollback modify, added conformance to 23.1.1/9
  sequenced_index.hpp: added support for non-standard allocators, added c[r]{begin|end}, iterator_to, rollback modify, added conformance to 23.1.1/9, improved resize
  multi_index_container.hpp: added support for non-standard allocators, improved ctor_args_list, rollback modify
  acknowledgements.html: added entry for Boost 1.35
  examples.html: renamed example 2, added B.IP example/composite_keys.cpp
  future_work.html: removed entry on bimap
  hash_indices.html: added c[r]{begin|end}, [local_]iterator_to, rollback modify
  reference/index.html: added global_fun
  reference/key_extraction.html: added global_fun, added technical correction
  multi_index_container.html: added support for non-standard allocators
  ord_indices.html: added c[r]{begin|end}, iterator_to, rollback modify
  rnd_indices.html: added c[r]{begin|end}, iterator_to, rollback modify
  seq_indices.html: added c[r]{begin|end}, iterator_to, rollback modify
  release_notes.html: added entry for Boost 1.35
  tests.html: added new serialization test file
  basics.html: added rollback modify
  creation.html: added support for non-standard allocators
  tutorial/indices.html: added iterator_to
  tutorial/key_extraction.html: added global_fun
  composite_keys.cpp: fixed technicality
  fun_key.cpp: was memfun_key.cpp, added global_fun
  ip_allocator.cpp: initial commit
  example/Jamfile.v2: renamed memfun_key, added ip_allocator
  test_perf.cpp: fixed technicality
  employee.hpp: used a non-standard allocator
  test/Jamfile.v2: added new test file
  non_std_allocator.hpp: initial commit
  pair_of_ints.hpp: added decrement facilities
  test_capacity.cpp: added extra check on resize
  test_copy_assignment.cpp: added test for 23.1.1/9
  test_iterators.cpp: added tests for c[r]{begin|end} and [local_]iterator_to, fixed technicality
  test_key_extractors.cpp: added tests for global_fun
  test_modifiers.cpp: added tests dor DR 233, fixed technicality
  test_range.cpp: added extra checks to secure range refactoring
  test_rearrange.cpp: fixed technicality
  test_serialization.cpp: added new test file
  test_serialization1.cpp: corrected include, used a non-standard allocator
  test_serialization2.cpp: corrected include, used a non-standard allocator, split some stuff ro test_serialization3.cpp
  test_serialization3.cpp: initial commit
  test_serialization3.hpp: initial commit
  test_serialization_template.hpp: removed some reliance on ADL
  test_update.cpp: addes tests for rollback modify, fixed technicality
........
  r39923 | joaquin | 2007-10-11 04:23:47 -0700 (Thu, 11 Oct 2007) | 2 lines
  
  def_ctor_tuple_cons.hpp: no longer used
  memfun_key.cpp: is now fun_key.cpp
........
  r39924 | johnmaddock | 2007-10-11 04:47:11 -0700 (Thu, 11 Oct 2007) | 1 line
  
  Added Boost.Math overview.
........
  r39925 | johnmaddock | 2007-10-11 04:51:19 -0700 (Thu, 11 Oct 2007) | 1 line
  
  Redirect to new index.
........
  r39926 | johnmaddock | 2007-10-11 05:05:29 -0700 (Thu, 11 Oct 2007) | 1 line
  
  Updated Math library entries.
........
  r39927 | garcia | 2007-10-11 07:51:48 -0700 (Thu, 11 Oct 2007) | 2 lines
  
  math toolkit has been added to the trunk.
........
  r39928 | johnmaddock | 2007-10-11 08:59:48 -0700 (Thu, 11 Oct 2007) | 1 line
  
  Fixed some typos, and rebuilt docs.
........
  r39933 | eric_niebler | 2007-10-11 10:02:13 -0700 (Thu, 11 Oct 2007) | 1 line
  
  new number parser example from dave jenkins
........
  r39934 | eric_niebler | 2007-10-11 10:05:35 -0700 (Thu, 11 Oct 2007) | 1 line
  
  remove self-adjusting TST optimization for thread-safety reasons
........
  r39935 | danieljames | 2007-10-11 10:12:24 -0700 (Thu, 11 Oct 2007) | 3 lines
  
  Try to fix function pointer hashing for the sun compiler. A bit of a stab in
  the dark.
........
  r39939 | danielw | 2007-10-11 13:37:37 -0700 (Thu, 11 Oct 2007) | 2 lines
  
  Added missing Py_INCREF(Py_None).
........
  r39941 | eric_niebler | 2007-10-11 13:50:59 -0700 (Thu, 11 Oct 2007) | 1 line
  
  add let() so regexes with late-bound action args can be used with regex_(token_)iterator
........
  r39944 | nmusatti | 2007-10-11 14:07:17 -0700 (Thu, 11 Oct 2007) | 1 line
  
  Updated to support C++Builder 2007 Update 3 (bcc32 5.9.2)
........
  r39945 | nmusatti | 2007-10-11 14:09:07 -0700 (Thu, 11 Oct 2007) | 1 line
  
  Updated to support C++Builder 2007 Update 3 (bcc32 5.9.2)
........
  r39946 | eric_niebler | 2007-10-11 14:12:22 -0700 (Thu, 11 Oct 2007) | 1 line
  
  add tests for late-bound action args with regex_(token_)iterator
........
  r39947 | eric_niebler | 2007-10-11 14:29:57 -0700 (Thu, 11 Oct 2007) | 1 line
  
  document use of let() with regex_(token_)iterator
........
  r39948 | eric_niebler | 2007-10-11 14:57:12 -0700 (Thu, 11 Oct 2007) | 1 line
  
  fix gcc warnings
........
  r39955 | eric_niebler | 2007-10-11 21:31:10 -0700 (Thu, 11 Oct 2007) | 1 line
  
  reenable self-adjusting TST if BOOST_DISABLE_THREADS is defined
........
  r39956 | eric_niebler | 2007-10-12 00:04:13 -0700 (Fri, 12 Oct 2007) | 1 line
  
  xpressive works with boost 1.34.1
........
  r39957 | igaztanaga | 2007-10-12 01:58:04 -0700 (Fri, 12 Oct 2007) | 1 line
  
  Corrected bug in atomic_dec32 for PPC
........
  r39958 | johnmaddock | 2007-10-12 03:01:36 -0700 (Fri, 12 Oct 2007) | 1 line
  
  Lots of Borland specific patches: quite a few of the special-function tests do now do actually pass.
........
  r39960 | danieljames | 2007-10-12 04:58:34 -0700 (Fri, 12 Oct 2007) | 5 lines
  
  Fix my botched attempt at supporting function pointers on Sun's compilers.
  Also, now only applies the workaround to function pointers, non-function
  pointers are treated as before. I might need to apply the special case to
  member function pointers as well.
........
  r39962 | igaztanaga | 2007-10-12 08:41:44 -0700 (Fri, 12 Oct 2007) | 1 line
  
  Fixed dispose_and_assign bug in list
........
  r39964 | eric_niebler | 2007-10-12 09:50:13 -0700 (Fri, 12 Oct 2007) | 1 line
  
  updated installation information
........
  r39971 | johnmaddock | 2007-10-13 09:23:18 -0700 (Sat, 13 Oct 2007) | 2 lines
  
  Fixed most of the remaining Borland issues, and removed dependency to Boost.Lambda.
  Added tentative fix for the Sunpro compilers.
........
  r39972 | danieljames | 2007-10-13 09:34:09 -0700 (Sat, 13 Oct 2007) | 11 lines
  
  New attempt at fixing the function pointer hash on the Sun compilers.
  
  I think I was barking up the wrong tree - it could be that when calling
  hash_value with a function pointer the compiler was choosing the
  hash_value(bool) overload over the hash_value(T*) overload, so instead I'm
  trying to call the correct one by giving it a template parameter. Another
  alternative would be to calculate the hash function inside boost::hash.
  
  Unfortunately, if I'm right, this means that other calls to hash_value will go
  wrong for function pointers.
........
  r39973 | johnmaddock | 2007-10-13 09:40:36 -0700 (Sat, 13 Oct 2007) | 2 lines
  
  Fixed image path in complex number docs.
  Suppressed draft mode in PDF generation (stops the FO renderer from grabbing draft.png from sourceforge).
........
  r39976 | grafik | 2007-10-13 10:25:41 -0700 (Sat, 13 Oct 2007) | 1 line
  
  Partial rework of regression scripts for branch independent testing.
........
  r39977 | danieljames | 2007-10-13 10:35:48 -0700 (Sat, 13 Oct 2007) | 3 lines
  
  Remove the pointles separation of the float tests into three functions
  (probably a throwback to when I used Boost.Test)
........
  r39978 | grafik | 2007-10-13 10:41:07 -0700 (Sat, 13 Oct 2007) | 1 line
  
  Partial rework of regression scripts for branch independent testing.
........
  r39979 | danieljames | 2007-10-13 10:47:57 -0700 (Sat, 13 Oct 2007) | 5 lines
  
  Separate the long double hash tests from the test for other float types. On
  some platforms the standard library has poor support for long doubles causing
  long doubles to fail when the others pass. So this makes it clearer that the
  problem is only for long doubles.
........
  r39982 | danieljames | 2007-10-13 10:57:23 -0700 (Sat, 13 Oct 2007) | 2 lines
  
  Oops, I messed the properties when adding files, this should hopefully fix them.
........
  r39983 | danieljames | 2007-10-13 11:34:25 -0700 (Sat, 13 Oct 2007) | 2 lines
  
  Add support for complex numbers to Boost.Hash
........
  r39984 | danieljames | 2007-10-13 11:47:10 -0700 (Sat, 13 Oct 2007) | 2 lines
  
  Fix the copyright line for the hash library.
........
  r39985 | danieljames | 2007-10-13 11:47:41 -0700 (Sat, 13 Oct 2007) | 1 line
  
  Use quickbook v1.4 for the hash library.
........
  r39986 | eric_niebler | 2007-10-13 14:16:23 -0700 (Sat, 13 Oct 2007) | 1 line
  
  update copyright year
........
  r39988 | vladimir_prus | 2007-10-13 14:32:51 -0700 (Sat, 13 Oct 2007) | 1 line
  
  Fix module messup when calling into Python.
........
  r39990 | eric_niebler | 2007-10-13 14:37:02 -0700 (Sat, 13 Oct 2007) | 1 line
  
  update copyright information
........
  r39991 | danieljames | 2007-10-13 14:50:05 -0700 (Sat, 13 Oct 2007) | 1 line
  
  Use a pragma for warnings in Visual C++.
........
  r39993 | danieljames | 2007-10-13 15:30:50 -0700 (Sat, 13 Oct 2007) | 1 line
  
  Clean up the hash tests a little.
........
  r39994 | danieljames | 2007-10-13 15:43:13 -0700 (Sat, 13 Oct 2007) | 1 line
  
  Add a trivial test to see if the deprecated hash headers compile okay when included.
........
  r40004 | danieljames | 2007-10-14 00:38:49 -0700 (Sun, 14 Oct 2007) | 2 lines
  
  Avoid some warnings when compiling the test with Visual C++.
........
  r40005 | vladimir_prus | 2007-10-14 01:03:50 -0700 (Sun, 14 Oct 2007) | 1 line
  
  Remove tools/release/user-config.jam that keeps confusing everybody.
........
  r40006 | vladimir_prus | 2007-10-14 02:09:41 -0700 (Sun, 14 Oct 2007) | 3 lines
  
  Better diagnostics when trying to import non-callable Python
  object to Jam.
........
  r40008 | vladimir_prus | 2007-10-14 02:55:41 -0700 (Sun, 14 Oct 2007) | 7 lines
  
     * common.jam (get-invocation-command): When
     we cannot find a specified tool, return
     tool's name so that the command line looks sane,
     even if it does not work.
     (handle-options): Report which command will
     be used, in debug mode.
........
  r40011 | bemandawes | 2007-10-14 05:40:10 -0700 (Sun, 14 Oct 2007) | 1 line
  
  Change svn info to svn info --xml to cope with non-English locales. Make scan for number insensitive to svn info --xml option.
........
  r40012 | johnmaddock | 2007-10-14 05:54:49 -0700 (Sun, 14 Oct 2007) | 4 lines
  
  Renamed two over-long files
  simplified test_compile_result.hpp so hopefully Sunpro can cope with it.
  Modified Jamfile to static link to regex lib on Sun.
  Adjusted Solaris expected error levels.
........
  r40014 | rogeeff | 2007-10-14 09:47:45 -0700 (Sun, 14 Oct 2007) | 1 line
  
  cleanup log
........
  r40015 | rogeeff | 2007-10-14 09:49:00 -0700 (Sun, 14 Oct 2007) | 1 line
  
  cleanup Tag comment
........
  r40018 | rogeeff | 2007-10-14 10:49:02 -0700 (Sun, 14 Oct 2007) | 1 line
  
  switch from non-portable warning to message
........
  r40019 | nmusatti | 2007-10-14 10:51:32 -0700 (Sun, 14 Oct 2007) | 1 line
  
  Applied patch from Ticket #1319
........
  r40020 | nmusatti | 2007-10-14 10:53:15 -0700 (Sun, 14 Oct 2007) | 1 line
  
  Applied patch from Ticket #1320
........
  r40021 | grafik | 2007-10-14 10:54:28 -0700 (Sun, 14 Oct 2007) | 1 line
  
  Add usage dependency on system library.
........
  r40023 | rogeeff | 2007-10-14 11:33:16 -0700 (Sun, 14 Oct 2007) | 1 line
  
  accessor to the reporter stream provided
........
  r40024 | rogeeff | 2007-10-14 11:56:23 -0700 (Sun, 14 Oct 2007) | 1 line
  
  increase max number of elems in fixed map
........
  r40025 | rogeeff | 2007-10-14 11:58:05 -0700 (Sun, 14 Oct 2007) | 3 lines
  
  2 new command line arguments (yet unused):
  --auto_start_dbg
  --use_alt_stack
........
  r40026 | rogeeff | 2007-10-14 12:23:14 -0700 (Sun, 14 Oct 2007) | 1 line
  
  typo in a comment
........
  r40027 | rogeeff | 2007-10-14 12:24:19 -0700 (Sun, 14 Oct 2007) | 1 line
  
  set init value for result
........
  r40028 | rogeeff | 2007-10-14 12:25:18 -0700 (Sun, 14 Oct 2007) | 1 line
  
  max macro guard
........
  r40029 | rogeeff | 2007-10-14 12:26:23 -0700 (Sun, 14 Oct 2007) | 1 line
  
  bug in output_test_stream constructor error generation fixed
........
  r40030 | rogeeff | 2007-10-14 12:27:32 -0700 (Sun, 14 Oct 2007) | 1 line
  
  avoid start/finish messages if log is disabled completely
........
  r40031 | rogeeff | 2007-10-14 12:28:46 -0700 (Sun, 14 Oct 2007) | 1 line
  
  Test module initialization error message is redirected into result reporter stream
........
  r40032 | rogeeff | 2007-10-14 12:29:59 -0700 (Sun, 14 Oct 2007) | 1 line
  
  typo in a comment
........
  r40033 | rogeeff | 2007-10-14 12:39:33 -0700 (Sun, 14 Oct 2007) | 1 line
  
  Log level enum value renamed
........
  r40035 | rogeeff | 2007-10-14 14:14:29 -0700 (Sun, 14 Oct 2007) | 6 lines
  
  Support for expected failures in test cases with automated registration reworked completely. It now allows to be used within auto-test-stuites. 
  framework API changed to return non const references to the test units to allow post creation modifications
  unit_test_suite.hpp dependency on framework.hpp removed
  inlined version includes all necessary files now
  in test_tools.hpp BOOST_TEST_DECL is added/removed where necessary
  Test suite auto registration modified to allow c++ namespace like behavior 
........
  r40036 | danieljames | 2007-10-14 14:52:12 -0700 (Sun, 14 Oct 2007) | 1 line
  
  Sun C++ didn't like the function call, so just try inlining the implementation for now.
........
  r40040 | joaquin | 2007-10-14 23:54:34 -0700 (Sun, 14 Oct 2007) | 1 line
  
  typo
........
  r40041 | anthonyw | 2007-10-15 02:18:32 -0700 (Mon, 15 Oct 2007) | 1 line
  
  added missing include to basic_timed_mutex.hpp
........
  r40046 | fmhess | 2007-10-15 06:06:26 -0700 (Mon, 15 Oct 2007) | 5 lines
  
  Fixed some invalid docbook (<para> is not allowed to be a child of
  <part>).  This fixes one of the failures when building pdf docs with
  fop 0.94.
........
  r40047 | fmhess | 2007-10-15 06:24:34 -0700 (Mon, 15 Oct 2007) | 4 lines
  
  Prevent the generation of empty <itemizedlist> elements, which is invalid
  docbook and causes apache fop 0.94 to choke and die.
........
  r40048 | fmhess | 2007-10-15 06:27:50 -0700 (Mon, 15 Oct 2007) | 4 lines
  
  Fixed a problem with boostbook printing an extra colon in the class 
  synopsis, when a class inherits from a single base class and it's too 
  long to fit on one line.
........
  r40049 | fmhess | 2007-10-15 06:43:00 -0700 (Mon, 15 Oct 2007) | 9 lines
  
  Updated setup_boostbook scripts to download newer versions of apache fop
  and docbook xsl, since the old versions are no longer posted for download.
  The newer version of apache fop is stricter about its input, 
  and currently fails to validate its input when trying to build boost.pdf, 
  due to various bits on invalid docbook.  I have it working locally
  though, and will create tickets with patches in trac for the remaining
  issues in the library docs and tools.
........
  r40050 | fmhess | 2007-10-15 06:46:23 -0700 (Mon, 15 Oct 2007) | 4 lines
  
  Stop quickbook from generating empty <calloutlist> 
  elements (which is invalid docbook and causes apache fop 0.94 to 
  choke and die).
........
  r40051 | bemandawes | 2007-10-15 07:50:59 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Suppress message tests on Windows unless the language is US English
........
  r40052 | grafik | 2007-10-15 07:53:28 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Rework of regression scripts for branch independent testing -- complete.
........
  r40053 | grafik | 2007-10-15 08:45:25 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Bootstrap from trunk sources of regression scripts.
........
  r40056 | joaquin | 2007-10-15 09:10:39 -0700 (Mon, 15 Oct 2007) | 1 line
  
  added missing #include
........
  r40058 | igaztanaga | 2007-10-15 09:55:23 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Fixed doxygen error in reference
........
  r40059 | igaztanaga | 2007-10-15 09:56:27 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Added missing include
........
  r40060 | igaztanaga | 2007-10-15 09:57:15 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Fixed assignment operator
........
  r40061 | johnmaddock | 2007-10-15 09:57:57 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Disregard ".svn" directories
........
  r40062 | igaztanaga | 2007-10-15 09:58:15 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Changed wrong insert_after_and_dispose() with insert_after
........
  r40063 | danieljames | 2007-10-15 11:47:05 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Mark up the expected hash error for the sun compilers.
........
  r40064 | grafik | 2007-10-15 14:54:01 -0700 (Mon, 15 Oct 2007) | 1 line
  
  Add default to 'regression' when no commands are given.
........
  r40065 | rogeeff | 2007-10-15 19:01:39 -0700 (Mon, 15 Oct 2007) | 1 line
  
  avoid warnings
........
  r40066 | rogeeff | 2007-10-15 19:02:16 -0700 (Mon, 15 Oct 2007) | 1 line
  
  msvc 6.5 port
........
  r40067 | rogeeff | 2007-10-15 19:03:16 -0700 (Mon, 15 Oct 2007) | 1 line
  
  proper report for the exceptions in inti_unit_test_suite function
........
  r40068 | rogeeff | 2007-10-15 20:47:24 -0700 (Mon, 15 Oct 2007) | 1 line
  
  use io_saver directly
........
  r40069 | rogeeff | 2007-10-15 20:51:54 -0700 (Mon, 15 Oct 2007) | 2 lines
  
  unified test runner interface for both original and alternative init API, the same time streamlining error handling for all the cases
  new property p_enabled is added to  the test unit in preparation for the run by name
........
  r40076 | rogeeff | 2007-10-16 00:06:10 -0700 (Tue, 16 Oct 2007) | 1 line
  
  fix A bug in auto TC exp failure support
........
  r40077 | rogeeff | 2007-10-16 00:07:43 -0700 (Tue, 16 Oct 2007) | 1 line
  
  temporary disable debug related features - to be reverted soon
........
  r40078 | rogeeff | 2007-10-16 00:18:10 -0700 (Tue, 16 Oct 2007) | 9 lines
  
  Major rework of execution monitor functionality:
  update to the error reporting on both NT and *nix
  support for signal handling on alternative stack
  execution monitor parameter made public properties
  structured exception handling moved to double __try approach with custom SE filter
  support for floating point errors enhanced on NT based compilers
  Notion of system_error is introduced (to be replaced potentially with boost::system later on)
  Invalid parameter error detected by MSVC runtime properly reported
  report_error implemented using vsnprintf allowing better output
........
  r40079 | johnmaddock | 2007-10-16 02:32:28 -0700 (Tue, 16 Oct 2007) | 2 lines
  
  Fixed lots of "inspect" issues: bad hyperlinks, tabs in source and missing licenses.
  Tweaked some error levels again.
........
  r40080 | anthonyw | 2007-10-16 04:08:17 -0700 (Tue, 16 Oct 2007) | 1 line
  
  removed lock_ops as no longer needed
........
  r40082 | igaztanaga | 2007-10-16 08:25:13 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Tru64 re-enabled for intrusive to try to solve remaining issues
........
  r40083 | johnmaddock | 2007-10-16 08:41:57 -0700 (Tue, 16 Oct 2007) | 2 lines
  
  Fixes for the Sun-5.9 compiler: don't try and encode constants smaller than LDBL_MIN, the compiler chokes on it.
  Fixes for STLport: long double stream operators are broken (streaming in appears not to work at all, streaming out can segfault if the value is too small).
........
  r40084 | grafik | 2007-10-16 08:52:38 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Minor modification to pass in the branch type to generate results for, and to move the boost checkout to the root dir.
........
  r40086 | johnmaddock | 2007-10-16 09:11:30 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Fully qualified use of "extended" flag, to keep gcc on Solaris happy.
........
  r40087 | johnmaddock | 2007-10-16 09:15:38 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Update for Borland 5.8.2 and 5.9.2.
........
  r40088 | niels_dekker | 2007-10-16 10:00:28 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Disabled MSVC warning C4345, in response to Gennadiy Rozental, Boost Developer mailing list, "[utility] value_init warning", October 14, 2007.  Push'n'pop reminder from Paul A Bristow taken into account.
........
  r40089 | niels_dekker | 2007-10-16 10:06:39 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Added value_initialized<T> test, having T as aggregate POD struct. In the past, this would have triggered MSVC warning C4345; this warning is now disabled within value_init.hpp, changeset [40088]
........
  r40090 | rogeeff | 2007-10-16 10:11:00 -0700 (Tue, 16 Oct 2007) | 1 line
  
  cygwin issue fix
........
  r40091 | eric_niebler | 2007-10-16 10:15:44 -0700 (Tue, 16 Oct 2007) | 1 line
  
  cleanup
........
  r40094 | eric_niebler | 2007-10-16 12:07:12 -0700 (Tue, 16 Oct 2007) | 1 line
  
  reverted to r40064
........
  r40095 | grafik | 2007-10-16 12:08:58 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Allow specifying options with quotes, i.e. "--with-python=xyz", to work around the CMD shell using "=" as an argument separator.
........
  r40096 | grafik | 2007-10-16 13:05:35 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Specify user to post results to OSL server.
........
  r40098 | guwi17 | 2007-10-16 14:48:01 -0700 (Tue, 16 Oct 2007) | 2 lines
  
  - added section "nested products"
........
  r40099 | bemandawes | 2007-10-16 15:05:29 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Add failure count for each compiler column.
........
  r40100 | eric_niebler | 2007-10-16 15:13:11 -0700 (Tue, 16 Oct 2007) | 1 line
  
  revert more boost.test changes
........
  r40101 | danieljames | 2007-10-16 16:25:37 -0700 (Tue, 16 Oct 2007) | 1 line
  
  Remove the free-function-groups from the hash reference documentation, they were causing the functions to be listed on the documentation for every specialization of boost::hash<T>, and the functions to be described on the main synopsis page, instead of their own page.
........
  r40103 | eric_niebler | 2007-10-16 21:26:36 -0700 (Tue, 16 Oct 2007) | 1 line
  
  misc cleann-up from Dave Jenkins
........
  r40104 | chris_kohlhoff | 2007-10-16 21:44:38 -0700 (Tue, 16 Oct 2007) | 2 lines
  
  Revert HP-UX/aCC change to select() wrapper as it breaks more than it fixes.
........
  r40106 | chris_kohlhoff | 2007-10-16 22:22:26 -0700 (Tue, 16 Oct 2007) | 2 lines
  
  Borland C++ wants friendship for the task_cleanup nested class.
........
  r40107 | chris_kohlhoff | 2007-10-17 00:25:03 -0700 (Wed, 17 Oct 2007) | 2 lines
  
  Throw an exception if unable to create a pipe for the pipe_select_interrupter.
........
  r40108 | chris_kohlhoff | 2007-10-17 00:58:38 -0700 (Wed, 17 Oct 2007) | 3 lines
  
  Make Windows XP the default target Windows version as the latest Windows
  SDK doesn't support IPv6 for Windows 2000 targets.
........
  r40109 | chris_kohlhoff | 2007-10-17 01:20:30 -0700 (Wed, 17 Oct 2007) | 2 lines
  
  Add define to disable /dev/poll support.
........
  r40110 | johnmaddock | 2007-10-17 02:19:35 -0700 (Wed, 17 Oct 2007) | 1 line
  
  Change #warning to #pragma message: #warning is a gcc-ism and the code in question is msvc-specific (Tested on all msvc variants, plus gcc-minw32).
........
  r40117 | johnmaddock | 2007-10-17 05:58:55 -0700 (Wed, 17 Oct 2007) | 1 line
  
  Disable FOP1 extensions so we can build with xep extensions instead.
........
  r40119 | chris_kohlhoff | 2007-10-17 07:04:42 -0700 (Wed, 17 Oct 2007) | 3 lines
  
  Add dummy enum for ssl errors. Change to static const references to error
  category objects to be consistent with boost.system.
........
  r40124 | igaztanaga | 2007-10-17 08:40:41 -0700 (Wed, 17 Oct 2007) | 1 line
  
  Added <algorithm> include. Erased wrong "non" word in swap members' Throws clause.
........
  r40128 | johnmaddock | 2007-10-17 10:15:53 -0700 (Wed, 17 Oct 2007) | 1 line
  
  Updates to build system: Sun and SGI compilers have a problem doing a shared link, and some platforms don't have an icudata library.
........
  r40129 | eric_niebler | 2007-10-17 10:21:01 -0700 (Wed, 17 Oct 2007) | 1 line
  
  mark up expected xpressive failures on acc toolset
........
  r40130 | danieljames | 2007-10-17 10:27:42 -0700 (Wed, 17 Oct 2007) | 1 line
  
  Include authors that are in authorgroups in the generated chapterinfo.
........
  r40131 | danieljames | 2007-10-17 10:29:46 -0700 (Wed, 17 Oct 2007) | 1 line
  
  Merge some minor changes from the development branch to remove some unnecessary differences.
........
  r40146 | joaquin | 2007-10-17 23:57:25 -0700 (Wed, 17 Oct 2007) | 1 line
  
  applied workaround for MSVC++ 6.5/7.0 problem with static constants inside templates, see http://lists.boost.org/Archives/boost/2007/10/128392.php
........
  r40147 | rogeeff | 2007-10-18 00:13:43 -0700 (Thu, 18 Oct 2007) | 1 line
  
  try run
........
  r40148 | rogeeff | 2007-10-18 00:14:56 -0700 (Thu, 18 Oct 2007) | 3 lines
  
  fixed issue with num of exp failure calculation 
  mwerks port in execution_monitor.ipp
  bug in init function invocation fixed
........
  r40149 | chris_kohlhoff | 2007-10-18 01:34:03 -0700 (Thu, 18 Oct 2007) | 2 lines
  
  Assume that Tru64 also needs SIGPIPE to be blocked.
........
  r40155 | johnmaddock | 2007-10-18 08:37:01 -0700 (Thu, 18 Oct 2007) | 3 lines
  
  Workaround for real_concept when there are no long double math functions.
  Added HP-UX on PA RISC to list of platforms with no long double overloads.
  Added macro expansion suppression code to declarations of sign and to it's usages (an AIX fix).
........
  r40156 | grafik | 2007-10-18 09:11:41 -0700 (Thu, 18 Oct 2007) | 1 line
  
  Fix build system error when Python is not configured, without preventing the BPL target from being declared. Instead the target is now unbuildable, and will be skipped when Python is not configured.
........
  r40159 | igaztanaga | 2007-10-18 09:20:28 -0700 (Thu, 18 Oct 2007) | 1 line
  
  Added atomic operations for alpha processors
........
  r40160 | vladimir_prus | 2007-10-18 09:53:01 -0700 (Thu, 18 Oct 2007) | 1 line
  
  Enable index for Boost.Build standalone docs.
........
  r40162 | johnmaddock | 2007-10-18 11:17:15 -0700 (Thu, 18 Oct 2007) | 1 line
  
  Fixed some links and merged changes in the Sandbox to here.
........
  r40165 | rogeeff | 2007-10-18 14:43:35 -0700 (Thu, 18 Oct 2007) | 2 lines
  
  FP exceptions made optional and disabled by default
  new CLA --detect_fp_exceptions=[yes|no] introduced
........
  r40166 | rogeeff | 2007-10-18 14:53:14 -0700 (Thu, 18 Oct 2007) | 1 line
  
  included alias added
........
  r40167 | aaron_windsor | 2007-10-18 17:16:36 -0700 (Thu, 18 Oct 2007) | 1 line
  
  Un-asserted two function calls - this was causing the function calls to turn into no-ops when the example was compiled with debugging off.
........
  r40172 | rogeeff | 2007-10-18 19:17:52 -0700 (Thu, 18 Oct 2007) | 1 line
  
  msvc 6.5 port fix
........
  r40173 | eric_niebler | 2007-10-18 20:16:51 -0700 (Thu, 18 Oct 2007) | 1 line
  
  don't copy singular iterator in sub_match, misc clean-up
........
  r40174 | vladimir_prus | 2007-10-19 00:00:03 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Add indexterms for glob-tree and install-source-root.
........
  r40176 | chris_kohlhoff | 2007-10-19 01:09:55 -0700 (Fri, 19 Oct 2007) | 2 lines
  
  Add get_io_service() synonym for io_service() to match TR2 proposal.
........
  r40178 | schoepflin | 2007-10-19 02:06:04 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Detailed OSF detection macro to include the compiler used.
........
  r40179 | schoepflin | 2007-10-19 02:52:23 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Added missing include file.
........
  r40180 | danieljames | 2007-10-19 02:55:10 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Fix the deprecated warnings on Borland, should also check before using #warning.
........
  r40181 | johnmaddock | 2007-10-19 05:03:54 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Add needed config options.
........
  r40183 | johnmaddock | 2007-10-19 05:30:46 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Added revision ID.
........
  r40184 | johnmaddock | 2007-10-19 05:46:54 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Update configure files with revision Id and some compiler specific fixes.
........
  r40186 | schoepflin | 2007-10-19 07:45:06 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Added support for Tru64/CXX.
........
  r40187 | anthonyw | 2007-10-19 07:52:52 -0700 (Fri, 19 Oct 2007) | 1 line
  
  small changes to reduce warnings; extracted pthread_mutex_scoped_lock to its own file
........
  r40188 | igaztanaga | 2007-10-19 07:54:18 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Fixed newline issue between two [endsect].
........
  r40189 | anthonyw | 2007-10-19 08:31:35 -0700 (Fri, 19 Oct 2007) | 1 line
  
  more tweaks to remove warnings
........
  r40191 | anthonyw | 2007-10-19 10:40:04 -0700 (Fri, 19 Oct 2007) | 1 line
  
  New condition_variable and condition_variable_any as per proposed C++0x interface
........
  r40192 | bemandawes | 2007-10-19 10:43:44 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Initial commit
........
  r40193 | johnmaddock | 2007-10-19 10:55:44 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Adjust ICU build support: almost works now :-)
........
  r40194 | turkanis | 2007-10-19 11:09:54 -0700 (Fri, 19 Oct 2007) | 1 line
  
  updated turkanis email address (iostreams + rational)
........
  r40196 | vladimir_prus | 2007-10-19 12:16:10 -0700 (Fri, 19 Oct 2007) | 1 line
  
  Remove unused code
........
  r40197 | vladimir_prus | 2007-10-19 12:18:32 -0700 (Fri, 19 Oct 2007) | 2 lines
  
  Remove project-target.intern-constants as unused.
........
  r40203 | rogeeff | 2007-10-19 22:38:57 -0700 (Fri, 19 Oct 2007) | 1 line
  
  borland port
........
  r40204 | rogeeff | 2007-10-19 23:59:27 -0700 (Fri, 19 Oct 2007) | 1 line
  
  intel port
........
  r40205 | johnmaddock | 2007-10-20 02:20:30 -0700 (Sat, 20 Oct 2007) | 1 line
  
  Removed ICU options from main requirements: BBv2 barfs at it.
........
  r40206 | danieljames | 2007-10-20 03:31:58 -0700 (Sat, 20 Oct 2007) | 2 lines
  
  Try to only issue deprecation warnings on compilers that support them.
........
  r40208 | djowel | 2007-10-20 04:01:50 -0700 (Sat, 20 Oct 2007) | 1 line
  
  refactoring for v2.1
........
  r40209 | djowel | 2007-10-20 04:31:03 -0700 (Sat, 20 Oct 2007) | 1 line
  
  phase2: refactoring for v2.1
........
  r40210 | djowel | 2007-10-20 04:49:17 -0700 (Sat, 20 Oct 2007) | 1 line
  
  phase3: refactoring for v2.1
........
  r40211 | djowel | 2007-10-20 04:50:27 -0700 (Sat, 20 Oct 2007) | 1 line
  
  phase3: refactoring for v2.1
........
  r40212 | djowel | 2007-10-20 06:13:46 -0700 (Sat, 20 Oct 2007) | 1 line
  
  phase4: refactoring for v2.1
........
  r40213 | djowel | 2007-10-20 06:13:58 -0700 (Sat, 20 Oct 2007) | 1 line
  
  phase4: refactoring for v2.1
........
  r40214 | johnmaddock | 2007-10-20 09:30:01 -0700 (Sat, 20 Oct 2007) | 1 line
  
  ICU libraries are only available as shared libraries.
........
  r40215 | grafik | 2007-10-20 09:35:58 -0700 (Sat, 20 Oct 2007) | 1 line
  
  Do not refer to nonexistent target when python is not configured.
........
  r40216 | grafik | 2007-10-20 09:36:18 -0700 (Sat, 20 Oct 2007) | 1 line
  
  Do not refer to nonexistent target when python is not configured.
........
  r40219 | djowel | 2007-10-20 15:21:43 -0700 (Sat, 20 Oct 2007) | 1 line
  
  reverting to 2.0
........
  r40220 | djowel | 2007-10-20 15:33:52 -0700 (Sat, 20 Oct 2007) | 1 line
  
  reverting to 2.0
........
  r40233 | danieljames | 2007-10-20 17:41:01 -0700 (Sat, 20 Oct 2007) | 2 lines
  
  Don't test long double in hash_number_test. This is a bit of a cop out, but it's silly to fail this test just because a platform has poor support for long double - hash_long_double_test is thorough enough.
........
  r40236 | danieljames | 2007-10-20 17:51:43 -0700 (Sat, 20 Oct 2007) | 6 lines
  
  Markup test that fail because of poor long double support.
  
  gcc-3.4.3_sunos doesn't seem to be tested any more, but I'll leave it in.
  PA Risc has a software long double which doesn't seem to be very well supported
  by the standard library functions.
........
  r40241 | chris_kohlhoff | 2007-10-20 18:48:03 -0700 (Sat, 20 Oct 2007) | 3 lines
  
  Ensure the buffers and completion condition objects are destroyed before
  the completion handler is invoked.
........
  r40255 | chris_kohlhoff | 2007-10-20 22:46:15 -0700 (Sat, 20 Oct 2007) | 3 lines
  
  HP-UX fails to declare if_nametoindex and if_indextoname as extern "C".
  Added declarations for them with correct linkage to avoid linker errors.
........
  r40256 | chris_kohlhoff | 2007-10-20 22:46:47 -0700 (Sat, 20 Oct 2007) | 2 lines
  
  Documentation fixes.
........
  r40259 | chris_kohlhoff | 2007-10-21 00:09:19 -0700 (Sun, 21 Oct 2007) | 4 lines
  
  On HP-UX use pselect() rather than select() to avoid weirdness where
  different select() prototypes are declared depending on the order the
  system headers are included.
........
  r40261 | chris_kohlhoff | 2007-10-21 00:30:04 -0700 (Sun, 21 Oct 2007) | 2 lines
  
  Use an unsigned char for the enable_loopback socket option on HP-UX.
........
  r40262 | chris_kohlhoff | 2007-10-21 00:59:53 -0700 (Sun, 21 Oct 2007) | 2 lines
  
  Seems that the watermark socket options are supported on HP-UX 11i v3.
........
  r40263 | chris_kohlhoff | 2007-10-21 01:13:21 -0700 (Sun, 21 Oct 2007) | 2 lines
  
  Fix address_v6::operator<.
........
  r40264 | danieljames | 2007-10-21 01:36:47 -0700 (Sun, 21 Oct 2007) | 2 lines
  
  New algorithm for hash floating point numbers.
........
  r40265 | igaztanaga | 2007-10-21 01:49:42 -0700 (Sun, 21 Oct 2007) | 1 line
  
  Solved Doxygen bug
........
  r40267 | igaztanaga | 2007-10-21 02:01:16 -0700 (Sun, 21 Oct 2007) | 1 line
  
  Doxygen bug workaround. Corrected Solaris errors. Experimental grow/shrink_to_fit for managed_shared_memory and managed_mapped_file.
........
  r40268 | igaztanaga | 2007-10-21 02:02:23 -0700 (Sun, 21 Oct 2007) | 1 line
  
  Doxygen bug workaround. Corrected Solaris errors. Experimental grow/shrink_to_fit for managed_shared_memory and managed_mapped_file.
........
  r40269 | johnmaddock | 2007-10-21 09:02:34 -0700 (Sun, 21 Oct 2007) | 1 line
  
  Use __hppa to detect HP-UX on PA-RISC.
........
  r40270 | rogeeff | 2007-10-21 13:53:56 -0700 (Sun, 21 Oct 2007) | 3 lines
  
  Missing header in exception_safety.hpp
  Run by name support
  new tools BOOST_CHECK_NE, BOOST_CHECK_LE, BOOST_CHECK_LT, BOOST_CHECK_GE, BOOST_CHECK_GT implemented
........
  r40271 | rogeeff | 2007-10-21 13:59:15 -0700 (Sun, 21 Oct 2007) | 6 lines
  
  correct run rules in examples
  make example 2 more pronounced
  removed unnecessary ; in example 4 and 5
  new alias test in test directory
  msvc 6.5 should use static lib
  test case for new tools added
........
  r40272 | rogeeff | 2007-10-21 17:36:26 -0700 (Sun, 21 Oct 2007) | 1 line
  
  clean up
........
  r40273 | rogeeff | 2007-10-21 21:02:53 -0700 (Sun, 21 Oct 2007) | 3 lines
  
  added missing export for framework::get
  added line number to the name of the TU registrar, allowing to restart test suites within same module
  test_suite::size() implemented to provide an access to the suite size
........
  r40274 | rogeeff | 2007-10-21 21:09:01 -0700 (Sun, 21 Oct 2007) | 1 line
  
  new unit test: test_tree_management_test.cpp
........
  r40276 | rogeeff | 2007-10-21 23:36:50 -0700 (Sun, 21 Oct 2007) | 4 lines
  
  framework::is_initialized introduced to catch framework misuse errors
  Message report too few failed assertions updated
  New message added to report no assertion occurred in a test case 
  test_suite::remove interface is added to allow remove test units from the test suite if necessary
........
  r40277 | schoepflin | 2007-10-22 00:54:08 -0700 (Mon, 22 Oct 2007) | 1 line
  
  Fix compilation.
........
  r40278 | johnmaddock | 2007-10-22 01:43:52 -0700 (Mon, 22 Oct 2007) | 1 line
  
  Skip some "impossible" vc8 targets.
........
  r40280 | rogeeff | 2007-10-22 04:11:51 -0700 (Mon, 22 Oct 2007) | 1 line
  
  correct patterns
........
  r40281 | johnmaddock | 2007-10-22 04:16:15 -0700 (Mon, 22 Oct 2007) | 2 lines
  
  Added Bjorn Roald's patches to enable scans of svn.
  Updated docs accordingly.
........
  r40282 | fmhess | 2007-10-22 06:17:19 -0700 (Mon, 22 Oct 2007) | 4 lines
  
  Eliminated the possibility of empty <variablelist> elements in enum 
  references (invalid docbook, apache fop doesn't like it).
........
  r40284 | joaquin | 2007-10-22 07:50:08 -0700 (Mon, 22 Oct 2007) | 2 lines
  
  extended MSVC 6.5 fix to Intel
........
  r40285 | igaztanaga | 2007-10-22 08:20:21 -0700 (Mon, 22 Oct 2007) | 1 line
  
  Marked (temporarily) win64 toolsets unusable for Interprocess
........
  r40288 | johnmaddock | 2007-10-22 09:14:02 -0700 (Mon, 22 Oct 2007) | 1 line
  
  Simplified regex usage.
........
  r40289 | vladimir_prus | 2007-10-22 09:45:49 -0700 (Mon, 22 Oct 2007) | 2 lines
  
  Add missing Py_INCREF on Py_None objects.
........
  r40292 | joaquin | 2007-10-22 10:22:46 -0700 (Mon, 22 Oct 2007) | 1 line
  
  guarded some static asserts in project() funs from Sun C++ 5.7
........
  r40293 | johnmaddock | 2007-10-22 10:46:40 -0700 (Mon, 22 Oct 2007) | 1 line
  
  Added support for _WIN32_WCE.
........
  r40294 | johnmaddock | 2007-10-22 10:48:51 -0700 (Mon, 22 Oct 2007) | 3 lines
  
  Disabled intrinsic type traits testing for SGI compiler.
  Disabled one is_convertible test for aCC on PA RISC.
  Disabled some tests in promote_basic_test.cpp for more platforms that have broken WCHAR_MAX macros.
........
  r40295 | johnmaddock | 2007-10-22 10:53:05 -0700 (Mon, 22 Oct 2007) | 1 line
  
  IBM xlc++ has support for TR1 when __IBMCPP_TR1__ is defined.
........
  r40299 | dgregor | 2007-10-22 12:37:05 -0700 (Mon, 22 Oct 2007) | 3 lines
  
  Fix warnings from GCC 4.3. Fixes #1337
........
  r40300 | dgregor | 2007-10-22 12:54:54 -0700 (Mon, 22 Oct 2007) | 4 lines
  
  Suppress a GCC 4.3 warning and fix a couple header-inclusion issues.
  
  Fixes #1338
........
  r40301 | eric_niebler | 2007-10-22 13:14:11 -0700 (Mon, 22 Oct 2007) | 1 line
  
  needed typeof registrations, from David Jenkins
........
  r40302 | nesotto | 2007-10-22 13:26:51 -0700 (Mon, 22 Oct 2007) | 1 line
  
  added copyability to all containers
........
  r40306 | nesotto | 2007-10-22 15:50:52 -0700 (Mon, 22 Oct 2007) | 4 lines
  
  minor refactorings to support copyability etc
........
  r40307 | nesotto | 2007-10-22 15:51:42 -0700 (Mon, 22 Oct 2007) | 1 line
  
  update of test to try copyability
........
  r40310 | eric_niebler | 2007-10-22 17:40:16 -0700 (Mon, 22 Oct 2007) | 1 line
  
  fix problem with ->* rewrite in actions, add x->*y as alias for y(x)
........
  r40322 | rogeeff | 2007-10-22 20:44:01 -0700 (Mon, 22 Oct 2007) | 1 line
  
  streamlined handling of SIGPOLL
........
  r40323 | bgubenko | 2007-10-22 20:44:33 -0700 (Mon, 22 Oct 2007) | 1 line
  
  fix typo in rev. 40321
........
  r40338 | rogeeff | 2007-10-22 22:25:42 -0700 (Mon, 22 Oct 2007) | 1 line
  
  update to tests and example
........
  r40342 | eric_niebler | 2007-10-23 00:01:53 -0700 (Tue, 23 Oct 2007) | 1 line
  
  clean-up, actionable need not be a template
........
  r40344 | chris_kohlhoff | 2007-10-23 01:09:21 -0700 (Tue, 23 Oct 2007) | 2 lines
  
  Only use pselect() when compiling with aCC.
........
  r40345 | chris_kohlhoff | 2007-10-23 01:09:46 -0700 (Tue, 23 Oct 2007) | 2 lines
  
  Documentation fixes.
........
  r40346 | schoepflin | 2007-10-23 01:20:26 -0700 (Tue, 23 Oct 2007) | 2 lines
  
  Now that intrusive is working, enable the interprocess library for Tru64/CXX.
........
  r40347 | schoepflin | 2007-10-23 01:26:51 -0700 (Tue, 23 Oct 2007) | 3 lines
  
  Toolsets tru64cxx* have long been renamed to hp_cxx-*_tru64; removed markup
  obsoleted by the rename.
........
  r40348 | anthonyw | 2007-10-23 01:57:17 -0700 (Tue, 23 Oct 2007) | 1 line
  
  platform split for pthread and win32 builds so can use pthread-win32 library on Windows with <thrd-api>pthread feature; new C++0x-alike thread class interface on win32.
........
  r40349 | johnmaddock | 2007-10-23 02:34:40 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Ooops, put preprocessor logic in the right place!
........
  r40352 | bemandawes | 2007-10-23 06:00:18 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Rename posix, windows, Linux, and cygwin namespaces to conform with C++ std.
........
  r40353 | johnmaddock | 2007-10-23 06:10:32 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Removed redundant #define.
........
  r40354 | t_schwinger | 2007-10-23 06:25:57 -0700 (Tue, 23 Oct 2007) | 3 lines
  
  removes dependencies to MPL intrinsics (removes top-level cv-qualifiers from element types, now)
........
  r40355 | t_schwinger | 2007-10-23 06:26:56 -0700 (Tue, 23 Oct 2007) | 3 lines
  
  adjusts test: deduce_sequence removes top-level cv-qualifiers from element types, now
........
  r40356 | chris_kohlhoff | 2007-10-23 06:31:12 -0700 (Tue, 23 Oct 2007) | 2 lines
  
  Clean up documentation.
........
  r40359 | djowel | 2007-10-23 06:39:15 -0700 (Tue, 23 Oct 2007) | 1 line
  
  remove superfluous include
........
  r40360 | bemandawes | 2007-10-23 08:04:43 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Fix linux_errno misspelling
........
  r40361 | igaztanaga | 2007-10-23 08:48:08 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Marked win64 toolsets again for testing in Interprocess
........
  r40363 | igaztanaga | 2007-10-23 10:46:36 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Temporary hack to avoid compilation errors in operator->()
........
  r40364 | igaztanaga | 2007-10-23 10:47:49 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Corrected error in create_from_istream
........
  r40365 | dgregor | 2007-10-23 11:16:57 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Fix SIGPOLL and sigemptyset handling on Darwin
........
  r40367 | nesotto | 2007-10-23 11:36:03 -0700 (Tue, 23 Oct 2007) | 1 line
  
  added test for char array with nested null in response to Ticket #471
........
  r40370 | nesotto | 2007-10-23 11:59:11 -0700 (Tue, 23 Oct 2007) | 2 lines
  
  applied patch from Ticket #1302 (new Patches) to handle char arrays correctly
........
  r40371 | nesotto | 2007-10-23 12:06:39 -0700 (Tue, 23 Oct 2007) | 1 line
  
  change names of ADL functions back to 1.34 names ... the old names have been in use for too long so let's not break code that depends on them
........
  r40372 | nesotto | 2007-10-23 12:07:38 -0700 (Tue, 23 Oct 2007) | 1 line
  
  changed ADL functions back the names of 1.34 ... these names have been in use for too long ... let's not break code that depends on them
........
  r40373 | nesotto | 2007-10-23 12:12:19 -0700 (Tue, 23 Oct 2007) | 1 line
  
  new fancy quickbook documentaion
........
  r40374 | nesotto | 2007-10-23 12:34:06 -0700 (Tue, 23 Oct 2007) | 1 line
  
  added test for operator()
........
  r40375 | nesotto | 2007-10-23 12:34:38 -0700 (Tue, 23 Oct 2007) | 1 line
  
  added operator() to allow random access index with transform iterators 
........
  r40376 | nesotto | 2007-10-23 12:50:59 -0700 (Tue, 23 Oct 2007) | 1 line
  
  displabed some warnings and applied Ticket #1284: sub_range_copy.patch
........
  r40377 | nesotto | 2007-10-23 12:56:39 -0700 (Tue, 23 Oct 2007) | 1 line
  
  applied Ticket #1309 (new Patches)
........
  r40378 | nesotto | 2007-10-23 13:08:35 -0700 (Tue, 23 Oct 2007) | 1 line
  
  cleanup
........
  r40379 | nesotto | 2007-10-23 13:23:05 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Adding Shunsuke Sogame fantastic MFC/ATL mappings
........
  r40381 | nesotto | 2007-10-23 13:28:52 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Shunsuke Sogame's MFC/ATL docs and tests
........
  r40382 | chris_kohlhoff | 2007-10-23 15:32:11 -0700 (Tue, 23 Oct 2007) | 2 lines
  
  Mark borland 5.6.* and 5.8.* as unusable for asio.
........
  r40389 | djowel | 2007-10-23 19:30:52 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Fusion 2.1 one more time with care
........
  r40390 | djowel | 2007-10-23 19:32:28 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Fusion 2.1 one more time with care
........
  r40391 | djowel | 2007-10-23 19:33:38 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Fusion 2.1 one more time with care
........
  r40392 | djowel | 2007-10-23 19:36:29 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Fusion 2.1 one more time with care
........
  r40393 | djowel | 2007-10-23 19:37:23 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Fusion 2.1 one more time with care
........
  r40394 | djowel | 2007-10-23 19:38:02 -0700 (Tue, 23 Oct 2007) | 1 line
  
  Fusion 2.1 one more time with care
........
  r40396 | rogeeff | 2007-10-23 21:48:16 -0700 (Tue, 23 Oct 2007) | 1 line
  
  win CE and solaris workarounds
........
  r40397 | djowel | 2007-10-23 21:58:50 -0700 (Tue, 23 Oct 2007) | 1 line
  
  merging tobias changes
........
  r40399 | schoepflin | 2007-10-24 01:21:15 -0700 (Wed, 24 Oct 2007) | 2 lines
  
  Added missing include file.
........
  r40401 | johnmaddock | 2007-10-24 01:49:06 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Fix HPUX error levels: reordered expected failure rates so that they still work when largest_real == double.
........
  r40403 | schoepflin | 2007-10-24 02:02:32 -0700 (Wed, 24 Oct 2007) | 3 lines
  
  Fixed code which incorrectly assumed that an iterator returned by begin() is
  always a modifiable lvalue.
........
  r40404 | schoepflin | 2007-10-24 02:04:47 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Clarify lookup for destroy_n().
........
  r40405 | johnmaddock | 2007-10-24 02:15:20 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Update makefiles and the script that creates them: was generating dependencies that weren't required.
........
  r40406 | anthonyw | 2007-10-24 02:32:29 -0700 (Wed, 24 Oct 2007) | 1 line
  
  added real default constructor to condition::list_entry
........
  r40407 | anthonyw | 2007-10-24 02:36:51 -0700 (Wed, 24 Oct 2007) | 1 line
  
  thrd-api is no longer a symmetric feature
........
  r40408 | schoepflin | 2007-10-24 04:17:05 -0700 (Wed, 24 Oct 2007) | 2 lines
  
  Added missing include file.
........
  r40409 | vladimir_prus | 2007-10-24 04:34:53 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Improve comments
........
  r40410 | vladimir_prus | 2007-10-24 04:38:49 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Fix typo
........
  r40411 | schoepflin | 2007-10-24 04:41:21 -0700 (Wed, 24 Oct 2007) | 3 lines
  
  Use external linkage for function templates, otherwise they are not considered
  as candidate functions during name loopkup.
........
  r40412 | anthonyw | 2007-10-24 05:00:14 -0700 (Wed, 24 Oct 2007) | 1 line
  
  updated thread move semantics to work with Borland
........
  r40413 | chris_kohlhoff | 2007-10-24 06:23:59 -0700 (Wed, 24 Oct 2007) | 2 lines
  
  Fixes for HP-UX test failures.
........
  r40414 | nesotto | 2007-10-24 06:35:04 -0700 (Wed, 24 Oct 2007) | 1 line
  
  changed example with prime numbers according to Ticket #807 (new Bugs: None)
........
  r40415 | nesotto | 2007-10-24 06:54:11 -0700 (Wed, 24 Oct 2007) | 1 line
  
  conversion operator was not in 1.34, so removed here also
........
  r40416 | nesotto | 2007-10-24 06:54:52 -0700 (Wed, 24 Oct 2007) | 1 line
  
  cleanup
........
  r40417 | nesotto | 2007-10-24 07:46:42 -0700 (Wed, 24 Oct 2007) | 1 line
  
  some updates from 1,34 branch
........
  r40418 | eric_niebler | 2007-10-24 08:00:20 -0700 (Wed, 24 Oct 2007) | 1 line
  
  s/boost_range_begin/range_begin/
........
  r40419 | nesotto | 2007-10-24 08:02:01 -0700 (Wed, 24 Oct 2007) | 1 line
  
  newer docs from 1.34
........
  r40420 | eric_niebler | 2007-10-24 08:04:41 -0700 (Wed, 24 Oct 2007) | 1 line
  
  more typeof registrations from Dave Jankins
........
  r40422 | nesotto | 2007-10-24 08:18:22 -0700 (Wed, 24 Oct 2007) | 1 line
  
  roll back of ADL names
........
  r40423 | nesotto | 2007-10-24 08:19:16 -0700 (Wed, 24 Oct 2007) | 1 line
  
  roll-back of ADL names
........
  r40424 | anthonyw | 2007-10-24 08:39:14 -0700 (Wed, 24 Oct 2007) | 1 line
  
  updated pthreads code to support move and multiple joins
........
  r40425 | nesotto | 2007-10-24 08:53:54 -0700 (Wed, 24 Oct 2007) | 1 line
  
  removed deprecated mfc stuff
........
  r40426 | nesotto | 2007-10-24 09:26:54 -0700 (Wed, 24 Oct 2007) | 1 line
  
  minor updates from 1.34
........
  r40427 | johnmaddock | 2007-10-24 10:57:45 -0700 (Wed, 24 Oct 2007) | 2 lines
  
  Removed files that are no longer used and regenerated the Makefiles so they are no longer dependent on the removed files.
  Hidden some seldom-used dependencies in static_mutex.hpp to reduce library footprint when extracted with bcp.
........
  r40428 | igaztanaga | 2007-10-24 11:59:26 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Fixed Solaris-gcc errors and added splay trees
........
  r40429 | igaztanaga | 2007-10-24 12:00:30 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Fixed Solaris-gcc errors and added splay trees
........
  r40430 | igaztanaga | 2007-10-24 12:25:40 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Corrected operator >> bug
........
  r40433 | grafik | 2007-10-24 12:56:54 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Obsolete in new web site. (fixes #1373)
........
  r40435 | burbelgruff | 2007-10-24 13:30:31 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Deleted regression tests.
........
  r40437 | grafik | 2007-10-24 14:01:44 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Obsolete files, as they are now moved to the new web site structure. (fixes #1248)
........
  r40438 | eric_niebler | 2007-10-24 14:37:09 -0700 (Wed, 24 Oct 2007) | 1 line
  
  remove unneeded msvc-7.1 work-around
........
  r40440 | danieljames | 2007-10-24 15:56:42 -0700 (Wed, 24 Oct 2007) | 2 lines
  
  Delete background.html as it's now in the new web site.
........
  r40442 | djowel | 2007-10-24 16:29:54 -0700 (Wed, 24 Oct 2007) | 1 line
  
  fix remaining includes
........
  r40444 | danieljames | 2007-10-24 16:36:57 -0700 (Wed, 24 Oct 2007) | 2 lines
  
  Delete bibliography, now that it's updated in the site. Fixes #1254.
........
  r40445 | eric_niebler | 2007-10-24 16:37:40 -0700 (Wed, 24 Oct 2007) | 1 line
  
  replace all throw statements with boost::throw_exception
........
  r40447 | rogeeff | 2007-10-24 17:01:38 -0700 (Wed, 24 Oct 2007) | 2 lines
  
  avoid msvc 8.0 warning 
  more win CE workaround
........
  r40448 | rogeeff | 2007-10-24 17:02:14 -0700 (Wed, 24 Oct 2007) | 1 line
  
  avoid some msvc warning
........
  r40449 | rogeeff | 2007-10-24 17:17:25 -0700 (Wed, 24 Oct 2007) | 1 line
  
  missed sunpro workaround
........
  r40451 | rogeeff | 2007-10-24 22:38:19 -0700 (Wed, 24 Oct 2007) | 2 lines
  
  minor cleanup
  final major piece of this update: debug services (almost complete: without stack dump)
........
  r40453 | igaztanaga | 2007-10-24 23:33:50 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Fixed Solaris and Linux bugs
........
  r40454 | igaztanaga | 2007-10-24 23:34:41 -0700 (Wed, 24 Oct 2007) | 1 line
  
  Fixed intrusive_ptr and named condition test and added documentation.
........
  r40455 | rogeeff | 2007-10-24 23:35:14 -0700 (Wed, 24 Oct 2007) | 1 line
  
  missing file included
........
  r40456 | anthonyw | 2007-10-25 00:17:20 -0700 (Thu, 25 Oct 2007) | 1 line
  
  thread move constructor is not explicit, so self() compiles for MSVC8 and Intel; thread_exit_callback_node constructor added to remove warnings on MSVC8; thread destructor no longer calls cancel
........
  r40457 | rogeeff | 2007-10-25 00:29:07 -0700 (Thu, 25 Oct 2007) | 1 line
  
  missed debug in another included component
........
  r40458 | speedsnail | 2007-10-25 00:52:25 -0700 (Thu, 25 Oct 2007) | 1 line
  
  More verbose "Skipping" message, telling what it is beeing skipped.
........
  r40459 | speedsnail | 2007-10-25 00:57:12 -0700 (Thu, 25 Oct 2007) | 1 line
  
  Corrected typo
........
  r40460 | schoepflin | 2007-10-25 03:21:10 -0700 (Thu, 25 Oct 2007) | 1 line
  
  Removed extra semicolons to silence warnings.
........
  r40461 | igaztanaga | 2007-10-25 08:53:19 -0700 (Thu, 25 Oct 2007) | 1 line
  
  Corrected error when checking file size against maximum address range for 64 bit platforms
........
  r40462 | vladimir_prus | 2007-10-25 09:48:24 -0700 (Thu, 25 Oct 2007) | 3 lines
  
  Report underfined paths before trying to replace
  spaces in them (and crash on emptry paths).
........
  r40463 | vladimir_prus | 2007-10-25 10:08:27 -0700 (Thu, 25 Oct 2007) | 1 line
  
  Don't use boost.test for testing.
........
  r40464 | nesotto | 2007-10-25 13:47:59 -0700 (Thu, 25 Oct 2007) | 1 line
  
  major update of copy-operations and various pending fixes
........
  r40465 | nesotto | 2007-10-25 13:49:02 -0700 (Thu, 25 Oct 2007) | 1 line
  
  major update of test to handle new functionality and better test of old functionality
........
  r40466 | nesotto | 2007-10-25 13:50:51 -0700 (Thu, 25 Oct 2007) | 1 line
  
  update of test for ptr_list_of which can now actually works because of copyability of the ptr_contaners
........
  r40467 | nesotto | 2007-10-25 13:51:16 -0700 (Thu, 25 Oct 2007) | 1 line
  
  proper definition of the conversion operator
........
  r40468 | dave | 2007-10-25 16:19:48 -0700 (Thu, 25 Oct 2007) | 3 lines
  
  Closes #1379.  It would be good to have a much more principled approach; 
  see comments in the diffs for details.
........
  r40469 | grafik | 2007-10-25 18:02:48 -0700 (Thu, 25 Oct 2007) | 1 line
  
  Merge search path for include & import from backend branch. And add corresponding support for <include> to BBv2 quickbook tool. Remove obsolete quickbook.xml file. (fixes #1263)
........
  r40471 | rogeeff | 2007-10-25 23:47:29 -0700 (Thu, 25 Oct 2007) | 2 lines
  
  made it to compile if unicode is defined
  avoid assertion for negative chars
........
  r40472 | anthonyw | 2007-10-26 00:33:22 -0700 (Fri, 26 Oct 2007) | 1 line
  
  added tests for cancellation
........
  r40473 | vladimir_prus | 2007-10-26 01:41:34 -0700 (Fri, 26 Oct 2007) | 1 line
  
  Fix typo
........
  r40474 | vladimir_prus | 2007-10-26 01:45:26 -0700 (Fri, 26 Oct 2007) | 2 lines
  
  Make 'install' for individual lib explicit.
........
  r40475 | vladimir_prus | 2007-10-26 02:04:25 -0700 (Fri, 26 Oct 2007) | 6 lines
  
  Make sure every library can be installed by using
  
       bjam stage|install
  
  in libs/<library>/build.
........
  r40476 | anthonyw | 2007-10-26 02:45:46 -0700 (Fri, 26 Oct 2007) | 1 line
  
  disable_cancellation and restore_cancellation need to be declared BOOST_THREAD_DECL to work with DLLs
........
  r40477 | anthonyw | 2007-10-26 02:53:10 -0700 (Fri, 26 Oct 2007) | 1 line
  
  disable_cancellation and restore_cancellation need to be declared BOOST_THREAD_DECL to work with DLLs with pthread-win32
........
  r40478 | anthonyw | 2007-10-26 03:46:01 -0700 (Fri, 26 Oct 2007) | 1 line
  
  improved lifetime management of thread data
........
  r40479 | t_schwinger | 2007-10-26 05:16:37 -0700 (Fri, 26 Oct 2007) | 3 lines
  
  reverts clobbered changes before merge
........
  r40480 | igaztanaga | 2007-10-26 07:24:58 -0700 (Fri, 26 Oct 2007) | 1 line
  
  Added missing include
........
  r40483 | schoepflin | 2007-10-26 08:36:56 -0700 (Fri, 26 Oct 2007) | 3 lines
  
  Use external linkage for function templates, otherwise they are not considered
  as candidate functions during name loopkup.
........
  r40484 | johnmaddock | 2007-10-26 11:12:28 -0700 (Fri, 26 Oct 2007) | 1 line
  
  Try and work around a Tru64 overload resolution bug.
........
  r40485 | rogeeff | 2007-10-26 11:31:55 -0700 (Fri, 26 Oct 2007) | 1 line
  
  removed install target for now
........
  r40487 | vladimir_prus | 2007-10-26 12:37:56 -0700 (Fri, 26 Oct 2007) | 1 line
  
  Fix winmain test
........
  r40488 | nesotto | 2007-10-26 16:03:11 -0700 (Fri, 26 Oct 2007) | 1 line
  
  Added test of xml-archives.
........
  r40489 | nesotto | 2007-10-26 16:16:15 -0700 (Fri, 26 Oct 2007) | 1 line
  
  Ticket #1027 (new Patches)
........
  r40494 | igaztanaga | 2007-10-27 02:17:14 -0700 (Sat, 27 Oct 2007) | 1 line
  
  updated new acc toolsets as unusable for Interprocess
........
  r40497 | vladimir_prus | 2007-10-27 02:55:58 -0700 (Sat, 27 Oct 2007) | 2 lines
  
  New Python rule -- 'backtrace'.
........
  r40498 | johnmaddock | 2007-10-27 04:25:05 -0700 (Sat, 27 Oct 2007) | 1 line
  
  Added first lot of markup for the new Boost.Math additions.
........
  r40499 | johnmaddock | 2007-10-27 04:27:19 -0700 (Sat, 27 Oct 2007) | 1 line
  
  Changed concept code so there are no null-references any more (the code breaks on EDG based compilers otherwise).
........
  r40500 | johnmaddock | 2007-10-27 04:32:30 -0700 (Sat, 27 Oct 2007) | 2 lines
  
  Set expected error limits for HP Tru64.
  Prevent very extreme-value round-trip tests from being run.
........
  r40506 | nesotto | 2007-10-27 08:57:20 -0700 (Sat, 27 Oct 2007) | 1 line
  
  cleaned up deprecated headers
........
  r40507 | nesotto | 2007-10-27 08:57:56 -0700 (Sat, 27 Oct 2007) | 1 line
  
  updated example to new syntax
........
  r40508 | nesotto | 2007-10-27 08:58:22 -0700 (Sat, 27 Oct 2007) | 1 line
  
  first update ... more to come
........
  r40509 | nesotto | 2007-10-27 11:20:45 -0700 (Sat, 27 Oct 2007) | 1 line
  
  small renaming
........
  r40510 | nesotto | 2007-10-27 11:21:17 -0700 (Sat, 27 Oct 2007) | 1 line
  
  better test of bilk headers
........
  r40511 | nesotto | 2007-10-27 14:50:14 -0700 (Sat, 27 Oct 2007) | 1 line
  
  update of all new functionality
........
  r40512 | nesotto | 2007-10-27 14:52:13 -0700 (Sat, 27 Oct 2007) | 1 line
  
  minor change to scoped_deleter, some cleanup of explicit, and fixed a bug in assignment of ptr_maps
........
  r40513 | nesotto | 2007-10-27 14:52:51 -0700 (Sat, 27 Oct 2007) | 1 line
  
  minor update of copying of maps
........
  r40514 | nesotto | 2007-10-27 15:00:47 -0700 (Sat, 27 Oct 2007) | 1 line
  
  added mfc/atl link
........
  r40515 | danmarsden | 2007-10-27 15:16:35 -0700 (Sat, 27 Oct 2007) | 1 line
  
  fixing performance tests, mainly result of issues, and arity issues with unfused typed
........
  r40516 | danmarsden | 2007-10-27 15:18:13 -0700 (Sat, 27 Oct 2007) | 1 line
  
  fixing missing traversal category on binary transform view, by reusing zip_view algorithm
........
  r40517 | nesotto | 2007-10-27 15:35:20 -0700 (Sat, 27 Oct 2007) | 1 line
  
  update that hopefully will help eg the sun compiler
........
  r40518 | nesotto | 2007-10-27 15:52:29 -0700 (Sat, 27 Oct 2007) | 1 line
  
  changed range_result_iterator to range_iterator
........
  r40520 | nesotto | 2007-10-28 03:11:10 -0700 (Sun, 28 Oct 2007) | 1 line
  
  fixes broken one from trunk ... still not finished
........
  r40521 | nesotto | 2007-10-28 03:11:54 -0700 (Sun, 28 Oct 2007) | 1 line
  
  adds test for inclusion of concept header
........
  r40522 | johnmaddock | 2007-10-28 04:07:14 -0700 (Sun, 28 Oct 2007) | 2 lines
  
  split test_policy into 2 to reduce compile times.
  Added expected error rates for Mac OS X on Intel.
........
  r40524 | andreas_huber69 | 2007-10-28 06:26:00 -0700 (Sun, 28 Oct 2007) | 2 lines
  
  - Added to-do
  - Update for 1.35
........
  r40527 | hkaiser | 2007-10-28 07:29:40 -0700 (Sun, 28 Oct 2007) | 1 line
  
  Changed the code to allow ADL to find the correct pow() function, not relying on an existing overload in the std namespace anymore.
........
  r40530 | martin_wille | 2007-10-28 09:02:15 -0700 (Sun, 28 Oct 2007) | 5 lines
  
  -- compensated for changes to Boost.Thread:
     o Boost.Thread no longer accepts boost::reference_wrapper instances as callable arguments
     o created a new callable_reference_wrapper type that gets used instead of the no longer
       accepted type.
........
  r40531 | hkaiser | 2007-10-28 09:16:52 -0700 (Sun, 28 Oct 2007) | 1 line
  
  Added test of real_parser specialized for a custom data type.
........
  r40534 | danmarsden | 2007-10-28 10:40:45 -0700 (Sun, 28 Oct 2007) | 1 line
  
  Documentation for the struct extension macros
........
  r40535 | dave | 2007-10-28 12:22:21 -0700 (Sun, 28 Oct 2007) | 2 lines
  
  Closes #1379, really this time.  The old code would sandwich argv[1] between quotes and interpret it as a string, so backslashes in windows paths were interpreted as escape sequences.
........
  r40536 | dave | 2007-10-28 12:24:02 -0700 (Sun, 28 Oct 2007) | 2 lines
  
  Take out print statement I added for debugging purposes.
........
  r40537 | grafik | 2007-10-28 12:53:09 -0700 (Sun, 28 Oct 2007) | 1 line
  
  Fix misspelled test file name.
........
  r40539 | djowel | 2007-10-28 18:19:31 -0700 (Sun, 28 Oct 2007) | 1 line
  
  added Tobias to fusion authors list
........
  r40540 | burbelgruff | 2007-10-29 01:05:17 -0700 (Mon, 29 Oct 2007) | 1 line
  
  Fixed duplicate definition of boost::type_of::push_back when BOOST_TYPEOF_LIMIT_SIZE>50 and not a multiple of 50. (From Dave Jenkins)
........
  r40541 | joaquin | 2007-10-29 01:12:58 -0700 (Mon, 29 Oct 2007) | 1 line
  
  updated according to latest regression tests results
........
  r40542 | joaquin | 2007-10-29 01:16:56 -0700 (Mon, 29 Oct 2007) | 1 line
  
  fixed some struct/class discordances between decls and defs
........
  r40543 | nesotto | 2007-10-29 05:29:57 -0700 (Mon, 29 Oct 2007) | 1 line
  
  change use of range_result_iterator to range_iterator
........
  r40546 | chris_kohlhoff | 2007-10-29 06:06:12 -0700 (Mon, 29 Oct 2007) | 3 lines
  
  Mac OS X 10.5 (Leopard) gives a compile error if you try to perform an
  operation on a const fd_set pointer.
........
  r40547 | chris_kohlhoff | 2007-10-29 06:06:39 -0700 (Mon, 29 Oct 2007) | 2 lines
  
  Ensure the task handler is put back on the queue after polling.
........
  r40548 | chris_kohlhoff | 2007-10-29 06:07:08 -0700 (Mon, 29 Oct 2007) | 3 lines
  
  Use GetModuleHandleA rather than GetModuleHandle to avoid being broken by
  UNICODE #defines.
........
  r40549 | chris_kohlhoff | 2007-10-29 06:08:32 -0700 (Mon, 29 Oct 2007) | 3 lines
  
  HP-UX fails to declare if_nametoindex as extern "C". Added a declaration
  for it with correct linkage to avoid a linker error.
........
  r40551 | dgregor | 2007-10-29 07:43:19 -0700 (Mon, 29 Oct 2007) | 1 line
  
  sigemptyset is a macro on Darwin, so don't precede it by ::
........
  r40553 | eric_niebler | 2007-10-29 08:04:11 -0700 (Mon, 29 Oct 2007) | 1 line
  
  better solution for deprecated range_result_iterator
........
  r40554 | fmhess | 2007-10-29 08:08:46 -0700 (Mon, 29 Oct 2007) | 3 lines
  
  Extended the hack in docbook.xsl for dealing with nested <part> elements.  
  It now handles the case of <appendix> children of <part>.
........
  r40555 | fmhess | 2007-10-29 08:18:49 -0700 (Mon, 29 Oct 2007) | 16 lines
  
  Added support for new boostbook <access> element for documenting non-public
  class members.
  
  function.xsl, type.xsl, utility.xsl: Added support for <access> elements to
  allow nonpublic access specifiers for class member documentation.
  
  boostbook.dtd: Updated to reflect new <access> element.  Updated Peter Simons
  email address.  Added mention of boost license.
  
  reference.dtdxml: Added reference documentation for new <access> element.
  Removed some obsolete remarks from the description of inherit element.
  
  reference.xml: The changes to this file were generated by applying
  dtd2boostbook.xsl to the updated reference.dtdxml file.
........
  r40556 | grafik | 2007-10-29 09:12:14 -0700 (Mon, 29 Oct 2007) | 1 line
  
  Fix force-update and have-source options to be correct boolean options. And bring back the rmtree code to work around Python rmtree deficiencies.
........
  r40557 | grafik | 2007-10-29 12:12:07 -0700 (Mon, 29 Oct 2007) | 1 line
  
  Now that tarballs are working again... Implement getting the tools source from tarballs, and fix getting boost sources from tarball.
........
  r40558 | rwgk | 2007-10-29 12:12:56 -0700 (Mon, 29 Oct 2007) | 1 line
  
  gcc 4.3.0 compatibility (resolves new "changes meaning" error)
........
  r40595 | grafik | 2007-10-29 18:50:42 -0700 (Mon, 29 Oct 2007) | 1 line
  
  Add support for using a proxy as some firewalls are restrictive even to HTTP/GET access.
........
  r40597 | igaztanaga | 2007-10-30 00:00:51 -0700 (Tue, 30 Oct 2007) | 1 line
  
  Added avl trees
........
  r40598 | igaztanaga | 2007-10-30 00:02:10 -0700 (Tue, 30 Oct 2007) | 1 line
  
  Added avl trees
........
  r40599 | agurtovoy | 2007-10-30 00:25:27 -0700 (Tue, 30 Oct 2007) | 1 line
  
  xsl_reports: display the corresponding run's revision/timestamp on the test output page
........
  r40603 | bgubenko | 2007-10-30 05:43:47 -0700 (Tue, 30 Oct 2007) | 1 line
  
  add support for aC++ on HP-UX ia64
........
  r40604 | bgubenko | 2007-10-30 05:48:44 -0700 (Tue, 30 Oct 2007) | 1 line
  
  add support for aC++ on HP-UX ia64
........
  r40605 | bgubenko | 2007-10-30 05:58:36 -0700 (Tue, 30 Oct 2007) | 1 line
  
  fix typo in comment
........
  r40609 | anthonyw | 2007-10-30 10:16:24 -0700 (Tue, 30 Oct 2007) | 1 line
  
  Added specialization for reference_wrapper to allow use of boost::ref with boost::thread (again)
........
  r40611 | hkaiser | 2007-10-30 11:17:59 -0700 (Tue, 30 Oct 2007) | 1 line
  
  Merged a change from 1.34.1.
........
  r40612 | nesotto | 2007-10-30 12:47:40 -0700 (Tue, 30 Oct 2007) | 1 line
  
  current version gave problem in regression ... to be updated later
........
  r40614 | andreas_huber69 | 2007-10-30 14:27:34 -0700 (Tue, 30 Oct 2007) | 1 line
  
  Marked up new failures for 1.35
........
  r40615 | andreas_huber69 | 2007-10-30 15:01:41 -0700 (Tue, 30 Oct 2007) | 1 line
  
  Updated link to test results.
........
  r40617 | danieljames | 2007-10-30 15:33:35 -0700 (Tue, 30 Oct 2007) | 3 lines
  
  Remove regression/.htaccess as it has been merged with the beta website's
  .htaccess. Fixes #1249.
........
  r40623 | johnmaddock | 2007-10-31 05:43:10 -0700 (Wed, 31 Oct 2007) | 1 line
  
  Try and get better error messages to debug Tru64 failures.
........
  r40625 | bemandawes | 2007-10-31 08:09:35 -0700 (Wed, 31 Oct 2007) | 1 line
  
  Remove some older compilers from required list
........
  r40627 | bemandawes | 2007-10-31 11:28:39 -0700 (Wed, 31 Oct 2007) | 1 line
  
  Add missing BOOST_SYSTEM_NO_DEPRECATED #ifndef
........
  r40628 | grafik | 2007-10-31 13:20:07 -0700 (Wed, 31 Oct 2007) | 1 line
  
  Remove dependence on boost.test for PJL. It causes too many dependence problems on the testing platforms.
........
  r40629 | nesotto | 2007-10-31 14:48:11 -0700 (Wed, 31 Oct 2007) | 1 line
  
  added deprecated headers again for backward compatibility sake
........
  r40630 | bemandawes | 2007-10-31 15:01:58 -0700 (Wed, 31 Oct 2007) | 1 line
  
  Treat Windows ERROR_SHARING_VIOLATION as an existing file of unknown type. Fixes ticket #897
........
  r40631 | agurtovoy | 2007-10-31 15:25:46 -0700 (Wed, 31 Oct 2007) | 1 line
  
  xsl_report: fix timestamp/revision age highlighting
........
  r40632 | hkaiser | 2007-10-31 16:13:34 -0700 (Wed, 31 Oct 2007) | 1 line
  
  Applied patch from #1208.
........
  r40633 | bgubenko | 2007-10-31 18:05:07 -0700 (Wed, 31 Oct 2007) | 1 line
  
  mark parameter library tests affected by GCC Bugzilla Bug 33580
........
  r40634 | rogeeff | 2007-10-31 19:46:57 -0700 (Wed, 31 Oct 2007) | 1 line
  
  disable on CE
........
  r40635 | rogeeff | 2007-10-31 19:54:15 -0700 (Wed, 31 Oct 2007) | 1 line
  
  debug was missing in PEM
........
  r40636 | johnmaddock | 2007-11-01 03:17:49 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Still more tweaks to try and figure out why this fails on Tru64.
........
  r40637 | igaztanaga | 2007-11-01 04:47:00 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Uncommented pointer conversion utilities
........
  r40638 | bgubenko | 2007-11-01 04:47:20 -0700 (Thu, 01 Nov 2007) | 1 line
  
  fix typo
........
  r40639 | johnmaddock | 2007-11-01 07:01:44 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Added <stdio.h> and <sys/time.h> to the list of Unix-specific includes: these are needed by Sun's compiler, and for that matter, by Boost.Test to be std conforming.
........
  r40640 | bemandawes | 2007-11-01 08:23:06 -0700 (Thu, 01 Nov 2007) | 2 lines
  
  Enable the XPG-compliant version of readdir_r() on AIX. Merged from 1.34.1.
........
  r40642 | gmelquio | 2007-11-01 09:01:30 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Ported patch from 1.34.1 about conflicting math.h functions on PPC. Commented use of old control function for MSVC.
........
  r40645 | dgregor | 2007-11-01 09:16:30 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Use unsigned long long for the path count to avoid overflows. Fixes #1398
........
  r40646 | bemandawes | 2007-11-01 09:35:45 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Mingw doesn't support GetUserDefaultUILanguage so set it to US English.
........
  r40647 | anthonyw | 2007-11-01 10:07:47 -0700 (Thu, 01 Nov 2007) | 1 line
  
  condition wait and sleep are now cancellation points
........
  r40649 | johnmaddock | 2007-11-01 10:16:41 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Fix for http://svn.boost.org/trac/boost/ticket/1381.
........
  r40650 | anthonyw | 2007-11-01 10:18:54 -0700 (Thu, 01 Nov 2007) | 1 line
  
  shared_mutex lock functions are not cancellation points
........
  r40651 | danieljames | 2007-11-01 10:58:13 -0700 (Thu, 01 Nov 2007) | 2 lines
  
  Merge version history from 1.34.1.
........
  r40652 | johnmaddock | 2007-11-01 11:02:37 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Ticket #583.
........
  r40653 | anthonyw | 2007-11-01 11:04:55 -0700 (Thu, 01 Nov 2007) | 1 line
  
  added timed_join to thread
........
  r40654 | johnmaddock | 2007-11-01 11:05:33 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Patches from Trac #583.
........
  r40655 | danieljames | 2007-11-01 11:22:33 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Fix the previous merge commit, it didn't include all the changes.
........
  r40656 | johnmaddock | 2007-11-01 11:26:07 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Strengthened admonishment and rebuilt docs.
........
  r40657 | bemandawes | 2007-11-01 11:39:32 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Add Boost.System
........
  r40669 | danieljames | 2007-11-01 14:57:03 -0700 (Thu, 01 Nov 2007) | 2 lines
  
  Delete people from main repository, now that the beta website has been updated.
........
  r40670 | chris_kohlhoff | 2007-11-01 15:42:26 -0700 (Thu, 01 Nov 2007) | 3 lines
  
  Fix memory leak when an io_service is allowed to destruct with unfinished
  async_wait operations.
........
  r40671 | dave | 2007-11-01 16:39:02 -0700 (Thu, 01 Nov 2007) | 3 lines
  
  Initialized merge tracking via "svnmerge" with revisions "1-40670" from 
  https://svn.boost.org/svn/boost/branches/RC_1_34_0/boost
........
  r40672 | dave | 2007-11-01 16:44:39 -0700 (Thu, 01 Nov 2007) | 3 lines
  
  Initialized merge tracking via "svnmerge" with revisions "1-33417" from 
  https://svn.boost.org/svn/boost/branches/RC_1_34_0/boost
........
  r40673 | dgregor | 2007-11-01 20:07:24 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Fix for Borland/CodeGear, from JongSoo Park
........
  r40674 | matias | 2007-11-01 20:51:40 -0700 (Thu, 01 Nov 2007) | 1 line
  
  Add not supported compilers for Bimap
........
  r40675 | eric_niebler | 2007-11-01 21:35:01 -0700 (Thu, 01 Nov 2007) | 1 line
  
  merge Changeset  37947
........
  r40676 | speedsnail | 2007-11-02 00:42:49 -0700 (Fri, 02 Nov 2007) | 1 line
  
  changed translate-indirect to skip rules, that are already in indirect format. This allows e.g. to make use of the -<tag> to remove already set tag feature.
........
  r40677 | speedsnail | 2007-11-02 01:40:11 -0700 (Fri, 02 Nov 2007) | 2 lines
  
  New thread Jamfile. Requirement <threading>multi now correctly handled, even when requested with <threading>single. New project specific feature <threadapi> with values win32 and pthread available.
........
  r40678 | johnmaddock | 2007-11-02 01:59:24 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Some minor tweaks to support Sun's compiler on Linux.
........
  r40679 | anthonyw | 2007-11-02 02:17:02 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Added changes from David Deakins to enable compilation on Windows CE
........
  r40680 | anthonyw | 2007-11-02 04:47:56 -0700 (Fri, 02 Nov 2007) | 1 line
  
  rewrite xtime_get in terms of get_system_time to ensure clock consistency, and fix Borland test failures
........
  r40682 | bemandawes | 2007-11-02 05:43:47 -0700 (Fri, 02 Nov 2007) | 1 line
  
  WinCE workaround for lack of FormatMessageA
........
  r40683 | johnmaddock | 2007-11-02 06:01:39 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Added a couple of boost:: qualifiers that were present in 1.34.1 but got lost from the Trunk.
........
  r40684 | johnmaddock | 2007-11-02 06:02:41 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Fixes for Mac OS X on PowerPC Darwin.
........
  r40685 | anthonyw | 2007-11-02 07:58:48 -0700 (Fri, 02 Nov 2007) | 1 line
  
  renamed cancellation to interruption
........
  r40687 | rogeeff | 2007-11-02 09:08:47 -0700 (Fri, 02 Nov 2007) | 1 line
  
  allow tests to be run by regression testing facilities
........
  r40688 | johnmaddock | 2007-11-02 10:40:10 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Added one more needed #include (stdlib.h for mkstemp).
........
  r40692 | anthonyw | 2007-11-02 11:19:49 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Fixed typo with interruption change
........
  r40693 | johnmaddock | 2007-11-02 11:26:47 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Added needed #include and using declaration.
........
  r40697 | pavol_droba | 2007-11-02 13:55:26 -0700 (Fri, 02 Nov 2007) | 2 lines
  
  merging changes from 1.34
........
  r40698 | pavol_droba | 2007-11-02 14:00:08 -0700 (Fri, 02 Nov 2007) | 3 lines
  
  merging changes from 1.34
........
  r40702 | fmhess | 2007-11-02 15:37:52 -0700 (Fri, 02 Nov 2007) | 4 lines
  
  Fixed spurious paragraph in html output for overloaded
  methods.
........
  r40703 | fmhess | 2007-11-02 15:40:25 -0700 (Fri, 02 Nov 2007) | 4 lines
  
  Added descriptions of class member typedefs to class documentation.  This
  replaces Daniel James' previous one-line patch from changeset 39711.
........
  r40704 | fcacciola | 2007-11-02 15:55:49 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Merged changests from RC_1_34_0 - base rev 33417
........
  r40705 | fcacciola | 2007-11-02 15:56:23 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Merged changests from RC_1_34_0 - base rev 33417
........
  r40706 | fcacciola | 2007-11-02 16:06:42 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Fixed error reported by Edward Diener
........
  r40707 | fcacciola | 2007-11-02 16:41:37 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Added test to ensure proper binding of optional references (in reference to Ticket 1301)
........
  r40708 | pdimov | 2007-11-02 16:46:04 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Port unspecified_bool fix for Sun 5.8 from RC_1_34
........
  r40709 | hkaiser | 2007-11-02 17:30:33 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Bumped Spirit version to 1.8.6.
........
  r40710 | bemandawes | 2007-11-02 17:49:07 -0700 (Fri, 02 Nov 2007) | 1 line
  
  Detect Windows FormatMessage errors, standardize message() return on message-not-found errors
........
  r40712 | djowel | 2007-11-02 20:05:26 -0700 (Fri, 02 Nov 2007) | 1 line
  
  replacing reinterpret_cast with static_cast<PySliceObject*>(static_cast<void*>(i))
........
  r40714 | dave | 2007-11-02 20:25:13 -0700 (Fri, 02 Nov 2007) | 3 lines
  
  
  Merging some of the more obvious changes from RC_1_34_0
........
  r40715 | noel_belcourt | 2007-11-02 21:08:23 -0700 (Fri, 02 Nov 2007) | 3 lines
  
  Have intel on darwin use intel-linux.jam toolset.
........
  r40716 | danieljames | 2007-11-03 03:10:11 -0700 (Sat, 03 Nov 2007) | 2 lines
  
  Merge in changes to forwarding html files in doc/html.
........
  r40717 | danieljames | 2007-11-03 03:18:52 -0700 (Sat, 03 Nov 2007) | 2 lines
  
  Add titles to redirect pages so that they will validate.
........
  r40718 | danieljames | 2007-11-03 03:32:35 -0700 (Sat, 03 Nov 2007) | 9 lines
  
  Attribute copyright to Douglas Gregor.
  
  The copyright in these files was attributed to William Kempf, but the revision
  history shows that he has never touched them and the original file that they
  were based on (threads.html) was created by Douglas Gregor.
  
  The copyright was actually added by Hartmut Kaiser, who was adding the
  copyright to all the Boost.Thread files and included this one.
........
  r40719 | johnmaddock | 2007-11-03 05:36:55 -0700 (Sat, 03 Nov 2007) | 1 line
  
  Hopefully, take care of the remaining Tru64 failures: adjust >= test to > in some of the tests, and fix one expected error level for the incomplete beta function.
........
  r40720 | johnmaddock | 2007-11-03 05:43:41 -0700 (Sat, 03 Nov 2007) | 1 line
  
  Try again to fix Darwin failure: the wrong error limit is currently being found.
........
  r40725 | johnmaddock | 2007-11-03 10:05:11 -0700 (Sat, 03 Nov 2007) | 1 line
  
  Need stdarg.h to use vsnprintf as well as stdio.h
........
  r40726 | johnmaddock | 2007-11-03 11:30:07 -0700 (Sat, 03 Nov 2007) | 1 line
  
  Beginning to add Math Library markup.
........
  r40727 | johnmaddock | 2007-11-03 11:32:54 -0700 (Sat, 03 Nov 2007) | 3 lines
  
  Added workaround for Sunpro not compiling the traits classes.
  Added workaround for platforms where numeric_limits<>::denorm_min() does not return a denorm!
  Updated Solaris error rates.
........
  r40728 | pdimov | 2007-11-03 13:55:22 -0700 (Sat, 03 Nov 2007) | 1 line
  
  BOOST_VERIFY added.
........
  r40730 | anthonyw | 2007-11-03 15:00:12 -0700 (Sat, 03 Nov 2007) | 1 line
  
  added missing include
........
  r40731 | pdimov | 2007-11-03 15:47:17 -0700 (Sat, 03 Nov 2007) | 1 line
  
  Added a sentence with a brief explanation of the intended uses of BOOST_VERIFY.
........
  r40733 | djowel | 2007-11-03 16:42:06 -0700 (Sat, 03 Nov 2007) | 1 line
  
  fixed [cpp] to [c++]
........
  r40734 | djowel | 2007-11-03 17:12:29 -0700 (Sat, 03 Nov 2007) | 1 line
  
  tutorial update
........
  r40735 | agurtovoy | 2007-11-03 18:34:39 -0700 (Sat, 03 Nov 2007) | 1 line
  
  explicit-failures-markup.xml: partially reverting change #39788 (see http://article.gmane.org/gmane.comp.lib.boost.testing/5254)
........
  r40736 | johnmaddock | 2007-11-04 04:01:16 -0800 (Sun, 04 Nov 2007) | 1 line
  
  Fix path to test case.
........
  r40737 | danmarsden | 2007-11-04 07:26:51 -0800 (Sun, 04 Nov 2007) | 1 line
  
  Basic sequence and iterator fascade docs
........
  r40738 | bemandawes | 2007-11-04 07:32:03 -0800 (Sun, 04 Nov 2007) | 1 line
  
  glibc++ may append unknown error value, so only test first part of string
........
  r40739 | bemandawes | 2007-11-04 07:48:31 -0800 (Sun, 04 Nov 2007) | 1 line
  
  Try to bring the required toolsets more in sync with what testers are actually running. Sort required toolsets.
........
  r40742 | speedsnail | 2007-11-04 09:17:01 -0800 (Sun, 04 Nov 2007) | 3 lines
  
  Get rid of "unsused variable" warnings by making use of BOOST_VERIFY.
  This changeset is for pthread only.
........
  r40744 | bemandawes | 2007-11-04 09:18:53 -0800 (Sun, 04 Nov 2007) | 1 line
  
  Workaround MingW doesn't supply GetUserDefaultUILanguage
........
  r40749 | rwgk | 2007-11-04 10:08:28 -0800 (Sun, 04 Nov 2007) | 1 line
  
  reinterpret_cast -> const_cast; commented out dead code removed
........
  r40751 | danieljames | 2007-11-04 11:09:56 -0800 (Sun, 04 Nov 2007) | 2 lines
  
  Remove borland_cpp.html as it has been added to the new site.
........
  r40753 | danieljames | 2007-11-04 11:29:41 -0800 (Sun, 04 Nov 2007) | 2 lines
  
  Remove the submission process documentation as it's up to date in the new site.
........
  r40758 | danieljames | 2007-11-04 13:07:02 -0800 (Sun, 04 Nov 2007) | 3 lines
  
  Delete int_const_guidlines from trunk, as it's been added to the beta site.
  Fixes: #1356.
........
  r40759 | chris_kohlhoff | 2007-11-04 13:25:49 -0800 (Sun, 04 Nov 2007) | 2 lines
  
  Some changes to enable support for WinCE.
........
  r40762 | eric_niebler | 2007-11-04 14:53:27 -0800 (Sun, 04 Nov 2007) | 1 line
  
  remove dead proto v1 code
........
  r40763 | eric_niebler | 2007-11-04 15:53:13 -0800 (Sun, 04 Nov 2007) | 1 line
  
  various fixes and missing includes, from Jens Seidel
........
  r40764 | eric_niebler | 2007-11-04 15:58:44 -0800 (Sun, 04 Nov 2007) | 1 line
  
  change header include order
........
  r40765 | djowel | 2007-11-04 17:13:11 -0800 (Sun, 04 Nov 2007) | 1 line
  
  Fixed Ticket #1328 (http://svn.boost.org/trac/boost/ticket/1328)
........
  r40766 | djowel | 2007-11-04 18:10:42 -0800 (Sun, 04 Nov 2007) | 1 line
  
  Workarounds for Fusion on IBM xlc
........
  r40767 | bemandawes | 2007-11-04 18:34:04 -0800 (Sun, 04 Nov 2007) | 1 line
  
  Add copyright and license
........
  r40768 | garcia | 2007-11-04 19:13:15 -0800 (Sun, 04 Nov 2007) | 2 lines
  
  multi_array doesn't work under Borland 5.9.
........
  r40769 | dave | 2007-11-04 19:54:19 -0800 (Sun, 04 Nov 2007) | 9 lines
  
  
  Updated Concept Check library documentation.
  
  Changed BOOST_CONCEPT_WHERE to BOOST_CONCEPT_REQUIRES to be more
  consistent with the current C++0x proposal, which now uses a
  "requires" keyword in lieu of "where."
  
  Factored GCC workarounds into the BOOST_CONCEPT_USAGE macro.
........
  r40770 | dave | 2007-11-04 20:43:31 -0800 (Sun, 04 Nov 2007) | 7 lines
  
  
  Moved boost/concept/where.hpp to boost/concept/requires.hpp
  
  Updated reference.htm to include BOOST_CONCEPT_REQUIRES
  
  Fixed a copyright notice.
........
  r40771 | johnmaddock | 2007-11-05 01:33:31 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Still trying to get Mac OS error rates correct...
........
  r40774 | anthonyw | 2007-11-05 02:15:24 -0800 (Mon, 05 Nov 2007) | 1 line
  
  threadapi is a composite feature again
........
  r40779 | chris_kohlhoff | 2007-11-05 03:52:52 -0800 (Mon, 05 Nov 2007) | 2 lines
  
  Don't set errno when building for Windows targets. Should fix WinCE build.
........
  r40780 | johnmaddock | 2007-11-05 04:07:47 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Disabled long double support for Intel on Linux prior to version 10.
........
  r40781 | johnmaddock | 2007-11-05 04:08:39 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Changed test so that input values are exact binary values to fix failure at float precision.
........
  r40782 | bemandawes | 2007-11-05 04:36:41 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Add message display to illuminate why aCC fails Unknown error test
........
  r40783 | chris_kohlhoff | 2007-11-05 04:38:39 -0800 (Mon, 05 Nov 2007) | 2 lines
  
  Add checks for expected failures on Windows CE.
........
  r40785 | nesotto | 2007-11-05 05:54:23 -0800 (Mon, 05 Nov 2007) | 1 line
  
  added lost changes from 1.34 branch
........
  r40787 | anthonyw | 2007-11-05 06:16:21 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Use pthread_equal for comparing pthread_t IDs; use BOOST_VERIFY instead of BOOST_ASSERT in many places in order to avoid unused variable warnings
........
  r40789 | djowel | 2007-11-05 07:13:58 -0800 (Mon, 05 Nov 2007) | 1 line
  
  fusion markups
........
  r40790 | speedsnail | 2007-11-05 08:12:49 -0800 (Mon, 05 Nov 2007) | 2 lines
  
  Usage requirements added.
........
  r40791 | speedsnail | 2007-11-05 08:22:17 -0800 (Mon, 05 Nov 2007) | 2 lines
  
  Cosmetic change to please gcc.
........
  r40792 | anthonyw | 2007-11-05 08:47:25 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Use BOOST_VERIFY instead of BOOST_ASSERT in many places in order to avoid unused variable warnings
........
  r40793 | eric_niebler | 2007-11-05 09:12:50 -0800 (Mon, 05 Nov 2007) | 1 line
  
  markup foreach failures on sun-5.9
........
  r40794 | t_schwinger | 2007-11-05 09:15:04 -0800 (Mon, 05 Nov 2007) | 4 lines
  
  - nonstandard calling conventions disabled by default
  - automatic fallback configuration
........
  r40795 | t_schwinger | 2007-11-05 09:16:30 -0800 (Mon, 05 Nov 2007) | 2 lines
  
  removes unportable 'chdir'
........
  r40796 | t_schwinger | 2007-11-05 09:17:57 -0800 (Mon, 05 Nov 2007) | 3 lines
  
  just a touch
........
  r40797 | t_schwinger | 2007-11-05 09:19:23 -0800 (Mon, 05 Nov 2007) | 3 lines
  
  adds test case for pointer to data member type
........
  r40798 | t_schwinger | 2007-11-05 09:20:44 -0800 (Mon, 05 Nov 2007) | 4 lines
  
  - nonstandard calling conventions need to be enabled now
  - using #ifdef ... #error to detect whether test makes sense for a particular compiler
........
  r40799 | t_schwinger | 2007-11-05 09:23:57 -0800 (Mon, 05 Nov 2007) | 3 lines
  
  adds navigation icons
........
  r40800 | t_schwinger | 2007-11-05 09:24:58 -0800 (Mon, 05 Nov 2007) | 3 lines
  
  integrates forgotten changes
........
  r40801 | t_schwinger | 2007-11-05 09:25:26 -0800 (Mon, 05 Nov 2007) | 3 lines
  
  updates html
........
  r40802 | hljin | 2007-11-05 10:33:19 -0800 (Mon, 05 Nov 2007) | 1 line
  
  GIL: added documentation links and maintainer info into libs/libraries.htm and libs/maintainers.txt
........
  r40803 | igaztanaga | 2007-11-05 10:46:38 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Marked sun5.9 and Borland 5.9 for Interprocess and Intrusive as unusable
........
  r40804 | hljin | 2007-11-05 11:04:08 -0800 (Mon, 05 Nov 2007) | 1 line
  
  GIL: minor cumulative fixes
........
  r40805 | t_schwinger | 2007-11-05 12:00:43 -0800 (Mon, 05 Nov 2007) | 3 lines
  
  adds redirect to documentation
........
  r40806 | t_schwinger | 2007-11-05 12:01:33 -0800 (Mon, 05 Nov 2007) | 4 lines
  
  - adds FunctionTypes
  - adds myself to all occurences of the Fusion authors
........
  r40807 | eric_niebler | 2007-11-05 12:28:51 -0800 (Mon, 05 Nov 2007) | 1 line
  
  doc tweaks
........
  r40808 | dgregor | 2007-11-05 13:16:26 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Add MPI library
........
  r40809 | dgregor | 2007-11-05 13:20:23 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Add copyright, 1.34.1 history
........
  r40810 | nasonov | 2007-11-05 13:20:35 -0800 (Mon, 05 Nov 2007) | 1 line
  
  lexical_cast_loopback_test
........
  r40811 | dgregor | 2007-11-05 13:22:29 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Merge lots of copyrights
........
  r40812 | dgregor | 2007-11-05 13:25:10 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Removed ancient BGL-Python code
........
  r40813 | dgregor | 2007-11-05 13:43:24 -0800 (Mon, 05 Nov 2007) | 1 line
  
  Merge in Boost.Graph changes from RC_1_34_0 branch
........


[SVN r40849]
2007-11-06 19:12:30 +00:00
Frank Birbacher f61cb025dd restart of branch, this is to include changes from trunk
[SVN r40545]
2007-10-29 12:39:01 +00:00
Daniel James 946bd8356e Merge from trunk.
[SVN r40260]
2007-10-21 07:28:23 +00:00
Rene Rivera d4623df538 Moved remotely
[SVN r39733]
2007-10-06 19:56:40 +00:00
Nicola Musatti 42ac4cab8a Branch for CodeGear (Borland) specific fixes
[SVN r39356]
2007-09-17 20:28:43 +00:00
Ronald Garcia 9477a087c6 Created a branch from trunk
[SVN r38959]
2007-08-26 05:34:35 +00:00
Daniel James 11dd5bb726 Create a development branch for the hash library.
[SVN r38869]
2007-08-23 19:28:19 +00:00
Andreas Pokorny 44293a120b + creating a branch for a xpressive extension that allows nesting
of regular expressions


[SVN r38759]
2007-08-19 15:07:44 +00:00
Robert Ramey 7b03e3127e Create branch for next serialization release
[SVN r38613]
2007-08-13 03:23:47 +00:00
Eric Niebler ba7b26b058 development version of proto for new-style transforms
[SVN r38539]
2007-08-08 21:34:10 +00:00
Rene Rivera 12ff5b7826 Renamed remotely
[SVN r38389]
2007-08-02 02:52:10 +00:00
Rene Rivera b76f7cf8be Moved remotely
[SVN r38383]
2007-08-02 02:47:55 +00:00
nobody 2273077563 This commit was manufactured by cvs2svn to create tag
'SPIRIT_MINIBOOST_1_34_0'.

[SVN r38032]
2007-06-19 01:09:16 +00:00
nobody 2688da7c0d This commit was manufactured by cvs2svn to create tag
'SPIRIT_1_8_5_MINIBOOST'.

[SVN r38031]
2007-06-19 01:09:15 +00:00
nobody ce06010499 This commit was manufactured by cvs2svn to create tag
'SPIRIT_1_6_4_MINIBOOST'.

[SVN r38030]
2007-06-19 01:09:14 +00:00
nobody f084300293 This commit was manufactured by cvs2svn to create tag
'merged_to_RC_1_34_0'.

[SVN r37938]
2007-06-07 20:53:46 +00:00
nobody 2a28a0150b This commit was manufactured by cvs2svn to create tag
'RC_1_34_0_freeze'.

[SVN r37245]
2007-03-20 19:06:03 +00:00
nobody 350501529e This commit was manufactured by cvs2svn to create tag
'merged_to_RC_1_33_0'.

[SVN r31853]
2005-12-01 13:06:58 +00:00
nobody a60c1f44a6 This commit was manufactured by cvs2svn to create branch
'thread_rewrite'.

[SVN r30953]
2005-09-13 14:20:32 +00:00
John Maddock 3b484a6aae Reconfigure lexical_cast to work with wide character strings and VC++ even when not using /Zc:wchar_t.
[SVN r30725]
2005-08-29 12:45:35 +00:00
John Maddock cb041dd66c Reconfigure lexical_cast to work wide character strings and VC++ when not using /Zc:wchar_t.
[SVN r30724]
2005-08-29 12:44:09 +00:00
Jonathan Turkanis f587f50366 fixed broken links
[SVN r30386]
2005-08-02 20:47:34 +00:00
nobody 166924ca12 This commit was manufactured by cvs2svn to create branch 'RC_1_33_0'.
[SVN r30300]
2005-07-28 18:22:24 +00:00
Hartmut Kaiser 43257b9478 Removed part of the Boost files from the SPIRIT_MINIBOOST branch.
[SVN r26368]
2004-11-30 07:52:25 +00:00
nobody c10b46b6f4 This commit was manufactured by cvs2svn to create branch
'SPIRIT_MINIBOOST'.

[SVN r26343]
2004-11-29 07:29:20 +00:00
nobody dfca010fb3 This commit was manufactured by cvs2svn to create branch 'RC_1_32_0'.
[SVN r25797]
2004-10-20 08:26:43 +00:00
nobody 57bd7fa97d This commit was manufactured by cvs2svn to create tag
'merged_to_RC_'.

[SVN r25796]
2004-10-20 08:26:42 +00:00
nobody 434e84db66 This commit was manufactured by cvs2svn to create branch 'SPIRIT_1_6'.
[SVN r23968]
2004-07-23 02:16:28 +00:00
nobody 6814aea988 This commit was manufactured by cvs2svn to create branch
'function_signature_patches_1_31'.

[SVN r22633]
2004-04-13 12:19:16 +00:00
nobody 7ead3844af This commit was manufactured by cvs2svn to create tag 'minmax'.
[SVN r22393]
2004-02-26 10:35:28 +00:00
nobody 90bf2b81dd This commit was manufactured by cvs2svn to create tag
'merged_to_RC_1_31_0'.

[SVN r22369]
2004-02-23 07:33:35 +00:00
nobody 4e60178205 This commit was manufactured by cvs2svn to create branch 'RC_1_31_0'.
[SVN r21427]
2003-12-30 12:10:04 +00:00
Aleksey Gurtovoy f0c79866ad merge changes from the main trunk to get in sync with the header
[SVN r19669]
2003-08-17 21:02:53 +00:00
nobody f4f8fc77d9 This commit was manufactured by cvs2svn to create tag
'merged_to_RC_1_30_0'.

[SVN r19627]
2003-08-16 01:05:44 +00:00
nobody 60b527f7b8 This commit was manufactured by cvs2svn to create branch 'mpl_v2_2'.
[SVN r18675]
2003-06-05 05:15:05 +00:00
Terje Slettebø 3804825f6c no message
[SVN r18238]
2003-04-12 08:02:14 +00:00
Terje Slettebø fdd5ca3353 Merged from trunk
[SVN r18237]
2003-04-11 22:15:04 +00:00
Terje Slettebø 6e077f97fc BOOST_MSVC<=1200 fix from Terje
[SVN r18019]
2003-03-19 21:25:45 +00:00
Beman Dawes d9eed4150b BOOST_MSVC<=1200 fix from Terje
[SVN r18002]
2003-03-19 12:14:32 +00:00
Dave Abrahams 62014cf4b6 Commit Terje's changes
[SVN r17982]
2003-03-18 23:55:14 +00:00
Terje Slettebø aad1bfda73 Updated Changes section
[SVN r17922]
2003-03-14 20:32:51 +00:00
Terje Slettebø 3f452717cf no message
[SVN r17921]
2003-03-14 20:17:47 +00:00
Beman Dawes b06d9f5639 overloading fix + less permissive wide character support
[SVN r17893]
2003-03-13 17:27:06 +00:00
Beman Dawes 1b796221b4 BOOST_NO_STD_WSTRING
[SVN r17872]
2003-03-13 00:36:13 +00:00
Beman Dawes 027afb3a87 update from Kevlin and Terje
[SVN r17861]
2003-03-12 21:33:16 +00:00
nobody 07cb73a96c This commit was manufactured by cvs2svn to create branch 'RC_1_30_0'.
[SVN r17693]
2003-03-01 19:43:06 +00:00
nobody 7b55ea29c9 This commit was manufactured by cvs2svn to create tag
'boost_python_llnl_'.

[SVN r15542]
2002-09-28 13:27:01 +00:00
nobody 5e4a78c251 This commit was manufactured by cvs2svn to create branch 'RC_1_29_0'.
[SVN r15460]
2002-09-19 20:49:39 +00:00
nobody b3e887447b This commit was manufactured by cvs2svn to create branch
'python-v2-dev'.

[SVN r14785]
2002-08-12 13:35:54 +00:00
nobody 175c00ea3e This commit was manufactured by cvs2svn to create branch 'RC_1_28_0'.
[SVN r13795]
2002-05-10 04:34:27 +00:00
nobody 56b9a696bc This commit was manufactured by cvs2svn to create branch
'compiler_supported_error_messages'.

[SVN r13249]
2002-03-22 12:16:42 +00:00
nobody ada3bcbcee This commit was manufactured by cvs2svn to create tag
'perforce_2_4_merge_1'.

[SVN r13112]
2002-03-06 14:13:30 +00:00
nobody c68281b772 This commit was manufactured by cvs2svn to create branch 'RC_1_27_0'.
[SVN r12739]
2002-02-06 03:32:50 +00:00
nobody 2ced4e32a4 This commit was manufactured by cvs2svn to create branch 'split-config'.
[SVN r10742]
2001-08-04 14:31:38 +00:00
nobody f12aed0e33 This commit was manufactured by cvs2svn to create branch
'iter-adaptor-and-categories'.

[SVN r10453]
2001-06-27 22:12:20 +00:00
Ralf W. Grosse-Kunstleve f9f1ca0d10 Join ralf_grosse_kunstleve with HEAD
[SVN r9444]
2001-03-05 20:01:01 +00:00
nobody 15b1fc3b58 This commit was manufactured by cvs2svn to create branch
'unlabeled-1.1.2'.

[SVN r8787]
2001-01-27 17:35:01 +00:00
nobody 2b8aaa089f This commit was manufactured by cvs2svn to create tag
'Version_1_18_3'.

[SVN r8252]
2000-11-18 14:33:52 +00:00
nobody fe11e65a4a This commit was manufactured by cvs2svn to create branch 'regex-sub'.
[SVN r7754]
2000-09-21 03:34:33 +00:00
nobody 66834ebe52 This commit was manufactured by cvs2svn to create branch
'boost-graph-library'.

[SVN r7698]
2000-09-09 10:20:25 +00:00
nobody ba5b91daef This commit was manufactured by cvs2svn to create tag
'conversion-merge-1'.

[SVN r7674]
2000-08-02 10:31:49 +00:00
nobody b7a2b8d4cc This commit was manufactured by cvs2svn to create branch 'conversion'.
[SVN r7663]
2000-07-30 10:33:54 +00:00
nobody 83720de8d0 This commit was manufactured by cvs2svn to create branch
'iterator-adaptors'.

[SVN r7633]
2000-07-26 20:32:15 +00:00
Beman Dawes 0109740377 1.16.1 initial CVS checkin
[SVN r7620]
2000-07-07 16:04:40 +00:00
85 changed files with 6479 additions and 7163 deletions
-11
View File
@@ -1,11 +0,0 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
- package-ecosystem: "github-actions" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
-260
View File
@@ -1,260 +0,0 @@
name: CI
on:
pull_request:
push:
branches:
- master
- develop
- feature/**
env:
UBSAN_OPTIONS: print_stacktrace=1
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- toolset: gcc-14 # Do not remove! It is the only toolset that tests CMake tests down below
cxxstd: "03,11,14,17,20"
os: ubuntu-24.04
compiler: g++-14
- toolset: gcc-12
cxxstd: "03,11,14,17,2a"
os: ubuntu-22.04
cxxflags: "cxxflags=--coverage -fsanitize=address,leak,undefined -fno-sanitize-recover=undefined"
linkflags: "linkflags=--coverage -lasan -lubsan"
gcov_tool: "gcov-12"
launcher: "testing.launcher=LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.8"
- toolset: gcc-11
cxxstd: "03,11,14,17,2a"
os: ubuntu-22.04
- toolset: clang
compiler: clang++-14
cxxstd: "03,11,14,17,2a"
os: ubuntu-22.04
- toolset: clang
cxxstd: "11,14,17,20"
os: macos-latest
- toolset: clang-19
cxxstd: "20,23"
os: ubuntu-24.04
compiler: clang++-19
install: clang-19 llvm-19 libclang-rt-19-dev libc++-19-dev libc++abi-19-dev clang-tools-19
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v6
- name: Install packages
if: matrix.install
run: sudo apt install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 10 https://github.com/boostorg/boost.git boost-root
cd boost-root
git submodule update --init --depth 10 --jobs 2 tools/boostdep tools/inspect libs/filesystem
python tools/boostdep/depinst/depinst.py --git_args "--depth 10 --jobs 3" filesystem
rm -rf libs/$LIBRARY/*
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
python tools/boostdep/depinst/depinst.py --include benchmark --include example --include examples --include tools --git_args "--depth 10 --jobs 3" $LIBRARY
./bootstrap.sh
./b2 -j4 variant=debug tools/inspect
- name: Run modules tests without 'import std;'
if: ${{matrix.toolset == 'clang-19'}}
run: |
cd ../boost-root/libs/lexical_cast
cmake -S test/cmake_subdir_test -B build_module \
-GNinja \
-DBUILD_TESTING=1 \
-DBOOST_USE_MODULES=1 \
-DCMAKE_CXX_COMPILER=clang++-19 \
-DCMAKE_C_COMPILER=clang-19
cmake --build build_module
ctest --test-dir build_module -V --no-tests=error
rm -rf build_module
- name: Run modules tests
if: ${{matrix.toolset == 'clang-19'}}
run: |
cd ../boost-root/libs/lexical_cast
cmake -S test/cmake_subdir_test -B build_module \
-GNinja \
-DBUILD_TESTING=1 \
-DBOOST_USE_MODULES=1 \
-DCMAKE_CXX_COMPILER=clang++-19 \
-DCMAKE_C_COMPILER=clang-19 \
-DCMAKE_CXX_FLAGS=-stdlib=libc++ \
-DCMAKE_CXX_STANDARD=23 \
-DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 \
-DCMAKE_CXX_MODULE_STD=ON
cmake --build build_module
ctest --test-dir build_module -V --no-tests=error
rm -rf build_module
- name: Run CMake tests
if: ${{matrix.toolset == 'gcc-14' || matrix.toolset == 'clang-19'}}
run: |
cd ../boost-root/
cmake -S . -B __build \
-DBUILD_TESTING=1 \
-DBOOST_INCLUDE_LIBRARIES=lexical_cast \
-DCMAKE_CXX_COMPILER=${{matrix.compiler}} \
-DCMAKE_C_COMPILER=${{matrix.toolset}}
cmake --build __build --target tests
ctest --test-dir __build --output-on-failure --no-tests=error
rm -rf __build
- name: Run tests
run: |
cd ../boost-root
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release "${{matrix.cxxflags}}" "${{matrix.linkflags}}" "${{matrix.launcher}}"
dist/bin/inspect libs/$LIBRARY
- name: Prepare coverage data
if: matrix.gcov_tool
run: |
mkdir -p $GITHUB_WORKSPACE/coveralls
echo -e "#!/bin/bash\nexec ${{matrix.gcov_tool}} \"\$@\"" > $GITHUB_WORKSPACE/coveralls/gcov_wrapper.sh
chmod +x $GITHUB_WORKSPACE/coveralls/gcov_wrapper.sh
wget https://github.com/linux-test-project/lcov/archive/v1.16.zip
unzip v1.16.zip
LCOV="`pwd`/lcov-1.16/bin/lcov --gcov-tool $GITHUB_WORKSPACE/coveralls/gcov_wrapper.sh"
echo "$LCOV --directory ../boost-root/bin.v2/libs/$LIBRARY/ --base-directory `pwd`/libs/$LIBRARY/test --capture --output-file $GITHUB_WORKSPACE/coveralls/coverage.info"
$LCOV --directory ../boost-root/bin.v2/libs/$LIBRARY/ --base-directory ../boost-root/ --capture --output-file $GITHUB_WORKSPACE/coveralls/coverage.info
$LCOV --remove $GITHUB_WORKSPACE/coveralls/coverage.info "/usr*" "*/$LIBRARY/test/*" ${{matrix.ignore_coverage}} "*/$LIBRARY/tests/*" "*/$LIBRARY/examples/*" "*/$LIBRARY/example/*" -o $GITHUB_WORKSPACE/coveralls/coverage.info
cd ../boost-root
OTHER_LIBS=`grep "submodule .*" .gitmodules | sed 's/\[submodule\ "\(.*\)"\]/"\*\/boost\/\1\.hpp" "\*\/boost\/\1\/\*"/g'| sed "/\"\*\/boost\/$LIBRARY\/\*\"/d" | sed ':a;N;$!ba;s/\n/ /g'`
echo $OTHER_LIBS
eval "$LCOV --remove $GITHUB_WORKSPACE/coveralls/coverage.info $OTHER_LIBS -o $GITHUB_WORKSPACE/coveralls/coverage.info"
- name: Coveralls
uses: coverallsapp/github-action@master
if: matrix.gcov_tool
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: ./coveralls/coverage.info
parallel: true
windows:
strategy:
fail-fast: false
matrix:
include:
- toolset: msvc-14.3
cxxstd: "14,17,20,latest"
addrmd: 32,64
os: windows-2022
- toolset: msvc
cxxstd: "14,17,latest"
addrmd: 64
os: windows-2025
- toolset: gcc
cxxstd: "03,11,14,17,2a"
addrmd: 64
os: windows-2022
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v6
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 10 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep libs/test
python tools/boostdep/depinst/depinst.py --include benchmark --include example --include examples --include tools --git_args "--jobs 3" %LIBRARY%
cmd /c bootstrap
- name: Run CMake tests
if: ${{matrix.toolset == 'msvc-14.3'}}
shell: cmd
run: |
choco install --no-progress ninja
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root/
mkdir __build
cd __build
cmake -DBUILD_TESTING=1 -DBOOST_INCLUDE_LIBRARIES=lexical_cast -G Ninja ..
cmake --build . --target tests --config Debug
ctest --output-on-failure --no-tests=error -C Debug
- name: Run modules tests
if: false
#if: ${{matrix.toolset == 'msvc-14.3'}}
shell: cmd
run: |
choco install --no-progress ninja
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root/libs/lexical_cast
rm -rf build_module
mkdir build_module
cd build_module
cmake -DBOOST_USE_MODULES=1 -DCMAKE_CXX_STANDARD=23 -DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=0e5b6991-d74f-4b3d-a41c-cf096e0b2508 -G Ninja ../test/cmake_subdir_test/
cmake --build .
ctest --no-tests=error -V
- name: Run modules tests without 'import std;'
if: ${{matrix.toolset == 'msvc-14.3'}}
shell: cmd
run: |
choco install --no-progress ninja
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" x64
cd ../boost-root/libs/lexical_cast
rm -rf build_module
mkdir build_module
cd build_module
cmake -DBOOST_USE_MODULES=1 -DCMAKE_CXX_STANDARD=20 -G Ninja ../test/cmake_subdir_test/
cmake --build .
ctest --no-tests=error -V
- name: Run tests
shell: cmd
run: |
cd ../boost-root
b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release
finish:
if: false
needs: posix
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
-46
View File
@@ -1,46 +0,0 @@
# Generated by `boostdep --cmake lexical_cast`
# Copyright 2020 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
# https://www.boost.org/LICENSE_1_0.txt
cmake_minimum_required(VERSION 3.5...4.0)
project(boost_lexical_cast VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
if (BOOST_USE_MODULES)
add_library(boost_lexical_cast)
target_sources(boost_lexical_cast PUBLIC
FILE_SET modules_public TYPE CXX_MODULES FILES
${CMAKE_CURRENT_LIST_DIR}/modules/boost_lexical_cast.cppm
)
target_compile_features(boost_lexical_cast PUBLIC cxx_std_20)
target_compile_definitions(boost_lexical_cast PUBLIC BOOST_USE_MODULES)
if (CMAKE_CXX_COMPILER_IMPORT_STD)
target_compile_definitions(boost_lexical_cast PRIVATE BOOST_LEXICAL_CAST_USE_STD_MODULE)
message(STATUS "Using `import std;`")
else()
message(STATUS "`import std;` is not available")
endif()
set(__scope PUBLIC)
else()
add_library(boost_lexical_cast INTERFACE)
set(__scope INTERFACE)
endif()
target_include_directories(boost_lexical_cast ${__scope} include)
target_link_libraries(boost_lexical_cast
${__scope}
Boost::config
Boost::container
Boost::core
Boost::throw_exception
)
add_library(Boost::lexical_cast ALIAS boost_lexical_cast)
if(BUILD_TESTING)
add_subdirectory(test)
endif()
-15
View File
@@ -1,15 +0,0 @@
# [Boost.LexicalCast](https://boost.org/libs/lexical_cast)
Boost.LexicalCast is one of the [Boost C++ Libraries](https://github.com/boostorg). This library is meant for general literal text conversions, such as an int represented a string, or vice-versa.
### Test results
@ | Build | Tests coverage | More info
----------------|-------------- | -------------- |-----------
Develop branch: | [![CI](https://github.com/boostorg/lexical_cast/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/boostorg/lexical_cast/actions/workflows/ci.yml) [![Build status](https://ci.appveyor.com/api/projects/status/mwwanh1bpsnuv38h/branch/develop?svg=true)](https://ci.appveyor.com/project/apolukhin/lexical-cast/branch/develop) | [![Coverage Status](https://coveralls.io/repos/boostorg/lexical_cast/badge.png?branch=develop)](https://coveralls.io/r/boostorg/lexical_cast?branch=develop) | [details...](https://www.boost.org/development/tests/develop/developer/lexical_cast.html)
Master branch: | [![CI](https://github.com/boostorg/lexical_cast/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/boostorg/lexical_cast/actions/workflows/ci.yml) [![Build status](https://ci.appveyor.com/api/projects/status/mwwanh1bpsnuv38h/branch/master?svg=true)](https://ci.appveyor.com/project/apolukhin/lexical-cast/branch/master) | [![Coverage Status](https://coveralls.io/repos/boostorg/lexical_cast/badge.png?branch=master)](https://coveralls.io/r/boostorg/lexical_cast?branch=master) | [details...](https://www.boost.org/development/tests/master/developer/lexical_cast.html)
[Latest developer documentation](https://www.boost.org/doc/libs/develop/doc/html/boost_lexical_cast.html)
### License
Distributed under the [Boost Software License, Version 1.0](https://boost.org/LICENSE_1_0.txt).
-26
View File
@@ -1,26 +0,0 @@
# Copyright René Ferdinand Rivera Morell 2023-2024
# 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)
require-b2 5.2 ;
constant boost_dependencies :
/boost/config//boost_config
/boost/container//boost_container
/boost/core//boost_core
/boost/throw_exception//boost_throw_exception ;
project /boost/lexical_cast
: common-requirements
<include>include
;
explicit
[ alias boost_lexical_cast : : : : <library>$(boost_dependencies) ]
[ alias all : boost_lexical_cast test ]
;
call-if : boost-library lexical_cast
;
+146
View File
@@ -0,0 +1,146 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content=
"Microsoft FrontPage 5.0">
<meta http-equiv="Content-Type" content=
"text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Header boost/cast.hpp Documentation</title>
<style>
.copyright
{
color: #666666;
font-size: small;
}
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1><img src="../../boost.png" alt="boost.png (6897 bytes)" align=
"middle" width="277" height="86">Header <a href=
"../../boost/cast.hpp">boost/cast.hpp</a></h1>
<h2><a name="Cast Functions">Cast Functions</a></h2>
<p>The header <a href="../../boost/cast.hpp">boost/cast.hpp</a> provides <code>
<a href="#Polymorphic_cast">polymorphic_cast</a> and</code> <a href=
"#Polymorphic_cast"><code>polymorphic_downcast</code></a> function templates designed to
complement the C++ built-in casts.</p>
<p>The program <a href="cast_test.cpp">cast_test.cpp</a> can be used to
verify these function templates work as expected.</p>
<h3><a name="Polymorphic_cast">Polymorphic casts</a></h3>
<p>Pointers to polymorphic objects (objects of classes which define at
least one virtual function) are sometimes downcast or crosscast.
Downcasting means casting from a base class to a derived class.
Crosscasting means casting across an inheritance hierarchy diagram, such
as from one base to the other in a <code>Y</code> diagram hierarchy.</p>
<p>Such casts can be done with old-style casts, but this approach is
never to be recommended. Old-style casts are sorely lacking in type
safety, suffer poor readability, and are difficult to locate with search
tools.</p>
<p>The C++ built-in <code>static_cast</code> can be used for efficiently
downcasting pointers to polymorphic objects, but provides no error
detection for the case where the pointer being cast actually points to
the wrong derived class. The <code>polymorphic_downcast</code> template retains
the efficiency of <code>static_cast</code> for non-debug compilations, but for
debug compilations adds safety via an assert() that a <code>dynamic_cast</code>
succeeds.</p>
<p>The C++ built-in <code>dynamic_cast</code> can be used for downcasts and
crosscasts of pointers to polymorphic objects, but error notification in
the form of a returned value of 0 is inconvenient to test, or worse yet,
easy to forget to test. The throwing form of <code>dynamic_cast</code>, which
works on references, can be used on pointers through the ugly expression
&amp;<code>dynamic_cast&lt;T&amp;&gt;(*p)</code>, which causes undefined
behavior if <code>p</code> is <code>0</code>. The <code>polymorphic_cast</code>
template performs a <code>dynamic_cast</code> on a pointer, and throws an
exception if the <code>dynamic_cast</code> returns 0.</p>
<p>A <code>polymorphic_downcast</code> should be used for
downcasts that you are certain should succeed. Error checking is
only performed in translation units where <code>NDEBUG</code> is
not defined, via
<pre> assert( dynamic_cast&lt;Derived&gt;(x) == x )
</pre> where <code>x</code> is the source pointer. This approach
ensures that not only is a non-zero pointer returned, but also
that it is correct in the presence of multiple inheritance.
Attempts to crosscast using <code>polymorphic_downcast</code> will
fail to compile.
<b>Warning:</b> Because <code>polymorphic_downcast</code> uses assert(), it
violates the One Definition Rule (ODR) if NDEBUG is inconsistently
defined across translation units. [See ISO Std 3.2]
</p><p>
For crosscasts, or when the success of a cast can only be known at
runtime, or when efficiency is not important,
<code>polymorphic_cast</code> is preferred. </p>
<p>The C++ built-in <code>dynamic_cast</code> must be used to cast references
rather than pointers. It is also the only cast that can be used to check
whether a given interface is supported; in that case a return of 0 isn't
an error condition.</p>
<h3>polymorphic_cast and polymorphic_downcast synopsis</h3>
<blockquote>
<pre>namespace boost {
template &lt;class Derived, class Base&gt;
inline Derived polymorphic_cast(Base* x);
// Throws: std::bad_cast if ( dynamic_cast&lt;Derived&gt;(x) == 0 )
// Returns: dynamic_cast&lt;Derived&gt;(x)
template &lt;class Derived, class Base&gt;
inline Derived polymorphic_downcast(Base* x);
// Effects: assert( dynamic_cast&lt;Derived&gt;(x) == x );
// Returns: static_cast&lt;Derived&gt;(x)
}
</pre>
</blockquote>
<h3>polymorphic_downcast example</h3>
<blockquote>
<pre>#include &lt;boost/cast.hpp&gt;
...
class Fruit { public: virtual ~Fruit(){}; ... };
class Banana : public Fruit { ... };
...
void f( Fruit * fruit ) {
// ... logic which leads us to believe it is a Banana
Banana * banana = boost::polymorphic_downcast&lt;Banana*&gt;(fruit);
...
</pre>
</blockquote>
<h3>History</h3>
<p><code>polymorphic_cast</code> was suggested by Bjarne Stroustrup in "The C++
Programming Language".<br>
<code>polymorphic_downcast</code> was contributed by <a href=
"http://www.boost.org/people/dave_abrahams.htm">Dave Abrahams</a>.<code><br>
An old
numeric_cast</code> that was contributed by <a href=
"http://www.boost.org/people/kevlin_henney.htm">Kevlin Henney</a> is now superseeded by the <a href="../numeric/conversion/doc/html/index.html">Boost Numeric Conversion Library</a></p>
<hr>
<p>Revised
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan
-->June 23, 2005<!--webbot bot="Timestamp" endspan i-checksum="30348"
--></p>
<p class="copyright">&copy; Copyright boost.org 1999.
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</body>
</html>
+1 -12
View File
@@ -1,6 +1,4 @@
# Copyright Antony Polukhin, 2011-2026.
#
# Use, modification, and distribution are
# Copyright Antony Polukhin 2011. 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)
@@ -16,12 +14,3 @@ boostbook standalone
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
;
###############################################################################
alias boostdoc
: lexical_cast
:
:
: ;
explicit boostdoc ;
alias boostrelease ;
explicit boostrelease ;
+618 -524
View File
File diff suppressed because it is too large Load Diff
+2 -3
View File
@@ -1,4 +1,4 @@
// Copyright Antony Polukhin, 2013-2026.
// Copyright 2013 Antony Polukhin
// Distributed under the Boost Software License, Version 1.0.
// (See the accompanying file LICENSE_1_0.txt
@@ -7,9 +7,8 @@
//[lexical_cast_args_example
//`The following example treats command line arguments as a sequence of numeric data
#include <vector>
#include <boost/lexical_cast.hpp>
#include <vector>
int main(int /*argc*/, char * argv[])
{
+12 -23
View File
@@ -1,31 +1,21 @@
// Copyright Antony Polukhin, 2013-2026.
// Copyright 2013 Antony Polukhin
// Distributed under the Boost Software License, Version 1.0.
// (See the accompanying file LICENSE_1_0.txt
// or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
#include <boost/config.hpp>
#ifdef BOOST_MSVC
# pragma warning(disable: 4512) // generic_stringize.cpp(37) : warning C4512: 'stringize_functor' : assignment operator could not be generated
#endif
//[lexical_cast_stringize
/*`
In this example we'll make a `stringize` method that accepts a sequence, converts
each element of the sequence into string and appends that string to the result.
Example is based on the example from the Boost C++ Application Development Cookbook
by Antony Polukhin, ISBN 9781849514880. Russian translation: [@https://dmkpress.com/catalog/computer/programming/c/978-5-97060-868-5/ ISBN: 9785970608685].
Example is based on the example from the [@http://www.packtpub.com/boost-cplusplus-application-development-cookbook/book Boost C++ Application Development Cookbook]
by Antony Polukhin, ISBN 9781849514880.
Step 1: Making a functor that converts any type to a string and remembers result:
*/
#include <string>
#include <boost/fusion/include/for_each.hpp>
#include <boost/fusion/adapted/std_tuple.hpp>
#include <boost/fusion/adapted/std_pair.hpp>
#include <boost/lexical_cast.hpp>
struct stringize_functor {
@@ -44,6 +34,7 @@ public:
};
//` Step 2: Applying `stringize_functor` to each element in sequence:
#include <boost/fusion/include/for_each.hpp>
template <class Sequence>
std::string stringize(const Sequence& seq) {
std::string result;
@@ -52,18 +43,16 @@ std::string stringize(const Sequence& seq) {
}
//` Step 3: Using the `stringize` with different types:
#include <cassert>
#include <boost/fusion/adapted/boost_tuple.hpp>
#include <boost/fusion/adapted/std_pair.hpp>
int main() {
std::tuple<char, int, char, int> decim('-', 10, 'e', 5);
if (stringize(decim) != "-10e5") {
return 1;
}
boost::tuple<char, int, char, int> decim('-', 10, 'e', 5);
assert(stringize(decim) == "-10e5");
std::pair<int, std::string> value_and_type(270, "Kelvin");
if (stringize(value_and_type) != "270Kelvin") {
return 2;
}
return 0;
std::pair<short, std::string> value_and_type(270, "Kelvin");
assert(stringize(value_and_type) == "270Kelvin");
}
//] [/lexical_cast_stringize]
+6 -13
View File
@@ -1,22 +1,15 @@
// Copyright Antony Polukhin, 2013-2026.
// Copyright 2013 Antony Polukhin
// Distributed under the Boost Software License, Version 1.0.
// (See the accompanying file LICENSE_1_0.txt
// or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
#include <array>
#include <boost/lexical_cast.hpp>
#include <string>
#include <string.h>
#include <cstdio>
#include <boost/lexical_cast.hpp>
#ifdef BOOST_MSVC
# pragma warning(disable: 4996) // `strerror` is not safe
#endif
//[lexical_cast_log_errno
//`The following example uses numeric data in a string expression:
//`The following example uses numeric data in a string expression:
void log_message(const std::string &);
@@ -31,11 +24,11 @@ void log_errno(int yoko)
//[lexical_cast_fixed_buffer
//`The following example converts some number and puts it to file:
void number_to_file(int number, std::FILE* file)
void number_to_file(int number, FILE* file)
{
using buf_t = std::array<char, 50>;
typedef boost::array<char, 50> buf_t; // You can use std::array if your compiler supports it
buf_t buffer = boost::lexical_cast<buf_t>(number); // No dynamic memory allocation
std::fputs(buffer.data(), file);
fputs(buffer.begin(), file);
}
//] [/lexical_cast_fixed_buffer]
+7 -14
View File
@@ -1,4 +1,4 @@
// Copyright Antony Polukhin, 2013-2026.
// Copyright 2013 Antony Polukhin
// Distributed under the Boost Software License, Version 1.0.
// (See the accompanying file LICENSE_1_0.txt
@@ -10,18 +10,15 @@
In this example we'll make a `to_long_double` method that converts value of the Boost.Variant to `long double`.
*/
#ifdef BOOST_USE_MODULES
#include <compare>
#endif
#include <boost/variant.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/variant.hpp>
#include <cassert>
struct to_long_double_functor: boost::static_visitor<long double> {
template <class T>
long double operator()(const T& v) const {
// Lexical cast has many optimizations including optimizations for situations that usually
// occur in generic programming, like std::string to std::string or arithmetic type to arithmetic type conversion.
// Lexical cast has many optimizations including optimizations for situations that usually
// occur in generic programming, like std::string to std::string or arithmetic type to arithmetic type conversion.
return boost::lexical_cast<long double>(v);
}
};
@@ -35,12 +32,8 @@ long double to_long_double(const Variant& v) {
int main() {
boost::variant<char, int, std::string> v1('0'), v2("10.0001"), v3(1);
const long double sum = to_long_double(v1) + to_long_double(v2) + to_long_double(v3);
if (11 < sum && sum < 11.1) {
return 0; // OK, as expected
};
return 1; // FAIL
long double sum = to_long_double(v1) + to_long_double(v2) + to_long_double(v3);
assert(sum > 11 && sum < 11.1);
}
//] [/lexical_cast_variant_to_long_double]
+94
View File
@@ -0,0 +1,94 @@
// boost cast.hpp header file ----------------------------------------------//
// (C) Copyright Kevlin Henney and Dave Abrahams 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)
// See http://www.boost.org/libs/conversion for Documentation.
// Revision History
// 23 JUn 05 numeric_cast removed and redirected to the new verion (Fernando Cacciola)
// 02 Apr 01 Removed BOOST_NO_LIMITS workarounds and included
// <boost/limits.hpp> instead (the workaround did not
// actually compile when BOOST_NO_LIMITS was defined in
// any case, so we loose nothing). (John Maddock)
// 21 Jan 01 Undid a bug I introduced yesterday. numeric_cast<> never
// worked with stock GCC; trying to get it to do that broke
// vc-stlport.
// 20 Jan 01 Moved BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS to config.hpp.
// Removed unused BOOST_EXPLICIT_TARGET macro. Moved
// boost::detail::type to boost/type.hpp. Made it compile with
// stock gcc again (Dave Abrahams)
// 29 Nov 00 Remove nested namespace cast, cleanup spacing before Formal
// Review (Beman Dawes)
// 19 Oct 00 Fix numeric_cast for floating-point types (Dave Abrahams)
// 15 Jul 00 Suppress numeric_cast warnings for GCC, Borland and MSVC
// (Dave Abrahams)
// 30 Jun 00 More MSVC6 wordarounds. See comments below. (Dave Abrahams)
// 28 Jun 00 Removed implicit_cast<>. See comment below. (Beman Dawes)
// 27 Jun 00 More MSVC6 workarounds
// 15 Jun 00 Add workarounds for MSVC6
// 2 Feb 00 Remove bad_numeric_cast ";" syntax error (Doncho Angelov)
// 26 Jan 00 Add missing throw() to bad_numeric_cast::what(0 (Adam Levar)
// 29 Dec 99 Change using declarations so usages in other namespaces work
// correctly (Dave Abrahams)
// 23 Sep 99 Change polymorphic_downcast assert to also detect M.I. errors
// as suggested Darin Adler and improved by Valentin Bonnard.
// 2 Sep 99 Remove controversial asserts, simplify, rename.
// 30 Aug 99 Move to cast.hpp, replace value_cast with numeric_cast,
// place in nested namespace.
// 3 Aug 99 Initial version
#ifndef BOOST_CAST_HPP
#define BOOST_CAST_HPP
# include <boost/config.hpp>
# include <boost/assert.hpp>
# include <typeinfo>
# include <boost/type.hpp>
# include <boost/limits.hpp>
# include <boost/detail/select_type.hpp>
namespace boost
{
// See the documentation for descriptions of how to choose between
// static_cast<>, dynamic_cast<>, polymorphic_cast<> and polymorphic_downcast<>
// polymorphic_cast --------------------------------------------------------//
// Runtime checked polymorphic downcasts and crosscasts.
// Suggested in The C++ Programming Language, 3rd Ed, Bjarne Stroustrup,
// section 15.8 exercise 1, page 425.
template <class Target, class Source>
inline Target polymorphic_cast(Source* x)
{
Target tmp = dynamic_cast<Target>(x);
if ( tmp == 0 ) throw std::bad_cast();
return tmp;
}
// polymorphic_downcast ----------------------------------------------------//
// BOOST_ASSERT() checked polymorphic downcast. Crosscasts prohibited.
// WARNING: Because this cast uses BOOST_ASSERT(), it violates
// the One Definition Rule if used in multiple translation units
// where BOOST_DISABLE_ASSERTS, BOOST_ENABLE_ASSERT_HANDLER
// NDEBUG are defined inconsistently.
// Contributed by Dave Abrahams
template <class Target, class Source>
inline Target polymorphic_downcast(Source* x)
{
BOOST_ASSERT( dynamic_cast<Target>(x) == x ); // detect logic error
return static_cast<Target>(x);
}
} // namespace boost
# include <boost/numeric/conversion/cast.hpp>
#endif // BOOST_CAST_HPP
+12 -7
View File
@@ -18,8 +18,7 @@
# pragma once
#endif
#include <boost/config.hpp>
#include "boost/config.hpp"
#include <streambuf>
namespace boost { namespace detail {
@@ -40,20 +39,25 @@ protected:
typedef typename base_type::off_type off_type;
public:
basic_pointerbuf() : base_type() { this_type::setbuf(0, 0); }
basic_pointerbuf() : base_type() { setbuf(0, 0); }
const charT* getnext() { return this->gptr(); }
#ifndef BOOST_NO_USING_TEMPLATE
using base_type::pptr;
using base_type::pbase;
#else
charT* pptr() const { return base_type::pptr(); }
charT* pbase() const { return base_type::pbase(); }
#endif
protected:
// VC mistakenly assumes that `setbuf` and other functions are not referenced.
// Marking those functions with `inline` suppresses the warnings.
// There must be no harm from marking virtual functions as inline: inline virtual
// call can be inlined ONLY when the compiler knows the "exact class".
inline base_type* setbuf(char_type* s, streamsize n) BOOST_OVERRIDE;
inline typename this_type::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which) BOOST_OVERRIDE;
inline typename this_type::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) BOOST_OVERRIDE;
inline base_type* setbuf(char_type* s, streamsize n);
inline typename this_type::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which);
inline typename this_type::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which);
private:
basic_pointerbuf& operator=(const basic_pointerbuf&);
@@ -72,7 +76,7 @@ template<class charT, class BufferT>
typename basic_pointerbuf<charT, BufferT>::pos_type
basic_pointerbuf<charT, BufferT>::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which)
{
typedef ::std::ios_base::seekdir cast_type;
typedef typename boost::int_t<sizeof(way) * CHAR_BIT>::least cast_type;
if(which & ::std::ios_base::out)
return pos_type(off_type(-1));
@@ -132,3 +136,4 @@ basic_pointerbuf<charT, BufferT>::seekpos(pos_type sp, ::std::ios_base::openmode
}} // namespace boost::detail
#endif // BOOST_DETAIL_BASIC_POINTERBUF_HPP
+184
View File
@@ -0,0 +1,184 @@
// Copyright Alexander Nasonov & Paul A. Bristow 2006.
// 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)
#ifndef BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
#define BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
#include <climits>
#include <ios>
#include <limits>
#include <boost/config.hpp>
#include <boost/integer_traits.hpp>
#ifndef BOOST_NO_IS_ABSTRACT
// Fix for SF:1358600 - lexical_cast & pure virtual functions & VC 8 STL
#include <boost/mpl/if.hpp>
#include <boost/type_traits/is_abstract.hpp>
#endif
#if defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || \
(defined(BOOST_MSVC) && (BOOST_MSVC<1310))
#define BOOST_LCAST_NO_COMPILE_TIME_PRECISION
#endif
#ifdef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
#include <boost/assert.hpp>
#else
#include <boost/static_assert.hpp>
#endif
namespace boost { namespace detail {
class lcast_abstract_stub {};
#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
// Calculate an argument to pass to std::ios_base::precision from
// lexical_cast. See alternative implementation for broken standard
// libraries in lcast_get_precision below. Keep them in sync, please.
template<class T>
struct lcast_precision
{
#ifdef BOOST_NO_IS_ABSTRACT
typedef std::numeric_limits<T> limits; // No fix for SF:1358600.
#else
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
boost::is_abstract<T>
, std::numeric_limits<lcast_abstract_stub>
, std::numeric_limits<T>
>::type limits;
#endif
BOOST_STATIC_CONSTANT(bool, use_default_precision =
!limits::is_specialized || limits::is_exact
);
BOOST_STATIC_CONSTANT(bool, is_specialized_bin =
!use_default_precision &&
limits::radix == 2 && limits::digits > 0
);
BOOST_STATIC_CONSTANT(bool, is_specialized_dec =
!use_default_precision &&
limits::radix == 10 && limits::digits10 > 0
);
BOOST_STATIC_CONSTANT(std::streamsize, streamsize_max =
boost::integer_traits<std::streamsize>::const_max
);
BOOST_STATIC_CONSTANT(unsigned int, precision_dec = limits::digits10 + 1U);
BOOST_STATIC_ASSERT(!is_specialized_dec ||
precision_dec <= streamsize_max + 0UL
);
BOOST_STATIC_CONSTANT(unsigned long, precision_bin =
2UL + limits::digits * 30103UL / 100000UL
);
BOOST_STATIC_ASSERT(!is_specialized_bin ||
(limits::digits + 0UL < ULONG_MAX / 30103UL &&
precision_bin > limits::digits10 + 0UL &&
precision_bin <= streamsize_max + 0UL)
);
BOOST_STATIC_CONSTANT(std::streamsize, value =
is_specialized_bin ? precision_bin
: is_specialized_dec ? precision_dec : 6
);
};
#endif
template<class T>
inline std::streamsize lcast_get_precision(T* = 0)
{
#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
return lcast_precision<T>::value;
#else // Follow lcast_precision algorithm at run-time:
#ifdef BOOST_NO_IS_ABSTRACT
typedef std::numeric_limits<T> limits; // No fix for SF:1358600.
#else
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
boost::is_abstract<T>
, std::numeric_limits<lcast_abstract_stub>
, std::numeric_limits<T>
>::type limits;
#endif
bool const use_default_precision =
!limits::is_specialized || limits::is_exact;
if(!use_default_precision)
{ // Includes all built-in floating-point types, float, double ...
// and UDT types for which digits (significand bits) is defined (not zero)
bool const is_specialized_bin =
limits::radix == 2 && limits::digits > 0;
bool const is_specialized_dec =
limits::radix == 10 && limits::digits10 > 0;
std::streamsize const streamsize_max =
(boost::integer_traits<std::streamsize>::max)();
if(is_specialized_bin)
{ // Floating-point types with
// limits::digits defined by the specialization.
unsigned long const digits = limits::digits;
unsigned long const precision = 2UL + digits * 30103UL / 100000UL;
// unsigned long is selected because it is at least 32-bits
// and thus ULONG_MAX / 30103UL is big enough for all types.
BOOST_ASSERT(
digits < ULONG_MAX / 30103UL &&
precision > limits::digits10 + 0UL &&
precision <= streamsize_max + 0UL
);
return precision;
}
else if(is_specialized_dec)
{ // Decimal Floating-point type, most likely a User Defined Type
// rather than a real floating-point hardware type.
unsigned int const precision = limits::digits10 + 1U;
BOOST_ASSERT(precision <= streamsize_max + 0UL);
return precision;
}
}
// Integral type (for which precision has no effect)
// or type T for which limits is NOT specialized,
// so assume stream precision remains the default 6 decimal digits.
// Warning: if your User-defined Floating-point type T is NOT specialized,
// then you may lose accuracy by only using 6 decimal digits.
// To avoid this, you need to specialize T with either
// radix == 2 and digits == the number of significand bits,
// OR
// radix = 10 and digits10 == the number of decimal digits.
return 6;
#endif
}
template<class T>
inline void lcast_set_precision(std::ios_base& stream, T*)
{
stream.precision(lcast_get_precision<T>());
}
template<class Source, class Target>
inline void lcast_set_precision(std::ios_base& stream, Source*, Target*)
{
std::streamsize const s = lcast_get_precision(static_cast<Source*>(0));
std::streamsize const t = lcast_get_precision(static_cast<Target*>(0));
stream.precision(s > t ? s : t);
}
}}
#endif // BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
+29
View File
@@ -0,0 +1,29 @@
// Copyright David Abrahams 2003.
// 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 IMPLICIT_CAST_DWA200356_HPP
# define IMPLICIT_CAST_DWA200356_HPP
# include <boost/mpl/identity.hpp>
namespace boost {
// implementation originally suggested by C. Green in
// http://lists.boost.org/MailArchives/boost/msg00886.php
// The use of identity creates a non-deduced form, so that the
// explicit template argument must be supplied
template <typename T>
inline T implicit_cast (typename mpl::identity<T>::type x) {
return x;
}
// incomplete return type now is here
//template <typename T>
//void implicit_cast (...);
} // namespace boost
#endif // IMPLICIT_CAST_DWA200356_HPP
File diff suppressed because it is too large Load Diff
@@ -1,110 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_BAD_LEXICAL_CAST_HPP
#define BOOST_LEXICAL_CAST_BAD_LEXICAL_CAST_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <exception>
#include <typeinfo>
#include <boost/throw_exception.hpp>
#endif
namespace boost
{
BOOST_LEXICAL_CAST_BEGIN_MODULE_EXPORT
// exception used to indicate runtime lexical_cast failure
class BOOST_SYMBOL_VISIBLE bad_lexical_cast :
// workaround MSVC bug with std::bad_cast when _HAS_EXCEPTIONS == 0
#if defined(BOOST_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
public std::exception
#else
public std::bad_cast
#endif
{
public:
bad_lexical_cast() noexcept
#ifndef BOOST_NO_TYPEID
: source(&typeid(void)), target(&typeid(void))
#endif
{}
const char *what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE {
return "bad lexical cast: "
"source type value could not be interpreted as target";
}
bad_lexical_cast(const bad_lexical_cast&) = default;
bad_lexical_cast& operator=(const bad_lexical_cast&) = default;
#ifndef BOOST_NO_TYPEID
private:
#ifdef BOOST_NO_STD_TYPEINFO
typedef ::type_info type_info_t;
#else
typedef ::std::type_info type_info_t;
#endif
public:
bad_lexical_cast(
const type_info_t &source_type_arg,
const type_info_t &target_type_arg) noexcept
: source(&source_type_arg), target(&target_type_arg)
{}
const type_info_t &source_type() const noexcept {
return *source;
}
const type_info_t &target_type() const noexcept {
return *target;
}
private:
const type_info_t *source;
const type_info_t *target;
#endif
};
BOOST_LEXICAL_CAST_END_MODULE_EXPORT
namespace conversion { namespace detail {
#ifdef BOOST_NO_TYPEID
template <class S, class T>
inline void throw_bad_cast() {
boost::throw_exception(bad_lexical_cast());
}
#else
template <class S, class T>
inline void throw_bad_cast() {
boost::throw_exception(bad_lexical_cast(typeid(S), typeid(T)));
}
#endif
}} // namespace conversion::detail
} // namespace boost
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_BAD_LEXICAL_CAST_HPP
@@ -1,67 +0,0 @@
// Copyright Antony Polukhin, 2011-2026.
//
// 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_LEXICAL_CAST_DETAIL_BUFFER_VIEW_HPP
#define BOOST_LEXICAL_CAST_DETAIL_BUFFER_VIEW_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <iosfwd>
#endif
namespace boost { namespace conversion { namespace detail {
template < typename CharT >
struct buffer_view {
const CharT* begin;
const CharT* end;
};
template < typename CharT >
buffer_view<CharT> make_buffer_view(const CharT* begin, const CharT* end) {
return buffer_view<CharT>{begin, end};
}
inline buffer_view<char> make_buffer_view(const signed char* begin, const signed char* end) {
return buffer_view<char>{
reinterpret_cast<const char*>(begin),
reinterpret_cast<const char*>(end)
};
}
inline buffer_view<char> make_buffer_view(const unsigned char* begin, const unsigned char* end) {
return buffer_view<char>{
reinterpret_cast<const char*>(begin),
reinterpret_cast<const char*>(end)
};
}
template< typename CharT, typename Elem, typename Traits >
std::basic_ostream<Elem,Traits>& operator<<(
std::basic_ostream<Elem, Traits>& os,
buffer_view<CharT> r)
{
while (r.begin != r.end) {
os << r.begin[0];
++r.begin;
}
return os;
}
}}} // namespace boost::conversion::detail
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_BUFFER_VIEW_HPP
@@ -1,22 +0,0 @@
// Copyright Antony Polukhin, 2021-2026.
//
// 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_LEXICAL_CAST_DETAIL_CONFIG_HPP
#define BOOST_LEXICAL_CAST_DETAIL_CONFIG_HPP
#ifdef BOOST_LEXICAL_CAST_INTERFACE_UNIT
# define BOOST_LEXICAL_CAST_BEGIN_MODULE_EXPORT export {
# define BOOST_LEXICAL_CAST_END_MODULE_EXPORT }
#else
# define BOOST_LEXICAL_CAST_BEGIN_MODULE_EXPORT
# define BOOST_LEXICAL_CAST_END_MODULE_EXPORT
#endif
#if defined(BOOST_USE_MODULES) && !defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
import boost.lexical_cast;
#endif
#endif // #ifndef BOOST_LEXICAL_CAST_DETAIL_CONFIG_HPP
@@ -1,491 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_HPP
#define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
#include <array>
#include <cstddef>
#include <string>
#include <type_traits>
#include <boost/limits.hpp>
#include <array>
#ifndef BOOST_NO_CXX17_HDR_STRING_VIEW
#include <string_view>
#endif
#include <boost/container/container_fwd.hpp>
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/lexical_cast/detail/lcast_precision.hpp>
#include <boost/lexical_cast/detail/widest_char.hpp>
#include <boost/lexical_cast/detail/is_character.hpp>
#include <boost/lexical_cast/detail/buffer_view.hpp>
#include <boost/lexical_cast/detail/converter_lexical_streams.hpp>
namespace boost {
// Forward declaration
template<class T, std::size_t N>
class array;
template<class IteratorT>
class iterator_range;
// Forward declaration of boost::basic_string_view from Utility
template<class Ch, class Tr> class basic_string_view;
namespace detail // normalize_single_byte_char<Char>
{
// Converts signed/unsigned char to char
template < class Char >
struct normalize_single_byte_char
{
using type = Char;
};
template <>
struct normalize_single_byte_char< signed char >
{
using type = char;
};
template <>
struct normalize_single_byte_char< unsigned char >
{
using type = char;
};
}
namespace detail // deduce_character_type_later<T>
{
// Helper type, meaning that stram character for T must be deduced
// at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
template < class T > struct deduce_character_type_later {};
}
namespace detail // stream_char_common<T>
{
// Selectors to choose stream character type (common for Source and Target)
// Returns one of char, wchar_t, char16_t, char32_t or deduce_character_type_later<T> types
// Executed on Stage 1 (See deduce_source_char<T> and deduce_target_char<T>)
template < typename Type >
struct stream_char_common: public std::conditional<
boost::detail::is_character< Type >::value,
Type,
boost::detail::deduce_character_type_later< Type >
> {};
template < typename Char >
struct stream_char_common< Char* >: public std::conditional<
boost::detail::is_character< Char >::value,
Char,
boost::detail::deduce_character_type_later< Char* >
> {};
template < typename Char >
struct stream_char_common< const Char* >: public std::conditional<
boost::detail::is_character< Char >::value,
Char,
boost::detail::deduce_character_type_later< const Char* >
> {};
template < typename Char >
struct stream_char_common< boost::conversion::detail::buffer_view< Char > >
{
using type = Char;
};
template < typename Char >
struct stream_char_common< boost::iterator_range< Char* > >: public std::conditional<
boost::detail::is_character< Char >::value,
Char,
boost::detail::deduce_character_type_later< boost::iterator_range< Char* > >
> {};
template < typename Char >
struct stream_char_common< boost::iterator_range< const Char* > >: public std::conditional<
boost::detail::is_character< Char >::value,
Char,
boost::detail::deduce_character_type_later< boost::iterator_range< const Char* > >
> {};
template < class Char, class Traits, class Alloc >
struct stream_char_common< std::basic_string< Char, Traits, Alloc > >
{
using type = Char;
};
template < class Char, class Traits, class Alloc >
struct stream_char_common< boost::container::basic_string< Char, Traits, Alloc > >
{
using type = Char;
};
template < typename Char, std::size_t N >
struct stream_char_common< boost::array< Char, N > >: public std::conditional<
boost::detail::is_character< Char >::value,
Char,
boost::detail::deduce_character_type_later< boost::array< Char, N > >
> {};
template < typename Char, std::size_t N >
struct stream_char_common< boost::array< const Char, N > >: public std::conditional<
boost::detail::is_character< Char >::value,
Char,
boost::detail::deduce_character_type_later< boost::array< const Char, N > >
> {};
#ifndef BOOST_NO_CXX11_HDR_ARRAY
template < typename Char, std::size_t N >
struct stream_char_common< std::array<Char, N > >: public std::conditional<
boost::detail::is_character< Char >::value,
Char,
boost::detail::deduce_character_type_later< std::array< Char, N > >
> {};
template < typename Char, std::size_t N >
struct stream_char_common< std::array< const Char, N > >: public std::conditional<
boost::detail::is_character< Char >::value,
Char,
boost::detail::deduce_character_type_later< std::array< const Char, N > >
> {};
#endif
#ifndef BOOST_NO_CXX17_HDR_STRING_VIEW
template < class Char, class Traits >
struct stream_char_common< std::basic_string_view< Char, Traits > >
{
using type = Char;
};
#endif
template < class Char, class Traits >
struct stream_char_common< boost::basic_string_view< Char, Traits > >
{
using type = Char;
};
#ifdef BOOST_HAS_INT128
template <> struct stream_char_common< boost::int128_type >
{
using type = char;
};
template <> struct stream_char_common< boost::uint128_type >
{
using type = char;
};
#endif
#if !defined(BOOST_LCAST_NO_WCHAR_T) && defined(BOOST_NO_INTRINSIC_WCHAR_T)
template <>
struct stream_char_common< wchar_t >
{
using type = char;
};
#endif
}
namespace detail // deduce_source_char_impl<T>
{
// If type T is `deduce_character_type_later` type, then tries to deduce
// character type using streaming metafunctions.
// Otherwise supplied type T is a character type, that must be normalized
// using normalize_single_byte_char<Char>.
// Executed at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
template < class Char >
struct deduce_source_char_impl
{
typedef typename boost::detail::normalize_single_byte_char< Char >::type type;
};
template < class T >
struct deduce_source_char_impl< deduce_character_type_later< T > >
{
template <class U>
static auto left_shift_type(long)
-> decltype( std::declval<std::basic_ostream< char >&>() << std::declval<const U&>(), char{});
#if !defined(BOOST_LCAST_NO_WCHAR_T)
template <class U>
static auto left_shift_type(int)
-> decltype( std::declval<std::basic_ostream< wchar_t >&>() << std::declval<const U&>(), wchar_t{});
#endif
template <class U>
static void left_shift_type(...);
using type = decltype(left_shift_type<T>(1L));
static_assert(!std::is_same<type, void>::value,
#if defined(BOOST_LCAST_NO_WCHAR_T)
"Source type is not std::ostream`able and std::wostream`s are "
"not supported by your STL implementation"
#else
"Source type is neither std::ostream`able nor std::wostream`able"
#endif
);
};
}
namespace detail // deduce_target_char_impl<T>
{
// If type T is `deduce_character_type_later` type, then tries to deduce
// character type using boost::has_right_shift<T> metafunction.
// Otherwise supplied type T is a character type, that must be normalized
// using normalize_single_byte_char<Char>.
// Executed at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
template < class Char >
struct deduce_target_char_impl
{
typedef typename normalize_single_byte_char< Char >::type type;
};
template < class T >
struct deduce_target_char_impl< deduce_character_type_later<T> >
{
template <class U>
static auto right_shift_type(long)
-> decltype( std::declval<std::basic_istream< char >&>() >> std::declval<U&>(), char{});
#if !defined(BOOST_LCAST_NO_WCHAR_T)
template <class U>
static auto right_shift_type(int)
-> decltype( std::declval<std::basic_istream< wchar_t >&>() >> std::declval<U&>(), wchar_t{});
#endif
template <class U>
static void right_shift_type(...);
using type = decltype(right_shift_type<T>(1L));
static_assert(!std::is_same<type, void>::value,
#if defined(BOOST_LCAST_NO_WCHAR_T)
"Target type is not std::istream`able and std::wistream`s are "
"not supported by your STL implementation"
#else
"Target type is neither std::istream`able nor std::wistream`able"
#endif
);
};
}
namespace detail // deduce_target_char<T> and deduce_source_char<T>
{
// We deduce stream character types in two stages.
//
// Stage 1 is common for Target and Source. At Stage 1 we get
// non normalized character type (may contain unsigned/signed char)
// or deduce_character_type_later<T> where T is the original type.
// Stage 1 is executed by stream_char_common<T>
//
// At Stage 2 we normalize character types or try to deduce character
// type using metafunctions.
// Stage 2 is executed by deduce_target_char_impl<T> and
// deduce_source_char_impl<T>
//
// deduce_target_char<T> and deduce_source_char<T> functions combine
// both stages
template < class T >
struct deduce_target_char
{
typedef typename stream_char_common< T >::type stage1_type;
typedef typename deduce_target_char_impl< stage1_type >::type type;
};
template < class T >
struct deduce_source_char
{
typedef typename stream_char_common< T >::type stage1_type;
typedef typename deduce_source_char_impl< stage1_type >::type type;
};
}
namespace detail // array_to_pointer_decay<T>
{
template<class T>
struct array_to_pointer_decay
{
typedef T type;
};
template<class T, std::size_t N>
struct array_to_pointer_decay<T[N]>
{
typedef const T * type;
};
}
namespace detail // lcast_src_length
{
// Return max. length of string representation of Source;
template< class Source, // Source type of lexical_cast.
class Enable = void // helper type
>
struct lcast_src_length
{
BOOST_STATIC_CONSTANT(std::size_t, value = 1);
};
// Helper for integral types.
// Notes on length calculation:
// Max length for 32bit int with grouping "\1" and thousands_sep ',':
// "-2,1,4,7,4,8,3,6,4,7"
// ^ - is_signed
// ^ - 1 digit not counted by digits10
// ^^^^^^^^^^^^^^^^^^ - digits10 * 2
//
// Constant is_specialized is used instead of constant 1
// to prevent buffer overflow in a rare case when
// <boost/limits.hpp> doesn't add missing specialization for
// numeric_limits<T> for some integral type T.
// When is_specialized is false, the whole expression is 0.
template <class Source>
struct lcast_src_length<
Source, typename std::enable_if<boost::detail::lcast::is_integral<Source>::value >::type
>
{
BOOST_STATIC_CONSTANT(std::size_t, value =
std::numeric_limits<Source>::is_signed +
std::numeric_limits<Source>::is_specialized + /* == 1 */
std::numeric_limits<Source>::digits10 * 2
);
};
// Helper for floating point types.
// -1.23456789e-123456
// ^ sign
// ^ leading digit
// ^ decimal point
// ^^^^^^^^ lcast_precision<Source>::value
// ^ "e"
// ^ exponent sign
// ^^^^^^ exponent (assumed 6 or less digits)
// sign + leading digit + decimal point + "e" + exponent sign == 5
template<class Source>
struct lcast_src_length<
Source, typename std::enable_if<std::is_floating_point<Source>::value >::type
>
{
static_assert(
std::numeric_limits<Source>::max_exponent10 <= 999999L &&
std::numeric_limits<Source>::min_exponent10 >= -999999L
, "");
BOOST_STATIC_CONSTANT(std::size_t, value =
5 + lcast_precision<Source>::value + 6
);
};
}
namespace detail // lexical_cast_stream_traits<Source, Target>
{
template <class Source, class Target>
struct lexical_cast_stream_traits {
typedef typename boost::detail::array_to_pointer_decay<Source>::type src;
typedef typename std::remove_cv<src>::type no_cv_src;
typedef boost::detail::deduce_source_char<no_cv_src> deduce_src_char_metafunc;
typedef typename deduce_src_char_metafunc::type src_char_t;
typedef typename boost::detail::deduce_target_char<Target>::type target_char_t;
typedef typename boost::detail::widest_char<
target_char_t, src_char_t
>::type char_type;
#if !defined(BOOST_NO_CXX11_CHAR16_T) && defined(BOOST_NO_CXX11_UNICODE_LITERALS)
static_assert(!std::is_same<char16_t, src_char_t>::value
&& !std::is_same<char16_t, target_char_t>::value,
"Your compiler does not have full support for char16_t" );
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && defined(BOOST_NO_CXX11_UNICODE_LITERALS)
static_assert(!std::is_same<char32_t, src_char_t>::value
&& !std::is_same<char32_t, target_char_t>::value,
"Your compiler does not have full support for char32_t" );
#endif
typedef std::char_traits<char_type> traits;
typedef boost::detail::lcast_src_length<no_cv_src> len_t;
};
}
namespace detail
{
template<typename Target, typename Source>
struct lexical_converter_impl
{
typedef lexical_cast_stream_traits<Source, Target> stream_trait;
typedef detail::lcast::optimized_src_stream<
typename stream_trait::char_type,
typename stream_trait::traits,
stream_trait::len_t::value + 1
> optimized_src_stream;
template <class T>
static auto detect_type(int)
-> decltype(std::declval<optimized_src_stream&>().stream_in(std::declval<lcast::exact<T>>()), optimized_src_stream{});
template <class T>
static lcast::ios_src_stream<typename stream_trait::char_type, typename stream_trait::traits> detect_type(...);
using from_src_stream = decltype(detect_type<Source>(1));
typedef detail::lcast::to_target_stream<
typename stream_trait::char_type,
typename stream_trait::traits
> to_target_stream;
static inline bool try_convert(const Source& arg, Target& result) {
from_src_stream src_stream;
if (!src_stream.stream_in(lcast::exact<Source>{arg}))
return false;
to_target_stream out(src_stream.cbegin(), src_stream.cend());
if (!out.stream_out(result))
return false;
return true;
}
};
}
} // namespace boost
#undef BOOST_LCAST_NO_WCHAR_T
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_HPP
@@ -1,763 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014, Nowember 2016
#ifndef BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_STREAMS_HPP
#define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_STREAMS_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
#include <cstddef>
#include <string>
#include <cstring>
#include <cstdio>
#include <type_traits>
#include <boost/limits.hpp>
#include <boost/config/workaround.hpp>
#include <boost/core/snprintf.hpp>
#ifndef BOOST_NO_STD_LOCALE
# include <locale>
#else
# ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
// Getting error at this point means, that your STL library is old/lame/misconfigured.
// If nothing can be done with STL library, define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE,
// but beware: lexical_cast will understand only 'C' locale delimeters and thousands
// separators.
# error "Unable to use <locale> header. Define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE to force "
# error "boost::lexical_cast to use only 'C' locale during conversions."
# endif
#endif
#ifdef BOOST_NO_STRINGSTREAM
#include <strstream>
#else
#include <sstream>
#endif
#include <array>
#ifndef BOOST_NO_CWCHAR
# include <cwchar>
#endif
#include <istream>
#include <boost/container/container_fwd.hpp>
#ifndef BOOST_NO_CWCHAR
# include <cwchar>
#endif
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/lexical_cast/detail/buffer_view.hpp>
#include <boost/lexical_cast/detail/lcast_char_constants.hpp>
#include <boost/lexical_cast/detail/lcast_unsigned_converters.hpp>
#include <boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp>
#include <boost/lexical_cast/detail/inf_nan.hpp>
#include <boost/lexical_cast/detail/lcast_precision.hpp>
#include <boost/lexical_cast/detail/type_traits.hpp>
// Forward declarations
namespace boost {
template<class T, std::size_t N>
class array;
template<class IteratorT>
class iterator_range;
// forward declaration of boost::basic_string_view from Utility
template<class Ch, class Tr> class basic_string_view;
}
namespace boost { namespace detail { namespace lcast {
template <typename T>
struct exact {
static_assert(!std::is_const<T>::value, "");
static_assert(!std::is_reference<T>::value, "");
const T& payload;
};
template< class CharT // a result of widest_char transformation
, class Traits
, std::size_t CharacterBufferSize
>
class optimized_src_stream {
CharT buffer[CharacterBufferSize];
// After the `stream_in(` finishes, `[start, finish)` is
// the range to output by `operator >>`
const CharT* start;
const CharT* finish;
public:
optimized_src_stream(optimized_src_stream&&) = delete;
optimized_src_stream(const optimized_src_stream&) = delete;
optimized_src_stream& operator=(optimized_src_stream&&) = delete;
optimized_src_stream& operator=(const optimized_src_stream&) = delete;
optimized_src_stream() noexcept
: start(buffer)
, finish(buffer + CharacterBufferSize)
{}
const CharT* cbegin() const noexcept {
return start;
}
const CharT* cend() const noexcept {
return finish;
}
private:
bool shl_char(CharT ch) noexcept {
Traits::assign(buffer[0], ch);
finish = start + 1;
return true;
}
#ifndef BOOST_LCAST_NO_WCHAR_T
template <class T>
bool shl_char(T ch) {
static_assert(sizeof(T) <= sizeof(CharT),
"boost::lexical_cast does not support narrowing of char types."
"Use boost::locale instead" );
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
std::locale loc;
CharT const w = BOOST_USE_FACET(std::ctype<CharT>, loc).widen(ch);
#else
CharT const w = static_cast<CharT>(ch);
#endif
Traits::assign(buffer[0], w);
finish = start + 1;
return true;
}
#endif
bool shl_char_array(CharT const* str_value) noexcept {
start = str_value;
finish = start + Traits::length(str_value);
return true;
}
bool shl_char_array_limited(CharT const* str, std::size_t max_size) noexcept {
start = str;
finish = start;
const auto zero = Traits::to_char_type(0);
while (finish < start + max_size && zero != *finish) {
++ finish;
}
return true;
}
template <class T>
inline bool shl_unsigned(const T n) {
CharT* tmp_finish = buffer + CharacterBufferSize;
start = lcast_put_unsigned<Traits, T, CharT>(n, tmp_finish).convert();
finish = tmp_finish;
return true;
}
template <class T>
inline bool shl_signed(const T n) {
CharT* tmp_finish = buffer + CharacterBufferSize;
typedef typename boost::detail::lcast::make_unsigned<T>::type utype;
CharT* tmp_start = lcast_put_unsigned<Traits, utype, CharT>(lcast_to_unsigned(n), tmp_finish).convert();
if (n < 0) {
--tmp_start;
CharT const minus = lcast_char_constants<CharT>::minus;
Traits::assign(*tmp_start, minus);
}
start = tmp_start;
finish = tmp_finish;
return true;
}
bool shl_real_type(lcast::exact<float> val, char* begin) {
const double val_as_double = static_cast<double>(val.payload);
finish = start +
boost::core::snprintf(begin, CharacterBufferSize,
"%.*g", static_cast<int>(boost::detail::lcast_precision<float>::value), val_as_double);
return finish > start;
}
bool shl_real_type(lcast::exact<double> val, char* begin) {
finish = start +
boost::core::snprintf(begin, CharacterBufferSize,
"%.*g", static_cast<int>(boost::detail::lcast_precision<double>::value), val.payload);
return finish > start;
}
#ifndef __MINGW32__
bool shl_real_type(lcast::exact<long double> val, char* begin) {
finish = start +
boost::core::snprintf(begin, CharacterBufferSize,
"%.*Lg", static_cast<int>(boost::detail::lcast_precision<long double>::value), val.payload );
return finish > start;
}
#else
bool shl_real_type(lcast::exact<long double> val, char* begin) {
return shl_real_type(lcast::exact<double>{static_cast<double>(val.payload)}, begin);
}
#endif
#if !defined(BOOST_LCAST_NO_WCHAR_T)
bool shl_real_type(lcast::exact<float> val, wchar_t* begin) {
const double val_as_double = static_cast<double>(val.payload);
finish = start + boost::core::swprintf(
begin, CharacterBufferSize, L"%.*g",
static_cast<int>(boost::detail::lcast_precision<float>::value),
val_as_double
);
return finish > start;
}
bool shl_real_type(lcast::exact<double> val, wchar_t* begin) {
finish = start + boost::core::swprintf(
begin, CharacterBufferSize, L"%.*g",
static_cast<int>(boost::detail::lcast_precision<double>::value),
val.payload
);
return finish > start;
}
bool shl_real_type(lcast::exact<long double> val, wchar_t* begin) {
finish = start + boost::core::swprintf(
begin, CharacterBufferSize, L"%.*Lg",
static_cast<int>(boost::detail::lcast_precision<long double>::value),
val.payload
);
return finish > start;
}
#endif
public:
template <class C>
using enable_if_compatible_char_t = typename std::enable_if<
std::is_same<const C, const CharT>::value || (
std::is_same<const char, const CharT>::value && (
std::is_same<const C, const unsigned char>::value ||
std::is_same<const C, const signed char>::value
)
), bool
>::type;
template<class CharTraits, class Alloc>
bool stream_in(lcast::exact<std::basic_string<CharT,CharTraits,Alloc>> x) noexcept {
start = x.payload.data();
finish = start + x.payload.length();
return true;
}
template<class CharTraits, class Alloc>
bool stream_in(lcast::exact<boost::container::basic_string<CharT,CharTraits,Alloc>> x) noexcept {
start = x.payload.data();
finish = start + x.payload.length();
return true;
}
bool stream_in(lcast::exact<bool> x) noexcept {
CharT const czero = lcast_char_constants<CharT>::zero;
Traits::assign(buffer[0], Traits::to_char_type(czero + x.payload));
finish = start + 1;
return true;
}
bool stream_in(lcast::exact<boost::conversion::detail::buffer_view<CharT>> x) noexcept {
start = x.payload.begin;
finish = x.payload.end;
return true;
}
template <class C>
enable_if_compatible_char_t<C>
stream_in(lcast::exact<boost::iterator_range<C*>> x) noexcept {
auto buf = boost::conversion::detail::make_buffer_view(x.payload.begin(), x.payload.end());
return stream_in(lcast::exact<decltype(buf)>{buf});
}
bool stream_in(lcast::exact<char> x) { return shl_char(x.payload); }
bool stream_in(lcast::exact<unsigned char> x) { return shl_char(static_cast<char>(x.payload)); }
bool stream_in(lcast::exact<signed char> x) { return shl_char(static_cast<char>(x.payload)); }
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
template <class C>
typename std::enable_if<boost::detail::is_character<C>::value, bool>::type
stream_in(lcast::exact<C> x) { return shl_char(x.payload); }
#endif
template <class Type>
enable_if_compatible_char_t<Type>
stream_in(lcast::exact<Type*> x) { return shl_char_array(reinterpret_cast<CharT const*>(x.payload)); }
template <class Type>
typename std::enable_if<!std::is_floating_point<Type>::value && boost::detail::lcast::is_signed<Type>::value && !std::is_enum<Type>::value, bool>::type
stream_in(lcast::exact<Type> x) { return shl_signed(x.payload); }
template <class Type>
typename std::enable_if<boost::detail::lcast::is_unsigned<Type>::value && !std::is_enum<Type>::value, bool>::type
stream_in(lcast::exact<Type> x) { return shl_unsigned(x.payload); }
template <class Type>
auto stream_in(lcast::exact<Type> x) -> decltype(shl_real_type(x, buffer)) {
const CharT* inf_nan = detail::get_inf_nan(x.payload, CharT());
if (inf_nan) {
start = inf_nan;
finish = start + Traits::length(inf_nan);
return true;
}
return shl_real_type(x, buffer);
}
template <class C, std::size_t N>
enable_if_compatible_char_t<C>
stream_in(lcast::exact<boost::array<C, N>> x) noexcept {
return shl_char_array_limited(reinterpret_cast<const CharT*>(x.payload.data()), N);
}
template <class C, std::size_t N>
enable_if_compatible_char_t<C>
stream_in(lcast::exact<std::array<C, N>> x) noexcept {
return shl_char_array_limited(reinterpret_cast<const CharT*>(x.payload.data()), N);
}
#ifndef BOOST_NO_CXX17_HDR_STRING_VIEW
template <class C, class CharTraits>
enable_if_compatible_char_t<C>
stream_in(lcast::exact<std::basic_string_view<C, CharTraits>> x) noexcept {
start = reinterpret_cast<const CharT*>(x.payload.data());
finish = start + x.payload.size();
return true;
}
#endif
template <class C, class CharTraits>
enable_if_compatible_char_t<C>
stream_in(lcast::exact<boost::basic_string_view<C, CharTraits>> x) noexcept {
start = reinterpret_cast<const CharT*>(x.payload.data());
finish = start + x.payload.size();
return true;
}
};
template <class CharT, class Traits>
class ios_src_stream {
typedef detail::lcast::out_stream_t<CharT, Traits> deduced_out_stream_t;
typedef detail::lcast::stringbuffer_t<CharT, Traits> deduced_out_buffer_t;
deduced_out_buffer_t out_buffer;
deduced_out_stream_t out_stream;
const CharT* start = nullptr;
const CharT* finish = nullptr;
public:
ios_src_stream(ios_src_stream&&) = delete;
ios_src_stream(const ios_src_stream&) = delete;
ios_src_stream& operator=(ios_src_stream&&) = delete;
ios_src_stream& operator=(const ios_src_stream&) = delete;
ios_src_stream(): out_buffer(), out_stream(&out_buffer) {}
const CharT* cbegin() const noexcept {
return start;
}
const CharT* cend() const noexcept {
return finish;
}
private:
const deduced_out_buffer_t* get_rdbuf() const {
return static_cast<deduced_out_buffer_t*>(
out_stream.rdbuf()
);
}
template<typename InputStreamable>
bool shl_input_streamable(InputStreamable& input) {
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
// If you have compilation error at this point, than your STL library
// does not support such conversions. Try updating it.
static_assert(std::is_same<char, CharT>::value, "");
#endif
#ifndef BOOST_NO_EXCEPTIONS
out_stream.exceptions(std::ios::badbit);
try {
#endif
bool const result = !(out_stream << input).fail();
const auto* const p = get_rdbuf();
start = p->pbase();
finish = p->pptr();
return result;
#ifndef BOOST_NO_EXCEPTIONS
} catch (const ::std::ios_base::failure& /*f*/) {
return false;
}
#endif
}
template <class T>
bool shl_char_array(T const* str_value) {
static_assert(sizeof(T) <= sizeof(CharT),
"boost::lexical_cast does not support narrowing of char types."
"Use boost::locale instead" );
return shl_input_streamable(str_value);
}
template <class T>
bool shl_real(T val) {
const CharT* inf_nan = detail::get_inf_nan(val, CharT());
if (inf_nan) {
start = inf_nan;
finish = start + Traits::length(inf_nan);
return true;
}
boost::detail::lcast_set_precision(out_stream, &val);
return shl_input_streamable(val);
}
public:
template <class Type>
typename std::enable_if<boost::detail::is_character<Type>::value && sizeof(char) == sizeof(Type), bool>::type
stream_in(lcast::exact<const Type*> x) { return shl_char_array(reinterpret_cast<char const*>(x.payload)); }
template <class Type>
typename std::enable_if<boost::detail::is_character<Type>::value && sizeof(char) != sizeof(Type), bool>::type
stream_in(lcast::exact<const Type*> x) { return shl_char_array(x.payload); }
bool stream_in(lcast::exact<float> x) { return shl_real(x.payload); }
bool stream_in(lcast::exact<double> x) { return shl_real(x.payload); }
bool stream_in(lcast::exact<long double> x) {
#ifndef __MINGW32__
return shl_real(x.payload);
#else
return shl_real(static_cast<double>(x.payload));
#endif
}
template <class C>
typename std::enable_if<boost::detail::is_character<C>::value, bool>::type
stream_in(lcast::exact<iterator_range<C*>> x) noexcept {
auto buf = boost::conversion::detail::make_buffer_view(x.payload.begin(), x.payload.end());
return stream_in(lcast::exact<decltype(buf)>{buf});
}
template <class C>
typename std::enable_if<boost::detail::is_character<C>::value, bool>::type
stream_in(lcast::exact<iterator_range<const C*>> x) noexcept {
auto buf = boost::conversion::detail::make_buffer_view(x.payload.begin(), x.payload.end());
return stream_in(lcast::exact<decltype(buf)>{buf});
}
template <class InStreamable>
bool stream_in(lcast::exact<InStreamable> x) { return shl_input_streamable(x.payload); }
};
template <class CharT, class Traits>
class to_target_stream {
//`[start, finish)` is the range to output by `operator >>`
const CharT* start;
const CharT* const finish;
public:
to_target_stream(to_target_stream&&) = delete;
to_target_stream(const to_target_stream&) = delete;
to_target_stream& operator=(to_target_stream&&) = delete;
to_target_stream& operator=(const to_target_stream&) = delete;
to_target_stream(const CharT* begin, const CharT* end) noexcept
: start(begin)
, finish(end)
{}
private:
template <typename Type>
#if defined(__clang__) && (__clang_major__ > 3 || __clang_minor__ > 6)
__attribute__((no_sanitize("unsigned-integer-overflow")))
#endif
bool shr_unsigned(Type& output) {
if (start == finish) return false;
CharT const minus = lcast_char_constants<CharT>::minus;
CharT const plus = lcast_char_constants<CharT>::plus;
bool const has_minus = Traits::eq(minus, *start);
/* We won`t use `start' any more, so no need in decrementing it after */
if (has_minus || Traits::eq(plus, *start)) {
++start;
}
bool const succeed = lcast_ret_unsigned<Traits, Type, CharT>(output, start, finish).convert();
if (has_minus) {
output = static_cast<Type>(0u - output);
}
return succeed;
}
template <typename Type>
#if defined(__clang__) && (__clang_major__ > 3 || __clang_minor__ > 6)
__attribute__((no_sanitize("unsigned-integer-overflow")))
#endif
bool shr_signed(Type& output) {
if (start == finish) return false;
CharT const minus = lcast_char_constants<CharT>::minus;
CharT const plus = lcast_char_constants<CharT>::plus;
typedef typename boost::detail::lcast::make_unsigned<Type>::type utype;
utype out_tmp = 0;
bool const has_minus = Traits::eq(minus, *start);
/* We won`t use `start' any more, so no need in decrementing it after */
if (has_minus || Traits::eq(plus, *start)) {
++start;
}
bool succeed = lcast_ret_unsigned<Traits, utype, CharT>(out_tmp, start, finish).convert();
if (has_minus) {
utype const comp_val = (static_cast<utype>(1) << std::numeric_limits<Type>::digits);
succeed = succeed && out_tmp<=comp_val;
output = static_cast<Type>(0u - out_tmp);
} else {
utype const comp_val = static_cast<utype>((std::numeric_limits<Type>::max)());
succeed = succeed && out_tmp<=comp_val;
output = static_cast<Type>(out_tmp);
}
return succeed;
}
template<typename InputStreamable>
bool shr_using_base_class(InputStreamable& output)
{
static_assert(
!std::is_pointer<InputStreamable>::value,
"boost::lexical_cast can not convert to pointers"
);
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
static_assert(std::is_same<char, CharT>::value,
"boost::lexical_cast can not convert, because your STL library does not "
"support such conversions. Try updating it."
);
#endif
#if defined(BOOST_NO_STRINGSTREAM)
std::istrstream stream(start, static_cast<std::istrstream::streamsize>(finish - start));
#else
typedef detail::lcast::buffer_t<CharT, Traits> buffer_t;
buffer_t buf;
// Usually `istream` and `basic_istream` do not modify
// content of buffer; `buffer_t` assures that this is true
buf.setbuf(const_cast<CharT*>(start), static_cast<typename buffer_t::streamsize>(finish - start));
#if defined(BOOST_NO_STD_LOCALE)
std::istream stream(&buf);
#else
std::basic_istream<CharT, Traits> stream(&buf);
#endif // BOOST_NO_STD_LOCALE
#endif // BOOST_NO_STRINGSTREAM
#ifndef BOOST_NO_EXCEPTIONS
stream.exceptions(std::ios::badbit);
try {
#endif
stream.unsetf(std::ios::skipws);
boost::detail::lcast_set_precision(stream, static_cast<InputStreamable*>(0));
return (stream >> output)
&& (stream.get() == Traits::eof());
#ifndef BOOST_NO_EXCEPTIONS
} catch (const ::std::ios_base::failure& /*f*/) {
return false;
}
#endif
}
template<class T>
inline bool shr_xchar(T& output) noexcept {
static_assert(sizeof(CharT) == sizeof(T),
"boost::lexical_cast does not support narrowing of character types."
"Use boost::locale instead" );
bool const ok = (finish - start == 1);
if (ok) {
CharT out;
Traits::assign(out, *start);
output = static_cast<T>(out);
}
return ok;
}
template <std::size_t N, class ArrayT>
bool shr_std_array(ArrayT& output) noexcept {
const std::size_t size = static_cast<std::size_t>(finish - start);
if (size > N - 1) { // `-1` because we need to store \0 at the end
return false;
}
std::memcpy(&output[0], start, size * sizeof(CharT));
output[size] = Traits::to_char_type(0);
return true;
}
public:
bool stream_out(unsigned short& output) { return shr_unsigned(output); }
bool stream_out(unsigned int& output) { return shr_unsigned(output); }
bool stream_out(unsigned long int& output) { return shr_unsigned(output); }
bool stream_out(short& output) { return shr_signed(output); }
bool stream_out(int& output) { return shr_signed(output); }
bool stream_out(long int& output) { return shr_signed(output); }
#if defined(BOOST_HAS_LONG_LONG)
bool stream_out(boost::ulong_long_type& output) { return shr_unsigned(output); }
bool stream_out(boost::long_long_type& output) { return shr_signed(output); }
#elif defined(BOOST_HAS_MS_INT64)
bool stream_out(unsigned __int64& output) { return shr_unsigned(output); }
bool stream_out(__int64& output) { return shr_signed(output); }
#endif
#ifdef BOOST_HAS_INT128
bool stream_out(boost::uint128_type& output) { return shr_unsigned(output); }
bool stream_out(boost::int128_type& output) { return shr_signed(output); }
#endif
bool stream_out(char& output) { return shr_xchar(output); }
bool stream_out(unsigned char& output) { return shr_xchar(output); }
bool stream_out(signed char& output) { return shr_xchar(output); }
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
bool stream_out(wchar_t& output) { return shr_xchar(output); }
#endif
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
bool stream_out(char16_t& output) { return shr_xchar(output); }
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
bool stream_out(char32_t& output) { return shr_xchar(output); }
#endif
template<class CharTraits, class Alloc>
bool stream_out(std::basic_string<CharT,CharTraits,Alloc>& str) {
str.assign(start, finish); return true;
}
template<class CharTraits, class Alloc>
bool stream_out(boost::container::basic_string<CharT,CharTraits,Alloc>& str) {
str.assign(start, finish); return true;
}
template <class C, std::size_t N>
bool stream_out(std::array<C, N>& output) noexcept {
static_assert(sizeof(C) == sizeof(CharT), "");
return shr_std_array<N>(output);
}
template <class C, std::size_t N>
bool stream_out(boost::array<C, N>& output) noexcept {
static_assert(sizeof(C) == sizeof(CharT), "");
return shr_std_array<N>(output);
}
bool stream_out(bool& output) noexcept {
output = false; // Suppress warning about uninitalized variable
if (start == finish) return false;
CharT const zero = lcast_char_constants<CharT>::zero;
CharT const plus = lcast_char_constants<CharT>::plus;
CharT const minus = lcast_char_constants<CharT>::minus;
const CharT* const dec_finish = finish - 1;
output = Traits::eq(*dec_finish, zero + 1);
if (!output && !Traits::eq(*dec_finish, zero)) {
return false; // Does not ends on '0' or '1'
}
if (start == dec_finish) return true;
// We may have sign at the beginning
if (Traits::eq(plus, *start) || (Traits::eq(minus, *start) && !output)) {
++ start;
}
// Skipping zeros
while (start != dec_finish) {
if (!Traits::eq(zero, *start)) {
return false; // Not a zero => error
}
++ start;
}
return true;
}
private:
// Not optimised converter
template <class T>
bool float_types_converter_internal(T& output) {
if (parse_inf_nan(start, finish, output)) return true;
bool const return_value = shr_using_base_class(output);
/* Some compilers and libraries successfully
* parse 'inf', 'INFINITY', '1.0E', '1.0E-'...
* We are trying to provide a unified behaviour,
* so we just forbid such conversions (as some
* of the most popular compilers/libraries do)
* */
CharT const minus = lcast_char_constants<CharT>::minus;
CharT const plus = lcast_char_constants<CharT>::plus;
CharT const capital_e = lcast_char_constants<CharT>::capital_e;
CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
if ( return_value &&
(
Traits::eq(*(finish-1), lowercase_e) // 1.0e
|| Traits::eq(*(finish-1), capital_e) // 1.0E
|| Traits::eq(*(finish-1), minus) // 1.0e- or 1.0E-
|| Traits::eq(*(finish-1), plus) // 1.0e+ or 1.0E+
)
) return false;
return return_value;
}
public:
bool stream_out(float& output) { return float_types_converter_internal(output); }
bool stream_out(double& output) { return float_types_converter_internal(output); }
bool stream_out(long double& output) { return float_types_converter_internal(output); }
// Generic istream-based algorithm.
// lcast_streambuf_for_target<InputStreamable>::value is true.
template <typename InputStreamable>
bool stream_out(InputStreamable& output) {
return shr_using_base_class(output);
}
};
}}} // namespace boost::detail::lcast
#undef BOOST_LCAST_NO_WCHAR_T
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_HPP
@@ -1,190 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2016
#ifndef BOOST_LEXICAL_CAST_DETAIL_CONVERTER_NUMERIC_HPP
#define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_NUMERIC_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <type_traits>
#include <boost/core/cmath.hpp>
#include <boost/limits.hpp>
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/lexical_cast/detail/type_traits.hpp>
namespace boost { namespace detail {
template <class Source, class Target>
bool ios_numeric_comparer_float(Source x, Source y) noexcept {
return x == y
|| (boost::core::isnan(x) && boost::core::isnan(y))
|| (x < (std::numeric_limits<Target>::min)())
;
}
template <class RangeType, class T>
constexpr bool is_out_of_range_for(T value) noexcept {
return value > static_cast<T>((std::numeric_limits<RangeType>::max)())
|| value < static_cast<T>((std::numeric_limits<RangeType>::min)())
|| boost::core::isnan(value);
}
// integral -> integral
template <typename Target, typename Source>
typename std::enable_if<
!std::is_floating_point<Source>::value && !std::is_floating_point<Target>::value, bool
>::type noexcept_numeric_convert(Source arg, Target& result) noexcept {
const Target target_tmp = static_cast<Target>(arg);
const Source arg_restored = static_cast<Source>(target_tmp);
if (arg == arg_restored) {
result = target_tmp;
return true;
}
return false;
}
// integral -> floating point
template <typename Target, typename Source>
typename std::enable_if<
!std::is_floating_point<Source>::value && std::is_floating_point<Target>::value, bool
>::type noexcept_numeric_convert(Source arg, Target& result) noexcept {
const Target target_tmp = static_cast<Target>(arg);
result = target_tmp;
return true;
}
// floating point -> floating point
template <typename Target, typename Source>
typename std::enable_if<
std::is_floating_point<Source>::value && std::is_floating_point<Target>::value, bool
>::type noexcept_numeric_convert(Source arg, Target& result) noexcept {
const Target target_tmp = static_cast<Target>(arg);
const Source arg_restored = static_cast<Source>(target_tmp);
if (detail::ios_numeric_comparer_float<Source, Target>(arg, arg_restored)) {
result = target_tmp;
return true;
}
return false;
}
// floating point -> integral
template <typename Target, typename Source>
typename std::enable_if<
std::is_floating_point<Source>::value && !std::is_floating_point<Target>::value, bool
>::type noexcept_numeric_convert(Source arg, Target& result) noexcept {
if (detail::is_out_of_range_for<Target>(arg)) {
return false;
}
const Target target_tmp = static_cast<Target>(arg);
const Source arg_restored = static_cast<Source>(target_tmp);
if (arg == arg_restored /* special values are handled in detail::is_out_of_range_for */) {
result = target_tmp;
return true;
}
return false;
}
struct lexical_cast_dynamic_num_not_ignoring_minus
{
template <typename Target, typename Source>
static inline bool try_convert(Source arg, Target& result) noexcept {
return boost::detail::noexcept_numeric_convert<Target, Source >(arg, result);
}
};
struct lexical_cast_dynamic_num_ignoring_minus
{
template <typename Target, typename Source>
#if defined(__clang__) && (__clang_major__ > 3 || __clang_minor__ > 6)
__attribute__((no_sanitize("unsigned-integer-overflow")))
#endif
static inline bool try_convert(Source arg, Target& result) noexcept {
typedef typename std::conditional<
std::is_floating_point<Source>::value,
std::conditional<true, Source, Source>, // std::type_identity emulation
boost::detail::lcast::make_unsigned<Source>
>::type usource_lazy_t;
typedef typename usource_lazy_t::type usource_t;
if (arg < 0) {
const bool res = boost::detail::noexcept_numeric_convert<Target, usource_t>(
static_cast<usource_t>(0u - static_cast<usource_t>(arg)), result
);
result = static_cast<Target>(0u - result);
return res;
} else {
return boost::detail::noexcept_numeric_convert<Target, usource_t>(arg, result);
}
}
};
/*
* dynamic_num_converter_impl follows the rules:
* 1) If Source can be converted to Target without precision loss and
* without overflows, then assign Source to Target and return
*
* 2) If Source is less than 0 and Target is an unsigned integer,
* then negate Source, check the requirements of rule 1) and if
* successful, assign static_casted Source to Target and return
*
* 3) Otherwise throw a bad_lexical_cast exception
*
*
* Rule 2) required because boost::lexical_cast has the behavior of
* stringstream, which uses the rules of scanf for conversions. And
* in the C99 standard for unsigned input value minus sign is
* optional, so if a negative number is read, no errors will arise
* and the result will be the two's complement.
*/
template <typename Target, typename Source>
struct dynamic_num_converter_impl
{
static inline bool try_convert(Source arg, Target& result) noexcept {
typedef typename std::conditional<
boost::detail::lcast::is_unsigned<Target>::value &&
(boost::detail::lcast::is_signed<Source>::value || std::is_floating_point<Source>::value) &&
!(std::is_same<Source, bool>::value) &&
!(std::is_same<Target, bool>::value),
lexical_cast_dynamic_num_ignoring_minus,
lexical_cast_dynamic_num_not_ignoring_minus
>::type caster_type;
return caster_type::try_convert(arg, result);
}
};
}} // namespace boost::detail
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_CONVERTER_NUMERIC_HPP
@@ -1,195 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_DETAIL_INF_NAN_HPP
#define BOOST_LEXICAL_CAST_DETAIL_INF_NAN_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
#include <boost/limits.hpp>
#include <boost/config/workaround.hpp>
#include <boost/core/cmath.hpp>
#include <cstddef>
#include <cstring>
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/lexical_cast/detail/lcast_char_constants.hpp>
namespace boost {
namespace detail
{
template <class CharT>
bool lc_iequal(const CharT* val, const CharT* lcase, const CharT* ucase, unsigned int len) noexcept {
for( unsigned int i=0; i < len; ++i ) {
if ( val[i] != lcase[i] && val[i] != ucase[i] ) return false;
}
return true;
}
/* Returns true and sets the correct value if found NaN or Inf. */
template <class CharT, class T>
inline bool parse_inf_nan_impl(const CharT* begin, const CharT* end, T& value
, const CharT* lc_NAN, const CharT* lc_nan
, const CharT* lc_INFINITY, const CharT* lc_infinity
, const CharT opening_brace, const CharT closing_brace) noexcept
{
if (begin == end) return false;
const CharT minus = lcast_char_constants<CharT>::minus;
const CharT plus = lcast_char_constants<CharT>::plus;
const int inifinity_size = 8; // == sizeof("infinity") - 1
/* Parsing +/- */
bool const has_minus = (*begin == minus);
if (has_minus || *begin == plus) {
++ begin;
}
if (end - begin < 3) return false;
if (lc_iequal(begin, lc_nan, lc_NAN, 3)) {
begin += 3;
if (end != begin) {
/* It is 'nan(...)' or some bad input*/
if (end - begin < 2) return false; // bad input
-- end;
if (*begin != opening_brace || *end != closing_brace) return false; // bad input
}
if( !has_minus ) value = std::numeric_limits<T>::quiet_NaN();
else value = boost::core::copysign(std::numeric_limits<T>::quiet_NaN(), static_cast<T>(-1));
return true;
} else if (
( /* 'INF' or 'inf' */
end - begin == 3 // 3 == sizeof('inf') - 1
&& lc_iequal(begin, lc_infinity, lc_INFINITY, 3)
)
||
( /* 'INFINITY' or 'infinity' */
end - begin == inifinity_size
&& lc_iequal(begin, lc_infinity, lc_INFINITY, inifinity_size)
)
)
{
if( !has_minus ) value = std::numeric_limits<T>::infinity();
else value = -std::numeric_limits<T>::infinity();
return true;
}
return false;
}
template <class CharT, class T>
const CharT* get_inf_nan_impl(T value
, const CharT* lc_nan
, const CharT* lc_minus_nan
, const CharT* lc_infinity
, const CharT* lc_minus_infinity) noexcept
{
if (boost::core::isnan(value)) {
if (boost::core::signbit(value)) {
return lc_minus_nan;
}
return lc_nan;
} else if (boost::core::isinf(value)) {
if (boost::core::signbit(value)) {
return lc_minus_infinity;
}
return lc_infinity;
}
return nullptr;
}
#ifndef BOOST_LCAST_NO_WCHAR_T
template <class T>
bool parse_inf_nan(const wchar_t* begin, const wchar_t* end, T& value) noexcept {
return parse_inf_nan_impl(begin, end, value
, L"NAN", L"nan"
, L"INFINITY", L"infinity"
, L'(', L')');
}
template <class T>
const wchar_t* get_inf_nan(T value, wchar_t) noexcept {
return detail::get_inf_nan_impl(value, L"nan", L"-nan", L"inf", L"-inf");
}
#endif
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
template <class T>
bool parse_inf_nan(const char16_t* begin, const char16_t* end, T& value) noexcept {
return parse_inf_nan_impl(begin, end, value
, u"NAN", u"nan"
, u"INFINITY", u"infinity"
, u'(', u')');
}
template <class T>
const char16_t* get_inf_nan(T value, char16_t) noexcept {
return detail::get_inf_nan_impl(value, u"nan", u"-nan", u"inf", u"-inf");
}
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
template <class T>
bool parse_inf_nan(const char32_t* begin, const char32_t* end, T& value) noexcept {
return parse_inf_nan_impl(begin, end, value
, U"NAN", U"nan"
, U"INFINITY", U"infinity"
, U'(', U')');
}
template <class T>
const char32_t* get_inf_nan(T value, char32_t) noexcept {
return detail::get_inf_nan_impl(value, U"nan", U"-nan", U"inf", U"-inf");
}
#endif
template <class CharT, class T>
bool parse_inf_nan(const CharT* begin, const CharT* end, T& value) noexcept {
return parse_inf_nan_impl(begin, end, value
, "NAN", "nan"
, "INFINITY", "infinity"
, '(', ')');
}
template <class T>
const char* get_inf_nan(T value, char) noexcept {
return detail::get_inf_nan_impl(value, "nan", "-nan", "inf", "-inf");
}
}
} // namespace boost
#undef BOOST_LCAST_NO_WCHAR_T
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_INF_NAN_HPP
@@ -1,60 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_DETAIL_IS_CHARACTER_HPP
#define BOOST_LEXICAL_CAST_DETAIL_IS_CHARACTER_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <type_traits>
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
namespace boost { namespace detail {
// returns true, if T is one of the character types
template < typename T >
using is_character = std::integral_constant<
bool,
std::is_same< T, char >::value ||
#if !defined(BOOST_NO_STRINGSTREAM) && !defined(BOOST_NO_STD_WSTRING)
std::is_same< T, wchar_t >::value ||
#endif
#ifndef BOOST_NO_CXX11_CHAR16_T
std::is_same< T, char16_t >::value ||
#endif
#ifndef BOOST_NO_CXX11_CHAR32_T
std::is_same< T, char32_t >::value ||
#endif
std::is_same< T, unsigned char >::value ||
std::is_same< T, signed char >::value
>;
}}
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_IS_CHARACTER_HPP
@@ -1,82 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_BASIC_UNLOCKEDBUF_HPP
#define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_BASIC_UNLOCKEDBUF_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#ifdef BOOST_NO_STRINGSTREAM
#include <strstream>
#else
#include <sstream>
#endif
#include <boost/detail/basic_pointerbuf.hpp>
#ifndef BOOST_NO_CWCHAR
# include <cwchar>
#endif
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
namespace boost { namespace detail { namespace lcast {
// acts as a stream buffer which wraps around a pair of pointers
// and gives acces to internals
template <class BufferType, class CharT>
class basic_unlockedbuf : public basic_pointerbuf<CharT, BufferType> {
public:
typedef basic_pointerbuf<CharT, BufferType> base_type;
typedef typename base_type::streamsize streamsize;
using base_type::pptr;
using base_type::pbase;
using base_type::setbuf;
};
#if defined(BOOST_NO_STRINGSTREAM)
template <class CharT, class Traits>
using out_stream_t = std::ostream;
template <class CharT, class Traits>
using stringbuffer_t = basic_unlockedbuf<std::strstreambuf, char>;
#elif defined(BOOST_NO_STD_LOCALE)
template <class CharT, class Traits>
using out_stream_t = std::ostream;
template <class CharT, class Traits>
using stringbuffer_t = basic_unlockedbuf<std::stringbuf, char>;
template <class CharT, class Traits>
using buffer_t = basic_unlockedbuf<std::streambuf, char>;
#else
template <class CharT, class Traits>
using out_stream_t = std::basic_ostream<CharT, Traits>;
template <class CharT, class Traits>
using stringbuffer_t = basic_unlockedbuf<std::basic_stringbuf<CharT, Traits>, CharT>;
template <class CharT, class Traits>
using buffer_t = basic_unlockedbuf<std::basic_streambuf<CharT, Traits>, CharT>;
#endif
}}} // namespace boost::detail::lcast
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_BASIC_UNLOCKEDBUF_HPP
@@ -1,53 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_DETAIL_LCAST_CHAR_CONSTANTS_HPP
#define BOOST_LEXICAL_CAST_DETAIL_LCAST_CHAR_CONSTANTS_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
namespace boost
{
namespace detail // '0', '-', '+', 'e', 'E' and '.' constants
{
template < typename Char >
struct lcast_char_constants {
// We check in tests assumption that static casted character is
// equal to correctly written C++ literal: U'0' == static_cast<char32_t>('0')
BOOST_STATIC_CONSTANT(Char, zero = static_cast<Char>('0'));
BOOST_STATIC_CONSTANT(Char, minus = static_cast<Char>('-'));
BOOST_STATIC_CONSTANT(Char, plus = static_cast<Char>('+'));
BOOST_STATIC_CONSTANT(Char, lowercase_e = static_cast<Char>('e'));
BOOST_STATIC_CONSTANT(Char, capital_e = static_cast<Char>('E'));
BOOST_STATIC_CONSTANT(Char, c_decimal_separator = static_cast<Char>('.'));
};
}
} // namespace boost
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_LCAST_CHAR_CONSTANTS_HPP
@@ -1,95 +0,0 @@
// Copyright Alexander Nasonov & Paul A. Bristow 2006.
// 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)
#ifndef BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
#define BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <climits>
#include <ios>
#include <limits>
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
namespace boost { namespace detail {
// Calculate an argument to pass to std::ios_base::precision from
// lexical_cast.
template<class T>
struct lcast_precision
{
using limits = std::numeric_limits<T>;
static constexpr bool use_default_precision =
!limits::is_specialized || limits::is_exact
;
static constexpr bool is_specialized_bin =
!use_default_precision &&
limits::radix == 2 && limits::digits > 0
;
static constexpr bool is_specialized_dec =
!use_default_precision &&
limits::radix == 10 && limits::digits10 > 0
;
static constexpr std::streamsize streamsize_max =
(std::numeric_limits<std::streamsize>::max)()
;
static constexpr unsigned int precision_dec = limits::digits10 + 1U;
static_assert(!is_specialized_dec ||
precision_dec <= streamsize_max + 0UL
, "");
static constexpr unsigned long precision_bin =
2UL + limits::digits * 30103UL / 100000UL
;
static_assert(!is_specialized_bin ||
(limits::digits + 0UL < ULONG_MAX / 30103UL &&
precision_bin > limits::digits10 + 0UL &&
precision_bin <= streamsize_max + 0UL)
, "");
static constexpr std::streamsize value =
is_specialized_bin ? precision_bin
: is_specialized_dec ? precision_dec : 6
;
};
template<class T>
inline void lcast_set_precision(std::ios_base& stream, T*)
{
stream.precision(lcast_precision<T>::value);
}
template<class Source, class Target>
inline void lcast_set_precision(std::ios_base& stream, Source*, Target*)
{
std::streamsize const s = lcast_precision<Source>::value;
std::streamsize const t = lcast_precision<Target*>::value;
stream.precision(s > t ? s : t);
}
}}
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
@@ -1,308 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_DETAIL_LCAST_UNSIGNED_CONVERTERS_HPP
#define BOOST_LEXICAL_CAST_DETAIL_LCAST_UNSIGNED_CONVERTERS_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <climits>
#include <cstddef>
#include <string>
#include <cstring>
#include <cstdio>
#include <type_traits>
#include <boost/limits.hpp>
#include <boost/config/workaround.hpp>
#include <boost/lexical_cast/detail/type_traits.hpp>
#ifndef BOOST_NO_STD_LOCALE
# include <locale>
#else
# ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
// Getting error at this point means, that your STL library is old/lame/misconfigured.
// If nothing can be done with STL library, define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE,
// but beware: lexical_cast will understand only 'C' locale delimeters and thousands
// separators.
# error "Unable to use <locale> header. Define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE to force "
# error "boost::lexical_cast to use only 'C' locale during conversions."
# endif
#endif
#include <boost/lexical_cast/detail/lcast_char_constants.hpp>
#include <boost/core/noncopyable.hpp>
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/lexical_cast/detail/lcast_char_constants.hpp>
namespace boost
{
namespace detail // lcast_to_unsigned
{
template<class T>
#if defined(__clang__) && (__clang_major__ > 3 || __clang_minor__ > 6)
__attribute__((no_sanitize("unsigned-integer-overflow")))
#endif
inline
typename boost::detail::lcast::make_unsigned<T>::type lcast_to_unsigned(const T value) noexcept {
typedef typename boost::detail::lcast::make_unsigned<T>::type result_type;
return value < 0
? static_cast<result_type>(0u - static_cast<result_type>(value))
: static_cast<result_type>(value);
}
}
namespace detail // lcast_put_unsigned
{
template <class Traits, class T, class CharT>
class lcast_put_unsigned: boost::noncopyable {
typedef typename Traits::int_type int_type;
typename std::conditional<
(sizeof(unsigned) > sizeof(T))
, unsigned
, T
>::type m_value;
CharT* m_finish;
CharT const m_czero;
int_type const m_zero;
public:
lcast_put_unsigned(const T n_param, CharT* finish) noexcept
: m_value(n_param), m_finish(finish)
, m_czero(lcast_char_constants<CharT>::zero), m_zero(Traits::to_int_type(m_czero))
{
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
static_assert(!std::numeric_limits<T>::is_signed, "");
#endif
}
CharT* convert() {
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
std::locale loc;
if (loc == std::locale::classic()) {
return main_convert_loop();
}
typedef std::numpunct<CharT> numpunct;
numpunct const& np = BOOST_USE_FACET(numpunct, loc);
std::string const grouping = np.grouping();
std::string::size_type const grouping_size = grouping.size();
if (!grouping_size || grouping[0] <= 0) {
return main_convert_loop();
}
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
// Check that ulimited group is unreachable:
static_assert(std::numeric_limits<T>::digits10 < CHAR_MAX, "");
#endif
CharT const thousands_sep = np.thousands_sep();
std::string::size_type group = 0; // current group number
char last_grp_size = grouping[0];
char left = last_grp_size;
do {
if (left == 0) {
++group;
if (group < grouping_size) {
char const grp_size = grouping[group];
last_grp_size = (grp_size <= 0 ? static_cast<char>(CHAR_MAX) : grp_size);
}
left = last_grp_size;
--m_finish;
Traits::assign(*m_finish, thousands_sep);
}
--left;
} while (main_convert_iteration());
return m_finish;
#else
return main_convert_loop();
#endif
}
private:
inline bool main_convert_iteration() noexcept {
--m_finish;
int_type const digit = static_cast<int_type>(m_value % 10U);
Traits::assign(*m_finish, Traits::to_char_type(m_zero + digit));
m_value /= 10;
return !!m_value; // suppressing warnings
}
inline CharT* main_convert_loop() noexcept {
while (main_convert_iteration());
return m_finish;
}
};
}
namespace detail // lcast_ret_unsigned
{
template <class Traits, class T, class CharT>
class lcast_ret_unsigned: boost::noncopyable {
bool m_multiplier_overflowed;
T m_multiplier;
T& m_value;
const CharT* const m_begin;
const CharT* m_end;
public:
lcast_ret_unsigned(T& value, const CharT* const begin, const CharT* end) noexcept
: m_multiplier_overflowed(false), m_multiplier(1), m_value(value), m_begin(begin), m_end(end)
{
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
static_assert(!std::numeric_limits<T>::is_signed, "");
// GCC when used with flag -std=c++0x may not have std::numeric_limits
// specializations for __int128 and unsigned __int128 types.
// Try compilation with -std=gnu++0x or -std=gnu++11.
//
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40856
static_assert(std::numeric_limits<T>::is_specialized,
"std::numeric_limits are not specialized for integral type passed to boost::lexical_cast"
);
#endif
}
inline bool convert() {
CharT const czero = lcast_char_constants<CharT>::zero;
--m_end;
m_value = static_cast<T>(0);
if (m_begin > m_end || *m_end < czero || *m_end >= czero + 10)
return false;
m_value = static_cast<T>(*m_end - czero);
--m_end;
#ifdef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
return main_convert_loop();
#else
std::locale loc;
if (loc == std::locale::classic()) {
return main_convert_loop();
}
typedef std::numpunct<CharT> numpunct;
numpunct const& np = BOOST_USE_FACET(numpunct, loc);
std::string const& grouping = np.grouping();
std::string::size_type const grouping_size = grouping.size();
/* According to Programming languages - C++
* we MUST check for correct grouping
*/
if (!grouping_size || grouping[0] <= 0) {
return main_convert_loop();
}
unsigned char current_grouping = 0;
CharT const thousands_sep = np.thousands_sep();
char remained = static_cast<char>(grouping[current_grouping] - 1);
for (;m_end >= m_begin; --m_end)
{
if (remained) {
if (!main_convert_iteration()) {
return false;
}
--remained;
} else {
if ( !Traits::eq(*m_end, thousands_sep) ) //|| begin == end ) return false;
{
/*
* According to Programming languages - C++
* Digit grouping is checked. That is, the positions of discarded
* separators is examined for consistency with
* use_facet<numpunct<charT> >(loc ).grouping()
*
* BUT what if there is no separators at all and grouping()
* is not empty? Well, we have no extraced separators, so we
* won`t check them for consistency. This will allow us to
* work with "C" locale from other locales
*/
return main_convert_loop();
} else {
if (m_begin == m_end) return false;
if (current_grouping < grouping_size - 1) ++current_grouping;
remained = grouping[current_grouping];
}
}
} /*for*/
return true;
#endif
}
private:
// Iteration that does not care about grouping/separators and assumes that all
// input characters are digits
#if defined(__clang__) && (__clang_major__ > 3 || __clang_minor__ > 6)
__attribute__((no_sanitize("unsigned-integer-overflow")))
#endif
inline bool main_convert_iteration() noexcept {
CharT const czero = lcast_char_constants<CharT>::zero;
T const maxv = (std::numeric_limits<T>::max)();
m_multiplier_overflowed = m_multiplier_overflowed || (maxv/10 < m_multiplier);
m_multiplier = static_cast<T>(m_multiplier * 10);
T const dig_value = static_cast<T>(*m_end - czero);
T const new_sub_value = static_cast<T>(m_multiplier * dig_value);
// We must correctly handle situations like `000000000000000000000000000001`.
// So we take care of overflow only if `dig_value` is not '0'.
if (*m_end < czero || *m_end >= czero + 10 // checking for correct digit
|| (dig_value && ( // checking for overflow of ...
m_multiplier_overflowed // ... multiplier
|| static_cast<T>(maxv / dig_value) < m_multiplier // ... subvalue
|| static_cast<T>(maxv - new_sub_value) < m_value // ... whole expression
))
) return false;
m_value = static_cast<T>(m_value + new_sub_value);
return true;
}
bool main_convert_loop() noexcept {
for ( ; m_end >= m_begin; --m_end) {
if (!main_convert_iteration()) {
return false;
}
}
return true;
}
};
}
} // namespace boost
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_LCAST_UNSIGNED_CONVERTERS_HPP
@@ -1,81 +0,0 @@
// Copyright Peter Dimov, 2025.
// Copyright Romain Geissler, 2025.
//
// 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_LEXICAL_CAST_DETAIL_TYPE_TRAITS_HPP
#define BOOST_LEXICAL_CAST_DETAIL_TYPE_TRAITS_HPP
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <type_traits>
namespace boost { namespace detail { namespace lcast {
// libstdc++ from gcc <= 15 doesn't provide support for __int128 in the standard traits,
// so define them explicitly.
// This was fixed with gcc >= 16, so we may eventually remove this workaround and use
// directly the standard type_traits.
template<class T> struct is_integral: public std::is_integral<T>
{
};
template<class T> struct is_signed: public std::is_signed<T>
{
};
template<class T> struct is_unsigned: public std::is_unsigned<T>
{
};
template<class T> struct make_unsigned: public std::make_unsigned<T>
{
};
#if defined(__SIZEOF_INT128__)
template<> struct is_integral<__int128_t>: public std::true_type
{
};
template<> struct is_integral<__uint128_t>: public std::true_type
{
};
template<> struct is_signed<__int128_t>: public std::true_type
{
};
template<> struct is_signed<__uint128_t>: public std::false_type
{
};
template<> struct is_unsigned<__int128_t>: public std::false_type
{
};
template<> struct is_unsigned<__uint128_t>: public std::true_type
{
};
template<> struct make_unsigned<__int128_t>
{
typedef __uint128_t type;
};
template<> struct make_unsigned<__uint128_t>
{
typedef __uint128_t type;
};
#endif
}}} // namespace boost::detail::lcast
#endif // BOOST_LEXICAL_CAST_DETAIL_TYPE_TRAITS_HPP
@@ -1,49 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_DETAIL_WIDEST_CHAR_HPP
#define BOOST_LEXICAL_CAST_DETAIL_WIDEST_CHAR_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <type_traits>
#endif // #ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
namespace boost { namespace detail {
template <typename TargetChar, typename SourceChar>
using widest_char = std::conditional<
(sizeof(TargetChar) > sizeof(SourceChar))
, TargetChar
, SourceChar
>;
}} // namespace boost::detail
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_DETAIL_WIDEST_CHAR_HPP
@@ -1,105 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_TRY_LEXICAL_CONVERT_HPP
#define BOOST_LEXICAL_CAST_TRY_LEXICAL_CONVERT_HPP
#include <boost/lexical_cast/detail/config.hpp>
#if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#ifndef BOOST_LEXICAL_CAST_INTERFACE_UNIT
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#include <type_traits>
#endif
#include <boost/lexical_cast/detail/buffer_view.hpp>
#include <boost/lexical_cast/detail/is_character.hpp>
#include <boost/lexical_cast/detail/converter_numeric.hpp>
#include <boost/lexical_cast/detail/converter_lexical.hpp>
namespace boost {
namespace detail
{
template<typename Target, typename Source>
using is_arithmetic_and_not_xchars = std::integral_constant<
bool,
!(boost::detail::is_character<Target>::value) &&
!(boost::detail::is_character<Source>::value) &&
std::is_arithmetic<Source>::value &&
std::is_arithmetic<Target>::value
>;
}
namespace conversion { namespace detail {
BOOST_LEXICAL_CAST_BEGIN_MODULE_EXPORT
template <typename Target, typename Source>
inline bool try_lexical_convert(const Source& arg, Target& result)
{
static_assert(
!std::is_volatile<Source>::value,
"Boost.LexicalCast does not support volatile input");
typedef typename boost::detail::array_to_pointer_decay<Source>::type src;
typedef boost::detail::is_arithmetic_and_not_xchars<Target, src >
shall_we_copy_with_dynamic_check_t;
typedef typename std::conditional<
shall_we_copy_with_dynamic_check_t::value,
boost::detail::dynamic_num_converter_impl<Target, src >,
boost::detail::lexical_converter_impl<Target, src >
>::type caster_type;
return caster_type::try_convert(arg, result);
}
template <typename Target, typename CharacterT>
inline bool try_lexical_convert(const CharacterT* chars, std::size_t count, Target& result)
{
static_assert(
boost::detail::is_character<CharacterT>::value,
"This overload of try_lexical_convert is meant to be used only with arrays of characters."
);
return ::boost::conversion::detail::try_lexical_convert(
::boost::conversion::detail::make_buffer_view(chars, chars + count),
result
);
}
BOOST_LEXICAL_CAST_END_MODULE_EXPORT
}} // namespace conversion::detail
namespace conversion {
BOOST_LEXICAL_CAST_BEGIN_MODULE_EXPORT
// ADL barrier
using ::boost::conversion::detail::try_lexical_convert;
BOOST_LEXICAL_CAST_END_MODULE_EXPORT
}
} // namespace boost
#endif // #if !defined(BOOST_USE_MODULES) || defined(BOOST_LEXICAL_CAST_INTERFACE_UNIT)
#endif // BOOST_LEXICAL_CAST_TRY_LEXICAL_CONVERT_HPP
+44 -11
View File
@@ -1,16 +1,49 @@
<!--
Copyright 2005-2007 Daniel James.
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)
-->
<html>
<head>
<meta http-equiv="refresh" content="0; URL=../../doc/html/boost_lexical_cast.html">
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Boost Conversion Library</title>
<style>
.copyright
{
color: #666666;
font-size: small;
}
</style>
</head>
<body>
Automatic redirection failed, please go to
<a href="../../doc/html/boost_lexical_cast.html">../../doc/html/boost_lexical_cast.html</a>
<body bgcolor="#FFFFFF" text="#000000">
<h1><img border="0" src="../../boost.png" align="center" width="277" height="86">Boost
Conversion Library</h1>
<p>The Conversion Library improves program safety and clarity by performing
otherwise messy conversions.&nbsp; It includes cast-style function templates designed to complement the C++
Standard's built-in casts.</p>
<p>To reduce coupling, particularly to standard library IOStreams, the Boost
Conversion Library is
supplied by several headers:</p>
<ul>
<li>The <a href="cast.htm">boost/cast</a> header provides <b>polymorphic_cast&lt;&gt;</b>
and <b>polymorphic_downcast&lt;&gt;</b> to perform safe casting between
polymorphic types.<br>
</li>
<li>The <a href="../../doc/html/boost_lexical_cast.html">boost/lexical_cast</a> header provides <b>lexical_cast&lt;&gt;</b>
general literal text conversions, such as an <code>int</code> represented as
a <code>string</code>, or vice-versa.</li>
</ul>
<hr>
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED"
S-Format="%d %B, %Y" startspan -->June 23, 2005<!--webbot bot="Timestamp" endspan i-checksum="30348" -->
</p>
<p class="copyright">
Copyright 2001 Beman Dawes.
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</body>
</html>
+16
View File
@@ -0,0 +1,16 @@
<!--
Copyright 2005-2007 Daniel James.
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)
-->
<html>
<head>
<meta http-equiv="refresh" content="0; URL=../../doc/html/boost_lexical_cast.html">
</head>
<body>
Automatic redirection failed, please go to
<a href="../../doc/html/boost_lexical_cast.html">../../doc/html/boost_lexical_cast.html</a>
</body>
</html>
-16
View File
@@ -1,16 +0,0 @@
{
"key": "lexical_cast",
"name": "Lexical Cast",
"authors": [
"Kevlin Henney"
],
"description": "General literal text conversions, such as an int represented a string, or vice-versa.",
"category": [
"Miscellaneous",
"String"
],
"maintainers": [
"Antony Polukhin <antoshkka -at- gmail.com>"
],
"cxxstd": "11"
}
-57
View File
@@ -1,57 +0,0 @@
// Copyright (c) 2016-2025 Antony Polukhin
//
// 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)
// To compile manually use a command like the folowing:
// clang++ -I ../include -std=c++20 --precompile -x c++-module boost_lexical_cast.cppm
module;
#include <boost/assert.hpp>
#include <boost/config.hpp>
#include <boost/config/workaround.hpp>
#include <boost/container/container_fwd.hpp>
#include <boost/core/cmath.hpp>
#include <boost/core/noncopyable.hpp>
#include <boost/core/snprintf.hpp>
#include <boost/limits.hpp>
#include <boost/throw_exception.hpp>
#include <boost/detail/basic_pointerbuf.hpp>
#ifndef BOOST_LEXICAL_CAST_USE_STD_MODULE
#include <array>
#include <climits>
#include <cstddef>
#include <cstdio>
#include <cstring>
#ifndef BOOST_NO_CWCHAR
# include <cwchar>
#endif
#include <exception>
#include <iosfwd>
#include <istream>
#ifndef BOOST_NO_STD_LOCALE
# include <locale>
#endif
#include <sstream>
#include <string>
#include <string_view>
#include <typeinfo>
#include <type_traits>
#endif
#define BOOST_LEXICAL_CAST_INTERFACE_UNIT
export module boost.lexical_cast;
#ifdef BOOST_LEXICAL_CAST_USE_STD_MODULE
import std;
#endif
#ifdef __clang__
# pragma clang diagnostic ignored "-Winclude-angled-in-module-purview"
#endif
#include <boost/lexical_cast.hpp>
-16
View File
@@ -1,16 +0,0 @@
// Copyright (c) 2024-2025 Antony Polukhin
//
// 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)
// To compile manually use a command like the following:
// clang++ -std=c++20 -fmodule-file=lexical_cast.pcm lexical_cast.pcm usage_sample.cpp
//[lexical_cast_module_example
import boost.lexical_cast;
int main() {
return boost::lexical_cast<int>("0");
}
//]
+1 -1
View File
@@ -1,5 +1,5 @@
#==============================================================================
# Copyright Antony Polukhin, 2012-2026.
# Copyright (c) 2012 Antony Polukhin
#
# 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)
+3 -27
View File
@@ -1,4 +1,4 @@
// (C) Copyright Antony Polukhin, 2012-2026.
// (C) Copyright Antony Polukhin 2012.
// 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)
@@ -14,15 +14,10 @@
#include <boost/lexical_cast.hpp>
#include <boost/chrono.hpp>
#include <fstream>
#include <cstring>
#include <string_view>
#include <type_traits>
#include <boost/array.hpp>
#include <boost/chrono.hpp>
#include <boost/container/string.hpp>
#include <boost/range/iterator_range.hpp>
// File to output data
std::fstream fout;
@@ -96,12 +91,6 @@ struct structure_sprintf {
sprintf(buffer, conv, in_val.c_str());
OutT out_val(buffer);
}
template <class OutT, class BufferT>
static inline void test(BufferT* buffer, std::string_view in_val, const char* const conv) {
sprintf(buffer, conv, in_val.data()); // in_val is zero terminated in this program
OutT out_val(buffer);
}
};
struct structure_sscanf {
@@ -128,12 +117,6 @@ struct structure_sscanf {
OutT out_val;
sscanf(in_val.begin(), conv, &out_val);
}
template <class OutT, class BufferT>
static inline void test(BufferT* /*buffer*/, std::string_view in_val, const char* const conv) {
OutT out_val;
sscanf(in_val.data(), conv, &out_val); // in_val is zero terminated in this program
}
};
struct structure_fake {
@@ -243,7 +226,7 @@ static inline void perf_test_impl(const FromT& in_val, const char* const conv) {
lexical_cast_time.count(),
ss_constr_time.count(),
ss_noconstr_time.count(),
std::is_same<SprintfT, structure_fake>::value ? fake_test_value : printf_time.count()
boost::is_same<SprintfT, structure_fake>::value ? fake_test_value : printf_time.count()
);
}
@@ -329,12 +312,6 @@ struct to_array_50 {
}
};
struct to_string_view {
std::string_view operator()(const char* const c) const {
return std::string_view{c};
}
};
int main(int argc, char** argv) {
BOOST_ASSERT(argc >= 2);
std::string output_path(argv[1]);
@@ -377,7 +354,6 @@ int main(int argc, char** argv) {
string_like_test_set<to_uchar_conv>("unsigned char*");
string_like_test_set<to_schar_conv>("signed char*");
string_like_test_set<to_iterator_range>("iterator_range<char*>");
string_like_test_set<to_string_view>("std::string_view");
string_like_test_set<to_array_50>("array<char, 50>");
perf_test<int, structure_fake>("int->int", 100, "");
-84
View File
@@ -1,84 +0,0 @@
# Copyright Antony Polukhin, 2021-2026.
#
# 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(NOT TARGET tests)
add_custom_target(tests)
endif()
function(boost_lexical_cast_add_test_impl test_name test_file libs)
add_executable(${test_name} ${test_file})
target_link_libraries(${test_name} PRIVATE ${libs})
add_test(NAME ${test_name} COMMAND ${test_name})
add_dependencies(tests ${test_name})
endfunction()
function(boost_lexical_cast_add_test name libs)
set(test_name lexical_cast_${name})
set(test_file ${name}.cpp)
boost_lexical_cast_add_test_impl(${test_name} ${test_file} "Boost::lexical_cast;${libs}")
endfunction()
boost_lexical_cast_add_test(lexical_cast_test Boost::type_traits)
boost_lexical_cast_add_test(loopback_test "")
boost_lexical_cast_add_test(abstract_test "")
boost_lexical_cast_add_test(noncopyable_test "")
boost_lexical_cast_add_test(vc8_bug_test "")
boost_lexical_cast_add_test(implicit_convert "")
boost_lexical_cast_add_test(wchars_test "")
boost_lexical_cast_add_test(float_types_test "")
if(NOT MSVC)
# Make sure that LexicalCast works the same way as some of the C++ Standard Libraries
boost_lexical_cast_add_test_impl(lexical_cast_float_types_non_opt float_types_test.cpp Boost::lexical_cast)
target_compile_definitions(lexical_cast_float_types_non_opt PRIVATE BOOST_LEXICAL_CAST_DETAIL_TEST_ON_OLD)
endif()
boost_lexical_cast_add_test(inf_nan_test "")
boost_lexical_cast_add_test(containers_test "")
boost_lexical_cast_add_test(empty_input_test Boost::range)
boost_lexical_cast_add_test(pointers_test "")
if(MSVC)
add_executable(lexical_cast_typedefed_wchar_test_compile typedefed_wchar_test.cpp)
target_compile_options(lexical_cast_typedefed_wchar_test_compile PRIVATE "/Zc:wchar_t-")
boost_lexical_cast_add_test(typedefed_wchar_test_runtime "")
target_compile_options(lexical_cast_typedefed_wchar_test_runtime PRIVATE "/Zc:wchar_t-")
endif()
boost_lexical_cast_add_test(no_locale_test Boost::range)
target_compile_definitions(lexical_cast_no_locale_test
PRIVATE
BOOST_NO_STD_LOCALE
BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
)
boost_lexical_cast_add_test_impl(lexical_cast_no_exceptions_test no_exceptions_test.cpp "Boost::container;Boost::range")
target_include_directories(lexical_cast_no_exceptions_test PRIVATE ../include)
target_compile_definitions(lexical_cast_no_exceptions_test
PRIVATE
_HAS_EXCEPTIONS=0 # MSVC stdlib
_STLP_NO_EXCEPTIONS # STLPort
)
if(MSVC)
target_compile_definitions(lexical_cast_no_exceptions_test PRIVATE BOOST_NO_EXCEPTIONS)
endif()
target_compile_options(lexical_cast_no_exceptions_test PRIVATE "-fno-exceptions")
boost_lexical_cast_add_test(iterator_range_test Boost::range)
boost_lexical_cast_add_test(string_view_test Boost::utility)
boost_lexical_cast_add_test(arrays_test Boost::array)
boost_lexical_cast_add_test(integral_types_test Boost::type_traits)
boost_lexical_cast_add_test(stream_detection_test "")
boost_lexical_cast_add_test(stream_traits_test "Boost::array;Boost::range;Boost::utility")
boost_lexical_cast_add_test(filesystem_test Boost::filesystem)
boost_lexical_cast_add_test(try_lexical_convert "")
file(GLOB EXAMPLE_FILES "../example/*.cpp")
foreach (testsourcefile ${EXAMPLE_FILES})
get_filename_component(testname ${testsourcefile} NAME_WE)
boost_lexical_cast_add_test_impl(lexical_cast_example_${testname} ${testsourcefile} "Boost::variant;Boost::date_time")
endforeach()
+39 -59
View File
@@ -1,20 +1,16 @@
# Copyright (C) 2001-2003 Douglas Gregor
# Copyright Antony Polukhin, 2011-2026.
# Copyright (C) 2011-2013 Antony Polukhin
#
# 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)
#
require-b2 5.0.1 ;
import-search /boost/config/checks ;
import config : requires ;
import testing ;
import feature ;
project
: requirements
<library>/boost/lexical_cast//boost_lexical_cast
[ requires cxx11_rvalue_references cxx11_static_assert cxx11_template_aliases ]
<library>/boost/test//boost_unit_test_framework
<link>static
<toolset>gcc-4.7:<cxxflags>-ftrapv
<toolset>gcc-4.6:<cxxflags>-ftrapv
@@ -23,71 +19,55 @@ project
<warnings>all
# set warnings as errors for those compilers we know we get warning free:
<toolset>gcc:<cxxflags>-Wextra
# Not a lexical_cast related warning: boost/preprocessor/variadic/elem.hpp:29:46: warning: variadic macros are a C99 feature
<toolset>clang:<cxxflags>-Wno-variadic-macros
<toolset>gcc:<cxxflags>-Wno-variadic-macros
# Not a lexical_cast related warning: boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp:78:1: warning: empty macro arguments are a C99 feature [-Wc99-extensions]
# boost/mpl/iter_fold.hpp:45:1: warning: empty macro arguments are a C99 feature [-Wc99-extensions]
<toolset>clang:<cxxflags>-Wno-c99-extensions
<library>/boost/array//boost_array
<library>/boost/range//boost_range
<library>/boost/utility//boost_utility
<toolset>gcc:<cxxflags>-Wno-uninitialized
;
# Thanks to Steven Watanabe for helping with <nowchar> feature
feature.feature nowchar : on :
composite optional propagated link-incompatible ;
feature.compose <nowchar>on : <cxxflags>"/Zc:wchar_t-" ;
feature.compose <nowchar>on : <cxxflags>/Zc:wchar_t- ;
test-suite conversion
: [ run lexical_cast_test.cpp ]
[ run loopback_test.cpp ]
[ run abstract_test.cpp ]
[ run noncopyable_test.cpp ]
[ run vc8_bug_test.cpp ]
[ run implicit_convert.cpp ]
[ run wchars_test.cpp ]
[ run float_types_test.cpp ]
# Make sure that LexicalCast works the same way as some of the C++ Standard Libraries
[ run float_types_test.cpp : : : <define>BOOST_LEXICAL_CAST_DETAIL_TEST_ON_OLD
<toolset>msvc:<build>no # could have outdated behavior in some border cases
<target-os>darwin:<build>no # may have outdated behavior in some border cases
: float_types_non_opt
: [ run implicit_cast.cpp ]
[ compile-fail implicit_cast_fail.cpp ]
[ run cast_test.cpp ]
[ run numeric_cast_test.cpp ]
[ run lexical_cast_test.cpp ]
[ run lexical_cast_loopback_test.cpp ]
[ run lexical_cast_abstract_test.cpp ]
[ run lexical_cast_noncopyable_test.cpp ]
[ run lexical_cast_vc8_bug_test.cpp ]
[ run lexical_cast_wchars_test.cpp ]
[ run lexical_cast_float_types_test.cpp ]
[ run lexical_cast_inf_nan_test.cpp ]
[ run lexical_cast_containers_test.cpp : : : <toolset>gcc:<cxxflags>-Wno-long-long <toolset>clang:<cxxflags>-Wno-long-long ]
[ run lexical_cast_empty_input_test.cpp ]
[ run lexical_cast_pointers_test.cpp ]
[ compile lexical_cast_typedefed_wchar_test.cpp : <toolset>msvc:<nowchar>on ]
[ run lexical_cast_typedefed_wchar_test_runtime.cpp : : : <toolset>msvc:<nowchar>on <toolset>msvc,<stdlib>stlport:<build>no ]
[ run lexical_cast_no_locale_test.cpp : : : <define>BOOST_NO_STD_LOCALE <define>BOOST_LEXICAL_CAST_ASSUME_C_LOCALE ]
[ run lexical_cast_no_exceptions_test.cpp : : : <define>BOOST_NO_EXCEPTIONS
<toolset>gcc-4.3:<cxxflags>-fno-exceptions
<toolset>gcc-4.4:<cxxflags>-fno-exceptions
<toolset>gcc-4.5:<cxxflags>-fno-exceptions
<toolset>gcc-4.6:<cxxflags>-fno-exceptions
<toolset>gcc-4.7:<cxxflags>-fno-exceptions
<toolset>gcc-4.8:<cxxflags>-fno-exceptions
<toolset>clang:<cxxflags>-fno-exceptions
]
[ run inf_nan_test.cpp ]
[ run containers_test.cpp : : : <toolset>gcc:<cxxflags>-Wno-long-long <toolset>clang:<cxxflags>-Wno-long-long ]
[ run empty_input_test.cpp ]
[ run pointers_test.cpp ]
[ compile typedefed_wchar_test.cpp : <toolset>msvc:<nowchar>on <library>/boost/date_time//boost_date_time ]
[ run typedefed_wchar_test_runtime.cpp : : : <toolset>msvc:<nowchar>on <toolset>msvc,<stdlib>stlport:<build>no ]
[ run no_locale_test.cpp : : : <define>BOOST_NO_STD_LOCALE <define>BOOST_LEXICAL_CAST_ASSUME_C_LOCALE ]
[ run no_exceptions_test.cpp : : : <exception-handling>off
<define>_HAS_EXCEPTIONS=0 # MSVC stdlib
<define>_STLP_NO_EXCEPTIONS # STLPort
]
[ run iterator_range_test.cpp ]
[ run string_view_test.cpp ]
[ run arrays_test.cpp : : :
<toolset>msvc:<cxxflags>/wd4512 # assignment operator could not be generated
]
[ run integral_types_test.cpp ]
[ run stream_detection_test.cpp ]
[ run stream_traits_test.cpp ]
[ compile-fail to_pointer_test.cpp ]
[ compile-fail from_volatile.cpp ]
[ run filesystem_test.cpp /boost/filesystem//boost_filesystem : : : <toolset>gcc,<target-os>windows:<build>no ] # Boost.Atomic no longer supports MinGW
[ run try_lexical_convert.cpp ]
[ run lexical_cast_iterator_range_test.cpp ]
[ run lexical_cast_arrays_test.cpp ]
[ run lexical_cast_integral_types_test.cpp ]
[ run lexical_cast_stream_detection_test.cpp ]
[ run lexical_cast_stream_traits_test.cpp ]
[ compile-fail lexical_cast_to_pointer_test.cpp ]
[ run lexical_cast_filesystem_test.cpp ../../filesystem/build//boost_filesystem/<link>static ]
;
# Assuring that examples compile and run. Adding sources from `example` directory to the `conversion` test suite.
# Assuring that examples compile and run. Adding sources from `example` directory to the `conversion` test suite.
for local p in [ glob ../example/*.cpp ]
{
conversion += [ run $(p) : : : <library>/boost/variant//boost_variant <library>/boost/date_time//boost_date_time ] ;
conversion += [ run $(p) ] ;
}
-100
View File
@@ -1,100 +0,0 @@
# 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)
#
# Copyright Antony Polukhin, 2016-2026.
#
# See https://svn.boost.org/trac/boost/wiki/TravisCoverals for description of this file
# and how it can be used with Boost libraries.
#
# File revision #6
init:
# boost-local/libs/ folder to put this library into. This may be useful, if you're for example running Travis
# from `Boost.DLL` repo while Boost already has `dll` and with to replace `dll` with content of`Boost.DLL`.
#
# Otherwise just leave the default value - set BOOST_LIBS_FOLDER=%APPVEYOR_PROJECT_NAME%
- set BOOST_LIBS_FOLDER=%APPVEYOR_PROJECT_NAME%
###############################################################################################################
# From this point and below code is same for all the Boost libs
###############################################################################################################
version: 1.74.{build}-{branch}
# branches to build
branches:
except:
- gh-pages
skip_tags: true
environment:
matrix:
# - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
# TOOLSET: msvc # TODO: clang-win ???
# ADDRMD: 32,64
# CXXSTD: 17,latest
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: msvc # clang-win has problems with structured bindings - it can not correclty use std::tuple_size
ADDRMD: 32,64
CXXSTD: 17,latest
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: msvc # clang-win has problems with structured bindings - it can not correclty use std::tuple_size
ADDRMD: 32,64
CXXSTD: 17,latest
CXXFLAGS: /permissive-
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: msvc # clang-win has problems with structured bindings - it can not correclty use std::tuple_size
ADDRMD: 32,64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
ADDPATH: C:\cygwin\bin;
TOOLSET: gcc
CXXSTD: 14,1z
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
ADDPATH: C:\cygwin64\bin;
TOOLSET: gcc
CXXSTD: 14,1z
# - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
# ADDPATH: C:\mingw\bin;
# TOOLSET: gcc
# CXXSTD: 14,1z
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
ADDPATH: C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;
TOOLSET: gcc
CXXSTD: 14,1z
before_build:
- set BOOST_BRANCH=develop
- if "%APPVEYOR_REPO_BRANCH%" == "master" set BOOST_BRANCH=master
- echo "Testing %BOOST_LIBS_FOLDER%"
# Cloning Boost libraries (fast nondeep cloning)
- set BOOST=C:/boost-local
- git clone -b %BOOST_BRANCH% --depth 10 https://github.com/boostorg/boost.git %BOOST%
- cd %BOOST%
- git submodule update --init --depth 10 tools/build tools/boostdep
- echo "rm -rf %BOOST%/libs/%BOOST_LIBS_FOLDER%"
- rm -rf %BOOST%/libs/%BOOST_LIBS_FOLDER%
- mv %APPVEYOR_BUILD_FOLDER% %BOOST%/libs/%BOOST_LIBS_FOLDER%
- python tools/boostdep/depinst/depinst.py --git_args "--depth 10 --jobs 2" -I example -I examples %BOOST_LIBS_FOLDER%
build_script:
- cmd /c bootstrap
- b2.exe headers
- cd %BOOST%/libs/%BOOST_LIBS_FOLDER%/test
after_build:
before_test:
test_script:
- PATH=%ADDPATH%%PATH%
- if not "%CXXSTD%" == "" set CXXSTD=cxxstd=%CXXSTD%
- if not "%ADDRMD%" == "" set ADDRMD=address-model=%ADDRMD%
- echo "Running command ..\..\..\b2 -j3 toolset=%TOOLSET% %CXXSTD% %ADDRMD% variant=debug,release"
- ..\..\..\b2.exe -j3 toolset=%TOOLSET% %CXXSTD% %ADDRMD% variant=debug,release cxxflags="-DBOOST_TRAVISCI_BUILD %CXXFLAGS%"
after_test:
on_success:
on_failure:
on_finish:
+91
View File
@@ -0,0 +1,91 @@
// boost utility cast test program -----------------------------------------//
// (C) Copyright Beman Dawes, Dave Abrahams 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)
// See http://www.boost.org for most recent version including documentation.
// Revision History
// 28 Set 04 factored out numeric_cast<> test (Fernando Cacciola)
// 20 Jan 01 removed use of <limits> for portability to raw GCC (David Abrahams)
// 28 Jun 00 implicit_cast removed (Beman Dawes)
// 30 Aug 99 value_cast replaced by numeric_cast
// 3 Aug 99 Initial Version
#include <iostream>
#include <climits>
#include <cfloat> // for DBL_MAX (Peter Schmid)
#include <boost/cast.hpp>
# if SCHAR_MAX == LONG_MAX
# error "This test program doesn't work if SCHAR_MAX == LONG_MAX"
# endif
using namespace boost;
using std::cout;
namespace
{
struct Base
{
virtual char kind() { return 'B'; }
};
struct Base2
{
virtual char kind2() { return '2'; }
};
struct Derived : public Base, Base2
{
virtual char kind() { return 'D'; }
};
}
int main( int argc, char * argv[] )
{
# ifdef NDEBUG
cout << "NDEBUG is defined\n";
# else
cout << "NDEBUG is not defined\n";
# endif
cout << "\nBeginning tests...\n";
// test polymorphic_cast ---------------------------------------------------//
// tests which should succeed
Base * base = new Derived;
Base2 * base2 = 0;
Derived * derived = 0;
derived = polymorphic_downcast<Derived*>( base ); // downcast
assert( derived->kind() == 'D' );
derived = 0;
derived = polymorphic_cast<Derived*>( base ); // downcast, throw on error
assert( derived->kind() == 'D' );
base2 = polymorphic_cast<Base2*>( base ); // crosscast
assert( base2->kind2() == '2' );
// tests which should result in errors being detected
int err_count = 0;
base = new Base;
if ( argc > 1 && *argv[1] == '1' )
{ derived = polymorphic_downcast<Derived*>( base ); } // #1 assert failure
bool caught_exception = false;
try { derived = polymorphic_cast<Derived*>( base ); }
catch (std::bad_cast)
{ cout<<"caught bad_cast\n"; caught_exception = true; }
if ( !caught_exception ) ++err_count;
// the following is just so generated code can be inspected
if ( derived->kind() == 'B' ) ++err_count;
cout << err_count << " errors detected\nTest "
<< (err_count==0 ? "passed\n" : "failed\n");
return err_count;
} // main
-80
View File
@@ -1,80 +0,0 @@
# Copyright (c) 2016-2025 Antony Polukhin
# Copyright (c) 2025-2026 Fedor Osetrov
# 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
cmake_minimum_required(VERSION 3.5...4.0)
project(lexical_cast_subdir_test LANGUAGES CXX)
set(deps
# Library dependencies
config
container
core
throw_exception
# Test dependencies
algorithm
array
align
assert
atomic
bind
compat
concept_check
container_hash
conversion
date_time
describe
detail
exception
filesystem
function
function_types
functional
fusion
integer
intrusive
io
iterator
move
mp11
mpl
numeric/conversion
optional
predef
preprocessor
range
regex
scope
smart_ptr
static_assert
system
test
tokenizer
tuple
type_index
type_traits
typeof
unordered
utility
variant
variant2
winapi
)
foreach(dep IN LISTS deps)
add_subdirectory(../../../${dep} boostorg/${dep})
endforeach()
enable_testing()
add_subdirectory(../../ boostorg/lexical_cast)
if (BOOST_USE_MODULES)
add_executable(boost_lexical_cast_module_usage ../modules/usage_sample.cpp)
target_link_libraries(boost_lexical_cast_module_usage PRIVATE Boost::lexical_cast)
add_test(NAME boost_lexical_cast_module_usage COMMAND boost_lexical_cast_module_usage)
endif()
-77
View File
@@ -1,77 +0,0 @@
// Testing boost::lexical_cast with boost::container::string.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011-2026.
//
// 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/core/lightweight_test.hpp>
#include <boost/container/string.hpp>
#include <boost/lexical_cast.hpp>
using namespace boost;
void testing_boost_containers_basic_string()
{
BOOST_TEST("100" == lexical_cast<boost::container::string>("100"));
BOOST_TEST(L"100" == lexical_cast<boost::container::wstring>(L"100"));
BOOST_TEST("100" == lexical_cast<boost::container::string>(100));
boost::container::string str("1000");
BOOST_TEST(1000 == lexical_cast<int>(str));
}
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
void testing_boost_containers_string_std_string()
{
std::string std_str("std_str");
boost::container::string boost_str("boost_str");
BOOST_TEST(boost::lexical_cast<std::string>(boost_str) == "boost_str");
BOOST_TEST(boost::lexical_cast<boost::container::string>(std_str) == "std_str");
#ifndef BOOST_LCAST_NO_WCHAR_T
std::wstring std_wstr(L"std_wstr");
boost::container::wstring boost_wstr(L"boost_wstr");
BOOST_TEST(boost::lexical_cast<std::wstring>(boost_wstr) == L"boost_wstr");
BOOST_TEST(boost::lexical_cast<boost::container::wstring>(std_wstr) == L"std_wstr");
#endif
}
void testing_boost_containers_string_widening()
{
const char char_array[] = "Test string";
#ifndef BOOST_LCAST_NO_WCHAR_T
const wchar_t wchar_array[] = L"Test string";
BOOST_TEST(boost::lexical_cast<boost::container::wstring>(char_array) == wchar_array);
#endif
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
const char16_t char16_array[] = u"Test string";
BOOST_TEST(boost::lexical_cast<boost::container::basic_string<char16_t> >(char_array) == char16_array);
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
const char32_t char32_array[] = U"Test string";
BOOST_TEST(boost::lexical_cast<boost::container::basic_string<char32_t> >(char_array) == char32_array);
#endif
}
int main()
{
testing_boost_containers_basic_string();
testing_boost_containers_string_std_string();
testing_boost_containers_string_widening();
return boost::report_errors();
}
-150
View File
@@ -1,150 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011-2026.
//
// 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/range/iterator_range.hpp>
#include <boost/core/lightweight_test.hpp>
#include <vector>
#include <boost/lexical_cast.hpp>
#include "escape_struct.hpp"
using namespace boost;
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
template <class T>
void do_test_on_empty_input(T& v)
{
BOOST_TEST_THROWS(lexical_cast<int>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<float>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<double>(v), bad_lexical_cast);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_TEST_THROWS(lexical_cast<long double>(v), bad_lexical_cast);
#endif
BOOST_TEST_THROWS(lexical_cast<unsigned int>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned short>(v), bad_lexical_cast);
#if defined(BOOST_HAS_LONG_LONG)
BOOST_TEST_THROWS(lexical_cast<boost::ulong_long_type>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<boost::long_long_type>(v), bad_lexical_cast);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_TEST_THROWS(lexical_cast<unsigned __int64>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<__int64>(v), bad_lexical_cast);
#endif
}
void test_empty_iterator_range()
{
boost::iterator_range<char*> v;
do_test_on_empty_input(v);
BOOST_TEST_EQ(lexical_cast<std::string>(v), std::string());
BOOST_TEST_THROWS(lexical_cast<char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(v), bad_lexical_cast);
boost::iterator_range<const char*> cv;
do_test_on_empty_input(cv);
BOOST_TEST_EQ(lexical_cast<std::string>(cv), std::string());
BOOST_TEST_THROWS(lexical_cast<char>(cv), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(cv), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(cv), bad_lexical_cast);
const boost::iterator_range<const char*> ccv;
do_test_on_empty_input(ccv);
BOOST_TEST_EQ(lexical_cast<std::string>(ccv), std::string());
BOOST_TEST_THROWS(lexical_cast<char>(ccv), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(ccv), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(ccv), bad_lexical_cast);
}
void test_empty_string()
{
std::string v;
do_test_on_empty_input(v);
BOOST_TEST_THROWS(lexical_cast<char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(v), bad_lexical_cast);
#ifndef BOOST_LCAST_NO_WCHAR_T
std::wstring vw;
do_test_on_empty_input(vw);
BOOST_TEST_THROWS(lexical_cast<wchar_t>(vw), bad_lexical_cast);
#endif
// Currently, no compiler and STL library fully support char16_t and char32_t
//#ifndef BOOST_NO_CXX11_CHAR16_T
// std::basic_string<char16_t> v16w;
// do_test_on_empty_input(v16w);
// BOOST_TEST_THROWS(lexical_cast<char16_t>(v16w), bad_lexical_cast);
//#endif
//#ifndef BOOST_NO_CXX11_CHAR32_T
// std::basic_string<char32_t> v32w;
// do_test_on_empty_input(v32w);
// BOOST_TEST_THROWS(lexical_cast<char32_t>(v32w), bad_lexical_cast);
//#endif
}
void test_empty_user_class()
{
EscapeStruct v("");
do_test_on_empty_input(v);
BOOST_TEST_THROWS(lexical_cast<char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(v), bad_lexical_cast);
}
namespace std {
inline std::ostream & operator<<(std::ostream & out, const std::vector<long> & v)
{
std::ostream_iterator<long> it(out);
std::copy(v.begin(), v.end(), it);
BOOST_TEST(out);
return out;
}
}
void test_empty_vector()
{
std::vector<long> v;
do_test_on_empty_input(v);
BOOST_TEST_THROWS(lexical_cast<char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(v), bad_lexical_cast);
}
struct my_string {
friend std::ostream &operator<<(std::ostream& sout, my_string const&/* st*/) {
return sout << "";
}
};
void test_empty_zero_terminated_string()
{
my_string st;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(st), std::string());;
}
int main()
{
test_empty_iterator_range();
test_empty_string();
test_empty_user_class();
test_empty_vector();
test_empty_zero_terminated_string();
return boost::report_errors();
}
-36
View File
@@ -1,36 +0,0 @@
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2020-2026.
//
// 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_LEXICAL_CAST_TEST_ESCAPE_STRUCT_HPP_
#define BOOST_LEXICAL_CAST_TEST_ESCAPE_STRUCT_HPP_
#include <istream>
#include <ostream>
struct EscapeStruct
{
EscapeStruct() {}
EscapeStruct(const std::string& s)
: str_(s)
{}
std::string str_;
};
inline std::ostream& operator<< (std::ostream& o, const EscapeStruct& rhs)
{
return o << rhs.str_;
}
inline std::istream& operator>> (std::istream& i, EscapeStruct& rhs)
{
return i >> rhs.str_;
}
#endif // BOOST_LEXICAL_CAST_TEST_ESCAPE_STRUCT_HPP_
-60
View File
@@ -1,60 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2013-2026.
//
// 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).
//
// Test lexical_cast usage with long filesystem::path. Bug 7704.
#include <boost/core/lightweight_test.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/lexical_cast.hpp>
void test_filesystem()
{
boost::filesystem::path p;
std::string s1 = "aaaaaaaaaaaaaaaaaaaaaaa";
p = boost::lexical_cast<boost::filesystem::path>(s1);
BOOST_TEST(!p.empty());
BOOST_TEST_EQ(p, s1);
p.clear();
const char ab[] = "aaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
p = boost::lexical_cast<boost::filesystem::path>(ab);
BOOST_TEST(!p.empty());
BOOST_TEST_EQ(p, ab);
// Tests for
// https://github.com/boostorg/lexical_cast/issues/25
const char quoted_path[] = "\"/home/my user\"";
p = boost::lexical_cast<boost::filesystem::path>(quoted_path);
BOOST_TEST(!p.empty());
const char unquoted_path[] = "/home/my user";
BOOST_TEST_EQ(p, boost::filesystem::path(unquoted_path));
// Converting back to std::string gives the initial string
BOOST_TEST_EQ(boost::lexical_cast<std::string>(p), quoted_path);
try {
// Without quotes the path will have only `/home/my` in it.
// `user` remains in the stream, so an exception must be thrown.
p = boost::lexical_cast<boost::filesystem::path>(unquoted_path);
BOOST_TEST(false);
} catch (const boost::bad_lexical_cast& ) {
// Exception is expected
}
}
int main()
{
test_filesystem();
return boost::report_errors();
}
-604
View File
@@ -1,604 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011-2026.
//
// 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 <sstream>
#include <type_traits>
#include <boost/cstdint.hpp>
#include <boost/core/lightweight_test.hpp>
#ifndef BOOST_LEXICAL_CAST_DETAIL_TEST_ON_OLD
#include <boost/lexical_cast/detail/type_traits.hpp>
#include <boost/lexical_cast.hpp>
#else
// Make sure that tests work the same way on non-optimized version
#include "lexical_cast_old.hpp"
#include <boost/lexical_cast/detail/type_traits.hpp>
#endif
#ifndef BOOST_TEST_CLOSE_FRACTION
// Naiive, but works for most tests in this file
#define BOOST_TEST_CLOSE_FRACTION(x, y, eps) \
BOOST_TEST(x - y + eps <= eps * 2); \
BOOST_TEST(y - x + eps <= eps * 2);
#endif
#if (defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__) \
|| (defined(__hppa) && !defined(__OpenBSD__)) || (defined(__NO_LONG_DOUBLE_MATH) && (DBL_MANT_DIG != LDBL_MANT_DIG))) \
|| defined(__MINGW64__)
# define BOOST_LEXICAL_CAST_NO_LONG_DOUBLE_MATH_FUNCTIONS
#endif
using namespace boost;
// Replace "-,999" with "-999".
template<class CharT>
std::basic_string<CharT> to_str_gcc_workaround(std::basic_string<CharT> str)
{
std::locale loc;
std::numpunct<CharT> const& np = BOOST_USE_FACET(std::numpunct<CharT>, loc);
std::ctype<CharT> const& ct = BOOST_USE_FACET(std::ctype<CharT>, loc);
if(np.grouping().empty())
return str;
CharT prefix[3] = { ct.widen('-'), np.thousands_sep(), CharT() };
if(str.find(prefix) != 0)
return str;
prefix[1] = CharT();
str.replace(0, 2, prefix);
return str;
}
template<class CharT, class T>
std::basic_string<CharT> to_str(T t)
{
std::basic_ostringstream<CharT> o;
o << t;
return to_str_gcc_workaround(o.str());
}
template<class T>
void test_conversion_from_to_float_for_locale()
{
std::locale current_locale;
typedef std::numpunct<char> numpunct;
numpunct const& np = BOOST_USE_FACET(numpunct, current_locale);
if ( !np.grouping().empty() )
{
BOOST_TEST_THROWS(
lexical_cast<T>( std::string("100") + np.thousands_sep() + np.thousands_sep() + "0" )
, bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( std::string("100") + np.thousands_sep() ), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( np.thousands_sep() + std::string("100") ), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( std::string("1") + np.thousands_sep() + np.decimal_point() + "e10" ), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( std::string("1e10") + np.thousands_sep() ), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( std::string("1") + np.thousands_sep() + "e10" ), bad_lexical_cast);
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( to_str< char >(100000) ), 100000, (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( to_str< char >(10000000u) ), 10000000u, (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( to_str< char >(100) ), 100, (std::numeric_limits<T>::epsilon()) );
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( to_str< wchar_t >(100000) ), 100000, (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( to_str< wchar_t >(10000000u) ), 10000000u, (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( to_str< wchar_t >(100) ), 100, (std::numeric_limits<T>::epsilon()) );
#endif
// Exception must not be thrown, when we are using no separators at all
BOOST_TEST_CLOSE_FRACTION( lexical_cast<T>("30000"), static_cast<T>(30000), (std::numeric_limits<T>::epsilon()) );
}
}
/*
* Converts char* [and wchar_t*] to float number type and checks, that generated
* number does not exceeds allowed epsilon.
*/
#ifndef BOOST_LCAST_NO_WCHAR_T
#define CHECK_CLOSE_ABS_DIFF(VAL,PREFIX) \
converted_val = lexical_cast<test_t>(#VAL); \
BOOST_TEST_CLOSE_FRACTION( (static_cast<bool>(VAL ## L)? VAL ## L : std::numeric_limits<test_t>::epsilon()), \
(converted_val ? converted_val : std::numeric_limits<test_t>::epsilon()), \
std::numeric_limits<test_t>::epsilon() \
); \
BOOST_TEST_EQ(converted_val, lexical_cast<test_t>(L## #VAL) );
#else
#define CHECK_CLOSE_ABS_DIFF(VAL,TYPE) \
converted_val = lexical_cast<test_t>(#VAL); \
BOOST_TEST_CLOSE_FRACTION( (static_cast<bool>(VAL ## L)? VAL ## L : std::numeric_limits<test_t>::epsilon()), \
(converted_val ? converted_val : std::numeric_limits<test_t>::epsilon()), \
std::numeric_limits<test_t>::epsilon() \
);
#endif
template <class TestType>
void test_converion_to_float_types()
{
typedef TestType test_t;
test_t converted_val;
BOOST_TEST_CLOSE_FRACTION(1.0, lexical_cast<test_t>('1'), (std::numeric_limits<test_t>::epsilon()));
BOOST_TEST_EQ(0.0, lexical_cast<test_t>('0'));
unsigned char const uc_one = '1';
unsigned char const uc_zero ='0';
BOOST_TEST_CLOSE_FRACTION(1.0, lexical_cast<test_t>(uc_one), (std::numeric_limits<test_t>::epsilon()));
BOOST_TEST_EQ(0.0, lexical_cast<test_t>(uc_zero));
signed char const sc_one = '1';
signed char const sc_zero ='0';
BOOST_TEST_CLOSE_FRACTION(1.0, lexical_cast<test_t>(sc_one), (std::numeric_limits<test_t>::epsilon()));
BOOST_TEST_EQ(0.0, lexical_cast<test_t>(sc_zero));
BOOST_TEST_CLOSE_FRACTION(1e34L, lexical_cast<test_t>( "10000000000000000000000000000000000"), (std::numeric_limits<test_t>::epsilon() * 1e34L) );
// VC failes the next test
// BOOST_TEST_CLOSE_FRACTION(1e-35L, lexical_cast<test_t>("0.00000000000000000000000000000000001"), (std::numeric_limits<test_t>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(
0.1111111111111111111111111111111111111111111111111111111111111111111111111L
, lexical_cast<test_t>("0.1111111111111111111111111111111111111111111111111111111111111111111111111")
, (std::numeric_limits<test_t>::epsilon()) );
CHECK_CLOSE_ABS_DIFF(1,test_t);
BOOST_TEST_EQ(0,lexical_cast<test_t>("0"));
CHECK_CLOSE_ABS_DIFF(-1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0, test_t);
CHECK_CLOSE_ABS_DIFF(0.0, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0,test_t);
CHECK_CLOSE_ABS_DIFF(1e1, test_t);
CHECK_CLOSE_ABS_DIFF(0e1, test_t);
CHECK_CLOSE_ABS_DIFF(-1e1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0e1, test_t);
CHECK_CLOSE_ABS_DIFF(0.0e1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0e1,test_t);
CHECK_CLOSE_ABS_DIFF(1e-1, test_t);
CHECK_CLOSE_ABS_DIFF(0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1e-1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(0.0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0e-1,test_t);
CHECK_CLOSE_ABS_DIFF(1E1, test_t);
CHECK_CLOSE_ABS_DIFF(0E1, test_t);
CHECK_CLOSE_ABS_DIFF(-1E1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0E1, test_t);
CHECK_CLOSE_ABS_DIFF(0.0E1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0E1,test_t);
CHECK_CLOSE_ABS_DIFF(1E-1, test_t);
CHECK_CLOSE_ABS_DIFF(0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1E-1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(0.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(10.0, test_t);
CHECK_CLOSE_ABS_DIFF(00.0, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0,test_t);
CHECK_CLOSE_ABS_DIFF(10e1, test_t);
CHECK_CLOSE_ABS_DIFF(00e1, test_t);
CHECK_CLOSE_ABS_DIFF(-10e1,test_t);
CHECK_CLOSE_ABS_DIFF(10.0e1, test_t);
CHECK_CLOSE_ABS_DIFF(00.0e1, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0e1,test_t);
CHECK_CLOSE_ABS_DIFF(10e-1, test_t);
CHECK_CLOSE_ABS_DIFF(00e-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10e-1,test_t);
CHECK_CLOSE_ABS_DIFF(10.0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(00.0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0e-1,test_t);
CHECK_CLOSE_ABS_DIFF(10E1, test_t);
CHECK_CLOSE_ABS_DIFF(00E1, test_t);
CHECK_CLOSE_ABS_DIFF(-10E1,test_t);
CHECK_CLOSE_ABS_DIFF(10.0E1, test_t);
CHECK_CLOSE_ABS_DIFF(00.0E1, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0E1,test_t);
CHECK_CLOSE_ABS_DIFF(10E-1, test_t);
CHECK_CLOSE_ABS_DIFF(00E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10E-1,test_t);
CHECK_CLOSE_ABS_DIFF(10.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(00.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10101.0E-011, test_t);
CHECK_CLOSE_ABS_DIFF(-10101093, test_t);
CHECK_CLOSE_ABS_DIFF(10101093, test_t);
CHECK_CLOSE_ABS_DIFF(-.34, test_t);
CHECK_CLOSE_ABS_DIFF(.34, test_t);
CHECK_CLOSE_ABS_DIFF(.34e10, test_t);
BOOST_TEST_THROWS(lexical_cast<test_t>("-1.e"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("-1.E"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.e"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.E"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.0e"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.0E"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("10E"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("10e"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.0e-"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.0E-"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("10E-"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("10e-"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("e1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("e-1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("e-"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>(".e"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>(".11111111111111111111111111111111111111111111111111111111111111111111ee"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>(".11111111111111111111111111111111111111111111111111111111111111111111e-"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("."), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("-B"), bad_lexical_cast);
// Following two tests are not valid for C++11 compilers
//BOOST_TEST_THROWS(lexical_cast<test_t>("0xB"), bad_lexical_cast);
//BOOST_TEST_THROWS(lexical_cast<test_t>("0x0"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("--1.0"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.0e--1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.0.0"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1e1e1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.0e-1e-1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>(" 1.0"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("1.0 "), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>(""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("-"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>('\0'), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>('-'), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>('.'), bad_lexical_cast);
}
template <class T>
void test_float_typess_for_overflows()
{
typedef T test_t;
test_t minvalue = (std::numeric_limits<test_t>::min)();
std::string s_min_value = lexical_cast<std::string>(minvalue);
BOOST_TEST_CLOSE_FRACTION(minvalue, lexical_cast<test_t>(minvalue), (std::numeric_limits<test_t>::epsilon()));
BOOST_TEST_CLOSE_FRACTION(minvalue, lexical_cast<test_t>(s_min_value), (std::numeric_limits<test_t>::epsilon() * 2));
test_t maxvalue = (std::numeric_limits<test_t>::max)();
std::string s_max_value = lexical_cast<std::string>(maxvalue);
BOOST_TEST_CLOSE_FRACTION(maxvalue, lexical_cast<test_t>(maxvalue), (std::numeric_limits<test_t>::epsilon()));
BOOST_TEST_CLOSE_FRACTION(maxvalue, lexical_cast<test_t>(s_max_value), (std::numeric_limits<test_t>::epsilon()));
#ifndef _LIBCPP_VERSION
// libc++ had a bug in implementation of stream conversions for values that must be represented as infinity.
// http://llvm.org/bugs/show_bug.cgi?id=15723#c4
BOOST_TEST_THROWS(lexical_cast<test_t>(s_max_value+"1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>(s_max_value+"9"), bad_lexical_cast);
// VC9 can fail the following tests on floats and doubles when using stingstream...
BOOST_TEST_THROWS(lexical_cast<test_t>("1"+s_max_value), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<test_t>("9"+s_max_value), bad_lexical_cast);
#endif
#if !(defined(_LIBCPP_VERSION) && defined(BOOST_LEXICAL_CAST_DETAIL_TEST_ON_OLD))
if ( std::is_same<test_t,float>::value )
{
BOOST_TEST_THROWS(lexical_cast<test_t>( (std::numeric_limits<double>::max)() ), bad_lexical_cast);
BOOST_TEST(
(std::numeric_limits<double>::min)() - std::numeric_limits<test_t>::epsilon()
<= lexical_cast<test_t>( (std::numeric_limits<double>::min)() )
&& lexical_cast<test_t>( (std::numeric_limits<double>::min)() )
<= (std::numeric_limits<double>::min)() + std::numeric_limits<test_t>::epsilon()
);
BOOST_TEST(
(std::numeric_limits<double>::min)() / 2 - std::numeric_limits<test_t>::epsilon()
<= lexical_cast<test_t>( (std::numeric_limits<double>::min)() / 2 )
&& lexical_cast<test_t>( (std::numeric_limits<double>::min)() / 2 )
<= (std::numeric_limits<double>::min)() / 2 + std::numeric_limits<test_t>::epsilon()
);
}
if ( sizeof(test_t) < sizeof(long double) )
{
BOOST_TEST_THROWS(lexical_cast<test_t>( (std::numeric_limits<long double>::max)() ), bad_lexical_cast);
BOOST_TEST(
(std::numeric_limits<long double>::min)() - std::numeric_limits<test_t>::epsilon()
<= lexical_cast<test_t>( (std::numeric_limits<long double>::min)() )
&& lexical_cast<test_t>( (std::numeric_limits<long double>::min)() )
<= (std::numeric_limits<long double>::min)() + std::numeric_limits<test_t>::epsilon()
);
BOOST_TEST(
(std::numeric_limits<long double>::min)() / 2 - std::numeric_limits<test_t>::epsilon()
<= lexical_cast<test_t>( (std::numeric_limits<long double>::min)() / 2 )
&& lexical_cast<test_t>( (std::numeric_limits<long double>::min)() / 2 )
<= (std::numeric_limits<long double>::min)() / 2 + std::numeric_limits<test_t>::epsilon()
);
}
#endif
}
#undef CHECK_CLOSE_ABS_DIFF
// Epsilon is multiplied by 2 because of two lexical conversions
#define TEST_TO_FROM_CAST_AROUND_TYPED(VAL,STRING_TYPE) \
test_value = VAL + std::numeric_limits<test_t>::epsilon() * i ; \
converted_val = lexical_cast<test_t>( lexical_cast<STRING_TYPE>(test_value) ); \
BOOST_TEST_CLOSE_FRACTION( \
test_value, \
converted_val, \
std::numeric_limits<test_t>::epsilon() * 2 \
);
/*
* For interval [ from_mult*epsilon+VAL, to_mult*epsilon+VAL ], converts float type
* numbers to string[wstring] and then back to float type, then compares initial
* values and generated.
* Step is epsilon
*/
#ifndef BOOST_LCAST_NO_WCHAR_T
# define TEST_TO_FROM_CAST_AROUND(VAL) \
for(i=from_mult; i<=to_mult; ++i) { \
TEST_TO_FROM_CAST_AROUND_TYPED(VAL, std::string) \
TEST_TO_FROM_CAST_AROUND_TYPED(VAL, std::wstring) \
}
#else
# define TEST_TO_FROM_CAST_AROUND(VAL) \
for(i=from_mult; i<=to_mult; ++i) { \
TEST_TO_FROM_CAST_AROUND_TYPED(VAL, std::string) \
}
#endif
template <class TestType>
void test_converion_from_to_float_types()
{
typedef TestType test_t;
test_t test_value;
test_t converted_val;
int i;
int from_mult = -50;
int to_mult = 50;
TEST_TO_FROM_CAST_AROUND( 0.0 );
long double val1;
for(val1 = 1.0e-10L; val1 < 1e11; val1*=10 )
TEST_TO_FROM_CAST_AROUND( val1 );
long double val2;
for(val2 = -1.0e-10L; val2 > -1e11; val2*=10 )
TEST_TO_FROM_CAST_AROUND( val2 );
from_mult = -100;
to_mult = 0;
TEST_TO_FROM_CAST_AROUND( (std::numeric_limits<test_t>::max)() );
from_mult = 0;
to_mult = 100;
TEST_TO_FROM_CAST_AROUND( (std::numeric_limits<test_t>::min)() );
}
#undef TEST_TO_FROM_CAST_AROUND
#undef TEST_TO_FROM_CAST_AROUND_TYPED
template<class T, class CharT>
void test_conversion_from_float_to_char(CharT zero)
{
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(0)) == zero + 0);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(1)) == zero + 1);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(2)) == zero + 2);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(3)) == zero + 3);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(4)) == zero + 4);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(5)) == zero + 5);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(6)) == zero + 6);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(7)) == zero + 7);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(8)) == zero + 8);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(9)) == zero + 9);
BOOST_TEST_THROWS(lexical_cast<CharT>(static_cast<T>(10)), bad_lexical_cast);
T t = (std::numeric_limits<T>::max)();
BOOST_TEST_THROWS(lexical_cast<CharT>(t), bad_lexical_cast);
}
template<class T, class CharT>
void test_conversion_from_char_to_float(CharT zero)
{
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 0)), static_cast<T>(0), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 1)), static_cast<T>(1), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 2)), static_cast<T>(2), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 3)), static_cast<T>(3), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 4)), static_cast<T>(4), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 5)), static_cast<T>(5), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 6)), static_cast<T>(6), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 7)), static_cast<T>(7), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 8)), static_cast<T>(8), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 9)), static_cast<T>(9), (std::numeric_limits<T>::epsilon()) );
BOOST_TEST_THROWS(lexical_cast<T>( static_cast<CharT>(zero + 10)), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( static_cast<CharT>(zero - 1)), bad_lexical_cast);
}
struct restore_oldloc
{
std::locale oldloc;
~restore_oldloc() { std::locale::global(oldloc); }
};
template<class T>
void test_conversion_from_to_float()
{ char const zero = '0';
signed char const szero = '0';
unsigned char const uzero = '0';
test_conversion_from_float_to_char<T>(zero);
test_conversion_from_char_to_float<T>(zero);
test_conversion_from_float_to_char<T>(szero);
test_conversion_from_char_to_float<T>(szero);
test_conversion_from_float_to_char<T>(uzero);
test_conversion_from_char_to_float<T>(uzero);
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
wchar_t const wzero = L'0';
test_conversion_from_float_to_char<T>(wzero);
test_conversion_from_char_to_float<T>(wzero);
#endif
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>("+1"), 1, std::numeric_limits<T>::epsilon());
BOOST_TEST_CLOSE_FRACTION(lexical_cast<T>("+9"), 9, std::numeric_limits<T>::epsilon());
BOOST_TEST_THROWS(lexical_cast<T>("++1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>("-+9"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>("--1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>("+-9"), bad_lexical_cast);
test_converion_to_float_types<T>();
test_float_typess_for_overflows<T>();
test_converion_from_to_float_types<T>();
typedef std::numpunct<char> numpunct;
restore_oldloc guard;
std::locale const& oldloc = guard.oldloc;
std::string grouping1 = BOOST_USE_FACET(numpunct, oldloc).grouping();
std::string grouping2(grouping1);
test_conversion_from_to_float_for_locale<T>();
try
{
std::locale newloc("");
std::locale::global(newloc);
grouping2 = BOOST_USE_FACET(numpunct, newloc).grouping();
}
catch(std::exception const& ex)
{
std::string msg("Failed to set system locale: ");
msg += ex.what();
std::cerr << msg;
}
if(grouping1 != grouping2)
test_conversion_from_to_float_for_locale<T>();
if(grouping1.empty() && grouping2.empty())
std::cerr << "Formatting with thousands_sep has not been tested";
}
void test_conversion_from_to_float()
{
test_conversion_from_to_float<float>();
}
void test_conversion_from_to_double()
{
test_conversion_from_to_float<double>();
}
void test_conversion_from_to_long_double()
{
// We do not run tests on compilers and Standard Libraries with poor support of long double
#if !defined(BOOST_LEXICAL_CAST_NO_LONG_DOUBLE_MATH_FUNCTIONS)
test_conversion_from_to_float<long double>();
#endif
BOOST_TEST(true);
}
template <class Integral, class Float>
void test_conversion_integral_float()
{
BOOST_TEST_CLOSE_FRACTION(lexical_cast<Float>(static_cast<Float>(1)), static_cast<Float>(1), std::numeric_limits<Float>::epsilon());
BOOST_TEST_CLOSE_FRACTION(lexical_cast<Float>(static_cast<Float>(1.1234)), static_cast<Float>(1.1234), std::numeric_limits<Float>::epsilon());
BOOST_TEST_CLOSE_FRACTION(lexical_cast<Float>(static_cast<Float>(-1.1234)), static_cast<Float>(-1.1234), std::numeric_limits<Float>::epsilon());
BOOST_TEST_CLOSE_FRACTION(lexical_cast<Float>(static_cast<Integral>(0)), static_cast<Float>(0), std::numeric_limits<Float>::epsilon());
BOOST_TEST_CLOSE_FRACTION(lexical_cast<Float>(static_cast<Integral>(1)), static_cast<Float>(1), std::numeric_limits<Float>::epsilon());
#ifndef __CYGWIN__
BOOST_TEST_CLOSE_FRACTION(lexical_cast<Float>((std::numeric_limits<Integral>::max)()), static_cast<Float>((std::numeric_limits<Integral>::max)()), std::numeric_limits<Float>::epsilon());
BOOST_TEST_CLOSE_FRACTION(lexical_cast<Float>((std::numeric_limits<Integral>::min)()), static_cast<Float>((std::numeric_limits<Integral>::min)()), std::numeric_limits<Float>::epsilon());
#endif
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(0.0)), 0);
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(1.0)), 1);
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(8.0)), 8);
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(16.0)), 16);
if (boost::detail::lcast::is_signed<Integral>::value) {
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(-1.0)), -1);
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(-8.0)), -8);
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(-16.0)), -16);
} else {
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(-1.0)), (std::numeric_limits<Integral>::max)());
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(-8.0)), (std::numeric_limits<Integral>::max)() - 7);
BOOST_TEST_EQ(lexical_cast<Integral>(static_cast<Float>(-16.0)), (std::numeric_limits<Integral>::max)() - 15);
}
BOOST_TEST_THROWS(lexical_cast<Integral>(static_cast<Float>(0.5)), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(static_cast<Float>(-0.5)), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(static_cast<Float>(1.5)), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(static_cast<Float>(-1.5)), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>((std::numeric_limits<Float>::min)()), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>((std::numeric_limits<Float>::max)()), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>((std::numeric_limits<Float>::epsilon)()), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>((std::numeric_limits<Float>::lowest)()), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(std::numeric_limits<Float>::quiet_NaN()), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(-std::numeric_limits<Float>::quiet_NaN()), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(std::numeric_limits<Float>::infinity()), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(-std::numeric_limits<Float>::infinity()), bad_lexical_cast);
}
int main()
{
test_conversion_from_to_float();
test_conversion_from_to_double();
test_conversion_from_to_long_double();
test_conversion_integral_float<int, float>();
test_conversion_integral_float<int, double>();
test_conversion_integral_float<unsigned short, float>();
test_conversion_integral_float<unsigned short, double>();
test_conversion_integral_float<short, float>();
test_conversion_integral_float<short, double>();
test_conversion_integral_float<long int, float>();
test_conversion_integral_float<long int, double>();
test_conversion_integral_float<long long, float>();
test_conversion_integral_float<long long, double>();
test_conversion_integral_float<unsigned long long, float>();
test_conversion_integral_float<unsigned long long, double>();
return boost::report_errors();
}
-16
View File
@@ -1,16 +0,0 @@
// Copyright Antony Polukhin, 2013-2026.
//
// 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/lexical_cast.hpp>
#include <string>
int main()
{
volatile int i = 42;
boost::lexical_cast<std::string>(i);
return 1;
}
+38
View File
@@ -0,0 +1,38 @@
// Copyright David Abrahams 2003.
// 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/implicit_cast.hpp>
#include <boost/detail/lightweight_test.hpp>
#include <boost/type.hpp>
using boost::implicit_cast;
using boost::type;
template <class T>
type<T> check_return(T) { return type<T>(); }
struct foo
{
foo(char const*) {}
operator long() const { return 0; }
};
typedef type<long> long_type;
typedef type<foo> foo_type;
int main()
{
type<long> x = check_return(boost::implicit_cast<long>(1));
BOOST_TEST(boost::implicit_cast<long>(1) == 1L);
type<foo> f = check_return(boost::implicit_cast<foo>("hello"));
type<long> z = check_return(boost::implicit_cast<long>(foo("hello")));
// warning supression:
(void)x;
(void)f;
(void)z;
return boost::report_errors();
}
+26
View File
@@ -0,0 +1,26 @@
// Copyright David Abrahams 2003.
// 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/implicit_cast.hpp>
#include <boost/type.hpp>
#define BOOST_INCLUDE_MAIN
#include <boost/test/test_tools.hpp>
using boost::implicit_cast;
struct foo
{
explicit foo(char const*) {}
};
int test_main(int, char*[])
{
foo x = implicit_cast<foo>("foobar");
(void)x; // warning suppression.
BOOST_CHECK(false); // suppressing warning about 'boost::unit_test::{anonymous}::unit_test_log' defined but not used
return 0;
}
-63
View File
@@ -1,63 +0,0 @@
// Copyright Antony Polukhin, 2023-2026.
//
// 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/core/lightweight_test.hpp>
#include <boost/lexical_cast.hpp>
struct oops {
operator int () const {
return 41;
}
};
inline std::ostream& operator<<(std::ostream& os, const oops&) {
return os << 42;
}
struct oops2 {
operator double () const {
return 1.12;
}
};
inline std::ostream& operator<<(std::ostream& os, const oops2&) {
return os << 2;
}
struct Value {
explicit Value(double x) : x(x) {}
operator double() const {
return x;
}
double x;
};
int main() {
BOOST_TEST_EQ(boost::lexical_cast<int>(oops{}), 42);
BOOST_TEST_EQ(boost::lexical_cast<std::string>(oops{}), "42");
BOOST_TEST_EQ(boost::lexical_cast<double>(oops2{}), 2);
BOOST_TEST_EQ(boost::lexical_cast<std::string>(oops2{}), "2");
Value longer_that_1_digit(128);
BOOST_TEST_EQ(boost::lexical_cast<std::string>(longer_that_1_digit), "128");
// iostreams have default precision 6, see [basic.ios.cons]
const double precision_more_than_6_digits = 1.23456789123;
// At the moment we do not set the precision for types that use conversion
// operators for ostreaming, so the below test pass. We do not set precision
// for user provided `operator<<`, types with conversion operators follow
// the same design decision for now.
BOOST_TEST_NE(
boost::lexical_cast<std::string>(Value(precision_more_than_6_digits)),
boost::lexical_cast<std::string>(precision_more_than_6_digits)
);
return boost::report_errors();
}
-242
View File
@@ -1,242 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011-2026.
//
// 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 <type_traits>
#include <boost/core/cmath.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/lexical_cast.hpp>
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
using namespace boost;
template <class T>
bool is_pos_inf(T value)
{
return (boost::core::isinf)(value) && !(boost::core::signbit)(value);
}
template <class T>
bool is_neg_inf(T value)
{
return (boost::core::isinf)(value) && (boost::core::signbit)(value);
}
template <class T>
bool is_pos_nan(T value)
{
return (boost::core::isnan)(value) && !(boost::core::signbit)(value);
}
template <class T>
bool is_neg_nan(T value)
{
/* There is some strange behaviour on Itanium platform with -nan nuber for long double.
* It is a IA64 feature, or it is a boost::math feature, not a lexical_cast bug */
#if defined(__ia64__) || defined(_M_IA64)
return (boost::core::isnan)(value)
&& ( std::is_same<T, long double >::value || (boost::core::signbit)(value) );
#else
return (boost::core::isnan)(value) && (boost::core::signbit)(value);
#endif
}
template <class T>
void test_inf_nan_templated()
{
typedef T test_t;
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("inf") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("INF") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>("-inf") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>("-INF") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("+inf") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("+INF") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("infinity") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("INFINITY") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>("-infinity") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>("-INFINITY") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("+infinity") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("+INFINITY") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("iNfiNity") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>("INfinity") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>("-inFINITY") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>("-INFINITY") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("nan") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("NAN") ) );
BOOST_TEST( is_neg_nan( lexical_cast<test_t>("-nan") ) );
BOOST_TEST( is_neg_nan( lexical_cast<test_t>("-NAN") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("+nan") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("+NAN") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("nAn") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("NaN") ) );
BOOST_TEST( is_neg_nan( lexical_cast<test_t>("-nAn") ) );
BOOST_TEST( is_neg_nan( lexical_cast<test_t>("-NaN") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("+Nan") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("+nAN") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("nan()") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>("NAN(some string)") ) );
BOOST_TEST_THROWS( lexical_cast<test_t>("NAN(some string"), bad_lexical_cast );
BOOST_TEST(lexical_cast<std::string>( (boost::core::copysign)(std::numeric_limits<test_t >::infinity(), static_cast<test_t>(-1.0)))
== "-inf" );
BOOST_TEST(lexical_cast<std::string>( std::numeric_limits<test_t >::infinity()) == "inf" );
BOOST_TEST(lexical_cast<std::string>( std::numeric_limits<test_t >::quiet_NaN()) == "nan" );
#if !defined(__ia64__) && !defined(_M_IA64)
BOOST_TEST(lexical_cast<std::string>(
(boost::core::copysign)(std::numeric_limits<test_t >::quiet_NaN(), static_cast<test_t>(-1.0)))
== "-nan" );
#endif
#ifndef BOOST_LCAST_NO_WCHAR_T
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"inf") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"INF") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>(L"-inf") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>(L"-INF") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"+inf") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"+INF") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"infinity") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"INFINITY") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>(L"-infinity") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>(L"-INFINITY") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"+infinity") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"+INFINITY") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>(L"-infINIty") ) );
BOOST_TEST( is_neg_inf( lexical_cast<test_t>(L"-INFiniTY") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"+inFINIty") ) );
BOOST_TEST( is_pos_inf( lexical_cast<test_t>(L"+INfinITY") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>(L"nan") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>(L"NAN") ) );
BOOST_TEST( is_neg_nan( lexical_cast<test_t>(L"-nan") ) );
BOOST_TEST( is_neg_nan( lexical_cast<test_t>(L"-NAN") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>(L"+nan") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>(L"+NAN") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>(L"nan()") ) );
BOOST_TEST( is_pos_nan( lexical_cast<test_t>(L"NAN(some string)") ) );
BOOST_TEST_THROWS( lexical_cast<test_t>(L"NAN(some string"), bad_lexical_cast );
BOOST_TEST(lexical_cast<std::wstring>( (boost::core::copysign)(std::numeric_limits<test_t >::infinity(), static_cast<test_t>(-1.0)))
== L"-inf" );
BOOST_TEST(lexical_cast<std::wstring>( std::numeric_limits<test_t >::infinity()) == L"inf" );
BOOST_TEST(lexical_cast<std::wstring>( std::numeric_limits<test_t >::quiet_NaN()) == L"nan" );
#if !defined(__ia64__) && !defined(_M_IA64)
BOOST_TEST(lexical_cast<std::wstring>(
(boost::core::copysign)(std::numeric_limits<test_t >::quiet_NaN(), static_cast<test_t>(-1.0)))
== L"-nan" );
#endif
#endif
}
void test_inf_nan_float()
{
test_inf_nan_templated<float >();
BOOST_TEST(is_pos_nan(lexical_cast<float>(std::numeric_limits<float>::quiet_NaN())));
BOOST_TEST(is_neg_nan(lexical_cast<float>(-std::numeric_limits<float>::quiet_NaN())));
BOOST_TEST(is_pos_inf(lexical_cast<float>(std::numeric_limits<float>::infinity())));
BOOST_TEST(is_neg_inf(lexical_cast<float>(-std::numeric_limits<float>::infinity())));
BOOST_TEST(is_pos_nan(lexical_cast<float>(std::numeric_limits<double>::quiet_NaN())));
BOOST_TEST(is_neg_nan(lexical_cast<float>(-std::numeric_limits<double>::quiet_NaN())));
BOOST_TEST(is_pos_inf(lexical_cast<float>(std::numeric_limits<double>::infinity())));
BOOST_TEST(is_neg_inf(lexical_cast<float>(-std::numeric_limits<double>::infinity())));
}
void test_inf_nan_double()
{
test_inf_nan_templated<double >();
BOOST_TEST(is_pos_nan(lexical_cast<double>(std::numeric_limits<float>::quiet_NaN())));
BOOST_TEST(is_neg_nan(lexical_cast<double>(-std::numeric_limits<float>::quiet_NaN())));
BOOST_TEST(is_pos_inf(lexical_cast<double>(std::numeric_limits<float>::infinity())));
BOOST_TEST(is_neg_inf(lexical_cast<double>(-std::numeric_limits<float>::infinity())));
BOOST_TEST(is_pos_nan(lexical_cast<double>(std::numeric_limits<double>::quiet_NaN())));
BOOST_TEST(is_neg_nan(lexical_cast<double>(-std::numeric_limits<double>::quiet_NaN())));
BOOST_TEST(is_pos_inf(lexical_cast<double>(std::numeric_limits<double>::infinity())));
BOOST_TEST(is_neg_inf(lexical_cast<double>(-std::numeric_limits<double>::infinity())));
BOOST_TEST(is_pos_nan(lexical_cast<double>(std::numeric_limits<long double>::quiet_NaN())));
BOOST_TEST(is_neg_nan(lexical_cast<double>(-std::numeric_limits<long double>::quiet_NaN())));
BOOST_TEST(is_pos_inf(lexical_cast<double>(std::numeric_limits<long double>::infinity())));
BOOST_TEST(is_neg_inf(lexical_cast<double>(-std::numeric_limits<long double>::infinity())));
}
void test_inf_nan_long_double()
{
// We do not run tests on compilers with bugs
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
test_inf_nan_templated<long double >();
#endif
BOOST_TEST(true);
}
template <class Integral>
void test_inf_nan_to_integral()
{
BOOST_TEST_THROWS(lexical_cast<Integral>(std::numeric_limits<float>::quiet_NaN()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(-std::numeric_limits<float>::quiet_NaN()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(std::numeric_limits<float>::infinity()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(-std::numeric_limits<float>::infinity()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(std::numeric_limits<double>::quiet_NaN()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(-std::numeric_limits<double>::quiet_NaN()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(std::numeric_limits<double>::infinity()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(-std::numeric_limits<double>::infinity()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(std::numeric_limits<long double>::quiet_NaN()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(-std::numeric_limits<long double>::quiet_NaN()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(std::numeric_limits<long double>::infinity()), boost::bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<Integral>(-std::numeric_limits<long double>::infinity()), boost::bad_lexical_cast);
}
int main()
{
test_inf_nan_float();
test_inf_nan_double();
test_inf_nan_long_double();
test_inf_nan_to_integral<int>();
test_inf_nan_to_integral<bool>();
test_inf_nan_to_integral<short>();
return boost::report_errors();
}
-238
View File
@@ -1,238 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012-2026.
//
// 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/range/iterator_range.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/lexical_cast.hpp>
using namespace boost;
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION) && !defined(BOOST_MSVC)
#define BOOST_LC_RUNU16
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION) && !defined(BOOST_MSVC)
#define BOOST_LC_RUNU32
#endif
struct class_with_user_defined_sream_operators {
int i;
operator int() const {
return i;
}
};
template <class CharT>
inline std::basic_istream<CharT>& operator >> (std::basic_istream<CharT>& istr, class_with_user_defined_sream_operators& rhs)
{
return istr >> rhs.i;
}
template <class RngT>
void do_test_iterator_range_impl(const RngT& rng)
{
BOOST_TEST_EQ(lexical_cast<int>(rng), 1);
BOOST_TEST_EQ(lexical_cast<int>(rng.begin(), rng.size()), 1);
BOOST_TEST_EQ(lexical_cast<unsigned int>(rng), 1u);
BOOST_TEST_EQ(lexical_cast<unsigned int>(rng.begin(), rng.size()), 1u);
BOOST_TEST_EQ(lexical_cast<short>(rng), 1);
BOOST_TEST_EQ(lexical_cast<short>(rng.begin(), rng.size()), 1);
BOOST_TEST_EQ(lexical_cast<unsigned short>(rng), 1u);
BOOST_TEST_EQ(lexical_cast<unsigned short>(rng.begin(), rng.size()), 1u);
BOOST_TEST_EQ(lexical_cast<long int>(rng), 1);
BOOST_TEST_EQ(lexical_cast<long int>(rng.begin(), rng.size()), 1);
BOOST_TEST_EQ(lexical_cast<unsigned long int>(rng), 1u);
BOOST_TEST_EQ(lexical_cast<unsigned long int>(rng.begin(), rng.size()), 1u);
#ifdef BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES
BOOST_TEST_EQ(lexical_cast<float>(rng), 1.0f);
BOOST_TEST_EQ(lexical_cast<float>(rng.begin(), rng.size()), 1.0f);
BOOST_TEST_EQ(lexical_cast<double>(rng), 1.0);
BOOST_TEST_EQ(lexical_cast<double>(rng.begin(), rng.size()), 1.0);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_TEST_EQ(lexical_cast<long double>(rng), 1.0L);
BOOST_TEST_EQ(lexical_cast<long double>(rng.begin(), rng.size()), 1.0L);
#endif
BOOST_TEST_EQ(lexical_cast<class_with_user_defined_sream_operators>(rng), 1);
#endif
#if defined(BOOST_HAS_LONG_LONG)
BOOST_TEST_EQ(lexical_cast<boost::ulong_long_type>(rng), 1u);
BOOST_TEST_EQ(lexical_cast<boost::ulong_long_type>(rng.begin(), rng.size()), 1u);
BOOST_TEST_EQ(lexical_cast<boost::long_long_type>(rng), 1);
BOOST_TEST_EQ(lexical_cast<boost::long_long_type>(rng.begin(), rng.size()), 1);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_TEST_EQ(lexical_cast<unsigned __int64>(rng), 1u);
BOOST_TEST_EQ(lexical_cast<unsigned __int64>(rng.begin(), rng.size()), 1u);
BOOST_TEST_EQ(lexical_cast<__int64>(rng), 1);
BOOST_TEST_EQ(lexical_cast<__int64>(rng.begin(), rng.size()), 1);
#endif
}
template <class CharT>
void test_it_range_using_any_chars(CharT* one, CharT* eleven)
{
typedef CharT test_char_type;
// Zero terminated
iterator_range<test_char_type*> rng1(one, one + 1);
do_test_iterator_range_impl(rng1);
iterator_range<const test_char_type*> crng1(one, one + 1);
do_test_iterator_range_impl(crng1);
// Non zero terminated
iterator_range<test_char_type*> rng2(eleven, eleven + 1);
do_test_iterator_range_impl(rng2);
iterator_range<const test_char_type*> crng2(eleven, eleven + 1);
do_test_iterator_range_impl(crng2);
}
template <class CharT>
void test_it_range_using_char(CharT* one, CharT* eleven)
{
typedef CharT test_char_type;
iterator_range<test_char_type*> rng1(one, one + 1);
BOOST_TEST_EQ(lexical_cast<std::string>(rng1), "1");
iterator_range<const test_char_type*> crng1(one, one + 1);
BOOST_TEST_EQ(lexical_cast<std::string>(crng1), "1");
iterator_range<test_char_type*> rng2(eleven, eleven + 1);
BOOST_TEST_EQ(lexical_cast<std::string>(rng2), "1");
iterator_range<const test_char_type*> crng2(eleven, eleven + 1);
BOOST_TEST_EQ(lexical_cast<std::string>(crng2), "1");
BOOST_TEST_EQ(lexical_cast<float>(rng1), 1.0f);
BOOST_TEST_EQ(lexical_cast<double>(rng1), 1.0);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_TEST_EQ(lexical_cast<long double>(rng1), 1.0L);
#endif
BOOST_TEST_EQ(lexical_cast<class_with_user_defined_sream_operators>(rng1), 1);
BOOST_TEST_EQ(lexical_cast<float>(crng2), 1.0f);
BOOST_TEST_EQ(lexical_cast<double>(crng2), 1.0);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_TEST_EQ(lexical_cast<long double>(crng2), 1.0L);
#endif
BOOST_TEST_EQ(lexical_cast<class_with_user_defined_sream_operators>(crng2), 1);
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(_LIBCPP_VERSION)
BOOST_TEST(lexical_cast<std::wstring>(rng1) == L"1");
BOOST_TEST(lexical_cast<std::wstring>(crng1) == L"1");
BOOST_TEST(lexical_cast<std::wstring>(rng2) == L"1");
BOOST_TEST(lexical_cast<std::wstring>(crng2) == L"1");
#endif
#if defined(BOOST_LC_RUNU16) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
typedef std::basic_string<char16_t> my_char16_string;
BOOST_TEST(lexical_cast<my_char16_string>(rng1) == u"1");
BOOST_TEST(lexical_cast<my_char16_string>(crng1) == u"1");
BOOST_TEST(lexical_cast<my_char16_string>(rng2) == u"1");
BOOST_TEST(lexical_cast<my_char16_string>(crng2) == u"1");
#endif
#if defined(BOOST_LC_RUNU32) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
typedef std::basic_string<char32_t> my_char32_string;
BOOST_TEST(lexical_cast<my_char32_string>(rng1) == U"1");
BOOST_TEST(lexical_cast<my_char32_string>(crng1) == U"1");
BOOST_TEST(lexical_cast<my_char32_string>(rng2) == U"1");
BOOST_TEST(lexical_cast<my_char32_string>(crng2) == U"1");
#endif
}
void test_char_iterator_ranges()
{
typedef char test_char_type;
test_char_type data1[] = "1";
test_char_type data2[] = "11";
test_it_range_using_any_chars(data1, data2);
test_it_range_using_char(data1, data2);
}
void test_unsigned_char_iterator_ranges()
{
typedef unsigned char test_char_type;
test_char_type data1[] = "1";
test_char_type data2[] = "11";
test_it_range_using_any_chars(data1, data2);
test_it_range_using_char(data1, data2);
}
void test_signed_char_iterator_ranges()
{
typedef signed char test_char_type;
test_char_type data1[] = "1";
test_char_type data2[] = "11";
test_it_range_using_any_chars(data1, data2);
test_it_range_using_char(data1, data2);
}
void test_wchar_iterator_ranges()
{
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(_LIBCPP_VERSION)
typedef wchar_t test_char_type;
test_char_type data1[] = L"1";
test_char_type data2[] = L"11";
test_it_range_using_any_chars(data1, data2);
#endif
BOOST_TEST(true);
}
void test_char16_iterator_ranges()
{
#if defined(BOOST_LC_RUNU16)
typedef char16_t test_char_type;
test_char_type data1[] = u"1";
test_char_type data2[] = u"11";
test_it_range_using_any_chars(data1, data2);
#endif
BOOST_TEST(true);
}
void test_char32_iterator_ranges()
{
#if defined(BOOST_LC_RUNU32)
typedef char32_t test_char_type;
test_char_type data1[] = U"1";
test_char_type data2[] = U"11";
test_it_range_using_any_chars(data1, data2);
#endif
BOOST_TEST(true);
}
int main()
{
test_char_iterator_ranges();
test_unsigned_char_iterator_ranges();
test_signed_char_iterator_ranges();
test_wchar_iterator_ranges();
test_char16_iterator_ranges();
test_char32_iterator_ranges();
return boost::report_errors();
}
@@ -3,7 +3,6 @@
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Sergey Shandar 2005, Alexander Nasonov, 2007.
// Copyright Antony Polukhin, 2023-2026.
//
// Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
@@ -12,15 +11,34 @@
// Test abstract class. Bug 1358600:
// http://sf.net/tracker/?func=detail&aid=1358600&group_id=7586&atid=107586
#include <boost/core/lightweight_test.hpp>
#include <boost/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
using namespace boost;
void test_abstract();
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast unit test");
suite->add(BOOST_TEST_CASE(&test_abstract));
return suite;
}
class A
{
public:
virtual void out(std::ostream &) const = 0;
virtual ~A() {}
};
class B: public A
@@ -38,12 +56,6 @@ std::ostream &operator<<(std::ostream &O, const A &a)
void test_abstract()
{
const A &a = B();
BOOST_TEST(boost::lexical_cast<std::string>(a) == "B");
}
int main()
{
test_abstract();
return boost::report_errors();
BOOST_CHECK(boost::lexical_cast<std::string>(a) == "B");
}
@@ -2,30 +2,49 @@
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012-2026.
// Copyright Antony Polukhin, 2012.
//
// 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/core/lightweight_test.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/array.hpp>
#include <boost/lexical_cast.hpp>
void testing_boost_array_output_conversion();
void testing_std_array_output_conversion();
void testing_boost_array_input_conversion();
void testing_std_array_input_conversion();
using namespace boost;
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION) && !defined(BOOST_MSVC)
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION)
#define BOOST_LC_RUNU16
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION) && !defined(BOOST_MSVC)
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION)
#define BOOST_LC_RUNU32
#endif
boost::unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("Testing boost::lexical_cast with boost::array and std::array");
suite->add(BOOST_TEST_CASE(testing_boost_array_output_conversion));
suite->add(BOOST_TEST_CASE(testing_std_array_output_conversion));
suite->add(BOOST_TEST_CASE(testing_boost_array_input_conversion));
suite->add(BOOST_TEST_CASE(testing_std_array_input_conversion));
return suite;
}
template <template <class, std::size_t> class ArrayT, class T>
static void testing_template_array_output_on_spec_value(T val)
static void testing_template_array_output_on_spec_value(T val)
{
typedef ArrayT<char, 300> arr_type;
typedef ArrayT<char, 1> short_arr_type;
@@ -39,44 +58,44 @@ static void testing_template_array_output_on_spec_value(T val)
{
arr_type res1 = lexical_cast<arr_type>(val);
BOOST_TEST_EQ(&res1[0], ethalon);
BOOST_CHECK_EQUAL(&res1[0], ethalon);
const arr_type res2 = lexical_cast<arr_type>(val);
BOOST_TEST_EQ(&res2[0], ethalon);
BOOST_TEST_THROWS(lexical_cast<short_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(&res2[0], ethalon);
BOOST_CHECK_THROW(lexical_cast<short_arr_type>(val), boost::bad_lexical_cast);
}
{
uarr_type res1 = lexical_cast<uarr_type>(val);
BOOST_TEST_EQ(reinterpret_cast<char*>(&res1[0]), ethalon);
BOOST_CHECK_EQUAL(reinterpret_cast<char*>(&res1[0]), ethalon);
const uarr_type res2 = lexical_cast<uarr_type>(val);
BOOST_TEST_EQ(reinterpret_cast<const char*>(&res2[0]), ethalon);
BOOST_TEST_THROWS(lexical_cast<ushort_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(reinterpret_cast<const char*>(&res2[0]), ethalon);
BOOST_CHECK_THROW(lexical_cast<ushort_arr_type>(val), boost::bad_lexical_cast);
}
{
sarr_type res1 = lexical_cast<sarr_type>(val);
BOOST_TEST_EQ(reinterpret_cast<char*>(&res1[0]), ethalon);
BOOST_CHECK_EQUAL(reinterpret_cast<char*>(&res1[0]), ethalon);
const sarr_type res2 = lexical_cast<sarr_type>(val);
BOOST_TEST_EQ(reinterpret_cast<const char*>(&res2[0]), ethalon);
BOOST_TEST_THROWS(lexical_cast<sshort_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(reinterpret_cast<const char*>(&res2[0]), ethalon);
BOOST_CHECK_THROW(lexical_cast<sshort_arr_type>(val), boost::bad_lexical_cast);
}
#if !defined(BOOST_NO_STRINGSTREAM) && !defined(BOOST_NO_STD_WSTRING) && !defined(_LIBCPP_VERSION)
#if !defined(BOOST_NO_STRINGSTREAM) && !defined(BOOST_NO_STD_WSTRING)
typedef ArrayT<wchar_t, 300> warr_type;
typedef ArrayT<wchar_t, 3> wshort_arr_type;
std::wstring wethalon(L"100");
{
warr_type res = lexical_cast<warr_type>(val);
BOOST_TEST(&res[0] == wethalon);
BOOST_CHECK(&res[0] == wethalon);
}
{
const warr_type res = lexical_cast<warr_type>(val);
BOOST_TEST(&res[0] == wethalon);
BOOST_CHECK(&res[0] == wethalon);
}
BOOST_TEST_THROWS(lexical_cast<wshort_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<wshort_arr_type>(val), boost::bad_lexical_cast);
#endif
@@ -87,15 +106,15 @@ static void testing_template_array_output_on_spec_value(T val)
{
u16arr_type res = lexical_cast<u16arr_type>(val);
BOOST_TEST(&res[0] == u16ethalon);
BOOST_CHECK(&res[0] == u16ethalon);
}
{
const u16arr_type res = lexical_cast<u16arr_type>(val);
BOOST_TEST(&res[0] == u16ethalon);
BOOST_CHECK(&res[0] == u16ethalon);
}
BOOST_TEST_THROWS(lexical_cast<u16short_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<u16short_arr_type>(val), boost::bad_lexical_cast);
#endif
#ifdef BOOST_LC_RUNU32
@@ -105,21 +124,21 @@ static void testing_template_array_output_on_spec_value(T val)
{
u32arr_type res = lexical_cast<u32arr_type>(val);
BOOST_TEST(&res[0] == u32ethalon);
BOOST_CHECK(&res[0] == u32ethalon);
}
{
const u32arr_type res = lexical_cast<u32arr_type>(val);
BOOST_TEST(&res[0] == u32ethalon);
BOOST_CHECK(&res[0] == u32ethalon);
}
BOOST_TEST_THROWS(lexical_cast<u32short_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<u32short_arr_type>(val), boost::bad_lexical_cast);
#endif
}
template <template <class, std::size_t> class ArrayT>
static void testing_template_array_output_on_char_value()
static void testing_template_array_output_on_char_value()
{
typedef ArrayT<char, 300> arr_type;
typedef ArrayT<char, 1> short_arr_type;
@@ -134,48 +153,48 @@ static void testing_template_array_output_on_char_value()
{
arr_type res1 = lexical_cast<arr_type>(val);
BOOST_TEST_EQ(&res1[0], ethalon);
BOOST_CHECK_EQUAL(&res1[0], ethalon);
const arr_type res2 = lexical_cast<arr_type>(val);
BOOST_TEST_EQ(&res2[0], ethalon);
BOOST_TEST_THROWS(lexical_cast<short_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(&res2[0], ethalon);
BOOST_CHECK_THROW(lexical_cast<short_arr_type>(val), boost::bad_lexical_cast);
}
{
uarr_type res1 = lexical_cast<uarr_type>(val);
BOOST_TEST_EQ(reinterpret_cast<char*>(&res1[0]), ethalon);
BOOST_CHECK_EQUAL(reinterpret_cast<char*>(&res1[0]), ethalon);
const uarr_type res2 = lexical_cast<uarr_type>(val);
BOOST_TEST_EQ(reinterpret_cast<const char*>(&res2[0]), ethalon);
BOOST_TEST_THROWS(lexical_cast<ushort_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(reinterpret_cast<const char*>(&res2[0]), ethalon);
BOOST_CHECK_THROW(lexical_cast<ushort_arr_type>(val), boost::bad_lexical_cast);
}
{
sarr_type res1 = lexical_cast<sarr_type>(val);
BOOST_TEST_EQ(reinterpret_cast<char*>(&res1[0]), ethalon);
BOOST_CHECK_EQUAL(reinterpret_cast<char*>(&res1[0]), ethalon);
const sarr_type res2 = lexical_cast<sarr_type>(val);
BOOST_TEST_EQ(reinterpret_cast<const char*>(&res2[0]), ethalon);
BOOST_TEST_THROWS(lexical_cast<sshort_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(reinterpret_cast<const char*>(&res2[0]), ethalon);
BOOST_CHECK_THROW(lexical_cast<sshort_arr_type>(val), boost::bad_lexical_cast);
}
#if !defined(BOOST_NO_STRINGSTREAM) && !defined(BOOST_NO_STD_WSTRING) && !defined(_LIBCPP_VERSION)
#if !defined(BOOST_NO_STRINGSTREAM) && !defined(BOOST_NO_STD_WSTRING)
typedef ArrayT<wchar_t, 4> warr_type;
typedef ArrayT<wchar_t, 3> wshort_arr_type;
std::wstring wethalon(L"100");
{
warr_type res = lexical_cast<warr_type>(val);
BOOST_TEST(&res[0] == wethalon);
BOOST_CHECK(&res[0] == wethalon);
warr_type res3 = lexical_cast<warr_type>(wethalon);
BOOST_TEST(&res3[0] == wethalon);
BOOST_CHECK(&res3[0] == wethalon);
}
{
const warr_type res = lexical_cast<warr_type>(val);
BOOST_TEST(&res[0] == wethalon);
BOOST_CHECK(&res[0] == wethalon);
const warr_type res3 = lexical_cast<warr_type>(wethalon);
BOOST_TEST(&res3[0] == wethalon);
BOOST_CHECK(&res3[0] == wethalon);
}
BOOST_TEST_THROWS(lexical_cast<wshort_arr_type>(val), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<wshort_arr_type>(val), boost::bad_lexical_cast);
#endif
@@ -187,24 +206,24 @@ static void testing_template_array_output_on_char_value()
{
#ifdef BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES
u16arr_type res = lexical_cast<u16arr_type>(val);
BOOST_TEST(&res[0] == u16ethalon);
BOOST_CHECK(&res[0] == u16ethalon);
#endif
u16arr_type res3 = lexical_cast<u16arr_type>(u16ethalon);
BOOST_TEST(&res3[0] == u16ethalon);
BOOST_CHECK(&res3[0] == u16ethalon);
}
{
#ifdef BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES
const u16arr_type res = lexical_cast<u16arr_type>(val);
BOOST_TEST(&res[0] == u16ethalon);
BOOST_CHECK(&res[0] == u16ethalon);
#endif
const u16arr_type res3 = lexical_cast<u16arr_type>(u16ethalon);
BOOST_TEST(&res3[0] == u16ethalon);
BOOST_CHECK(&res3[0] == u16ethalon);
}
// Some compillers may throw std::bad_alloc here
BOOST_TEST_THROWS(lexical_cast<u16short_arr_type>(val), std::exception);
BOOST_CHECK_THROW(lexical_cast<u16short_arr_type>(val), std::exception);
#endif
#ifdef BOOST_LC_RUNU32
@@ -215,36 +234,34 @@ static void testing_template_array_output_on_char_value()
{
#ifdef BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES
u32arr_type res = lexical_cast<u32arr_type>(val);
BOOST_TEST(&res[0] == u32ethalon);
BOOST_CHECK(&res[0] == u32ethalon);
#endif
u32arr_type res3 = lexical_cast<u32arr_type>(u32ethalon);
BOOST_TEST(&res3[0] == u32ethalon);
BOOST_CHECK(&res3[0] == u32ethalon);
}
{
#ifdef BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES
const u32arr_type res = lexical_cast<u32arr_type>(val);
BOOST_TEST(&res[0] == u32ethalon);
BOOST_CHECK(&res[0] == u32ethalon);
#endif
const u32arr_type res3 = lexical_cast<u32arr_type>(u32ethalon);
BOOST_TEST(&res3[0] == u32ethalon);
BOOST_CHECK(&res3[0] == u32ethalon);
}
// Some compillers may throw std::bad_alloc here
BOOST_TEST_THROWS(lexical_cast<u32short_arr_type>(val), std::exception);
BOOST_CHECK_THROW(lexical_cast<u32short_arr_type>(val), std::exception);
#endif
}
void testing_boost_array_output_conversion()
{
#ifndef _LIBCPP_VERSION
{
testing_template_array_output_on_char_value<boost::array>();
testing_template_array_output_on_spec_value<boost::array>(100);
testing_template_array_output_on_spec_value<boost::array>(static_cast<short>(100));
testing_template_array_output_on_spec_value<boost::array>(static_cast<unsigned short>(100));
testing_template_array_output_on_spec_value<boost::array>(static_cast<unsigned int>(100));
#endif
}
void testing_std_array_output_conversion()
@@ -257,99 +274,96 @@ void testing_std_array_output_conversion()
testing_template_array_output_on_spec_value<std::array>(static_cast<unsigned int>(100));
#endif
BOOST_TEST(true);
BOOST_CHECK(true);
}
template <template <class, std::size_t> class ArrayT>
static void testing_generic_array_input_conversion()
{
{
ArrayT<char, 4> var_zero_terminated = {{ '1', '0', '0', '\0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_zero_terminated), "100");
BOOST_TEST_EQ(lexical_cast<int>(var_zero_terminated), 100);
ArrayT<char, 4> var_zero_terminated = {{ '1', '0', '0', '\0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_zero_terminated), "100");
BOOST_CHECK_EQUAL(lexical_cast<int>(var_zero_terminated), 100);
ArrayT<char, 3> var_none_terminated = {{ '1', '0', '0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_none_terminated), "100");
BOOST_TEST_EQ(lexical_cast<short>(var_none_terminated), static_cast<short>(100));
ArrayT<char, 3> var_none_terminated = {{ '1', '0', '0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_none_terminated), "100");
BOOST_CHECK_EQUAL(lexical_cast<short>(var_none_terminated), static_cast<short>(100));
ArrayT<const char, 4> var_zero_terminated_const_char = {{ '1', '0', '0', '\0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_zero_terminated_const_char), "100");
ArrayT<const char, 4> var_zero_terminated_const_char = {{ '1', '0', '0', '\0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_zero_terminated_const_char), "100");
ArrayT<const char, 3> var_none_terminated_const_char = {{ '1', '0', '0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_none_terminated_const_char), "100");
ArrayT<const char, 3> var_none_terminated_const_char = {{ '1', '0', '0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_none_terminated_const_char), "100");
const ArrayT<char, 4> var_zero_terminated_const_var = {{ '1', '0', '0', '\0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_zero_terminated_const_var), "100");
const ArrayT<char, 4> var_zero_terminated_const_var = {{ '1', '0', '0', '\0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_zero_terminated_const_var), "100");
const ArrayT<char, 3> var_none_terminated_const_var = {{ '1', '0', '0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_none_terminated_const_var), "100");
const ArrayT<char, 3> var_none_terminated_const_var = {{ '1', '0', '0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_none_terminated_const_var), "100");
const ArrayT<const char, 4> var_zero_terminated_const_var_const_char = {{ '1', '0', '0', '\0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_zero_terminated_const_var_const_char), "100");
const ArrayT<const char, 4> var_zero_terminated_const_var_const_char = {{ '1', '0', '0', '\0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_zero_terminated_const_var_const_char), "100");
const ArrayT<const char, 3> var_none_terminated_const_var_const_char = {{ '1', '0', '0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_none_terminated_const_var_const_char), "100");
BOOST_TEST_EQ(lexical_cast<int>(var_none_terminated_const_var_const_char), 100);
const ArrayT<const char, 3> var_none_terminated_const_var_const_char = {{ '1', '0', '0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_none_terminated_const_var_const_char), "100");
BOOST_CHECK_EQUAL(lexical_cast<int>(var_none_terminated_const_var_const_char), 100);
}
{
const ArrayT<const unsigned char, 4> var_zero_terminated_const_var_const_char = {{ '1', '0', '0', '\0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_zero_terminated_const_var_const_char), "100");
const ArrayT<const unsigned char, 4> var_zero_terminated_const_var_const_char = {{ '1', '0', '0', '\0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_zero_terminated_const_var_const_char), "100");
const ArrayT<const unsigned char, 3> var_none_terminated_const_var_const_char = {{ '1', '0', '0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_none_terminated_const_var_const_char), "100");
const ArrayT<const unsigned char, 3> var_none_terminated_const_var_const_char = {{ '1', '0', '0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_none_terminated_const_var_const_char), "100");
}
{
const ArrayT<const signed char, 4> var_zero_terminated_const_var_const_char = {{ '1', '0', '0', '\0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_zero_terminated_const_var_const_char), "100");
const ArrayT<const signed char, 4> var_zero_terminated_const_var_const_char = {{ '1', '0', '0', '\0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_zero_terminated_const_var_const_char), "100");
const ArrayT<const signed char, 3> var_none_terminated_const_var_const_char = {{ '1', '0', '0'}};
BOOST_TEST_EQ(lexical_cast<std::string>(var_none_terminated_const_var_const_char), "100");
BOOST_TEST_EQ(lexical_cast<unsigned int>(var_none_terminated_const_var_const_char), 100u);
const ArrayT<const signed char, 3> var_none_terminated_const_var_const_char = {{ '1', '0', '0'}};
BOOST_CHECK_EQUAL(lexical_cast<std::string>(var_none_terminated_const_var_const_char), "100");
BOOST_CHECK_EQUAL(lexical_cast<unsigned int>(var_none_terminated_const_var_const_char), 100u);
}
#if !defined(BOOST_NO_STRINGSTREAM) && !defined(BOOST_NO_STD_WSTRING)
{
const ArrayT<const wchar_t, 4> var_zero_terminated_const_var_const_char = {{ L'1', L'0', L'0', L'\0'}};
BOOST_TEST(lexical_cast<std::wstring>(var_zero_terminated_const_var_const_char) == L"100");
const ArrayT<const wchar_t, 4> var_zero_terminated_const_var_const_char = {{ L'1', L'0', L'0', L'\0'}};
BOOST_CHECK(lexical_cast<std::wstring>(var_zero_terminated_const_var_const_char) == L"100");
const ArrayT<const wchar_t, 3> var_none_terminated_const_var_const_char = {{ L'1', L'0', L'0'}};
BOOST_TEST(lexical_cast<std::wstring>(var_none_terminated_const_var_const_char) == L"100");
BOOST_TEST_EQ(lexical_cast<int>(var_none_terminated_const_var_const_char), 100);
const ArrayT<const wchar_t, 3> var_none_terminated_const_var_const_char = {{ L'1', L'0', L'0'}};
BOOST_CHECK(lexical_cast<std::wstring>(var_none_terminated_const_var_const_char) == L"100");
BOOST_CHECK_EQUAL(lexical_cast<int>(var_none_terminated_const_var_const_char), 100);
}
#endif
#ifdef BOOST_LC_RUNU16
{
const ArrayT<const char16_t, 4> var_zero_terminated_const_var_const_char = {{ u'1', u'0', u'0', u'\0'}};
BOOST_TEST(lexical_cast<std::u16string>(var_zero_terminated_const_var_const_char) == u"100");
BOOST_TEST_EQ(lexical_cast<unsigned short>(var_zero_terminated_const_var_const_char), static_cast<unsigned short>(100));
const ArrayT<const char16_t, 4> var_zero_terminated_const_var_const_char = {{ u'1', u'0', u'0', u'\0'}};
BOOST_CHECK(lexical_cast<std::u16string>(var_zero_terminated_const_var_const_char) == u"100");
BOOST_CHECK_EQUAL(lexical_cast<unsigned short>(var_zero_terminated_const_var_const_char), static_cast<unsigned short>(100));
const ArrayT<const char16_t, 3> var_none_terminated_const_var_const_char = {{ u'1', u'0', u'0'}};
BOOST_TEST(lexical_cast<std::u16string>(var_none_terminated_const_var_const_char) == u"100");
const ArrayT<const char16_t, 3> var_none_terminated_const_var_const_char = {{ u'1', u'0', u'0'}};
BOOST_CHECK(lexical_cast<std::u16string>(var_none_terminated_const_var_const_char) == u"100");
}
#endif
#ifdef BOOST_LC_RUNU32
{
const ArrayT<const char32_t, 4> var_zero_terminated_const_var_const_char = {{ U'1', U'0', U'0', U'\0'}};
BOOST_TEST(lexical_cast<std::u32string>(var_zero_terminated_const_var_const_char) == U"100");
const ArrayT<const char32_t, 4> var_zero_terminated_const_var_const_char = {{ U'1', U'0', U'0', U'\0'}};
BOOST_CHECK(lexical_cast<std::u32string>(var_zero_terminated_const_var_const_char) == U"100");
const ArrayT<const char32_t, 3> var_none_terminated_const_var_const_char = {{ U'1', U'0', U'0'}};
BOOST_TEST(lexical_cast<std::u32string>(var_none_terminated_const_var_const_char) == U"100");
BOOST_TEST_EQ(lexical_cast<int>(var_none_terminated_const_var_const_char), 100);
const ArrayT<const char32_t, 3> var_none_terminated_const_var_const_char = {{ U'1', U'0', U'0'}};
BOOST_CHECK(lexical_cast<std::u32string>(var_none_terminated_const_var_const_char) == U"100");
BOOST_CHECK_EQUAL(lexical_cast<int>(var_none_terminated_const_var_const_char), 100);
}
#endif
}
void testing_boost_array_input_conversion()
{
#ifndef _LIBCPP_VERSION
testing_generic_array_input_conversion<boost::array>();
#endif
BOOST_TEST(true);
}
void testing_std_array_input_conversion()
@@ -358,16 +372,6 @@ void testing_std_array_input_conversion()
testing_generic_array_input_conversion<std::array>();
#endif
BOOST_TEST(true);
}
int main()
{
testing_boost_array_output_conversion();
testing_std_array_output_conversion();
testing_boost_array_input_conversion();
testing_std_array_input_conversion();
return boost::report_errors();
BOOST_CHECK(true);
}
+83
View File
@@ -0,0 +1,83 @@
// Testing boost::lexical_cast with boost::container::string.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011.
//
// 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/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/container/string.hpp>
void testing_boost_containers_basic_string();
void testing_boost_containers_string_std_string();
void testing_boost_containers_string_widening();
using namespace boost;
boost::unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("Testing boost::lexical_cast with boost::container::string");
suite->add(BOOST_TEST_CASE(testing_boost_containers_basic_string));
suite->add(BOOST_TEST_CASE(testing_boost_containers_string_std_string));
suite->add(BOOST_TEST_CASE(testing_boost_containers_string_widening));
return suite;
}
void testing_boost_containers_basic_string()
{
BOOST_CHECK("100" == lexical_cast<boost::container::string>("100"));
BOOST_CHECK(L"100" == lexical_cast<boost::container::wstring>(L"100"));
BOOST_CHECK("100" == lexical_cast<boost::container::string>(100));
boost::container::string str("1000");
BOOST_CHECK(1000 == lexical_cast<int>(str));
}
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
void testing_boost_containers_string_std_string()
{
std::string std_str("std_str");
boost::container::string boost_str("boost_str");
BOOST_CHECK(boost::lexical_cast<std::string>(boost_str) == "boost_str");
BOOST_CHECK(boost::lexical_cast<boost::container::string>(std_str) == "std_str");
#ifndef BOOST_LCAST_NO_WCHAR_T
std::wstring std_wstr(L"std_wstr");
boost::container::wstring boost_wstr(L"boost_wstr");
BOOST_CHECK(boost::lexical_cast<std::wstring>(boost_wstr) == L"boost_wstr");
BOOST_CHECK(boost::lexical_cast<boost::container::wstring>(std_wstr) == L"std_wstr");
#endif
}
void testing_boost_containers_string_widening()
{
const char char_array[] = "Test string";
#ifndef BOOST_LCAST_NO_WCHAR_T
const wchar_t wchar_array[] = L"Test string";
BOOST_CHECK(boost::lexical_cast<boost::container::wstring>(char_array) == wchar_array);
#endif
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
const char16_t char16_array[] = u"Test string";
BOOST_CHECK(boost::lexical_cast<boost::container::basic_string<char16_t> >(char_array) == char16_array);
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
const char32_t char32_array[] = U"Test string";
BOOST_CHECK(boost::lexical_cast<boost::container::basic_string<char32_t> >(char_array) == char32_array);
#endif
}
+167
View File
@@ -0,0 +1,167 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011.
//
// 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/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/range/iterator_range.hpp>
using namespace boost;
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
template <class T>
void do_test_on_empty_input(T& v)
{
BOOST_CHECK_THROW(lexical_cast<int>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<float>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<double>(v), bad_lexical_cast);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_CHECK_THROW(lexical_cast<long double>(v), bad_lexical_cast);
#endif
BOOST_CHECK_THROW(lexical_cast<unsigned int>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned short>(v), bad_lexical_cast);
#if defined(BOOST_HAS_LONG_LONG)
BOOST_CHECK_THROW(lexical_cast<boost::ulong_long_type>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<boost::long_long_type>(v), bad_lexical_cast);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_THROW(lexical_cast<unsigned __int64>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<__int64>(v), bad_lexical_cast);
#endif
}
void test_empty_iterator_range()
{
boost::iterator_range<char*> v;
do_test_on_empty_input(v);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(v), std::string());
BOOST_CHECK_THROW(lexical_cast<char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(v), bad_lexical_cast);
boost::iterator_range<const char*> cv;
do_test_on_empty_input(cv);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(cv), std::string());
BOOST_CHECK_THROW(lexical_cast<char>(cv), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(cv), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(cv), bad_lexical_cast);
const boost::iterator_range<const char*> ccv;
do_test_on_empty_input(ccv);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(ccv), std::string());
BOOST_CHECK_THROW(lexical_cast<char>(ccv), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(ccv), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(ccv), bad_lexical_cast);
}
void test_empty_string()
{
std::string v;
do_test_on_empty_input(v);
BOOST_CHECK_THROW(lexical_cast<char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(v), bad_lexical_cast);
#ifndef BOOST_LCAST_NO_WCHAR_T
std::wstring vw;
do_test_on_empty_input(vw);
BOOST_CHECK_THROW(lexical_cast<wchar_t>(vw), bad_lexical_cast);
#endif
// Currently, no compiler and STL library fully support char16_t and char32_t
//#ifndef BOOST_NO_CXX11_CHAR16_T
// std::basic_string<char16_t> v16w;
// do_test_on_empty_input(v16w);
// BOOST_CHECK_THROW(lexical_cast<char16_t>(v16w), bad_lexical_cast);
//#endif
//#ifndef BOOST_NO_CXX11_CHAR32_T
// std::basic_string<char32_t> v32w;
// do_test_on_empty_input(v32w);
// BOOST_CHECK_THROW(lexical_cast<char32_t>(v32w), bad_lexical_cast);
//#endif
}
struct Escape
{
Escape(const std::string& s)
: str_(s)
{}
std::string str_;
};
inline std::ostream& operator<< (std::ostream& o, const Escape& rhs)
{
return o << rhs.str_;
}
void test_empty_user_class()
{
Escape v("");
do_test_on_empty_input(v);
BOOST_CHECK_THROW(lexical_cast<char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(v), bad_lexical_cast);
}
namespace std {
inline std::ostream & operator<<(std::ostream & out, const std::vector<long> & v)
{
std::ostream_iterator<long> it(out);
std::copy(v.begin(), v.end(), it);
assert(out);
return out;
}
}
void test_empty_vector()
{
std::vector<long> v;
do_test_on_empty_input(v);
BOOST_CHECK_THROW(lexical_cast<char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(v), bad_lexical_cast);
}
struct my_string {
friend std::ostream &operator<<(std::ostream& sout, my_string const&/* st*/) {
return sout << "";
}
};
void test_empty_zero_terminated_string()
{
my_string st;
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(st), std::string());;
}
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast. Empty input unit test");
suite->add(BOOST_TEST_CASE(&test_empty_iterator_range));
suite->add(BOOST_TEST_CASE(&test_empty_string));
suite->add(BOOST_TEST_CASE(&test_empty_user_class));
suite->add(BOOST_TEST_CASE(&test_empty_vector));
suite->add(BOOST_TEST_CASE(&test_empty_zero_terminated_string));
return suite;
}
+46
View File
@@ -0,0 +1,46 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2013.
//
// 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).
//
// Test lexical_cast usage with long filesystem::path. Bug 7704.
#include <boost/config.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/filesystem/path.hpp>
using namespace boost;
void test_filesystem();
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast unit test");
suite->add(BOOST_TEST_CASE(&test_filesystem));
return suite;
}
void test_filesystem()
{
boost::filesystem::path p;
std::string s1 = "aaaaaaaaaaaaaaaaaaaaaaa";
p = boost::lexical_cast<boost::filesystem::path>(s1);
BOOST_CHECK(!p.empty());
BOOST_CHECK_EQUAL(p, s1);
p.clear();
const char ab[] = "aaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
p = boost::lexical_cast<boost::filesystem::path>(ab);
BOOST_CHECK(!p.empty());
BOOST_CHECK_EQUAL(p, ab);
}
+527
View File
@@ -0,0 +1,527 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011.
//
// 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/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/cstdint.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>
void test_conversion_from_to_float();
void test_conversion_from_to_double();
void test_conversion_from_to_long_double();
using namespace boost;
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast float types unit test");
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_float));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_double));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_long_double));
return suite;
}
// Replace "-,999" with "-999".
template<class CharT>
std::basic_string<CharT> to_str_gcc_workaround(std::basic_string<CharT> str)
{
std::locale loc;
std::numpunct<CharT> const& np = BOOST_USE_FACET(std::numpunct<CharT>, loc);
std::ctype<CharT> const& ct = BOOST_USE_FACET(std::ctype<CharT>, loc);
if(np.grouping().empty())
return str;
CharT prefix[3] = { ct.widen('-'), np.thousands_sep(), CharT() };
if(str.find(prefix) != 0)
return str;
prefix[1] = CharT();
str.replace(0, 2, prefix);
return str;
}
template<class CharT, class T>
std::basic_string<CharT> to_str(T t)
{
std::basic_ostringstream<CharT> o;
o << t;
return to_str_gcc_workaround(o.str());
}
template<class T>
void test_conversion_from_to_float_for_locale()
{
std::locale current_locale;
typedef std::numpunct<char> numpunct;
numpunct const& np = BOOST_USE_FACET(numpunct, current_locale);
if ( !np.grouping().empty() )
{
BOOST_CHECK_THROW(
lexical_cast<T>( std::string("100") + np.thousands_sep() + np.thousands_sep() + "0" )
, bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( std::string("100") + np.thousands_sep() ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( np.thousands_sep() + std::string("100") ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( std::string("1") + np.thousands_sep() + np.decimal_point() + "e10" ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( std::string("1e10") + np.thousands_sep() ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( std::string("1") + np.thousands_sep() + "e10" ), bad_lexical_cast);
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( to_str< char >(100000) ), 100000, (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( to_str< char >(10000000u) ), 10000000u, (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( to_str< char >(100) ), 100, (std::numeric_limits<T>::epsilon()) );
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( to_str< wchar_t >(100000) ), 100000, (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( to_str< wchar_t >(10000000u) ), 10000000u, (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( to_str< wchar_t >(100) ), 100, (std::numeric_limits<T>::epsilon()) );
#endif
// Exception must not be thrown, when we are using no separators at all
BOOST_CHECK_CLOSE_FRACTION( lexical_cast<T>("30000"), static_cast<T>(30000), (std::numeric_limits<T>::epsilon()) );
}
}
/*
* Converts char* [and wchar_t*] to float number type and checks, that generated
* number does not exceeds allowed epsilon.
*/
#ifndef BOOST_LCAST_NO_WCHAR_T
#define CHECK_CLOSE_ABS_DIFF(VAL,PREFIX) \
converted_val = lexical_cast<test_t>(#VAL); \
BOOST_CHECK_CLOSE_FRACTION( (VAL ## L? VAL ## L : std::numeric_limits<test_t>::epsilon()), \
(converted_val ? converted_val : std::numeric_limits<test_t>::epsilon()), \
std::numeric_limits<test_t>::epsilon() \
); \
BOOST_CHECK_EQUAL(converted_val, lexical_cast<test_t>(L## #VAL) );
#else
#define CHECK_CLOSE_ABS_DIFF(VAL,TYPE) \
converted_val = lexical_cast<test_t>(#VAL); \
BOOST_CHECK_CLOSE_FRACTION( (VAL ## L? VAL ## L : std::numeric_limits<test_t>::epsilon()), \
(converted_val ? converted_val : std::numeric_limits<test_t>::epsilon()), \
std::numeric_limits<test_t>::epsilon() \
);
#endif
template <class TestType>
void test_converion_to_float_types()
{
typedef TestType test_t;
test_t converted_val;
BOOST_CHECK_CLOSE_FRACTION(1.0, lexical_cast<test_t>('1'), (std::numeric_limits<test_t>::epsilon()));
BOOST_CHECK_EQUAL(0.0, lexical_cast<test_t>('0'));
unsigned char const uc_one = '1';
unsigned char const uc_zero ='0';
BOOST_CHECK_CLOSE_FRACTION(1.0, lexical_cast<test_t>(uc_one), (std::numeric_limits<test_t>::epsilon()));
BOOST_CHECK_EQUAL(0.0, lexical_cast<test_t>(uc_zero));
signed char const sc_one = '1';
signed char const sc_zero ='0';
BOOST_CHECK_CLOSE_FRACTION(1.0, lexical_cast<test_t>(sc_one), (std::numeric_limits<test_t>::epsilon()));
BOOST_CHECK_EQUAL(0.0, lexical_cast<test_t>(sc_zero));
BOOST_CHECK_CLOSE_FRACTION(1e34L, lexical_cast<test_t>( "10000000000000000000000000000000000"), (std::numeric_limits<test_t>::epsilon()) );
// VC failes the next test
// BOOST_CHECK_CLOSE_FRACTION(1e-35L, lexical_cast<test_t>("0.00000000000000000000000000000000001"), (std::numeric_limits<test_t>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(
0.1111111111111111111111111111111111111111111111111111111111111111111111111L
, lexical_cast<test_t>("0.1111111111111111111111111111111111111111111111111111111111111111111111111")
, (std::numeric_limits<test_t>::epsilon()) );
CHECK_CLOSE_ABS_DIFF(1,test_t);
BOOST_CHECK_EQUAL(0,lexical_cast<test_t>("0"));
CHECK_CLOSE_ABS_DIFF(-1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0, test_t);
CHECK_CLOSE_ABS_DIFF(0.0, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0,test_t);
CHECK_CLOSE_ABS_DIFF(1e1, test_t);
CHECK_CLOSE_ABS_DIFF(0e1, test_t);
CHECK_CLOSE_ABS_DIFF(-1e1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0e1, test_t);
CHECK_CLOSE_ABS_DIFF(0.0e1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0e1,test_t);
CHECK_CLOSE_ABS_DIFF(1e-1, test_t);
CHECK_CLOSE_ABS_DIFF(0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1e-1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(0.0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0e-1,test_t);
CHECK_CLOSE_ABS_DIFF(1E1, test_t);
CHECK_CLOSE_ABS_DIFF(0E1, test_t);
CHECK_CLOSE_ABS_DIFF(-1E1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0E1, test_t);
CHECK_CLOSE_ABS_DIFF(0.0E1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0E1,test_t);
CHECK_CLOSE_ABS_DIFF(1E-1, test_t);
CHECK_CLOSE_ABS_DIFF(0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1E-1,test_t);
CHECK_CLOSE_ABS_DIFF(1.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(0.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-1.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(10.0, test_t);
CHECK_CLOSE_ABS_DIFF(00.0, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0,test_t);
CHECK_CLOSE_ABS_DIFF(10e1, test_t);
CHECK_CLOSE_ABS_DIFF(00e1, test_t);
CHECK_CLOSE_ABS_DIFF(-10e1,test_t);
CHECK_CLOSE_ABS_DIFF(10.0e1, test_t);
CHECK_CLOSE_ABS_DIFF(00.0e1, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0e1,test_t);
CHECK_CLOSE_ABS_DIFF(10e-1, test_t);
CHECK_CLOSE_ABS_DIFF(00e-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10e-1,test_t);
CHECK_CLOSE_ABS_DIFF(10.0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(00.0e-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0e-1,test_t);
CHECK_CLOSE_ABS_DIFF(10E1, test_t);
CHECK_CLOSE_ABS_DIFF(00E1, test_t);
CHECK_CLOSE_ABS_DIFF(-10E1,test_t);
CHECK_CLOSE_ABS_DIFF(10.0E1, test_t);
CHECK_CLOSE_ABS_DIFF(00.0E1, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0E1,test_t);
CHECK_CLOSE_ABS_DIFF(10E-1, test_t);
CHECK_CLOSE_ABS_DIFF(00E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10E-1,test_t);
CHECK_CLOSE_ABS_DIFF(10.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(00.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10.0E-1, test_t);
CHECK_CLOSE_ABS_DIFF(-10101.0E-011, test_t);
CHECK_CLOSE_ABS_DIFF(-10101093, test_t);
CHECK_CLOSE_ABS_DIFF(10101093, test_t);
CHECK_CLOSE_ABS_DIFF(-.34, test_t);
CHECK_CLOSE_ABS_DIFF(.34, test_t);
CHECK_CLOSE_ABS_DIFF(.34e10, test_t);
BOOST_CHECK_THROW(lexical_cast<test_t>("-1.e"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("-1.E"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.e"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.E"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.0e"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.0E"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("10E"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("10e"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.0e-"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.0E-"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("10E-"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("10e-"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("e1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("e-1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("e-"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>(".e"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>(".11111111111111111111111111111111111111111111111111111111111111111111ee"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>(".11111111111111111111111111111111111111111111111111111111111111111111e-"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("."), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("-B"), bad_lexical_cast);
// Following two tests are not valid for C++11 compilers
//BOOST_CHECK_THROW(lexical_cast<test_t>("0xB"), bad_lexical_cast);
//BOOST_CHECK_THROW(lexical_cast<test_t>("0x0"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("--1.0"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.0e--1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.0.0"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1e1e1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.0e-1e-1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>(" 1.0"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("1.0 "), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>(""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("-"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>('\0'), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>('-'), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>('.'), bad_lexical_cast);
}
template <class T>
void test_float_typess_for_overflows()
{
typedef T test_t;
test_t minvalue = (std::numeric_limits<test_t>::min)();
std::string s_min_value = lexical_cast<std::string>(minvalue);
BOOST_CHECK_CLOSE_FRACTION(minvalue, lexical_cast<test_t>(minvalue), (std::numeric_limits<test_t>::epsilon()));
BOOST_CHECK_CLOSE_FRACTION(minvalue, lexical_cast<test_t>(s_min_value), (std::numeric_limits<test_t>::epsilon() * 2));
test_t maxvalue = (std::numeric_limits<test_t>::max)();
std::string s_max_value = lexical_cast<std::string>(maxvalue);
BOOST_CHECK_CLOSE_FRACTION(maxvalue, lexical_cast<test_t>(maxvalue), (std::numeric_limits<test_t>::epsilon()));
BOOST_CHECK_CLOSE_FRACTION(maxvalue, lexical_cast<test_t>(s_max_value), (std::numeric_limits<test_t>::epsilon()));
#ifndef _LIBCPP_VERSION
// libc++ had a bug in implementation of stream conversions for values that must be represented as infinity.
// http://llvm.org/bugs/show_bug.cgi?id=15723#c4
BOOST_CHECK_THROW(lexical_cast<test_t>(s_max_value+"1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>(s_max_value+"9"), bad_lexical_cast);
// VC9 can fail the following tests on floats and doubles when using stingstream...
BOOST_CHECK_THROW(lexical_cast<test_t>("1"+s_max_value), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<test_t>("9"+s_max_value), bad_lexical_cast);
#endif
if ( is_same<test_t,float>::value )
{
BOOST_CHECK_THROW(lexical_cast<test_t>( (std::numeric_limits<double>::max)() ), bad_lexical_cast);
BOOST_CHECK(
(std::numeric_limits<double>::min)() - std::numeric_limits<test_t>::epsilon()
<= lexical_cast<test_t>( (std::numeric_limits<double>::min)() )
&& lexical_cast<test_t>( (std::numeric_limits<double>::min)() )
<= (std::numeric_limits<double>::min)() + std::numeric_limits<test_t>::epsilon()
);
}
if ( sizeof(test_t) < sizeof(long double) )
{
BOOST_CHECK_THROW(lexical_cast<test_t>( (std::numeric_limits<long double>::max)() ), bad_lexical_cast);
BOOST_CHECK(
(std::numeric_limits<long double>::min)() - std::numeric_limits<test_t>::epsilon()
<= lexical_cast<test_t>( (std::numeric_limits<long double>::min)() )
&& lexical_cast<test_t>( (std::numeric_limits<long double>::min)() )
<= (std::numeric_limits<long double>::min)() + std::numeric_limits<test_t>::epsilon()
);
}
}
#undef CHECK_CLOSE_ABS_DIFF
// Epsilon is multiplied by 2 because of two lexical conversions
#define TEST_TO_FROM_CAST_AROUND_TYPED(VAL,STRING_TYPE) \
test_value = VAL + std::numeric_limits<test_t>::epsilon() * i ; \
converted_val = lexical_cast<test_t>( lexical_cast<STRING_TYPE>(test_value) ); \
BOOST_CHECK_CLOSE_FRACTION( \
test_value, \
converted_val, \
std::numeric_limits<test_t>::epsilon() * 2 \
);
/*
* For interval [ from_mult*epsilon+VAL, to_mult*epsilon+VAL ], converts float type
* numbers to string[wstring] and then back to float type, then compares initial
* values and generated.
* Step is epsilon
*/
#ifndef BOOST_LCAST_NO_WCHAR_T
# define TEST_TO_FROM_CAST_AROUND(VAL) \
for(i=from_mult; i<=to_mult; ++i) { \
TEST_TO_FROM_CAST_AROUND_TYPED(VAL, std::string) \
TEST_TO_FROM_CAST_AROUND_TYPED(VAL, std::wstring) \
}
#else
# define TEST_TO_FROM_CAST_AROUND(VAL) \
for(i=from_mult; i<=to_mult; ++i) { \
TEST_TO_FROM_CAST_AROUND_TYPED(VAL, std::string) \
}
#endif
template <class TestType>
void test_converion_from_to_float_types()
{
typedef TestType test_t;
test_t test_value;
test_t converted_val;
int i;
int from_mult = -50;
int to_mult = 50;
TEST_TO_FROM_CAST_AROUND( 0.0 );
long double val1;
for(val1 = 1.0e-10L; val1 < 1e11; val1*=10 )
TEST_TO_FROM_CAST_AROUND( val1 );
long double val2;
for(val2 = -1.0e-10L; val2 > -1e11; val2*=10 )
TEST_TO_FROM_CAST_AROUND( val2 );
from_mult = -100;
to_mult = 0;
TEST_TO_FROM_CAST_AROUND( (std::numeric_limits<test_t>::max)() );
from_mult = 0;
to_mult = 100;
TEST_TO_FROM_CAST_AROUND( (std::numeric_limits<test_t>::min)() );
}
#undef TEST_TO_FROM_CAST_AROUND
#undef TEST_TO_FROM_CAST_AROUND_TYPED
template<class T, class CharT>
void test_conversion_from_float_to_char(CharT zero)
{
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(0)) == zero + 0);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(1)) == zero + 1);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(2)) == zero + 2);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(3)) == zero + 3);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(4)) == zero + 4);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(5)) == zero + 5);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(6)) == zero + 6);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(7)) == zero + 7);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(8)) == zero + 8);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(9)) == zero + 9);
BOOST_CHECK_THROW(lexical_cast<CharT>(static_cast<T>(10)), bad_lexical_cast);
T t = (std::numeric_limits<T>::max)();
BOOST_CHECK_THROW(lexical_cast<CharT>(t), bad_lexical_cast);
}
template<class T, class CharT>
void test_conversion_from_char_to_float(CharT zero)
{
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 0)), static_cast<T>(0), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 1)), static_cast<T>(1), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 2)), static_cast<T>(2), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 3)), static_cast<T>(3), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 4)), static_cast<T>(4), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 5)), static_cast<T>(5), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 6)), static_cast<T>(6), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 7)), static_cast<T>(7), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 8)), static_cast<T>(8), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>( static_cast<CharT>(zero + 9)), static_cast<T>(9), (std::numeric_limits<T>::epsilon()) );
BOOST_CHECK_THROW(lexical_cast<T>( static_cast<CharT>(zero + 10)), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( static_cast<CharT>(zero - 1)), bad_lexical_cast);
}
struct restore_oldloc
{
std::locale oldloc;
~restore_oldloc() { std::locale::global(oldloc); }
};
template<class T>
void test_conversion_from_to_float()
{ char const zero = '0';
signed char const szero = '0';
unsigned char const uzero = '0';
test_conversion_from_float_to_char<T>(zero);
test_conversion_from_char_to_float<T>(zero);
test_conversion_from_float_to_char<T>(szero);
test_conversion_from_char_to_float<T>(szero);
test_conversion_from_float_to_char<T>(uzero);
test_conversion_from_char_to_float<T>(uzero);
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
wchar_t const wzero = L'0';
test_conversion_from_float_to_char<T>(wzero);
test_conversion_from_char_to_float<T>(wzero);
#endif
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>("+1"), 1, std::numeric_limits<T>::epsilon());
BOOST_CHECK_CLOSE_FRACTION(lexical_cast<T>("+9"), 9, std::numeric_limits<T>::epsilon());
BOOST_CHECK_THROW(lexical_cast<T>("++1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>("-+9"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>("--1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>("+-9"), bad_lexical_cast);
test_converion_to_float_types<T>();
test_float_typess_for_overflows<T>();
test_converion_from_to_float_types<T>();
typedef std::numpunct<char> numpunct;
restore_oldloc guard;
std::locale const& oldloc = guard.oldloc;
std::string grouping1 = BOOST_USE_FACET(numpunct, oldloc).grouping();
std::string grouping2(grouping1);
test_conversion_from_to_float_for_locale<T>();
try
{
std::locale newloc("");
std::locale::global(newloc);
grouping2 = BOOST_USE_FACET(numpunct, newloc).grouping();
}
catch(std::exception const& ex)
{
std::string msg("Failed to set system locale: ");
msg += ex.what();
BOOST_TEST_MESSAGE(msg);
}
if(grouping1 != grouping2)
test_conversion_from_to_float_for_locale<T>();
if(grouping1.empty() && grouping2.empty())
BOOST_TEST_MESSAGE("Formatting with thousands_sep has not been tested");
}
void test_conversion_from_to_float()
{
test_conversion_from_to_float<float>();
}
void test_conversion_from_to_double()
{
test_conversion_from_to_float<double>();
}
void test_conversion_from_to_long_double()
{
// We do not run tests on compilers with bugs
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
test_conversion_from_to_float<long double>();
#endif
BOOST_CHECK(true);
}
+205
View File
@@ -0,0 +1,205 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011.
//
// 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/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/math/special_functions/sign.hpp>
#include <boost/math/special_functions/fpclassify.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
using namespace boost;
template <class T>
bool is_pos_inf(T value)
{
return (boost::math::isinf)(value) && !(boost::math::signbit)(value);
}
template <class T>
bool is_neg_inf(T value)
{
return (boost::math::isinf)(value) && (boost::math::signbit)(value);
}
template <class T>
bool is_pos_nan(T value)
{
return (boost::math::isnan)(value) && !(boost::math::signbit)(value);
}
template <class T>
bool is_neg_nan(T value)
{
/* There is some strange behaviour on Itanium platform with -nan nuber for long double.
* It is a IA64 feature, or it is a boost::math feature, not a lexical_cast bug */
#if defined(__ia64__) || defined(_M_IA64)
return (boost::math::isnan)(value)
&& ( boost::is_same<T, long double >::value || (boost::math::signbit)(value) );
#else
return (boost::math::isnan)(value) && (boost::math::signbit)(value);
#endif
}
template <class T>
void test_inf_nan_templated()
{
typedef T test_t;
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("inf") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("INF") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>("-inf") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>("-INF") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("+inf") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("+INF") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("infinity") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("INFINITY") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>("-infinity") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>("-INFINITY") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("+infinity") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("+INFINITY") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("iNfiNity") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>("INfinity") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>("-inFINITY") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>("-INFINITY") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("nan") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("NAN") ) );
BOOST_CHECK( is_neg_nan( lexical_cast<test_t>("-nan") ) );
BOOST_CHECK( is_neg_nan( lexical_cast<test_t>("-NAN") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("+nan") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("+NAN") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("nAn") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("NaN") ) );
BOOST_CHECK( is_neg_nan( lexical_cast<test_t>("-nAn") ) );
BOOST_CHECK( is_neg_nan( lexical_cast<test_t>("-NaN") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("+Nan") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("+nAN") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("nan()") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>("NAN(some string)") ) );
BOOST_CHECK_THROW( lexical_cast<test_t>("NAN(some string"), bad_lexical_cast );
BOOST_CHECK(lexical_cast<std::string>( (boost::math::changesign)(std::numeric_limits<test_t >::infinity()))
== "-inf" );
BOOST_CHECK(lexical_cast<std::string>( std::numeric_limits<test_t >::infinity()) == "inf" );
BOOST_CHECK(lexical_cast<std::string>( std::numeric_limits<test_t >::quiet_NaN()) == "nan" );
#if !defined(__ia64__) && !defined(_M_IA64)
BOOST_CHECK(lexical_cast<std::string>(
(boost::math::changesign)(std::numeric_limits<test_t >::quiet_NaN()))
== "-nan" );
#endif
#ifndef BOOST_LCAST_NO_WCHAR_T
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"inf") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"INF") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>(L"-inf") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>(L"-INF") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"+inf") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"+INF") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"infinity") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"INFINITY") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>(L"-infinity") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>(L"-INFINITY") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"+infinity") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"+INFINITY") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>(L"-infINIty") ) );
BOOST_CHECK( is_neg_inf( lexical_cast<test_t>(L"-INFiniTY") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"+inFINIty") ) );
BOOST_CHECK( is_pos_inf( lexical_cast<test_t>(L"+INfinITY") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>(L"nan") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>(L"NAN") ) );
BOOST_CHECK( is_neg_nan( lexical_cast<test_t>(L"-nan") ) );
BOOST_CHECK( is_neg_nan( lexical_cast<test_t>(L"-NAN") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>(L"+nan") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>(L"+NAN") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>(L"nan()") ) );
BOOST_CHECK( is_pos_nan( lexical_cast<test_t>(L"NAN(some string)") ) );
BOOST_CHECK_THROW( lexical_cast<test_t>(L"NAN(some string"), bad_lexical_cast );
BOOST_CHECK(lexical_cast<std::wstring>( (boost::math::changesign)(std::numeric_limits<test_t >::infinity()))
== L"-inf" );
BOOST_CHECK(lexical_cast<std::wstring>( std::numeric_limits<test_t >::infinity()) == L"inf" );
BOOST_CHECK(lexical_cast<std::wstring>( std::numeric_limits<test_t >::quiet_NaN()) == L"nan" );
#if !defined(__ia64__) && !defined(_M_IA64)
BOOST_CHECK(lexical_cast<std::wstring>(
(boost::math::changesign)(std::numeric_limits<test_t >::quiet_NaN()))
== L"-nan" );
#endif
#endif
}
void test_inf_nan_float()
{
test_inf_nan_templated<float >();
}
void test_inf_nan_double()
{
test_inf_nan_templated<double >();
}
void test_inf_nan_long_double()
{
// We do not run tests on compilers with bugs
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
test_inf_nan_templated<long double >();
#endif
BOOST_CHECK(true);
}
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast inf anf nan parsing unit test");
suite->add(BOOST_TEST_CASE(&test_inf_nan_float));
suite->add(BOOST_TEST_CASE(&test_inf_nan_double));
suite->add(BOOST_TEST_CASE(&test_inf_nan_long_double));
return suite;
}
@@ -4,7 +4,7 @@
//
// Copyright Terje Sletteb and Kevlin Henney, 2005.
// Copyright Alexander Nasonov, 2006.
// Copyright Antony Polukhin, 2011-2026.
// Copyright Antony Polukhin, 2011-2012.
//
// Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
@@ -19,21 +19,26 @@
//
#define _SCL_SECURE_NO_WARNINGS
#include <boost/cstdint.hpp>
#include <boost/config.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/lexical_cast/detail/type_traits.hpp>
#include <boost/type_traits/integral_promotion.hpp>
#include <string>
#include <sstream>
#include <vector>
#include <memory>
#include <type_traits>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/cstdint.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>
#include <boost/type_traits/integral_promotion.hpp>
#include <boost/type_traits/make_unsigned.hpp>
#include <string>
#include <vector>
#include <memory>
#if (defined(BOOST_HAS_LONG_LONG) || defined(BOOST_HAS_MS_INT64)) \
&& !(defined(BOOST_MSVC) && BOOST_MSVC < 1300)
#define LCAST_TEST_LONGLONG
@@ -43,11 +48,6 @@
#define BOOST_LCAST_NO_WCHAR_T
#endif
// There's no typeinfo for unsigned __int128 in Xcode_15.0.1
#if defined(BOOST_HAS_INT128) && !defined(BOOST_LEXICAL_CAST_TEST_NO_128_INTS) && !defined(__APPLE__)
# define BOOST_LCAST_TEST_128 1
#endif
// Test all 65536 values if true:
bool const lcast_test_small_integral_types_completely = false;
@@ -57,65 +57,112 @@ int const lcast_integral_test_counter=500;
using namespace boost;
void test_conversion_from_to_short();
void test_conversion_from_to_ushort();
void test_conversion_from_to_int();
void test_conversion_from_to_uint();
void test_conversion_from_to_long();
void test_conversion_from_to_ulong();
void test_conversion_from_to_intmax_t();
void test_conversion_from_to_uintmax_t();
#ifdef LCAST_TEST_LONGLONG
void test_conversion_from_to_longlong();
void test_conversion_from_to_ulonglong();
#endif
#ifdef BOOST_HAS_INT128
void test_conversion_from_to_int128();
void test_conversion_from_to_uint128();
#endif
void test_integral_conversions_on_min_max();
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast unit test on integral types");
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_short));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_ushort));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_int));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_uint));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_long));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_ulong));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_intmax_t));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_uintmax_t));
#ifdef LCAST_TEST_LONGLONG
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_longlong));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_ulonglong));
#endif
#ifdef BOOST_HAS_INT128
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_int128));
suite->add(BOOST_TEST_CASE(&test_conversion_from_to_uint128));
#endif
suite->add(BOOST_TEST_CASE(&test_integral_conversions_on_min_max));
return suite;
}
template<class T, class CharT>
void test_conversion_from_integral_to_char(CharT zero)
{
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(0)) == zero + 0);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(1)) == zero + 1);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(2)) == zero + 2);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(3)) == zero + 3);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(4)) == zero + 4);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(5)) == zero + 5);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(6)) == zero + 6);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(7)) == zero + 7);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(8)) == zero + 8);
BOOST_TEST(lexical_cast<CharT>(static_cast<T>(9)) == zero + 9);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(0)) == zero + 0);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(1)) == zero + 1);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(2)) == zero + 2);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(3)) == zero + 3);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(4)) == zero + 4);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(5)) == zero + 5);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(6)) == zero + 6);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(7)) == zero + 7);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(8)) == zero + 8);
BOOST_CHECK(lexical_cast<CharT>(static_cast<T>(9)) == zero + 9);
BOOST_TEST_THROWS(lexical_cast<CharT>(static_cast<T>(10)), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<CharT>(static_cast<T>(10)), bad_lexical_cast);
T t = (std::numeric_limits<T>::max)();
BOOST_TEST_THROWS(lexical_cast<CharT>(t), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<CharT>(t), bad_lexical_cast);
}
template<class T, class CharT>
void test_conversion_from_char_to_integral(CharT zero)
{
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 0)) == static_cast<T>(0) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 1)) == static_cast<T>(1) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 2)) == static_cast<T>(2) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 3)) == static_cast<T>(3) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 4)) == static_cast<T>(4) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 5)) == static_cast<T>(5) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 6)) == static_cast<T>(6) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 7)) == static_cast<T>(7) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 8)) == static_cast<T>(8) );
BOOST_TEST(lexical_cast<T>( static_cast<CharT>(zero + 9)) == static_cast<T>(9) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 0)) == static_cast<T>(0) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 1)) == static_cast<T>(1) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 2)) == static_cast<T>(2) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 3)) == static_cast<T>(3) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 4)) == static_cast<T>(4) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 5)) == static_cast<T>(5) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 6)) == static_cast<T>(6) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 7)) == static_cast<T>(7) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 8)) == static_cast<T>(8) );
BOOST_CHECK(lexical_cast<T>( static_cast<CharT>(zero + 9)) == static_cast<T>(9) );
BOOST_TEST_THROWS(lexical_cast<T>( static_cast<CharT>(zero + 10)), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( static_cast<CharT>(zero - 1)), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( static_cast<CharT>(zero + 10)), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( static_cast<CharT>(zero - 1)), bad_lexical_cast);
}
template<class T>
void test_conversion_from_integral_to_integral()
{
T t = 0;
BOOST_TEST(lexical_cast<T>(t) == t);
BOOST_CHECK(lexical_cast<T>(t) == t);
// Next two variables are used to suppress warnings.
// Next two variables are used to supress warnings.
int st = 32767; unsigned int ut = st;
t = st;
BOOST_TEST(lexical_cast<short>(t) == st);
BOOST_TEST(lexical_cast<unsigned short>(t) == ut);
BOOST_TEST(lexical_cast<int>(t) == st);
BOOST_TEST(lexical_cast<unsigned int>(t) == ut);
BOOST_TEST(lexical_cast<long>(t) == st);
BOOST_TEST(lexical_cast<unsigned long>(t) == ut);
BOOST_CHECK(lexical_cast<short>(t) == st);
BOOST_CHECK(lexical_cast<unsigned short>(t) == ut);
BOOST_CHECK(lexical_cast<int>(t) == st);
BOOST_CHECK(lexical_cast<unsigned int>(t) == ut);
BOOST_CHECK(lexical_cast<long>(t) == st);
BOOST_CHECK(lexical_cast<unsigned long>(t) == ut);
t = (std::numeric_limits<T>::max)();
BOOST_TEST(lexical_cast<T>(t) == t);
BOOST_CHECK(lexical_cast<T>(t) == t);
t = (std::numeric_limits<T>::min)();
BOOST_TEST(lexical_cast<T>(t) == t);
BOOST_CHECK(lexical_cast<T>(t) == t);
}
@@ -160,39 +207,39 @@ void test_conversion_from_integral_to_string(CharT)
T t;
t = (limits::min)();
BOOST_TEST(lexical_cast<string_type>(t) == to_str<CharT>(t));
BOOST_CHECK(lexical_cast<string_type>(t) == to_str<CharT>(t));
t = (limits::max)();
BOOST_TEST(lexical_cast<string_type>(t) == to_str<CharT>(t));
BOOST_CHECK(lexical_cast<string_type>(t) == to_str<CharT>(t));
if(limits::digits <= 16 && lcast_test_small_integral_types_completely)
// min and max have already been tested.
for(t = 1 + (limits::min)(); t != (limits::max)(); ++t)
BOOST_TEST(lexical_cast<string_type>(t) == to_str<CharT>(t));
BOOST_CHECK(lexical_cast<string_type>(t) == to_str<CharT>(t));
else
{
T const min_val = (limits::min)();
T const max_val = (limits::max)();
T const half_max_val = max_val / 2;
T const cnt = lcast_integral_test_counter; // to suppress warnings
T const counter = cnt < half_max_val ? cnt : half_max_val;
T const cnt = lcast_integral_test_counter; // to supress warnings
unsigned int const counter = cnt < half_max_val ? cnt : half_max_val;
T i = 0;
unsigned int i;
// Test values around min:
t = min_val;
for(i = 0; i < counter; ++i, ++t)
BOOST_TEST(lexical_cast<string_type>(t) == to_str<CharT>(t));
BOOST_CHECK(lexical_cast<string_type>(t) == to_str<CharT>(t));
// Test values around max:
t = max_val;
for(i = 0; i < counter; ++i, --t)
BOOST_TEST(lexical_cast<string_type>(t) == to_str<CharT>(t));
BOOST_CHECK(lexical_cast<string_type>(t) == to_str<CharT>(t));
// Test values around zero:
if(limits::is_signed)
for(t = static_cast<T>(-counter); t < static_cast<T>(counter); ++t)
BOOST_TEST(lexical_cast<string_type>(t) == to_str<CharT>(t));
BOOST_CHECK(lexical_cast<string_type>(t) == to_str<CharT>(t));
// Test values around 100, 1000, 10000, ...
T ten_power = 100;
@@ -200,7 +247,7 @@ void test_conversion_from_integral_to_string(CharT)
{
// ten_power + 100 probably never overflows
for(t = ten_power - 100; t != ten_power + 100; ++t)
BOOST_TEST(lexical_cast<string_type>(t) == to_str<CharT>(t));
BOOST_CHECK(lexical_cast<string_type>(t) == to_str<CharT>(t));
}
}
}
@@ -218,23 +265,23 @@ void test_conversion_from_string_to_integral(CharT)
T const max_val = (limits::max)();
s = to_str<CharT>(min_val);
BOOST_TEST_EQ(lexical_cast<T>(s), min_val);
BOOST_CHECK_EQUAL(lexical_cast<T>(s), min_val);
if(limits::is_signed)
{
BOOST_TEST_THROWS(lexical_cast<T>(s + zero), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>(s + nine), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(s + zero), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(s + nine), bad_lexical_cast);
}
s = to_str<CharT>(max_val);
BOOST_TEST_EQ(lexical_cast<T>(s), max_val);
BOOST_CHECK_EQUAL(lexical_cast<T>(s), max_val);
{
BOOST_TEST_THROWS(lexical_cast<T>(s + zero), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>(s + nine), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(s + zero), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(s + nine), bad_lexical_cast);
s = to_str<CharT>(max_val);
for (int i =1; i <=10; ++i) {
s[s.size()-1] += 1;
BOOST_TEST_THROWS(lexical_cast<T>( s ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( s ), bad_lexical_cast);
}
s = to_str<CharT>(max_val);
@@ -242,23 +289,23 @@ void test_conversion_from_string_to_integral(CharT)
typedef std::numpunct<char> numpunct;
if ( BOOST_USE_FACET(numpunct, loc).grouping().empty() ) {
// Following tests work well for locale C
BOOST_TEST_EQ(lexical_cast<T>(to_str<CharT>(0)+s), max_val);
BOOST_TEST_EQ(lexical_cast<T>(to_str<CharT>(0)+to_str<CharT>(0)+s), max_val);
BOOST_TEST_EQ(lexical_cast<T>(to_str<CharT>(0)+to_str<CharT>(0)+to_str<CharT>(0)+s), max_val);
BOOST_CHECK_EQUAL(lexical_cast<T>(to_str<CharT>(0)+s), max_val);
BOOST_CHECK_EQUAL(lexical_cast<T>(to_str<CharT>(0)+to_str<CharT>(0)+s), max_val);
BOOST_CHECK_EQUAL(lexical_cast<T>(to_str<CharT>(0)+to_str<CharT>(0)+to_str<CharT>(0)+s), max_val);
}
for (int i =1; i <=256; ++i) {
BOOST_TEST_THROWS(lexical_cast<T>( to_str<CharT>(i)+s ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( to_str<CharT>(i)+s ), bad_lexical_cast);
}
typedef typename boost::integral_promotion<T>::type promoted;
if ( !(std::is_same<T, promoted>::value) )
typedef BOOST_DEDUCED_TYPENAME boost::integral_promotion<T>::type promoted;
if ( !(boost::is_same<T, promoted>::value) )
{
promoted prom = max_val;
s = to_str<CharT>(max_val);
for (int i =1; i <=256; ++i) {
BOOST_TEST_THROWS(lexical_cast<T>( to_str<CharT>(prom+i) ), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( to_str<CharT>(i)+s ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( to_str<CharT>(prom+i) ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( to_str<CharT>(i)+s ), bad_lexical_cast);
}
}
}
@@ -266,30 +313,30 @@ void test_conversion_from_string_to_integral(CharT)
if(limits::digits <= 16 && lcast_test_small_integral_types_completely)
// min and max have already been tested.
for(T t = 1 + min_val; t != max_val; ++t)
BOOST_TEST(lexical_cast<T>(to_str<CharT>(t)) == t);
BOOST_CHECK(lexical_cast<T>(to_str<CharT>(t)) == t);
else
{
T const half_max_val = max_val / 2;
T const cnt = lcast_integral_test_counter; // to suppress warnings
T const counter = cnt < half_max_val ? cnt : half_max_val;
T const cnt = lcast_integral_test_counter; // to supress warnings
unsigned int const counter = cnt < half_max_val ? cnt : half_max_val;
T t;
T i;
unsigned int i;
// Test values around min:
t = min_val;
for(i = 0; i < counter; ++i, ++t)
BOOST_TEST(lexical_cast<T>(to_str<CharT>(t)) == t);
BOOST_CHECK(lexical_cast<T>(to_str<CharT>(t)) == t);
// Test values around max:
t = max_val;
for(i = 0; i < counter; ++i, --t)
BOOST_TEST(lexical_cast<T>(to_str<CharT>(t)) == t);
BOOST_CHECK(lexical_cast<T>(to_str<CharT>(t)) == t);
// Test values around zero:
if(limits::is_signed)
for(t = static_cast<T>(-counter); t < static_cast<T>(counter); ++t)
BOOST_TEST(lexical_cast<T>(to_str<CharT>(t)) == t);
BOOST_CHECK(lexical_cast<T>(to_str<CharT>(t)) == t);
// Test values around 100, 1000, 10000, ...
T ten_power = 100;
@@ -297,7 +344,7 @@ void test_conversion_from_string_to_integral(CharT)
{
// ten_power + 100 probably never overflows
for(t = ten_power - 100; t != ten_power + 100; ++t)
BOOST_TEST(lexical_cast<T>(to_str<CharT>(t)) == t);
BOOST_CHECK(lexical_cast<T>(to_str<CharT>(t)) == t);
}
}
}
@@ -310,32 +357,32 @@ void test_conversion_from_to_integral_for_locale()
numpunct const& np = BOOST_USE_FACET(numpunct, current_locale);
if ( !np.grouping().empty() )
{
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<T>( std::string("100") + np.thousands_sep() + np.thousands_sep() + "0" )
, bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( std::string("100") + np.thousands_sep() ), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>( np.thousands_sep() + std::string("100") ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( std::string("100") + np.thousands_sep() ), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>( np.thousands_sep() + std::string("100") ), bad_lexical_cast);
// Exception must not be thrown, when we are using no separators at all
BOOST_TEST( lexical_cast<T>("30000") == static_cast<T>(30000) );
BOOST_CHECK( lexical_cast<T>("30000") == static_cast<T>(30000) );
}
test_conversion_from_integral_to_integral<T>();
// This is a part of test_conversion_from_integral_to_string<T>('0') method,
// but with BOOST_TEST_EQ instead of BOOST_TEST. It is required to see
// what is produced by the to_str<char>(t) method in situations when result
// is different. BOOST_TEST does not work with wchar_t.
// but with BOOST_CHECK_EQUAL instead of BOOST_CHECK. It is required to see
// what is produced by the to_str<char>(t) method in situations when result
// is different. BOOST_CHECK does not work with wchar_t.
typedef std::numeric_limits<T> limits;
T t = (limits::min)();
BOOST_TEST_EQ(lexical_cast<std::string>(t), to_str<char>(t));
BOOST_CHECK_EQUAL(lexical_cast<std::string>(t), to_str<char>(t));
test_conversion_from_integral_to_string<T>('0');
test_conversion_from_string_to_integral<T>('0');
#if !defined(BOOST_LCAST_NO_WCHAR_T)
if (lexical_cast<std::wstring>(t) != to_str<wchar_t>(t)) {
// Something went wrong, and now we are attempting to find and print the
// Something went wrong, and now we are attempting to find and print the
// difference.
std::wstring wstr = to_str<wchar_t>(t);
std::string lcast_str = lexical_cast<std::string>(t);
@@ -344,10 +391,10 @@ void test_conversion_from_to_integral_for_locale()
for (std::size_t i = 0; i < wstr.size(); ++i) {
str.push_back(static_cast<char>(wstr[i]));
}
BOOST_TEST_EQ(lcast_str.length(), lexical_cast<std::wstring>(t).length());
BOOST_TEST_EQ(to_str<char>(t), str);
BOOST_TEST_EQ(lcast_str, str);
BOOST_CHECK_EQUAL(lcast_str.length(), lexical_cast<std::wstring>(t).length());
BOOST_CHECK_EQUAL(to_str<char>(t), str);
BOOST_CHECK_EQUAL(lcast_str, str);
}
test_conversion_from_integral_to_string<T>(L'0');
@@ -378,52 +425,52 @@ void test_conversion_from_to_integral_minimal()
test_conversion_from_integral_to_char<T>(wzero);
test_conversion_from_char_to_integral<T>(wzero);
#endif
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION) && !defined(BOOST_MSVC)
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION)
char16_t const u16zero = u'0';
test_conversion_from_integral_to_char<T>(u16zero);
test_conversion_from_char_to_integral<T>(u16zero);
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION) && !defined(BOOST_MSVC)
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION)
char32_t const u32zero = u'0';
test_conversion_from_integral_to_char<T>(u32zero);
test_conversion_from_char_to_integral<T>(u32zero);
#endif
BOOST_TEST(lexical_cast<T>("-1") == static_cast<T>(-1));
BOOST_TEST(lexical_cast<T>("-9") == static_cast<T>(-9));
BOOST_TEST(lexical_cast<T>(-1) == static_cast<T>(-1));
BOOST_TEST(lexical_cast<T>(-9) == static_cast<T>(-9));
BOOST_CHECK(lexical_cast<T>("-1") == static_cast<T>(-1));
BOOST_CHECK(lexical_cast<T>("-9") == static_cast<T>(-9));
BOOST_CHECK(lexical_cast<T>(-1) == static_cast<T>(-1));
BOOST_CHECK(lexical_cast<T>(-9) == static_cast<T>(-9));
BOOST_TEST_THROWS(lexical_cast<T>("-1.0"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>("-9.0"), bad_lexical_cast);
BOOST_TEST(lexical_cast<T>(-1.0) == static_cast<T>(-1));
BOOST_TEST(lexical_cast<T>(-9.0) == static_cast<T>(-9));
BOOST_CHECK_THROW(lexical_cast<T>("-1.0"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>("-9.0"), bad_lexical_cast);
BOOST_CHECK(lexical_cast<T>(-1.0) == static_cast<T>(-1));
BOOST_CHECK(lexical_cast<T>(-9.0) == static_cast<T>(-9));
BOOST_TEST(lexical_cast<T>(static_cast<T>(1)) == static_cast<T>(1));
BOOST_TEST(lexical_cast<T>(static_cast<T>(9)) == static_cast<T>(9));
BOOST_TEST_THROWS(lexical_cast<T>(1.1f), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>(1.1), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>(1.1L), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>(1.0001f), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>(1.0001), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>(1.0001L), bad_lexical_cast);
BOOST_CHECK(lexical_cast<T>(static_cast<T>(1)) == static_cast<T>(1));
BOOST_CHECK(lexical_cast<T>(static_cast<T>(9)) == static_cast<T>(9));
BOOST_CHECK_THROW(lexical_cast<T>(1.1f), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(1.1), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(1.1L), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(1.0001f), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(1.0001), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(1.0001L), bad_lexical_cast);
BOOST_TEST(lexical_cast<T>("+1") == static_cast<T>(1) );
BOOST_TEST(lexical_cast<T>("+9") == static_cast<T>(9) );
BOOST_TEST(lexical_cast<T>("+10") == static_cast<T>(10) );
BOOST_TEST(lexical_cast<T>("+90") == static_cast<T>(90) );
BOOST_TEST_THROWS(lexical_cast<T>("++1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>("-+9"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>("--1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>("+-9"), bad_lexical_cast);
BOOST_CHECK(lexical_cast<T>("+1") == static_cast<T>(1) );
BOOST_CHECK(lexical_cast<T>("+9") == static_cast<T>(9) );
BOOST_CHECK(lexical_cast<T>("+10") == static_cast<T>(10) );
BOOST_CHECK(lexical_cast<T>("+90") == static_cast<T>(90) );
BOOST_CHECK_THROW(lexical_cast<T>("++1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>("-+9"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>("--1"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>("+-9"), bad_lexical_cast);
// test_conversion_from_to_integral_for_locale
// Overflow test case from David W. Birdsall
std::string must_owerflow_str = (sizeof(T) < 16 ? "160000000000000000000" : "1600000000000000000000000000000000000000");
std::string must_owerflow_negative_str = (sizeof(T) < 16 ? "-160000000000000000000" : "-1600000000000000000000000000000000000000");
for (int i = 0; i < 15; ++i) {
BOOST_TEST_THROWS(lexical_cast<T>(must_owerflow_str), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<T>(must_owerflow_negative_str), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(must_owerflow_str), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(must_owerflow_negative_str), bad_lexical_cast);
must_owerflow_str += '0';
must_owerflow_negative_str += '0';
@@ -455,14 +502,14 @@ void test_conversion_from_to_integral()
{
std::string msg("Failed to set system locale: ");
msg += ex.what();
std::cerr << msg;
BOOST_TEST_MESSAGE(msg);
}
if(grouping1 != grouping2)
test_conversion_from_to_integral_for_locale<T>();
if(grouping1.empty() && grouping2.empty())
std::cerr << "Formatting with thousands_sep has not been tested";
BOOST_TEST_MESSAGE("Formatting with thousands_sep has not been tested");
}
void test_conversion_from_to_short()
@@ -532,7 +579,7 @@ void test_conversion_from_to_ulonglong()
#endif
#ifdef BOOST_LCAST_TEST_128
#ifdef BOOST_HAS_INT128
template <bool Specialized, class T>
struct test_if_specialized {
@@ -549,7 +596,7 @@ struct test_if_specialized<true, T> {
void test_conversion_from_to_int128()
{
test_if_specialized<
std::numeric_limits<boost::int128_type>::is_specialized,
std::numeric_limits<boost::int128_type>::is_specialized,
boost::int128_type
>::test();
}
@@ -557,7 +604,7 @@ void test_conversion_from_to_int128()
void test_conversion_from_to_uint128()
{
test_if_specialized<
std::numeric_limits<boost::int128_type>::is_specialized,
std::numeric_limits<boost::int128_type>::is_specialized,
boost::uint128_type
>::test();
}
@@ -567,19 +614,19 @@ template <typename SignedT>
void test_integral_conversions_on_min_max_impl()
{
typedef SignedT signed_t;
typedef typename boost::detail::lcast::make_unsigned<signed_t>::type unsigned_t;
typedef BOOST_DEDUCED_TYPENAME boost::make_unsigned<signed_t>::type unsigned_t;
typedef std::numeric_limits<signed_t> s_limits;
typedef std::numeric_limits<unsigned_t> uns_limits;
BOOST_TEST_EQ(lexical_cast<unsigned_t>((uns_limits::max)()), (uns_limits::max)());
BOOST_TEST_EQ(lexical_cast<unsigned_t>((uns_limits::min)()), (uns_limits::min)());
BOOST_CHECK_EQUAL(lexical_cast<unsigned_t>((uns_limits::max)()), (uns_limits::max)());
BOOST_CHECK_EQUAL(lexical_cast<unsigned_t>((uns_limits::min)()), (uns_limits::min)());
BOOST_TEST_EQ(lexical_cast<signed_t>((s_limits::max)()), (s_limits::max)());
BOOST_TEST_EQ(lexical_cast<signed_t>((uns_limits::min)()), static_cast<signed_t>((uns_limits::min)()));
BOOST_CHECK_EQUAL(lexical_cast<signed_t>((s_limits::max)()), (s_limits::max)());
BOOST_CHECK_EQUAL(lexical_cast<signed_t>((uns_limits::min)()), static_cast<signed_t>((uns_limits::min)()));
BOOST_TEST_EQ(lexical_cast<unsigned_t>((s_limits::max)()), static_cast<unsigned_t>((s_limits::max)()));
BOOST_TEST_EQ(lexical_cast<unsigned_t>((s_limits::min)()), static_cast<unsigned_t>((s_limits::min)()));
BOOST_CHECK_EQUAL(lexical_cast<unsigned_t>((s_limits::max)()), static_cast<unsigned_t>((s_limits::max)()));
BOOST_CHECK_EQUAL(lexical_cast<unsigned_t>((s_limits::min)()), static_cast<unsigned_t>((s_limits::min)()));
}
void test_integral_conversions_on_min_max()
@@ -596,62 +643,11 @@ void test_integral_conversions_on_min_max()
test_integral_conversions_on_min_max_impl<__int64>();
#endif
#ifdef BOOST_LCAST_TEST_128
#ifdef BOOST_HAS_INT128
test_integral_conversions_on_min_max_impl<boost::int128_type>();
#endif
#endif
}
void test_negative_integral() {
// From https://github.com/boostorg/lexical_cast/issues/45
BOOST_TEST_EQ(boost::lexical_cast<int>("-6575543"), -6575543);
BOOST_TEST_EQ(boost::lexical_cast<int>(-6575543), -6575543);
BOOST_TEST_EQ(boost::lexical_cast<int>("+6575543"), +6575543);
BOOST_TEST_EQ(boost::lexical_cast<int>(6575543), 6575543);
if (sizeof(short) == 2 && CHAR_BIT == 8) {
BOOST_TEST_EQ(boost::lexical_cast<short>("-32768"), -32768);
BOOST_TEST_EQ(boost::lexical_cast<short>(-32768), -32768);
BOOST_TEST_EQ(boost::lexical_cast<unsigned short>("-32768"), 32768);
BOOST_TEST_EQ(boost::lexical_cast<unsigned short>(-32768), 32768);
BOOST_TEST_EQ(boost::lexical_cast<unsigned short>(65535), 65535);
BOOST_TEST_THROWS(boost::lexical_cast<unsigned short>(-65536), bad_lexical_cast);
BOOST_TEST_EQ(boost::lexical_cast<unsigned short>(-65535), 1);
BOOST_TEST_EQ(boost::lexical_cast<unsigned short>(-65534), 2);
BOOST_TEST_THROWS(boost::lexical_cast<short>(65535), bad_lexical_cast);
BOOST_TEST_THROWS(boost::lexical_cast<short>(-65536), bad_lexical_cast);
BOOST_TEST_THROWS(boost::lexical_cast<short>(-65535), bad_lexical_cast);
}
}
int main()
{
test_conversion_from_to_short();
test_conversion_from_to_ushort();
test_conversion_from_to_int();
test_conversion_from_to_uint();
test_conversion_from_to_long();
test_conversion_from_to_ulong();
test_conversion_from_to_intmax_t();
test_conversion_from_to_uintmax_t();
#ifdef LCAST_TEST_LONGLONG
test_conversion_from_to_longlong();
test_conversion_from_to_ulonglong();
#endif
#ifdef BOOST_LCAST_TEST_128
test_conversion_from_to_int128();
test_conversion_from_to_uint128();
#endif
test_integral_conversions_on_min_max();
test_negative_integral();
return boost::report_errors();
}
+245
View File
@@ -0,0 +1,245 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012.
//
// 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/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/range/iterator_range.hpp>
using namespace boost;
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION)
#define BOOST_LC_RUNU16
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(_LIBCPP_VERSION)
#define BOOST_LC_RUNU32
#endif
struct class_with_user_defined_sream_operators {
int i;
operator int() const {
return i;
}
};
template <class CharT>
inline std::basic_istream<CharT>& operator >> (std::basic_istream<CharT>& istr, class_with_user_defined_sream_operators& rhs)
{
return istr >> rhs.i;
}
template <class RngT>
void do_test_iterator_range_impl(const RngT& rng)
{
BOOST_CHECK_EQUAL(lexical_cast<int>(rng), 1);
BOOST_CHECK_EQUAL(lexical_cast<int>(rng.begin(), rng.size()), 1);
BOOST_CHECK_EQUAL(lexical_cast<unsigned int>(rng), 1u);
BOOST_CHECK_EQUAL(lexical_cast<unsigned int>(rng.begin(), rng.size()), 1u);
BOOST_CHECK_EQUAL(lexical_cast<short>(rng), 1);
BOOST_CHECK_EQUAL(lexical_cast<short>(rng.begin(), rng.size()), 1);
BOOST_CHECK_EQUAL(lexical_cast<unsigned short>(rng), 1u);
BOOST_CHECK_EQUAL(lexical_cast<unsigned short>(rng.begin(), rng.size()), 1u);
BOOST_CHECK_EQUAL(lexical_cast<long int>(rng), 1);
BOOST_CHECK_EQUAL(lexical_cast<long int>(rng.begin(), rng.size()), 1);
BOOST_CHECK_EQUAL(lexical_cast<unsigned long int>(rng), 1u);
BOOST_CHECK_EQUAL(lexical_cast<unsigned long int>(rng.begin(), rng.size()), 1u);
#ifdef BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES
BOOST_CHECK_EQUAL(lexical_cast<float>(rng), 1.0f);
BOOST_CHECK_EQUAL(lexical_cast<float>(rng.begin(), rng.size()), 1.0f);
BOOST_CHECK_EQUAL(lexical_cast<double>(rng), 1.0);
BOOST_CHECK_EQUAL(lexical_cast<double>(rng.begin(), rng.size()), 1.0);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_CHECK_EQUAL(lexical_cast<long double>(rng), 1.0L);
BOOST_CHECK_EQUAL(lexical_cast<long double>(rng.begin(), rng.size()), 1.0L);
#endif
BOOST_CHECK_EQUAL(lexical_cast<class_with_user_defined_sream_operators>(rng), 1);
#endif
#if defined(BOOST_HAS_LONG_LONG)
BOOST_CHECK_EQUAL(lexical_cast<boost::ulong_long_type>(rng), 1u);
BOOST_CHECK_EQUAL(lexical_cast<boost::ulong_long_type>(rng.begin(), rng.size()), 1u);
BOOST_CHECK_EQUAL(lexical_cast<boost::long_long_type>(rng), 1);
BOOST_CHECK_EQUAL(lexical_cast<boost::long_long_type>(rng.begin(), rng.size()), 1);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_EQUAL(lexical_cast<unsigned __int64>(rng), 1u);
BOOST_CHECK_EQUAL(lexical_cast<unsigned __int64>(rng.begin(), rng.size()), 1u);
BOOST_CHECK_EQUAL(lexical_cast<__int64>(rng), 1);
BOOST_CHECK_EQUAL(lexical_cast<__int64>(rng.begin(), rng.size()), 1);
#endif
}
template <class CharT>
void test_it_range_using_any_chars(CharT* one, CharT* eleven)
{
typedef CharT test_char_type;
// Zero terminated
iterator_range<test_char_type*> rng1(one, one + 1);
do_test_iterator_range_impl(rng1);
iterator_range<const test_char_type*> crng1(one, one + 1);
do_test_iterator_range_impl(crng1);
// Non zero terminated
iterator_range<test_char_type*> rng2(eleven, eleven + 1);
do_test_iterator_range_impl(rng2);
iterator_range<const test_char_type*> crng2(eleven, eleven + 1);
do_test_iterator_range_impl(crng2);
}
template <class CharT>
void test_it_range_using_char(CharT* one, CharT* eleven)
{
typedef CharT test_char_type;
iterator_range<test_char_type*> rng1(one, one + 1);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(rng1), "1");
iterator_range<const test_char_type*> crng1(one, one + 1);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(crng1), "1");
iterator_range<test_char_type*> rng2(eleven, eleven + 1);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(rng2), "1");
iterator_range<const test_char_type*> crng2(eleven, eleven + 1);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(crng2), "1");
BOOST_CHECK_EQUAL(lexical_cast<float>(rng1), 1.0f);
BOOST_CHECK_EQUAL(lexical_cast<double>(rng1), 1.0);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_CHECK_EQUAL(lexical_cast<long double>(rng1), 1.0L);
#endif
BOOST_CHECK_EQUAL(lexical_cast<class_with_user_defined_sream_operators>(rng1), 1);
BOOST_CHECK_EQUAL(lexical_cast<float>(crng2), 1.0f);
BOOST_CHECK_EQUAL(lexical_cast<double>(crng2), 1.0);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_CHECK_EQUAL(lexical_cast<long double>(crng2), 1.0L);
#endif
BOOST_CHECK_EQUAL(lexical_cast<class_with_user_defined_sream_operators>(crng2), 1);
#ifndef BOOST_LCAST_NO_WCHAR_T
BOOST_CHECK(lexical_cast<std::wstring>(rng1) == L"1");
BOOST_CHECK(lexical_cast<std::wstring>(crng1) == L"1");
BOOST_CHECK(lexical_cast<std::wstring>(rng2) == L"1");
BOOST_CHECK(lexical_cast<std::wstring>(crng2) == L"1");
#endif
#if defined(BOOST_LC_RUNU16) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
typedef std::basic_string<char16_t> my_char16_string;
BOOST_CHECK(lexical_cast<my_char16_string>(rng1) == u"1");
BOOST_CHECK(lexical_cast<my_char16_string>(crng1) == u"1");
BOOST_CHECK(lexical_cast<my_char16_string>(rng2) == u"1");
BOOST_CHECK(lexical_cast<my_char16_string>(crng2) == u"1");
#endif
#if defined(BOOST_LC_RUNU32) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
typedef std::basic_string<char32_t> my_char32_string;
BOOST_CHECK(lexical_cast<my_char32_string>(rng1) == U"1");
BOOST_CHECK(lexical_cast<my_char32_string>(crng1) == U"1");
BOOST_CHECK(lexical_cast<my_char32_string>(rng2) == U"1");
BOOST_CHECK(lexical_cast<my_char32_string>(crng2) == U"1");
#endif
}
void test_char_iterator_ranges()
{
typedef char test_char_type;
test_char_type data1[] = "1";
test_char_type data2[] = "11";
test_it_range_using_any_chars(data1, data2);
test_it_range_using_char(data1, data2);
}
void test_unsigned_char_iterator_ranges()
{
typedef unsigned char test_char_type;
test_char_type data1[] = "1";
test_char_type data2[] = "11";
test_it_range_using_any_chars(data1, data2);
test_it_range_using_char(data1, data2);
}
void test_signed_char_iterator_ranges()
{
typedef signed char test_char_type;
test_char_type data1[] = "1";
test_char_type data2[] = "11";
test_it_range_using_any_chars(data1, data2);
test_it_range_using_char(data1, data2);
}
void test_wchar_iterator_ranges()
{
#ifndef BOOST_LCAST_NO_WCHAR_T
typedef wchar_t test_char_type;
test_char_type data1[] = L"1";
test_char_type data2[] = L"11";
test_it_range_using_any_chars(data1, data2);
#endif
BOOST_CHECK(true);
}
void test_char16_iterator_ranges()
{
#if defined(BOOST_LC_RUNU16)
typedef char16_t test_char_type;
test_char_type data1[] = u"1";
test_char_type data2[] = u"11";
test_it_range_using_any_chars(data1, data2);
#endif
BOOST_CHECK(true);
}
void test_char32_iterator_ranges()
{
#if defined(BOOST_LC_RUNU32)
typedef char32_t test_char_type;
test_char_type data1[] = U"1";
test_char_type data2[] = U"11";
test_it_range_using_any_chars(data1, data2);
#endif
BOOST_CHECK(true);
}
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite = BOOST_TEST_SUITE("lexical_cast. Testing conversions using iterator_range<>");
suite->add(BOOST_TEST_CASE(&test_char_iterator_ranges));
suite->add(BOOST_TEST_CASE(&test_unsigned_char_iterator_ranges));
suite->add(BOOST_TEST_CASE(&test_signed_char_iterator_ranges));
suite->add(BOOST_TEST_CASE(&test_wchar_iterator_ranges));
suite->add(BOOST_TEST_CASE(&test_char16_iterator_ranges));
suite->add(BOOST_TEST_CASE(&test_char32_iterator_ranges));
return suite;
}
@@ -3,7 +3,6 @@
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Alexander Nasonov, 2006.
// Copyright Antony Polukhin, 2023-2026.
//
// Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
@@ -12,38 +11,56 @@
// Test round-tripping conversion FPT -> string -> FPT,
// where FPT is Floating Point Type.
#include <boost/core/lightweight_test.hpp>
#include <boost/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
#if (defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__) \
|| (defined(__hppa) && !defined(__OpenBSD__)) || (defined(__NO_LONG_DOUBLE_MATH) && (DBL_MANT_DIG != LDBL_MANT_DIG))) \
|| defined(__MINGW64__)
# define BOOST_LEXICAL_CAST_NO_LONG_DOUBLE_MATH_FUNCTIONS
#endif
using namespace boost;
void test_round_conversion_float();
void test_round_conversion_double();
void test_round_conversion_long_double();
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast unit test");
suite->add(BOOST_TEST_CASE(&test_round_conversion_float));
suite->add(BOOST_TEST_CASE(&test_round_conversion_double));
suite->add(BOOST_TEST_CASE(&test_round_conversion_long_double));
return suite;
}
template<class T>
void test_round_conversion()
{
T epsilon = std::numeric_limits<T>::epsilon();
std::string const epsilon_s = boost::lexical_cast<std::string>(epsilon);
BOOST_TEST(epsilon == boost::lexical_cast<T>(epsilon_s));
BOOST_CHECK(epsilon == lexical_cast<T>(epsilon_s));
T max_ = (std::numeric_limits<T>::max)();
std::string const max_s = boost::lexical_cast<std::string>(max_);
BOOST_TEST(max_ == boost::lexical_cast<T>(max_s));
BOOST_CHECK(max_ == lexical_cast<T>(max_s));
T min_ = (std::numeric_limits<T>::min)();
std::string const min_s = boost::lexical_cast<std::string>(min_);
BOOST_TEST(min_ == boost::lexical_cast<T>(min_s));
BOOST_CHECK(min_ == lexical_cast<T>(min_s));
T max_div137 = max_ / 137;
std::string max_div137_s = boost::lexical_cast<std::string>(max_div137);
BOOST_TEST(max_div137 == boost::lexical_cast<T>(max_div137_s));
BOOST_CHECK(max_div137 == lexical_cast<T>(max_div137_s));
T epsilon_mult137 = epsilon * 137;
std::string epsilon_mult137_s(boost::lexical_cast<std::string>(epsilon_mult137));
BOOST_TEST(epsilon_mult137 == boost::lexical_cast<T>(epsilon_mult137_s));
std::string epsilon_mult137_s(lexical_cast<std::string>(epsilon_mult137));
BOOST_CHECK(epsilon_mult137 == lexical_cast<T>(epsilon_mult137_s));
}
@@ -53,7 +70,7 @@ void test_msvc_magic_values()
{
T magic_msvc = 0.00010000433948393407;
std::string magic_msvc_s = boost::lexical_cast<std::string>(magic_msvc);
BOOST_TEST(magic_msvc == boost::lexical_cast<T>(magic_msvc_s));
BOOST_CHECK(magic_msvc == lexical_cast<T>(magic_msvc_s));
}
void test_round_conversion_float()
@@ -69,20 +86,11 @@ void test_round_conversion_double()
void test_round_conversion_long_double()
{
// We do not run tests on compilers and Standard Libraries with poor support of long double
#if !defined(BOOST_LEXICAL_CAST_NO_LONG_DOUBLE_MATH_FUNCTIONS)
// We do not run tests on compilers with bugs
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
test_round_conversion<long double>();
test_msvc_magic_values<long double>();
#endif
BOOST_TEST(true);
}
int main()
{
test_round_conversion_float();
test_round_conversion_double();
test_round_conversion_long_double();
return boost::report_errors();
BOOST_CHECK(true);
}
+95
View File
@@ -0,0 +1,95 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012.
//
// 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/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/range/iterator_range.hpp>
#ifndef BOOST_NO_EXCEPTIONS
#error "This test must be compiled with -DBOOST_NO_EXCEPTIONS"
#endif
bool g_was_exception = false;
namespace boost {
void throw_exception(std::exception const & ) {
g_was_exception = true;
}
}
using namespace boost;
struct Escape
{
Escape(){}
Escape(const std::string& s)
: str_(s)
{}
std::string str_;
};
inline std::ostream& operator<< (std::ostream& o, const Escape& rhs)
{
return o << rhs.str_;
}
inline std::istream& operator>> (std::istream& i, Escape& rhs)
{
return i >> rhs.str_;
}
void test_exceptions_off()
{
Escape v("");
g_was_exception = false;
lexical_cast<char>(v);
BOOST_CHECK(g_was_exception);
g_was_exception = false;
lexical_cast<unsigned char>(v);
BOOST_CHECK(g_was_exception);
v = lexical_cast<Escape>(100);
BOOST_CHECK_EQUAL(lexical_cast<int>(v), 100);
BOOST_CHECK_EQUAL(lexical_cast<unsigned int>(v), 100u);
v = lexical_cast<Escape>(0.0);
BOOST_CHECK_EQUAL(lexical_cast<double>(v), 0.0);
BOOST_CHECK_EQUAL(lexical_cast<short>(100), 100);
BOOST_CHECK_EQUAL(lexical_cast<float>(0.0), 0.0);
g_was_exception = false;
lexical_cast<short>(700000);
BOOST_CHECK(g_was_exception);
}
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast. Testing with BOOST_NO_EXCEPTIONS");
suite->add(BOOST_TEST_CASE(&test_exceptions_off));
return suite;
}
+168
View File
@@ -0,0 +1,168 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012.
//
// 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/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/range/iterator_range.hpp>
using namespace boost;
// Testing compilation and some basic usage with BOOST_NO_STD_LOCALE
// Tests are mainly copyied from lexical_cast_empty_input_test.cpp (something
// new added to test_empty_3)
#ifndef BOOST_NO_STD_LOCALE
#error "This test must be compiled with -DBOOST_NO_STD_LOCALE"
#endif
template <class T>
void do_test_on_empty_input(T& v)
{
BOOST_CHECK_THROW(lexical_cast<int>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<float>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<double>(v), bad_lexical_cast);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_CHECK_THROW(lexical_cast<long double>(v), bad_lexical_cast);
#endif
BOOST_CHECK_THROW(lexical_cast<unsigned int>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned short>(v), bad_lexical_cast);
#if defined(BOOST_HAS_LONG_LONG)
BOOST_CHECK_THROW(lexical_cast<boost::ulong_long_type>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<boost::long_long_type>(v), bad_lexical_cast);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_THROW(lexical_cast<unsigned __int64>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<__int64>(v), bad_lexical_cast);
#endif
}
void test_empty_1()
{
boost::iterator_range<char*> v;
do_test_on_empty_input(v);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(v), std::string());
BOOST_CHECK_THROW(lexical_cast<char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(v), bad_lexical_cast);
boost::iterator_range<const char*> cv;
do_test_on_empty_input(cv);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(cv), std::string());
BOOST_CHECK_THROW(lexical_cast<char>(cv), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(cv), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(cv), bad_lexical_cast);
const boost::iterator_range<const char*> ccv;
do_test_on_empty_input(ccv);
BOOST_CHECK_EQUAL(lexical_cast<std::string>(ccv), std::string());
BOOST_CHECK_THROW(lexical_cast<char>(ccv), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(ccv), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(ccv), bad_lexical_cast);
}
void test_empty_2()
{
std::string v;
do_test_on_empty_input(v);
BOOST_CHECK_THROW(lexical_cast<char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(v), bad_lexical_cast);
}
struct Escape
{
Escape(){}
Escape(const std::string& s)
: str_(s)
{}
std::string str_;
};
inline std::ostream& operator<< (std::ostream& o, const Escape& rhs)
{
return o << rhs.str_;
}
inline std::istream& operator>> (std::istream& i, Escape& rhs)
{
return i >> rhs.str_;
}
void test_empty_3()
{
Escape v("");
do_test_on_empty_input(v);
BOOST_CHECK_THROW(lexical_cast<char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(v), bad_lexical_cast);
v = lexical_cast<Escape>(100);
BOOST_CHECK_EQUAL(lexical_cast<int>(v), 100);
BOOST_CHECK_EQUAL(lexical_cast<unsigned int>(v), 100u);
v = lexical_cast<Escape>(0.0);
BOOST_CHECK_EQUAL(lexical_cast<double>(v), 0.0);
}
namespace std {
inline std::ostream & operator<<(std::ostream & out, const std::vector<long> & v)
{
std::ostream_iterator<long> it(out);
std::copy(v.begin(), v.end(), it);
assert(out);
return out;
}
}
void test_empty_4()
{
std::vector<long> v;
do_test_on_empty_input(v);
BOOST_CHECK_THROW(lexical_cast<char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<signed char>(v), bad_lexical_cast);
}
struct my_string {
friend std::ostream &operator<<(std::ostream& sout, my_string const&/* st*/) {
return sout << "";
}
};
void test_empty_5()
{
my_string st;
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(st), std::string());;
}
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast. Testing with BOOST_NO_STD_LOCALE");
suite->add(BOOST_TEST_CASE(&test_empty_1));
suite->add(BOOST_TEST_CASE(&test_empty_2));
suite->add(BOOST_TEST_CASE(&test_empty_3));
suite->add(BOOST_TEST_CASE(&test_empty_4));
suite->add(BOOST_TEST_CASE(&test_empty_5));
return suite;
}
@@ -3,7 +3,6 @@
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Alexander Nasonov, 2007.
// Copyright Antony Polukhin, 2023-2026.
//
// Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
@@ -11,11 +10,30 @@
//
// Test that Source can be non-copyable.
#include <boost/core/noncopyable.hpp>
#include <boost/config.hpp>
#include <boost/core/lightweight_test.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/noncopyable.hpp>
#include <boost/test/unit_test.hpp>
using namespace boost;
void test_noncopyable();
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast unit test");
suite->add(BOOST_TEST_CASE(&test_noncopyable));
return suite;
}
class Noncopyable : private boost::noncopyable
{
@@ -31,11 +49,6 @@ inline std::ostream &operator<<(std::ostream &out, const Noncopyable&)
void test_noncopyable()
{
Noncopyable x;
BOOST_TEST(boost::lexical_cast<std::string>(x) == "Noncopyable");
BOOST_CHECK(boost::lexical_cast<std::string>(x) == "Noncopyable");
}
int main()
{
test_noncopyable();
return boost::report_errors();
}
-177
View File
@@ -1,177 +0,0 @@
// Copyright Kevlin Henney, 2000-2005.
// Copyright Alexander Nasonov, 2006-2010.
// Copyright Antony Polukhin, 2011-2026.
//
// 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)
//
// what: lexical_cast custom keyword cast
// who: contributed by Kevlin Henney,
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
#ifndef BOOST_LEXICAL_CAST_LEXICAL_CAST_OLD_HPP
#define BOOST_LEXICAL_CAST_LEXICAL_CAST_OLD_HPP
#include <boost/config.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once
#endif
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
#endif
#include <climits>
#include <cstddef>
#include <string>
#include <cstring>
#include <cstdio>
#include <type_traits>
#include <boost/limits.hpp>
#include <boost/config/workaround.hpp>
#ifdef BOOST_NO_STRINGSTREAM
#include <strstream>
#else
#include <sstream>
#endif
#if defined(BOOST_USE_MODULES)
#undef BOOST_USE_MODULES
#endif
#include <boost/lexical_cast/detail/lcast_precision.hpp>
#include <boost/lexical_cast/bad_lexical_cast.hpp>
#include <boost/lexical_cast/detail/widest_char.hpp>
namespace boost {
namespace detail
{
// selectors for choosing stream character type
template<typename Type>
struct stream_char
{
typedef char type;
};
#ifndef BOOST_LCAST_NO_WCHAR_T
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
template<>
struct stream_char<wchar_t>
{
typedef wchar_t type;
};
#endif
template<>
struct stream_char<wchar_t *>
{
typedef wchar_t type;
};
template<>
struct stream_char<const wchar_t *>
{
typedef wchar_t type;
};
template<>
struct stream_char<std::wstring>
{
typedef wchar_t type;
};
#endif
// stream wrapper for handling lexical conversions
template<typename Target, typename Source, typename Traits>
class lexical_stream
{
private:
typedef typename widest_char<
typename stream_char<Target>::type,
typename stream_char<Source>::type>::type char_type;
typedef Traits traits_type;
public:
lexical_stream(char_type* = 0, char_type* = 0)
{
stream.unsetf(std::ios::skipws);
lcast_set_precision(stream, static_cast<Source*>(0), static_cast<Target*>(0) );
}
~lexical_stream()
{
#if defined(BOOST_NO_STRINGSTREAM)
stream.freeze(false);
#endif
}
bool operator<<(const Source &input)
{
return !(stream << input).fail();
}
template<typename InputStreamable>
bool operator>>(InputStreamable &output)
{
return !std::is_pointer<InputStreamable>::value &&
stream >> output &&
stream.get() == traits_type::eof();
}
bool operator>>(std::string &output)
{
#if defined(BOOST_NO_STRINGSTREAM)
stream << '\0';
#endif
stream.str().swap(output);
return true;
}
#ifndef BOOST_LCAST_NO_WCHAR_T
bool operator>>(std::wstring &output)
{
stream.str().swap(output);
return true;
}
#endif
private:
#if defined(BOOST_NO_STRINGSTREAM)
std::strstream stream;
#elif defined(BOOST_NO_STD_LOCALE)
std::stringstream stream;
#else
std::basic_stringstream<char_type,traits_type> stream;
#endif
};
}
// call-by-value fallback version (deprecated)
template<typename Target, typename Source>
Target lexical_cast(Source arg)
{
typedef typename detail::widest_char<
typename detail::stream_char<Target>::type
, typename detail::stream_char<Source>::type
>::type char_type;
typedef std::char_traits<char_type> traits;
detail::lexical_stream<Target, Source, traits> interpreter;
Target result{};
if(!(interpreter << arg && interpreter >> result))
boost::conversion::detail::throw_bad_cast<Source, Target>();
return result;
}
} // namespace boost
#undef BOOST_LCAST_NO_WCHAR_T
#endif // BOOST_LEXICAL_CAST_LEXICAL_CAST_OLD_HPP
@@ -2,17 +2,24 @@
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012-2026.
// Copyright Antony Polukhin, 2012.
//
// 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/core/lightweight_test.hpp>
#include <boost/config.hpp>
#include <sstream>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
using namespace boost;
#if defined(BOOST_NO_STRINGSTREAM)
typedef std::strstream ss_t;
@@ -29,15 +36,15 @@ void test_void_pointers_conversions()
ss_t ss;
ss << p_to_null;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(p_to_null), ss.str());
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(p_to_null), ss.str());
ss.str(std::string());
ss << cp_to_data;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(cp_to_data), ss.str());
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(cp_to_data), ss.str());
ss.str(std::string());
ss << p_to_data;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(p_to_data), ss.str());
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(p_to_data), ss.str());
ss.str(std::string());
}
@@ -52,15 +59,15 @@ void test_incomplete_type_pointers_conversions()
ss_t ss;
ss << p_to_null;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(p_to_null), ss.str());
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(p_to_null), ss.str());
ss.str(std::string());
ss << cp_to_data;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(cp_to_data), ss.str());
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(cp_to_data), ss.str());
ss.str(std::string());
ss << p_to_data;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(p_to_data), ss.str());
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(p_to_data), ss.str());
ss.str(std::string());
}
@@ -75,14 +82,15 @@ void test_inomplete_type_with_overloaded_ostream_op() {
meh heh = NULL;
ss_t ss;
ss << heh;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(heh), ss.str());
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(heh), ss.str());
}
int main()
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
test_void_pointers_conversions();
test_incomplete_type_pointers_conversions();
test_inomplete_type_with_overloaded_ostream_op();
return boost::report_errors();
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast pinters test");
suite->add(BOOST_TEST_CASE(&test_void_pointers_conversions));
suite->add(BOOST_TEST_CASE(&test_incomplete_type_pointers_conversions));
suite->add(BOOST_TEST_CASE(&test_inomplete_type_with_overloaded_ostream_op));
return suite;
}
@@ -2,19 +2,20 @@
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011-2026.
// Copyright Antony Polukhin, 2011-2012.
//
// 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/core/lightweight_test.hpp>
#include <iostream>
#include <type_traits>
#include <boost/config.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/lexical_cast.hpp>
#include <iostream>
///////////////////////// char streamable classes ///////////////////////////////////////////
@@ -23,33 +24,33 @@ std::ostream& operator << (std::ostream& ostr, const streamable_easy&) {
return ostr << streamable_easy::value;
}
std::istream& operator >> (std::istream& istr, const streamable_easy&) {
int i; istr >> i; BOOST_TEST_EQ(i, streamable_easy::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, streamable_easy::value);
return istr;
}
struct streamable_medium { enum ENU {value = 1}; };
template <class CharT>
typename std::enable_if<std::is_same<CharT, char>::value, std::basic_ostream<CharT>&>::type
typename boost::enable_if<boost::is_same<CharT, char>, std::basic_ostream<CharT>&>::type
operator << (std::basic_ostream<CharT>& ostr, const streamable_medium&) {
return ostr << streamable_medium::value;
}
template <class CharT>
typename std::enable_if<std::is_same<CharT, char>::value, std::basic_istream<CharT>&>::type
typename boost::enable_if<boost::is_same<CharT, char>, std::basic_istream<CharT>&>::type
operator >> (std::basic_istream<CharT>& istr, const streamable_medium&) {
int i; istr >> i; BOOST_TEST_EQ(i, streamable_medium::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, streamable_medium::value);
return istr;
}
struct streamable_hard { enum ENU {value = 2}; };
template <class CharT, class TraitsT>
typename std::enable_if<std::is_same<CharT, char>::value, std::basic_ostream<CharT, TraitsT>&>::type
typename boost::enable_if<boost::is_same<CharT, char>, std::basic_ostream<CharT, TraitsT>&>::type
operator << (std::basic_ostream<CharT, TraitsT>& ostr, const streamable_hard&) {
return ostr << streamable_hard::value;
}
template <class CharT, class TraitsT>
typename std::enable_if<std::is_same<CharT, char>::value, std::basic_istream<CharT, TraitsT>&>::type
typename boost::enable_if<boost::is_same<CharT, char>, std::basic_istream<CharT, TraitsT>&>::type
operator >> (std::basic_istream<CharT, TraitsT>& istr, const streamable_hard&) {
int i; istr >> i; BOOST_TEST_EQ(i, streamable_hard::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, streamable_hard::value);
return istr;
}
@@ -60,7 +61,7 @@ std::basic_ostream<char, TraitsT>& operator << (std::basic_ostream<char, TraitsT
}
template <class TraitsT>
std::basic_istream<char, TraitsT>& operator >> (std::basic_istream<char, TraitsT>& istr, const streamable_hard2&) {
int i; istr >> i; BOOST_TEST_EQ(i, streamable_hard2::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, streamable_hard2::value);
return istr;
}
@@ -72,33 +73,33 @@ std::wostream& operator << (std::wostream& ostr, const wstreamable_easy&) {
return ostr << wstreamable_easy::value;
}
std::wistream& operator >> (std::wistream& istr, const wstreamable_easy&) {
int i; istr >> i; BOOST_TEST_EQ(i, wstreamable_easy::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, wstreamable_easy::value);
return istr;
}
struct wstreamable_medium { enum ENU {value = 5}; };
template <class CharT>
typename std::enable_if<std::is_same<CharT, wchar_t>::value, std::basic_ostream<CharT>& >::type
typename boost::enable_if<boost::is_same<CharT, wchar_t>, std::basic_ostream<CharT>& >::type
operator << (std::basic_ostream<CharT>& ostr, const wstreamable_medium&) {
return ostr << wstreamable_medium::value;
}
template <class CharT>
typename std::enable_if<std::is_same<CharT, wchar_t>::value, std::basic_istream<CharT>& >::type
typename boost::enable_if<boost::is_same<CharT, wchar_t>, std::basic_istream<CharT>& >::type
operator >> (std::basic_istream<CharT>& istr, const wstreamable_medium&) {
int i; istr >> i; BOOST_TEST_EQ(i, wstreamable_medium::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, wstreamable_medium::value);
return istr;
}
struct wstreamable_hard { enum ENU {value = 6}; };
template <class CharT, class TraitsT>
typename std::enable_if<std::is_same<CharT, wchar_t>::value, std::basic_ostream<CharT, TraitsT>&>::type
typename boost::enable_if<boost::is_same<CharT, wchar_t>, std::basic_ostream<CharT, TraitsT>&>::type
operator << (std::basic_ostream<CharT, TraitsT>& ostr, const wstreamable_hard&) {
return ostr << wstreamable_hard::value;
}
template <class CharT, class TraitsT>
typename std::enable_if<std::is_same<CharT, wchar_t>::value, std::basic_istream<CharT, TraitsT>&>::type
typename boost::enable_if<boost::is_same<CharT, wchar_t>, std::basic_istream<CharT, TraitsT>&>::type
operator >> (std::basic_istream<CharT, TraitsT>& istr, const wstreamable_hard&) {
int i; istr >> i; BOOST_TEST_EQ(i, wstreamable_hard::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, wstreamable_hard::value);
return istr;
}
@@ -109,7 +110,7 @@ std::basic_ostream<wchar_t, TraitsT>& operator << (std::basic_ostream<wchar_t, T
}
template <class TraitsT>
std::basic_istream<wchar_t, TraitsT>& operator >> (std::basic_istream<wchar_t, TraitsT>& istr, const wstreamable_hard2&) {
int i; istr >> i; BOOST_TEST_EQ(i, wstreamable_hard2::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, wstreamable_hard2::value);
return istr;
}
@@ -121,7 +122,7 @@ std::ostream& operator << (std::ostream& ostr, const bistreamable_easy&) {
return ostr << bistreamable_easy::value;
}
std::istream& operator >> (std::istream& istr, const bistreamable_easy&) {
int i; istr >> i; BOOST_TEST_EQ(i, bistreamable_easy::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, bistreamable_easy::value);
return istr;
}
@@ -129,7 +130,7 @@ std::wostream& operator << (std::wostream& ostr, const bistreamable_easy&) {
return ostr << bistreamable_easy::value + 100;
}
std::wistream& operator >> (std::wistream& istr, const bistreamable_easy&) {
int i; istr >> i; BOOST_TEST_EQ(i, bistreamable_easy::value + 100);
int i; istr >> i; BOOST_CHECK_EQUAL(i, bistreamable_easy::value + 100);
return istr;
}
@@ -140,7 +141,7 @@ std::basic_ostream<CharT>& operator << (std::basic_ostream<CharT>& ostr, const b
}
template <class CharT>
std::basic_istream<CharT>& operator >> (std::basic_istream<CharT>& istr, const bistreamable_medium&) {
int i; istr >> i; BOOST_TEST_EQ(i, bistreamable_medium::value + (sizeof(CharT) == 1 ? 0 : 100));
int i; istr >> i; BOOST_CHECK_EQUAL(i, bistreamable_medium::value + (sizeof(CharT) == 1 ? 0 : 100));
return istr;
}
@@ -151,7 +152,7 @@ std::basic_ostream<CharT, TraitsT>& operator << (std::basic_ostream<CharT, Trait
}
template <class CharT, class TraitsT>
std::basic_istream<CharT, TraitsT>& operator >> (std::basic_istream<CharT, TraitsT>& istr, const bistreamable_hard&) {
int i; istr >> i; BOOST_TEST_EQ(i, bistreamable_hard::value + (sizeof(CharT) == 1 ? 0 : 100));
int i; istr >> i; BOOST_CHECK_EQUAL(i, bistreamable_hard::value + (sizeof(CharT) == 1 ? 0 : 100));
return istr;
}
@@ -162,7 +163,7 @@ std::basic_ostream<char, TraitsT>& operator << (std::basic_ostream<char, TraitsT
}
template <class TraitsT>
std::basic_istream<char, TraitsT>& operator >> (std::basic_istream<char, TraitsT>& istr, const bistreamable_hard2&) {
int i; istr >> i; BOOST_TEST_EQ(i, bistreamable_hard2::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, bistreamable_hard2::value);
return istr;
}
@@ -172,33 +173,49 @@ std::basic_ostream<wchar_t, TraitsT>& operator << (std::basic_ostream<wchar_t, T
}
template <class TraitsT>
std::basic_istream<wchar_t, TraitsT>& operator >> (std::basic_istream<wchar_t, TraitsT>& istr, const bistreamable_hard2&) {
int i; istr >> i; BOOST_TEST_EQ(i, bistreamable_hard2::value + 100);
int i; istr >> i; BOOST_CHECK_EQUAL(i, bistreamable_hard2::value + 100);
return istr;
}
void test_ostream_character_detection();
void test_istream_character_detection();
void test_mixed_stream_character_detection();
boost::unit_test::test_suite *init_unit_test_suite(int, char *[])
{
boost::unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast stream character detection");
suite->add(BOOST_TEST_CASE(&test_ostream_character_detection));
suite->add(BOOST_TEST_CASE(&test_istream_character_detection));
suite->add(BOOST_TEST_CASE(&test_mixed_stream_character_detection));
return suite;
}
template <class T>
static void test_ostr_impl() {
T streamable;
BOOST_TEST_EQ(T::value, boost::lexical_cast<int>(streamable));
BOOST_TEST_EQ(boost::lexical_cast<std::string>(T::value), boost::lexical_cast<std::string>(streamable));
BOOST_CHECK_EQUAL(T::value, boost::lexical_cast<int>(streamable));
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(T::value), boost::lexical_cast<std::string>(streamable));
}
template <class T>
static void test_wostr_impl() {
T streamable;
BOOST_TEST_EQ(T::value, boost::lexical_cast<int>(streamable));
// BOOST_TEST_EQ(boost::lexical_cast<std::string>(T::value), boost::lexical_cast<std::string>(streamable)); // Shall not compile???
BOOST_TEST(boost::lexical_cast<std::wstring>(T::value) == boost::lexical_cast<std::wstring>(streamable));
BOOST_CHECK_EQUAL(T::value, boost::lexical_cast<int>(streamable));
// BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(T::value), boost::lexical_cast<std::string>(streamable)); // Shall not compile???
BOOST_CHECK(boost::lexical_cast<std::wstring>(T::value) == boost::lexical_cast<std::wstring>(streamable));
}
template <class T>
static void test_bistr_impl() {
T streamable;
BOOST_TEST_EQ(T::value, boost::lexical_cast<int>(streamable));
BOOST_TEST_EQ(boost::lexical_cast<std::string>(T::value), boost::lexical_cast<std::string>(streamable));
BOOST_CHECK_EQUAL(T::value, boost::lexical_cast<int>(streamable));
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(T::value), boost::lexical_cast<std::string>(streamable));
BOOST_TEST(boost::lexical_cast<std::wstring>(T::value + 100) == boost::lexical_cast<std::wstring>(streamable));
BOOST_CHECK(boost::lexical_cast<std::wstring>(T::value + 100) == boost::lexical_cast<std::wstring>(streamable));
}
void test_ostream_character_detection() {
@@ -206,12 +223,12 @@ void test_ostream_character_detection() {
test_ostr_impl<streamable_medium>();
test_ostr_impl<streamable_hard>();
test_ostr_impl<streamable_hard2>();
test_wostr_impl<wstreamable_easy>();
test_wostr_impl<wstreamable_medium>();
test_wostr_impl<wstreamable_hard>();
test_wostr_impl<wstreamable_hard2>();
test_bistr_impl<bistreamable_easy>();
test_bistr_impl<bistreamable_medium>();
test_bistr_impl<bistreamable_hard>();
@@ -244,26 +261,29 @@ void test_istream_character_detection() {
test_istr_impl<streamable_medium>();
test_istr_impl<streamable_hard>();
test_istr_impl<streamable_hard2>();
test_wistr_impl<wstreamable_easy>();
test_wistr_impl<wstreamable_medium>();
test_wistr_impl<wstreamable_hard>();
test_wistr_impl<wstreamable_hard2>();
test_bistr_instr_impl<bistreamable_easy>();
test_bistr_instr_impl<bistreamable_medium>();
test_bistr_instr_impl<bistreamable_hard>();
test_bistr_instr_impl<bistreamable_hard2>();
}
struct wistreamble_ostreamable { enum ENU {value = 200}; };
std::ostream& operator << (std::ostream& ostr, const wistreamble_ostreamable&) {
return ostr << wistreamble_ostreamable::value;
}
std::wistream& operator >> (std::wistream& istr, const wistreamble_ostreamable&) {
int i = 100;
istr >> i;
BOOST_TEST_EQ(i, wistreamble_ostreamable::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, wistreamble_ostreamable::value);
return istr;
}
@@ -272,27 +292,16 @@ std::wostream& operator << (std::wostream& ostr, const istreamble_wostreamable&)
return ostr << istreamble_wostreamable::value;
}
std::istream& operator >> (std::istream& istr, const istreamble_wostreamable&) {
int i; istr >> i; BOOST_TEST_EQ(i, istreamble_wostreamable::value);
int i; istr >> i; BOOST_CHECK_EQUAL(i, istreamble_wostreamable::value);
return istr;
}
void test_mixed_stream_character_detection() {
//boost::lexical_cast<std::wstring>(std::string("qwe")); // TODO: ALLOW IT AS EXTENSION!
BOOST_TEST_EQ(boost::lexical_cast<int>(wistreamble_ostreamable::value), wistreamble_ostreamable::value);
boost::lexical_cast<wistreamble_ostreamable>(wistreamble_ostreamable::value);
BOOST_TEST_EQ(boost::lexical_cast<int>(wistreamble_ostreamable()), wistreamble_ostreamable::value);
BOOST_CHECK_EQUAL(boost::lexical_cast<int>(wistreamble_ostreamable()), wistreamble_ostreamable::value);
boost::lexical_cast<istreamble_wostreamable>(istreamble_wostreamable::value);
BOOST_TEST_EQ(boost::lexical_cast<int>(istreamble_wostreamable()), istreamble_wostreamable::value);
}
int main()
{
test_ostream_character_detection();
test_istream_character_detection();
test_mixed_stream_character_detection();
return boost::report_errors();
BOOST_CHECK_EQUAL(boost::lexical_cast<int>(istreamble_wostreamable()), istreamble_wostreamable::value);
}
+158
View File
@@ -0,0 +1,158 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012.
//
// 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/config.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
template <class T>
static void test_optimized_types_to_string_const()
{
namespace de = boost::detail;
typedef de::lexical_cast_stream_traits<T, std::string> trait_1;
BOOST_CHECK(!trait_1::is_source_input_not_optimized_t::value);
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_1::src_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_1::target_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_1::char_type, char>::value));
BOOST_CHECK(!trait_1::is_string_widening_required_t::value);
BOOST_CHECK(!trait_1::is_source_input_not_optimized_t::value);
typedef de::lexical_cast_stream_traits<const T, std::string> trait_2;
BOOST_CHECK(!trait_2::is_source_input_not_optimized_t::value);
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_2::src_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_2::target_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_2::char_type, char>::value));
BOOST_CHECK(!trait_2::is_string_widening_required_t::value);
BOOST_CHECK(!trait_2::is_source_input_not_optimized_t::value);
typedef de::lexical_cast_stream_traits<T, std::wstring> trait_3;
BOOST_CHECK(!trait_3::is_source_input_not_optimized_t::value);
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_3::src_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_3::target_char_t, wchar_t>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_3::char_type, wchar_t>::value));
BOOST_CHECK((boost::detail::is_character<BOOST_DEDUCED_TYPENAME trait_3::no_cv_src>::value != trait_3::is_string_widening_required_t::value));
BOOST_CHECK(!trait_3::is_source_input_not_optimized_t::value);
}
template <class T>
static void test_optimized_types_to_string()
{
test_optimized_types_to_string_const<T>();
namespace de = boost::detail;
typedef de::lexical_cast_stream_traits<std::string, T> trait_4;
BOOST_CHECK(!trait_4::is_source_input_not_optimized_t::value);
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_4::src_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_4::target_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_4::char_type, char>::value));
BOOST_CHECK(!trait_4::is_string_widening_required_t::value);
BOOST_CHECK(!trait_4::is_source_input_not_optimized_t::value);
typedef de::lexical_cast_stream_traits<const std::string, T> trait_5;
BOOST_CHECK(!trait_5::is_source_input_not_optimized_t::value);
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_5::src_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_5::target_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_5::char_type, char>::value));
BOOST_CHECK(!trait_5::is_string_widening_required_t::value);
BOOST_CHECK(!trait_5::is_source_input_not_optimized_t::value);
typedef de::lexical_cast_stream_traits<const std::wstring, T> trait_6;
BOOST_CHECK(!trait_6::is_source_input_not_optimized_t::value);
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_6::src_char_t, wchar_t>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_6::target_char_t, char>::value));
BOOST_CHECK((boost::is_same<BOOST_DEDUCED_TYPENAME trait_6::char_type, wchar_t>::value));
BOOST_CHECK(!trait_6::is_string_widening_required_t::value);
}
void test_metafunctions()
{
test_optimized_types_to_string<bool>();
test_optimized_types_to_string<char>();
test_optimized_types_to_string<unsigned char>();
test_optimized_types_to_string<signed char>();
test_optimized_types_to_string<short>();
test_optimized_types_to_string<unsigned short>();
test_optimized_types_to_string<int>();
test_optimized_types_to_string<unsigned int>();
test_optimized_types_to_string<long>();
test_optimized_types_to_string<unsigned long>();
#if defined(BOOST_HAS_LONG_LONG)
test_optimized_types_to_string<boost::ulong_long_type>();
test_optimized_types_to_string<boost::long_long_type>();
#elif defined(BOOST_HAS_MS_INT64)
test_optimized_types_to_string<unsigned __int64>();
test_optimized_types_to_string<__int64>();
#endif
#if !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
test_optimized_types_to_string<float>();
#endif
test_optimized_types_to_string<std::string>();
test_optimized_types_to_string<char*>();
//test_optimized_types_to_string<char[5]>();
//test_optimized_types_to_string<char[1]>();
test_optimized_types_to_string<unsigned char*>();
//test_optimized_types_to_string<unsigned char[5]>();
//test_optimized_types_to_string<unsigned char[1]>();
test_optimized_types_to_string<signed char*>();
//test_optimized_types_to_string<signed char[5]>();
//test_optimized_types_to_string<signed char[1]>();
test_optimized_types_to_string<boost::array<char, 1> >();
test_optimized_types_to_string<boost::array<char, 5> >();
test_optimized_types_to_string<boost::array<unsigned char, 1> >();
test_optimized_types_to_string<boost::array<unsigned char, 5> >();
test_optimized_types_to_string<boost::array<signed char, 1> >();
test_optimized_types_to_string<boost::array<signed char, 5> >();
test_optimized_types_to_string<boost::iterator_range<char*> >();
test_optimized_types_to_string<boost::iterator_range<unsigned char*> >();
test_optimized_types_to_string<boost::iterator_range<signed char*> >();
test_optimized_types_to_string_const<boost::array<const char, 1> >();
test_optimized_types_to_string_const<boost::array<const char, 5> >();
test_optimized_types_to_string_const<boost::array<const unsigned char, 1> >();
test_optimized_types_to_string_const<boost::array<const unsigned char, 5> >();
test_optimized_types_to_string_const<boost::array<const signed char, 1> >();
test_optimized_types_to_string_const<boost::array<const signed char, 5> >();
test_optimized_types_to_string_const<boost::iterator_range<const char*> >();
test_optimized_types_to_string_const<boost::iterator_range<const unsigned char*> >();
test_optimized_types_to_string_const<boost::iterator_range<const signed char*> >();
#ifndef BOOST_NO_CXX11_HDR_ARRAY
test_optimized_types_to_string<std::array<char, 1> >();
test_optimized_types_to_string<std::array<char, 5> >();
test_optimized_types_to_string<std::array<unsigned char, 1> >();
test_optimized_types_to_string<std::array<unsigned char, 5> >();
test_optimized_types_to_string<std::array<signed char, 1> >();
test_optimized_types_to_string<std::array<signed char, 5> >();
test_optimized_types_to_string_const<std::array<const char, 1> >();
test_optimized_types_to_string_const<std::array<const char, 5> >();
test_optimized_types_to_string_const<std::array<const unsigned char, 1> >();
test_optimized_types_to_string_const<std::array<const unsigned char, 5> >();
test_optimized_types_to_string_const<std::array<const signed char, 1> >();
test_optimized_types_to_string_const<std::array<const signed char, 5> >();
#endif
}
boost::unit_test::test_suite *init_unit_test_suite(int, char *[])
{
boost::unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast traits tests");
suite->add(BOOST_TEST_CASE(&test_metafunctions));
return suite;
}
+319 -298
View File
@@ -4,7 +4,7 @@
//
// Copyright Terje Sletteb and Kevlin Henney, 2005.
// Copyright Alexander Nasonov, 2006.
// Copyright Antony Polukhin, 2011-2026.
// Copyright Antony Polukhin, 2011-2012.
//
// Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
@@ -19,9 +19,19 @@
//
#define _SCL_SECURE_NO_WARNINGS
#include <boost/cstdint.hpp>
#include <boost/config.hpp>
#include <boost/core/lightweight_test.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/cstdint.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>
#include <boost/type_traits/integral_promotion.hpp>
#include <string>
@@ -29,8 +39,6 @@
#include <algorithm> // std::transform
#include <memory>
#include <boost/lexical_cast.hpp>
#if (defined(BOOST_HAS_LONG_LONG) || defined(BOOST_HAS_MS_INT64)) \
&& !(defined(BOOST_MSVC) && BOOST_MSVC < 1300)
#define LCAST_TEST_LONGLONG
@@ -40,11 +48,6 @@
#define BOOST_LCAST_NO_WCHAR_T
#endif
#ifndef BOOST_TEST_CLOSE_FRACTION
// Naiive, but works for tests in this file
#define BOOST_TEST_CLOSE_FRACTION(x, y, eps) BOOST_TEST(x - y + eps <= eps * 2)
#endif
template<class CharT>
struct my_traits : std::char_traits<CharT>
{
@@ -53,71 +56,135 @@ struct my_traits : std::char_traits<CharT>
template<class CharT>
struct my_allocator : std::allocator<CharT>
{
typedef std::allocator<CharT> base_t;
my_allocator(){}
template <class U> my_allocator(const my_allocator<U>& v) : base_t(v) {}
template <class U> struct rebind { typedef my_allocator<U> other; };
};
using namespace boost;
void test_conversion_to_char();
void test_conversion_to_int();
void test_conversion_to_double();
void test_conversion_to_bool();
void test_conversion_with_nonconst_char();
void test_conversion_to_string();
void test_conversion_from_to_wchar_t_alias();
void test_conversion_from_wchar_t();
void test_conversion_to_wchar_t();
void test_conversion_from_wstring();
void test_conversion_to_wstring();
void test_bad_lexical_cast();
void test_no_whitespace_stripping();
void test_volatile_types_conversions();
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
void test_traits();
void test_wtraits();
void test_allocator();
void test_wallocator();
#endif
void test_char_types_conversions();
void operators_overload_test();
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
void test_char16_conversions();
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
void test_char32_conversions();
#endif
void test_getting_pointer_to_function();
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast unit test");
suite->add(BOOST_TEST_CASE(test_conversion_to_char));
suite->add(BOOST_TEST_CASE(test_conversion_to_int));
suite->add(BOOST_TEST_CASE(test_conversion_to_double));
suite->add(BOOST_TEST_CASE(test_conversion_to_bool));
suite->add(BOOST_TEST_CASE(test_conversion_from_to_wchar_t_alias));
suite->add(BOOST_TEST_CASE(test_conversion_to_string));
suite->add(BOOST_TEST_CASE(test_conversion_with_nonconst_char));
#ifndef BOOST_LCAST_NO_WCHAR_T
suite->add(BOOST_TEST_CASE(test_conversion_from_wchar_t));
suite->add(BOOST_TEST_CASE(test_conversion_to_wchar_t));
suite->add(BOOST_TEST_CASE(test_conversion_from_wstring));
suite->add(BOOST_TEST_CASE(test_conversion_to_wstring));
#endif
suite->add(BOOST_TEST_CASE(test_bad_lexical_cast));
suite->add(BOOST_TEST_CASE(test_no_whitespace_stripping));
suite->add(BOOST_TEST_CASE(test_volatile_types_conversions));
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
suite->add(BOOST_TEST_CASE(&test_traits));
suite->add(BOOST_TEST_CASE(&test_wtraits));
suite->add(BOOST_TEST_CASE(&test_allocator));
suite->add(BOOST_TEST_CASE(&test_wallocator));
#endif
suite->add(BOOST_TEST_CASE(&test_char_types_conversions));
suite->add(BOOST_TEST_CASE(&operators_overload_test));
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
suite->add(BOOST_TEST_CASE(&test_char16_conversions));
#endif
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
suite->add(BOOST_TEST_CASE(&test_char32_conversions));
#endif
suite->add(BOOST_TEST_CASE(&test_getting_pointer_to_function));
return suite;
}
void test_conversion_to_char()
{
BOOST_TEST_EQ('A', lexical_cast<char>('A'));
BOOST_TEST_EQ(' ', lexical_cast<char>(' '));
BOOST_TEST_EQ('1', lexical_cast<char>(1));
BOOST_TEST_EQ('0', lexical_cast<char>(0));
BOOST_TEST_THROWS(lexical_cast<char>(123), bad_lexical_cast);
BOOST_TEST_EQ('1', lexical_cast<char>(1.0));
BOOST_TEST_EQ('1', lexical_cast<char>(true));
BOOST_TEST_EQ('0', lexical_cast<char>(false));
BOOST_TEST_EQ('A', lexical_cast<char>("A"));
BOOST_TEST_EQ(' ', lexical_cast<char>(" "));
BOOST_TEST_THROWS(lexical_cast<char>(""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<char>("Test"), bad_lexical_cast);
BOOST_TEST_EQ('A', lexical_cast<char>(std::string("A")));
BOOST_TEST_EQ(' ', lexical_cast<char>(std::string(" ")));
BOOST_TEST_THROWS(
BOOST_CHECK_EQUAL('A', lexical_cast<char>('A'));
BOOST_CHECK_EQUAL(' ', lexical_cast<char>(' '));
BOOST_CHECK_EQUAL('1', lexical_cast<char>(1));
BOOST_CHECK_EQUAL('0', lexical_cast<char>(0));
BOOST_CHECK_THROW(lexical_cast<char>(123), bad_lexical_cast);
BOOST_CHECK_EQUAL('1', lexical_cast<char>(1.0));
BOOST_CHECK_EQUAL('1', lexical_cast<char>(true));
BOOST_CHECK_EQUAL('0', lexical_cast<char>(false));
BOOST_CHECK_EQUAL('A', lexical_cast<char>("A"));
BOOST_CHECK_EQUAL(' ', lexical_cast<char>(" "));
BOOST_CHECK_THROW(lexical_cast<char>(""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<char>("Test"), bad_lexical_cast);
BOOST_CHECK_EQUAL('A', lexical_cast<char>(std::string("A")));
BOOST_CHECK_EQUAL(' ', lexical_cast<char>(std::string(" ")));
BOOST_CHECK_THROW(
lexical_cast<char>(std::string("")), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<char>(std::string("Test")), bad_lexical_cast);
}
void test_conversion_to_int()
{
BOOST_TEST_EQ(1, lexical_cast<int>('1'));
BOOST_TEST_EQ(0, lexical_cast<int>('0'));
BOOST_TEST_THROWS(lexical_cast<int>('A'), bad_lexical_cast);
BOOST_TEST_EQ(1, lexical_cast<int>(1));
BOOST_TEST_EQ(1, lexical_cast<int>(1.0));
BOOST_CHECK_EQUAL(1, lexical_cast<int>('1'));
BOOST_CHECK_EQUAL(0, lexical_cast<int>('0'));
BOOST_CHECK_THROW(lexical_cast<int>('A'), bad_lexical_cast);
BOOST_CHECK_EQUAL(1, lexical_cast<int>(1));
BOOST_CHECK_EQUAL(1, lexical_cast<int>(1.0));
BOOST_TEST_EQ(
BOOST_CHECK_EQUAL(
(std::numeric_limits<int>::max)(),
lexical_cast<int>((std::numeric_limits<int>::max)()));
BOOST_TEST_EQ(
BOOST_CHECK_EQUAL(
(std::numeric_limits<int>::min)(),
lexical_cast<int>((std::numeric_limits<int>::min)()));
BOOST_TEST_THROWS(lexical_cast<int>(1.23), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>(1.23), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<int>(1e20), bad_lexical_cast);
BOOST_TEST_EQ(1, lexical_cast<int>(true));
BOOST_TEST_EQ(0, lexical_cast<int>(false));
BOOST_TEST_EQ(123, lexical_cast<int>("123"));
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(lexical_cast<int>(1e20), bad_lexical_cast);
BOOST_CHECK_EQUAL(1, lexical_cast<int>(true));
BOOST_CHECK_EQUAL(0, lexical_cast<int>(false));
BOOST_CHECK_EQUAL(123, lexical_cast<int>("123"));
BOOST_CHECK_THROW(
lexical_cast<int>(" 123"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<int>(""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<int>("Test"), bad_lexical_cast);
BOOST_TEST_EQ(123, lexical_cast<int>("123"));
BOOST_TEST_EQ(123, lexical_cast<int>(std::string("123")));
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(lexical_cast<int>(""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>("Test"), bad_lexical_cast);
BOOST_CHECK_EQUAL(123, lexical_cast<int>("123"));
BOOST_CHECK_EQUAL(123, lexical_cast<int>(std::string("123")));
BOOST_CHECK_THROW(
lexical_cast<int>(std::string(" 123")), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<int>(std::string("")), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<int>(std::string("Test")), bad_lexical_cast);
}
@@ -126,222 +193,201 @@ void test_conversion_with_nonconst_char()
std::vector<char> buffer;
buffer.push_back('1');
buffer.push_back('\0');
BOOST_TEST_EQ(boost::lexical_cast<int>(&buffer[0]), 1);
BOOST_CHECK_EQUAL(boost::lexical_cast<int>(&buffer[0]), 1);
std::vector<unsigned char> buffer2;
buffer2.push_back('1');
buffer2.push_back('\0');
BOOST_TEST_EQ(boost::lexical_cast<int>(&buffer2[0]), 1);
BOOST_CHECK_EQUAL(boost::lexical_cast<int>(&buffer2[0]), 1);
std::vector<unsigned char> buffer3;
buffer3.push_back('1');
buffer3.push_back('\0');
BOOST_TEST_EQ(boost::lexical_cast<int>(&buffer3[0]), 1);
BOOST_CHECK_EQUAL(boost::lexical_cast<int>(&buffer3[0]), 1);
#ifndef BOOST_LCAST_NO_WCHAR_T
std::vector<wchar_t> buffer4;
buffer4.push_back(L'1');
buffer4.push_back(L'\0');
BOOST_TEST_EQ(boost::lexical_cast<int>(&buffer4[0]), 1);
BOOST_CHECK_EQUAL(boost::lexical_cast<int>(&buffer4[0]), 1);
#endif
}
void test_conversion_to_double()
{
BOOST_TEST_CLOSE_FRACTION(1.0, lexical_cast<double>('1'), (std::numeric_limits<double>::epsilon()));
BOOST_TEST_THROWS(lexical_cast<double>('A'), bad_lexical_cast);
BOOST_TEST_CLOSE_FRACTION(1.0, lexical_cast<double>(1), (std::numeric_limits<double>::epsilon()));
BOOST_TEST_CLOSE_FRACTION(1.23, lexical_cast<double>(1.23), (std::numeric_limits<double>::epsilon()));
BOOST_TEST_CLOSE_FRACTION(1.234567890, lexical_cast<double>(1.234567890), std::numeric_limits<double>::epsilon());
BOOST_TEST_CLOSE_FRACTION(1.234567890, lexical_cast<double>("1.234567890"), std::numeric_limits<double>::epsilon());
BOOST_TEST_CLOSE_FRACTION(1.0, lexical_cast<double>(true), (std::numeric_limits<double>::epsilon()));
BOOST_TEST_CLOSE_FRACTION(0.0, lexical_cast<double>(false), (std::numeric_limits<double>::epsilon()));
BOOST_TEST_CLOSE_FRACTION(1.23, lexical_cast<double>("1.23"), (std::numeric_limits<double>::epsilon()));
BOOST_TEST_THROWS(lexical_cast<double>(""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<double>("Test"), bad_lexical_cast);
BOOST_TEST_CLOSE_FRACTION(1.23, lexical_cast<double>(std::string("1.23")), (std::numeric_limits<double>::epsilon()));
BOOST_TEST_THROWS(
BOOST_CHECK_CLOSE_FRACTION(1.0, lexical_cast<double>('1'), (std::numeric_limits<double>::epsilon()));
BOOST_CHECK_THROW(lexical_cast<double>('A'), bad_lexical_cast);
BOOST_CHECK_CLOSE_FRACTION(1.0, lexical_cast<double>(1), (std::numeric_limits<double>::epsilon()));
BOOST_CHECK_CLOSE_FRACTION(1.23, lexical_cast<double>(1.23), (std::numeric_limits<double>::epsilon()));
BOOST_CHECK_CLOSE_FRACTION(1.234567890, lexical_cast<double>(1.234567890), std::numeric_limits<double>::epsilon());
BOOST_CHECK_CLOSE_FRACTION(1.234567890, lexical_cast<double>("1.234567890"), std::numeric_limits<double>::epsilon());
BOOST_CHECK_CLOSE_FRACTION(1.0, lexical_cast<double>(true), (std::numeric_limits<double>::epsilon()));
BOOST_CHECK_CLOSE_FRACTION(0.0, lexical_cast<double>(false), (std::numeric_limits<double>::epsilon()));
BOOST_CHECK_CLOSE_FRACTION(1.23, lexical_cast<double>("1.23"), (std::numeric_limits<double>::epsilon()));
BOOST_CHECK_THROW(lexical_cast<double>(""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<double>("Test"), bad_lexical_cast);
BOOST_CHECK_CLOSE_FRACTION(1.23, lexical_cast<double>(std::string("1.23")), (std::numeric_limits<double>::epsilon()));
BOOST_CHECK_THROW(
lexical_cast<double>(std::string("")), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<double>(std::string("Test")), bad_lexical_cast);
}
void test_conversion_to_bool()
{
BOOST_TEST_EQ(true, lexical_cast<bool>('1'));
BOOST_TEST_EQ(false, lexical_cast<bool>('0'));
BOOST_TEST_THROWS(lexical_cast<bool>('A'), bad_lexical_cast);
BOOST_TEST_EQ(true, lexical_cast<bool>(1));
BOOST_TEST_EQ(false, lexical_cast<bool>(0));
BOOST_TEST_THROWS(lexical_cast<bool>(123), bad_lexical_cast);
BOOST_TEST_EQ(true, lexical_cast<bool>(1.0));
BOOST_TEST_THROWS(lexical_cast<bool>(-123), bad_lexical_cast);
BOOST_TEST_EQ(false, lexical_cast<bool>(0.0));
BOOST_TEST_THROWS(lexical_cast<bool>(1234), bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>('1'));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>('0'));
BOOST_CHECK_THROW(lexical_cast<bool>('A'), bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(1));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(0));
BOOST_CHECK_THROW(lexical_cast<bool>(123), bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(1.0));
BOOST_CHECK_THROW(lexical_cast<bool>(-123), bad_lexical_cast);
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(0.0));
BOOST_CHECK_THROW(lexical_cast<bool>(1234), bad_lexical_cast);
#if !defined(_CRAYC)
// Looks like a bug in CRAY compiler (throws bad_lexical_cast)
// TODO: localize the bug and report it to developers.
BOOST_TEST_EQ(true, lexical_cast<bool>(true));
BOOST_TEST_EQ(false, lexical_cast<bool>(false));
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(true));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(false));
#endif
BOOST_TEST_EQ(true, lexical_cast<bool>("1"));
BOOST_TEST_EQ(false, lexical_cast<bool>("0"));
BOOST_TEST_THROWS(lexical_cast<bool>(""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("Test"), bad_lexical_cast);
BOOST_TEST_EQ(true, lexical_cast<bool>("1"));
BOOST_TEST_EQ(false, lexical_cast<bool>("0"));
BOOST_TEST_EQ(true, lexical_cast<bool>(std::string("1")));
BOOST_TEST_EQ(false, lexical_cast<bool>(std::string("0")));
BOOST_CHECK_EQUAL(true, lexical_cast<bool>("1"));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>("0"));
BOOST_CHECK_THROW(lexical_cast<bool>(""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>("Test"), bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>("1"));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>("0"));
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(std::string("1")));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(std::string("0")));
BOOST_TEST_THROWS(lexical_cast<bool>(1.0001L), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>(2), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>(2u), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>(-1), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>(-2), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>(1.0001L), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>(2), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>(2u), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>(-1), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>(-2), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<bool>(std::string("")), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<bool>(std::string("Test")), bad_lexical_cast);
BOOST_TEST(lexical_cast<bool>("+1") == true);
BOOST_TEST(lexical_cast<bool>("+0") == false);
BOOST_TEST(lexical_cast<bool>("-0") == false);
BOOST_TEST_THROWS(lexical_cast<bool>("--0"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("-+-0"), bad_lexical_cast);
BOOST_TEST(lexical_cast<bool>("0") == false);
BOOST_TEST(lexical_cast<bool>("1") == true);
BOOST_TEST(lexical_cast<bool>("00") == false);
BOOST_TEST(lexical_cast<bool>("00000000000") == false);
BOOST_TEST(lexical_cast<bool>("000000000001") == true);
BOOST_TEST(lexical_cast<bool>("+00") == false );
BOOST_TEST(lexical_cast<bool>("-00") == false );
BOOST_TEST(lexical_cast<bool>("+00000000001") == true );
BOOST_TEST_THROWS(lexical_cast<bool>("020"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("00200"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("-00200"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("+00200"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("000000000002"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("-1"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("-0000000001"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("00000000011"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("001001"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("-00000000010"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>("-000000000100"), bad_lexical_cast);
BOOST_CHECK(lexical_cast<bool>("+1") == true );
BOOST_CHECK(lexical_cast<bool>("+0") == false );
BOOST_CHECK(lexical_cast<bool>("-0") == false );
BOOST_CHECK_THROW(lexical_cast<bool>("--0"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>("-+-0"), bad_lexical_cast);
}
void test_conversion_to_string()
{
char buf[] = "hello";
char* str = buf;
BOOST_TEST_EQ(str, lexical_cast<std::string>(str));
BOOST_TEST_EQ("A", lexical_cast<std::string>('A'));
BOOST_TEST_EQ(" ", lexical_cast<std::string>(' '));
BOOST_TEST_EQ("123", lexical_cast<std::string>(123));
BOOST_TEST_EQ("1.23", lexical_cast<std::string>(1.23));
BOOST_TEST_EQ("1.111111111", lexical_cast<std::string>(1.111111111));
BOOST_TEST_EQ("1", lexical_cast<std::string>(true));
BOOST_TEST_EQ("0", lexical_cast<std::string>(false));
BOOST_TEST_EQ("Test", lexical_cast<std::string>("Test"));
BOOST_TEST_EQ(" ", lexical_cast<std::string>(" "));
BOOST_TEST_EQ("", lexical_cast<std::string>(""));
BOOST_TEST_EQ("Test", lexical_cast<std::string>(std::string("Test")));
BOOST_TEST_EQ(" ", lexical_cast<std::string>(std::string(" ")));
BOOST_TEST_EQ("", lexical_cast<std::string>(std::string("")));
BOOST_CHECK_EQUAL(str, lexical_cast<std::string>(str));
BOOST_CHECK_EQUAL("A", lexical_cast<std::string>('A'));
BOOST_CHECK_EQUAL(" ", lexical_cast<std::string>(' '));
BOOST_CHECK_EQUAL("123", lexical_cast<std::string>(123));
BOOST_CHECK_EQUAL("1.23", lexical_cast<std::string>(1.23));
BOOST_CHECK_EQUAL("1.111111111", lexical_cast<std::string>(1.111111111));
BOOST_CHECK_EQUAL("1", lexical_cast<std::string>(true));
BOOST_CHECK_EQUAL("0", lexical_cast<std::string>(false));
BOOST_CHECK_EQUAL("Test", lexical_cast<std::string>("Test"));
BOOST_CHECK_EQUAL(" ", lexical_cast<std::string>(" "));
BOOST_CHECK_EQUAL("", lexical_cast<std::string>(""));
BOOST_CHECK_EQUAL("Test", lexical_cast<std::string>(std::string("Test")));
BOOST_CHECK_EQUAL(" ", lexical_cast<std::string>(std::string(" ")));
BOOST_CHECK_EQUAL("", lexical_cast<std::string>(std::string("")));
}
void test_conversion_from_to_wchar_t_alias()
{
BOOST_TEST_EQ(123u, lexical_cast<unsigned short>("123"));
BOOST_TEST_EQ(123u, lexical_cast<unsigned int>("123"));
BOOST_TEST_EQ(123u, lexical_cast<unsigned long>("123"));
BOOST_TEST_EQ(std::string("123"),
BOOST_CHECK_EQUAL(123u, lexical_cast<unsigned short>("123"));
BOOST_CHECK_EQUAL(123u, lexical_cast<unsigned int>("123"));
BOOST_CHECK_EQUAL(123u, lexical_cast<unsigned long>("123"));
BOOST_CHECK_EQUAL(std::string("123"),
lexical_cast<std::string>(static_cast<unsigned short>(123)));
BOOST_TEST_EQ(std::string("123"), lexical_cast<std::string>(123u));
BOOST_TEST_EQ(std::string("123"), lexical_cast<std::string>(123ul));
BOOST_CHECK_EQUAL(std::string("123"), lexical_cast<std::string>(123u));
BOOST_CHECK_EQUAL(std::string("123"), lexical_cast<std::string>(123ul));
}
void test_conversion_from_wchar_t()
{
#ifndef BOOST_LCAST_NO_WCHAR_T
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
BOOST_TEST_EQ(1, lexical_cast<int>(L'1'));
BOOST_TEST_THROWS(lexical_cast<int>(L'A'), bad_lexical_cast);
BOOST_CHECK_EQUAL(1, lexical_cast<int>(L'1'));
BOOST_CHECK_THROW(lexical_cast<int>(L'A'), bad_lexical_cast);
#endif
BOOST_TEST_EQ(123, lexical_cast<int>(L"123"));
BOOST_TEST_THROWS(lexical_cast<int>(L""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<int>(L"Test"), bad_lexical_cast);
BOOST_CHECK_EQUAL(123, lexical_cast<int>(L"123"));
BOOST_CHECK_THROW(lexical_cast<int>(L""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>(L"Test"), bad_lexical_cast);
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
BOOST_TEST_EQ(1.0, lexical_cast<double>(L'1'));
BOOST_TEST_THROWS(lexical_cast<double>(L'A'), bad_lexical_cast);
BOOST_CHECK_EQUAL(1.0, lexical_cast<double>(L'1'));
BOOST_CHECK_THROW(lexical_cast<double>(L'A'), bad_lexical_cast);
#endif
BOOST_TEST_EQ(1.23, lexical_cast<double>(L"1.23"));
BOOST_TEST_THROWS(lexical_cast<double>(L""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<double>(L"Test"), bad_lexical_cast);
BOOST_CHECK_EQUAL(1.23, lexical_cast<double>(L"1.23"));
BOOST_CHECK_THROW(lexical_cast<double>(L""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<double>(L"Test"), bad_lexical_cast);
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
BOOST_TEST_EQ(true, lexical_cast<bool>(L'1'));
BOOST_TEST_EQ(false, lexical_cast<bool>(L'0'));
BOOST_TEST_THROWS(lexical_cast<bool>(L'A'), bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(L'1'));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(L'0'));
BOOST_CHECK_THROW(lexical_cast<bool>(L'A'), bad_lexical_cast);
#endif
BOOST_TEST_EQ(true, lexical_cast<bool>(L"1"));
BOOST_TEST_EQ(false, lexical_cast<bool>(L"0"));
BOOST_TEST_THROWS(lexical_cast<bool>(L""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<bool>(L"Test"), bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(L"1"));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(L"0"));
BOOST_CHECK_THROW(lexical_cast<bool>(L""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>(L"Test"), bad_lexical_cast);
#endif
}
void test_conversion_to_wchar_t()
{
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
BOOST_TEST(L'1' == lexical_cast<wchar_t>(1));
BOOST_TEST(L'0' == lexical_cast<wchar_t>(0));
BOOST_TEST(L'1' == lexical_cast<wchar_t>('1'));
BOOST_TEST(L'0' == lexical_cast<wchar_t>('0'));
BOOST_TEST_THROWS(lexical_cast<wchar_t>(123), bad_lexical_cast);
BOOST_TEST(L'1' == lexical_cast<wchar_t>(1.0));
BOOST_TEST(L'0' == lexical_cast<wchar_t>(0.0));
BOOST_TEST(L'1' == lexical_cast<wchar_t>(true));
BOOST_TEST(L'0' == lexical_cast<wchar_t>(false));
BOOST_TEST(L'A' == lexical_cast<wchar_t>(L'A'));
BOOST_TEST(L' ' == lexical_cast<wchar_t>(L' '));
BOOST_TEST(L'A' == lexical_cast<wchar_t>(L"A"));
BOOST_TEST(L' ' == lexical_cast<wchar_t>(L" "));
BOOST_TEST_THROWS(lexical_cast<wchar_t>(L""), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<wchar_t>(L"Test"), bad_lexical_cast);
BOOST_TEST(L'A' == lexical_cast<wchar_t>(std::wstring(L"A")));
BOOST_TEST(L' ' == lexical_cast<wchar_t>(std::wstring(L" ")));
BOOST_TEST_THROWS(
BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(1));
BOOST_CHECK_EQUAL(L'0', lexical_cast<wchar_t>(0));
BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>('1'));
BOOST_CHECK_EQUAL(L'0', lexical_cast<wchar_t>('0'));
BOOST_CHECK_THROW(lexical_cast<wchar_t>(123), bad_lexical_cast);
BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(1.0));
BOOST_CHECK_EQUAL(L'0', lexical_cast<wchar_t>(0.0));
BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(true));
BOOST_CHECK_EQUAL(L'0', lexical_cast<wchar_t>(false));
BOOST_CHECK_EQUAL(L'A', lexical_cast<wchar_t>(L'A'));
BOOST_CHECK_EQUAL(L' ', lexical_cast<wchar_t>(L' '));
BOOST_CHECK_EQUAL(L'A', lexical_cast<wchar_t>(L"A"));
BOOST_CHECK_EQUAL(L' ', lexical_cast<wchar_t>(L" "));
BOOST_CHECK_THROW(lexical_cast<wchar_t>(L""), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<wchar_t>(L"Test"), bad_lexical_cast);
BOOST_CHECK_EQUAL(L'A', lexical_cast<wchar_t>(std::wstring(L"A")));
BOOST_CHECK_EQUAL(L' ', lexical_cast<wchar_t>(std::wstring(L" ")));
BOOST_CHECK_THROW(
lexical_cast<wchar_t>(std::wstring(L"")), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<wchar_t>(std::wstring(L"Test")), bad_lexical_cast);
#endif
BOOST_TEST(true);
BOOST_CHECK(true);
}
void test_conversion_from_wstring()
{
#ifndef BOOST_LCAST_NO_WCHAR_T
BOOST_TEST_EQ(123, lexical_cast<int>(std::wstring(L"123")));
BOOST_TEST_THROWS(
BOOST_CHECK_EQUAL(123, lexical_cast<int>(std::wstring(L"123")));
BOOST_CHECK_THROW(
lexical_cast<int>(std::wstring(L"")), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<int>(std::wstring(L"Test")), bad_lexical_cast);
BOOST_TEST_EQ(true, lexical_cast<bool>(std::wstring(L"1")));
BOOST_TEST_EQ(false, lexical_cast<bool>(std::wstring(L"0")));
BOOST_TEST_THROWS(
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(std::wstring(L"1")));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(std::wstring(L"0")));
BOOST_CHECK_THROW(
lexical_cast<bool>(std::wstring(L"")), bad_lexical_cast);
BOOST_TEST_THROWS(
BOOST_CHECK_THROW(
lexical_cast<bool>(std::wstring(L"Test")), bad_lexical_cast);
#endif
BOOST_TEST(true);
BOOST_CHECK(true);
}
void test_conversion_to_wstring()
@@ -349,24 +395,24 @@ void test_conversion_to_wstring()
#ifndef BOOST_LCAST_NO_WCHAR_T
wchar_t buf[] = L"hello";
wchar_t* str = buf;
BOOST_TEST(str == lexical_cast<std::wstring>(str));
BOOST_TEST(L"123" == lexical_cast<std::wstring>(123));
BOOST_TEST(L"1.23" == lexical_cast<std::wstring>(1.23));
BOOST_TEST(L"1" == lexical_cast<std::wstring>(true));
BOOST_TEST(L"0" == lexical_cast<std::wstring>(false));
BOOST_CHECK(str == lexical_cast<std::wstring>(str));
BOOST_CHECK(L"123" == lexical_cast<std::wstring>(123));
BOOST_CHECK(L"1.23" == lexical_cast<std::wstring>(1.23));
BOOST_CHECK(L"1" == lexical_cast<std::wstring>(true));
BOOST_CHECK(L"0" == lexical_cast<std::wstring>(false));
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
BOOST_TEST(L"A" == lexical_cast<std::wstring>(L'A'));
BOOST_TEST(L" " == lexical_cast<std::wstring>(L' '));
BOOST_TEST(L"A" == lexical_cast<std::wstring>('A'));
BOOST_CHECK(L"A" == lexical_cast<std::wstring>(L'A'));
BOOST_CHECK(L" " == lexical_cast<std::wstring>(L' '));
BOOST_CHECK(L"A" == lexical_cast<std::wstring>('A'));
#endif
BOOST_TEST(L"Test" == lexical_cast<std::wstring>(L"Test"));
BOOST_TEST(L" " == lexical_cast<std::wstring>(L" "));
BOOST_TEST(L"" == lexical_cast<std::wstring>(L""));
BOOST_TEST(L"Test" == lexical_cast<std::wstring>(std::wstring(L"Test")));
BOOST_TEST(L" " == lexical_cast<std::wstring>(std::wstring(L" ")));
BOOST_TEST(L"" == lexical_cast<std::wstring>(std::wstring(L"")));
BOOST_CHECK(L"Test" == lexical_cast<std::wstring>(L"Test"));
BOOST_CHECK(L" " == lexical_cast<std::wstring>(L" "));
BOOST_CHECK(L"" == lexical_cast<std::wstring>(L""));
BOOST_CHECK(L"Test" == lexical_cast<std::wstring>(std::wstring(L"Test")));
BOOST_CHECK(L" " == lexical_cast<std::wstring>(std::wstring(L" ")));
BOOST_CHECK(L"" == lexical_cast<std::wstring>(std::wstring(L"")));
#endif
BOOST_TEST(true);
BOOST_CHECK(true);
}
void test_bad_lexical_cast()
@@ -375,31 +421,42 @@ void test_bad_lexical_cast()
{
lexical_cast<int>(std::string("Test"));
BOOST_TEST(false); // Exception expected
BOOST_CHECK(false); // Exception expected
}
catch(const bad_lexical_cast &e)
{
BOOST_TEST(e.source_type() == typeid(std::string));
BOOST_TEST(e.target_type() == typeid(int));
BOOST_CHECK(e.source_type() == typeid(std::string));
BOOST_CHECK(e.target_type() == typeid(int));
}
}
void test_no_whitespace_stripping()
{
BOOST_TEST_THROWS(lexical_cast<int>(" 123"), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<int>("123 "), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>(" 123"), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>("123 "), bad_lexical_cast);
}
void test_volatile_types_conversions()
{
volatile int i1 = 100000;
BOOST_CHECK_EQUAL("100000", boost::lexical_cast<std::string>(i1));
volatile const int i2 = 100000;
BOOST_CHECK_EQUAL("100000", boost::lexical_cast<std::string>(i2));
volatile const long int i3 = 1000000;
BOOST_CHECK_EQUAL("1000000", boost::lexical_cast<std::string>(i3));
}
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
void test_traits()
{
typedef std::basic_string<char, my_traits<char> > my_string;
my_string const s("s");
BOOST_TEST(boost::lexical_cast<char>(s) == s[0]);
BOOST_TEST(boost::lexical_cast<my_string>(s) == s);
BOOST_TEST(boost::lexical_cast<my_string>(-1) == "-1");
BOOST_TEST(boost::lexical_cast<int>(my_string("42")) == 42);
BOOST_TEST(boost::lexical_cast<double>(my_string("1.0")) == 1.0);
BOOST_CHECK(boost::lexical_cast<char>(s) == s[0]);
BOOST_CHECK(boost::lexical_cast<my_string>(s) == s);
BOOST_CHECK(boost::lexical_cast<my_string>(-1) == "-1");
}
void test_wtraits()
@@ -407,18 +464,18 @@ void test_wtraits()
typedef std::basic_string<wchar_t, my_traits<wchar_t> > my_string;
my_string const s(L"s");
BOOST_TEST(boost::lexical_cast<wchar_t>(s) == s[0]);
BOOST_TEST(boost::lexical_cast<my_string>(s) == s);
BOOST_TEST(boost::lexical_cast<my_string>(-1) == L"-1");
BOOST_TEST(boost::lexical_cast<int>(my_string(L"42")) == 42);
BOOST_TEST(boost::lexical_cast<double>(my_string(L"1.0")) == 1.0);
BOOST_CHECK(boost::lexical_cast<wchar_t>(s) == s[0]);
BOOST_CHECK(boost::lexical_cast<my_string>(s) == s);
//BOOST_CHECK(boost::lexical_cast<my_string>(-1) == L"-1");
// Commented out because gcc 3.3 doesn't support this:
// basic_ostream<wchar_t, my_traits<wchar_t> > o; o << -1;
}
void test_allocator()
{
// Following test cause compilation error on MSVC2012:
// (Reason: cannot convert from 'std::_Wrap_alloc<_Alloc>' to 'const my_allocator<CharT>')
//
//
// MSVC developer is notified about this issue
#if !defined(_MSC_VER) || (_MSC_VER < 1700)
typedef std::basic_string< char
@@ -427,12 +484,12 @@ void test_allocator()
> my_string;
my_string s("s");
BOOST_TEST(boost::lexical_cast<char>(s) == s[0]);
BOOST_TEST(boost::lexical_cast<std::string>(s) == "s");
BOOST_TEST(boost::lexical_cast<my_string>(s) == s);
BOOST_TEST(boost::lexical_cast<my_string>(1) == "1");
BOOST_TEST(boost::lexical_cast<my_string>("s") == s);
BOOST_TEST(boost::lexical_cast<my_string>(std::string("s")) == s);
BOOST_CHECK(boost::lexical_cast<char>(s) == s[0]);
BOOST_CHECK(boost::lexical_cast<std::string>(s) == "s");
BOOST_CHECK(boost::lexical_cast<my_string>(s) == s);
BOOST_CHECK(boost::lexical_cast<my_string>(1) == "1");
BOOST_CHECK(boost::lexical_cast<my_string>("s") == s);
BOOST_CHECK(boost::lexical_cast<my_string>(std::string("s")) == s);
#endif
}
@@ -440,7 +497,7 @@ void test_wallocator()
{
// Following test cause compilation error on MSVC2012:
// (Reason: cannot convert from 'std::_Wrap_alloc<_Alloc>' to 'const my_allocator<CharT>')
//
//
// MSVC developer is notified about this issue
#if !defined(_MSC_VER) || (_MSC_VER < 1700)
typedef std::basic_string< wchar_t
@@ -449,15 +506,17 @@ void test_wallocator()
> my_string;
my_string s(L"s");
BOOST_TEST(boost::lexical_cast<wchar_t>(s) == s[0]);
BOOST_TEST(boost::lexical_cast<std::wstring>(s) == L"s");
BOOST_TEST(boost::lexical_cast<my_string>(s) == s);
BOOST_TEST(boost::lexical_cast<my_string>(1) == L"1");
BOOST_TEST(boost::lexical_cast<my_string>(L"s") == s);
BOOST_TEST(boost::lexical_cast<my_string>(std::wstring(L"s")) == s);
BOOST_CHECK(boost::lexical_cast<wchar_t>(s) == s[0]);
BOOST_CHECK(boost::lexical_cast<std::wstring>(s) == L"s");
BOOST_CHECK(boost::lexical_cast<my_string>(s) == s);
BOOST_CHECK(boost::lexical_cast<my_string>(1) == L"1");
BOOST_CHECK(boost::lexical_cast<my_string>(L"s") == s);
BOOST_CHECK(boost::lexical_cast<my_string>(std::wstring(L"s")) == s);
#endif
}
#endif
void test_char_types_conversions()
{
@@ -465,27 +524,27 @@ void test_char_types_conversions()
const unsigned char uc_arr[] = "Test array of chars";
const signed char sc_arr[] = "Test array of chars";
BOOST_TEST(boost::lexical_cast<std::string>(c_arr) == std::string(c_arr));
BOOST_TEST(boost::lexical_cast<std::string>(uc_arr) == std::string(c_arr));
BOOST_TEST(boost::lexical_cast<std::string>(sc_arr) == std::string(c_arr));
BOOST_CHECK(boost::lexical_cast<std::string>(c_arr) == std::string(c_arr));
BOOST_CHECK(boost::lexical_cast<std::string>(uc_arr) == std::string(c_arr));
BOOST_CHECK(boost::lexical_cast<std::string>(sc_arr) == std::string(c_arr));
BOOST_TEST(boost::lexical_cast<char>(c_arr[0]) == c_arr[0]);
BOOST_TEST(boost::lexical_cast<char>(uc_arr[0]) == c_arr[0]);
BOOST_TEST(boost::lexical_cast<char>(sc_arr[0]) == c_arr[0]);
BOOST_CHECK(boost::lexical_cast<char>(c_arr[0]) == c_arr[0]);
BOOST_CHECK(boost::lexical_cast<char>(uc_arr[0]) == c_arr[0]);
BOOST_CHECK(boost::lexical_cast<char>(sc_arr[0]) == c_arr[0]);
BOOST_TEST(boost::lexical_cast<unsigned char>(c_arr[0]) == uc_arr[0]);
BOOST_TEST(boost::lexical_cast<unsigned char>(uc_arr[0]) == uc_arr[0]);
BOOST_TEST(boost::lexical_cast<unsigned char>(sc_arr[0]) == uc_arr[0]);
BOOST_CHECK(boost::lexical_cast<unsigned char>(c_arr[0]) == uc_arr[0]);
BOOST_CHECK(boost::lexical_cast<unsigned char>(uc_arr[0]) == uc_arr[0]);
BOOST_CHECK(boost::lexical_cast<unsigned char>(sc_arr[0]) == uc_arr[0]);
BOOST_TEST(boost::lexical_cast<signed char>(c_arr[0]) == sc_arr[0]);
BOOST_TEST(boost::lexical_cast<signed char>(uc_arr[0]) == sc_arr[0]);
BOOST_TEST(boost::lexical_cast<signed char>(sc_arr[0]) == sc_arr[0]);
BOOST_CHECK(boost::lexical_cast<signed char>(c_arr[0]) == sc_arr[0]);
BOOST_CHECK(boost::lexical_cast<signed char>(uc_arr[0]) == sc_arr[0]);
BOOST_CHECK(boost::lexical_cast<signed char>(sc_arr[0]) == sc_arr[0]);
#ifndef BOOST_LCAST_NO_WCHAR_T
const wchar_t wc_arr[]=L"Test array of chars";
BOOST_TEST(boost::lexical_cast<std::wstring>(wc_arr) == std::wstring(wc_arr));
BOOST_TEST(boost::lexical_cast<wchar_t>(wc_arr[0]) == wc_arr[0]);
BOOST_CHECK(boost::lexical_cast<std::wstring>(wc_arr) == std::wstring(wc_arr));
BOOST_CHECK(boost::lexical_cast<wchar_t>(wc_arr[0]) == wc_arr[0]);
#endif
}
@@ -515,87 +574,49 @@ IStream& operator>>(IStream& istr, foo_operators_test& foo)
void operators_overload_test()
{
foo_operators_test foo;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(foo), "2");
BOOST_TEST_EQ((boost::lexical_cast<foo_operators_test>("2")).f, 2);
BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(foo), "2");
BOOST_CHECK_EQUAL((boost::lexical_cast<foo_operators_test>("2")).f, 2);
// Must compile
(void)boost::lexical_cast<foo_operators_test>(foo);
}
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
void test_char16_conversions()
{
// There's no std::ctype<char16_t> in Xcode_15.0.1
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(__APPLE__)
BOOST_TEST(u"100" == lexical_cast<std::u16string>(u"100"));
#if !defined(_LIBCPP_VERSION) // libc++ also does not have std::ctype<char16_t>
BOOST_TEST(u"1" == lexical_cast<std::u16string>(u'1'));
#endif
#endif
BOOST_CHECK(u"100" == lexical_cast<std::u16string>(u"100"));
BOOST_CHECK(u"1" == lexical_cast<std::u16string>(u'1'));
}
#endif
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
void test_char32_conversions()
{
// There's no std::ctype<char32_t> in Xcode_15.0.1
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(__APPLE__)
BOOST_TEST(U"100" == lexical_cast<std::u32string>(U"100"));
#if !defined(_LIBCPP_VERSION) // libc++ also does not have std::ctype<char32_t>
BOOST_TEST(U"1" == lexical_cast<std::u32string>(U'1'));
#endif
#endif
BOOST_CHECK(U"100" == lexical_cast<std::u32string>(U"100"));
BOOST_CHECK(U"1" == lexical_cast<std::u32string>(U'1'));
}
#endif
void test_getting_pointer_to_function()
{
// Just checking that &lexical_cast<To, From> is not ambiguous
typedef char char_arr[4];
typedef char char_arr[4];
typedef int(*f1)(const char_arr&);
f1 p1 = &boost::lexical_cast<int, char_arr>;
BOOST_TEST(p1);
BOOST_CHECK(p1);
typedef int(*f2)(const std::string&);
f2 p2 = &boost::lexical_cast<int, std::string>;
BOOST_TEST(p2);
BOOST_CHECK(p2);
typedef std::string(*f3)(const int&);
f3 p3 = &boost::lexical_cast<std::string, int>;
BOOST_TEST(p3);
BOOST_CHECK(p3);
std::vector<int> values;
std::vector<std::string> ret;
std::transform(values.begin(), values.end(), ret.begin(), boost::lexical_cast<std::string, int>);
}
int main()
{
test_conversion_to_char();
test_conversion_to_int();
test_conversion_to_double();
test_conversion_to_bool();
test_conversion_from_to_wchar_t_alias();
test_conversion_to_string();
test_conversion_with_nonconst_char();
#ifndef BOOST_LCAST_NO_WCHAR_T
test_conversion_from_wchar_t();
test_conversion_to_wchar_t();
test_conversion_from_wstring();
test_conversion_to_wstring();
#endif
test_bad_lexical_cast();
test_no_whitespace_stripping();
test_traits();
test_wtraits();
test_allocator();
test_wallocator();
test_char_types_conversions();
operators_overload_test();
test_char16_conversions();
test_char32_conversions();
test_getting_pointer_to_function();
return boost::report_errors();
}
@@ -2,17 +2,22 @@
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2013-2026.
// Copyright Antony Polukhin, 2013.
//
// 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/lexical_cast.hpp>
#include <boost/type.hpp>
int main()
#define BOOST_INCLUDE_MAIN
#include <boost/test/test_tools.hpp>
int test_main(int, char*[])
{
boost::lexical_cast<char*>("Hello");
return 1;
BOOST_CHECK(false); // suppressing warning about 'boost::unit_test::{anonymous}::unit_test_log' defined but not used
return 0;
}
@@ -2,15 +2,17 @@
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011-2026.
// Copyright Antony Polukhin, 2011.
//
// 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/lexical_cast.hpp>
#include <boost/config.hpp>
#include <boost/static_assert.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
@@ -27,6 +29,10 @@ void parseDate()
int main()
{
#ifdef BOOST_MSVC
BOOST_STATIC_ASSERT((boost::is_same<wchar_t, unsigned short>::value));
#endif
parseDate();
return ::boost::lexical_cast<int>(L"1000") == 1000;
}
@@ -0,0 +1,48 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011.
//
// 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/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
using namespace boost;
void test_typedefed_wchar_t_runtime()
{
#ifndef BOOST_LCAST_NO_WCHAR_T
#ifdef BOOST_MSVC
BOOST_STATIC_ASSERT((boost::is_same<wchar_t, unsigned short>::value));
BOOST_CHECK_EQUAL(boost::lexical_cast<int>(L'A'), 65);
BOOST_CHECK_EQUAL(boost::lexical_cast<int>(L'B'), 66);
BOOST_CHECK_EQUAL(boost::lexical_cast<wchar_t>(L"65"), 65);
BOOST_CHECK_EQUAL(boost::lexical_cast<wchar_t>(L"66"), 66);
#endif
#endif
BOOST_CHECK(1);
}
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast typedefed wchar_t runtime test");
suite->add(BOOST_TEST_CASE(&test_typedefed_wchar_t_runtime));
return suite;
}
@@ -12,18 +12,12 @@
// implementation has changed and it does not use stringstream for casts
// to integral types
#include <boost/config.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/cstdint.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/test/unit_test.hpp>
#include <string>
#include <sstream>
#include <boost/lexical_cast.hpp>
#ifdef BOOST_MSVC
# pragma warning(disable: 4127) // conditional expression is constant
#endif
using namespace boost;
@@ -39,22 +33,22 @@ void test_too_long_number(CharT zero)
std::basic_ostringstream<CharT> o;
o << (limits::max)() << zero;
s = o.str();
BOOST_TEST_THROWS(lexical_cast<T>(s), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(s), bad_lexical_cast);
s[s.size()-1] += static_cast<CharT>(9); // '0' -> '9'
BOOST_TEST_THROWS(lexical_cast<T>(s), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(s), bad_lexical_cast);
if (limits::is_signed)
if(limits::is_signed)
{
std::basic_ostringstream<CharT> o2;
o2 << (limits::min)() << zero;
s = o2.str();
BOOST_TEST_THROWS(lexical_cast<T>(s), bad_lexical_cast);
std::basic_ostringstream<CharT> o;
o << (limits::min)() << zero;
s = o.str();
BOOST_CHECK_THROW(lexical_cast<T>(s), bad_lexical_cast);
s[s.size()-1] += static_cast<CharT>(9); // '0' -> '9'
BOOST_TEST_THROWS(lexical_cast<T>(s), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<T>(s), bad_lexical_cast);
}
}
int main()
void test_vc8_bug()
{
test_too_long_number<boost::intmax_t>('0');
test_too_long_number<boost::uintmax_t>('0');
@@ -62,6 +56,12 @@ int main()
test_too_long_number<boost::intmax_t>(L'0');
test_too_long_number<boost::uintmax_t>(L'0');
#endif
return boost::report_errors();
}
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast vc8 bug unit test");
suite->add(BOOST_TEST_CASE(test_vc8_bug));
return suite;
}
@@ -2,20 +2,24 @@
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011-2026.
// Copyright Antony Polukhin, 2011-2012.
//
// 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/core/lightweight_test.hpp>
#include <boost/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/lexical_cast.hpp>
#include <boost/test/unit_test.hpp>
#if defined(BOOST_USE_MODULES)
#undef BOOST_USE_MODULES
#endif
#include <boost/lexical_cast/detail/lcast_char_constants.hpp>
using namespace boost;
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
#define BOOST_LCAST_NO_WCHAR_T
@@ -32,14 +36,14 @@ void test_impl(const CharT* wc_arr)
// Following tests depend on realization of std::locale
// and pass for popular compilers and STL realizations
BOOST_TEST(boost::lexical_cast<wide_char>(c_arr[0]) == wc_arr[0]);
BOOST_TEST(boost::lexical_cast<wide_string>(c_arr) == wide_string(wc_arr));
BOOST_CHECK(boost::lexical_cast<wide_char>(c_arr[0]) == wc_arr[0]);
BOOST_CHECK(boost::lexical_cast<wide_string>(c_arr) == wide_string(wc_arr));
BOOST_TEST(boost::lexical_cast<wide_string>(sc_arr) == wide_string(wc_arr) );
BOOST_TEST(boost::lexical_cast<wide_string>(uc_arr) == wide_string(wc_arr) );
BOOST_CHECK(boost::lexical_cast<wide_string>(sc_arr) == wide_string(wc_arr) );
BOOST_CHECK(boost::lexical_cast<wide_string>(uc_arr) == wide_string(wc_arr) );
BOOST_TEST(boost::lexical_cast<wide_char>(uc_arr[0]) == wc_arr[0]);
BOOST_TEST(boost::lexical_cast<wide_char>(sc_arr[0]) == wc_arr[0]);
BOOST_CHECK_EQUAL(boost::lexical_cast<wide_char>(uc_arr[0]), wc_arr[0]);
BOOST_CHECK_EQUAL(boost::lexical_cast<wide_char>(sc_arr[0]), wc_arr[0]);
}
@@ -48,25 +52,25 @@ void test_char_types_conversions_wchar_t()
#ifndef BOOST_LCAST_NO_WCHAR_T
test_impl(L"Test array of chars");
wchar_t c = boost::detail::lcast_char_constants<wchar_t>::zero;
BOOST_TEST(L'0' == c);
BOOST_CHECK_EQUAL(L'0', c);
c = boost::detail::lcast_char_constants<wchar_t>::minus;
BOOST_TEST(L'-' == c);
BOOST_CHECK_EQUAL(L'-', c);
c = boost::detail::lcast_char_constants<wchar_t>::plus;
BOOST_TEST(L'+' == c);
BOOST_CHECK_EQUAL(L'+', c);
c = boost::detail::lcast_char_constants<wchar_t>::lowercase_e;
BOOST_TEST(L'e' == c);
BOOST_CHECK_EQUAL(L'e', c);
c = boost::detail::lcast_char_constants<wchar_t>::capital_e;
BOOST_TEST(L'E' == c);
BOOST_CHECK_EQUAL(L'E', c);
c = boost::detail::lcast_char_constants<wchar_t>::c_decimal_separator;
BOOST_TEST(L'.' == c);
BOOST_CHECK_EQUAL(L'.', c);
#endif
BOOST_TEST(true);
BOOST_CHECK(true);
}
void test_char_types_conversions_char16_t()
@@ -74,25 +78,25 @@ void test_char_types_conversions_char16_t()
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
test_impl(u"Test array of chars");
char16_t c = boost::detail::lcast_char_constants<char16_t>::zero;
BOOST_TEST(u'0' == c);
BOOST_CHECK_EQUAL(u'0', c);
c = boost::detail::lcast_char_constants<char16_t>::minus;
BOOST_TEST(u'-' == c);
BOOST_CHECK_EQUAL(u'-', c);
c = boost::detail::lcast_char_constants<char16_t>::plus;
BOOST_TEST(u'+' == c);
BOOST_CHECK_EQUAL(u'+', c);
c = boost::detail::lcast_char_constants<char16_t>::lowercase_e;
BOOST_TEST(u'e' == c);
BOOST_CHECK_EQUAL(u'e', c);
c = boost::detail::lcast_char_constants<char16_t>::capital_e;
BOOST_TEST(u'E' == c);
BOOST_CHECK_EQUAL(u'E', c);
c = boost::detail::lcast_char_constants<char16_t>::c_decimal_separator;
BOOST_TEST(u'.' == c);
BOOST_CHECK_EQUAL(u'.', c);
#endif
BOOST_TEST(true);
BOOST_CHECK(true);
}
void test_char_types_conversions_char32_t()
@@ -100,32 +104,34 @@ void test_char_types_conversions_char32_t()
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES)
test_impl(U"Test array of chars");
char32_t c = boost::detail::lcast_char_constants<char32_t>::zero;
BOOST_TEST(U'0' == c);
BOOST_CHECK_EQUAL(U'0', c);
c = boost::detail::lcast_char_constants<char32_t>::minus;
BOOST_TEST(U'-' == c);
BOOST_CHECK_EQUAL(U'-', c);
c = boost::detail::lcast_char_constants<char32_t>::plus;
BOOST_TEST(U'+' == c);
BOOST_CHECK_EQUAL(U'+', c);
c = boost::detail::lcast_char_constants<char32_t>::lowercase_e;
BOOST_TEST(U'e' == c);
BOOST_CHECK_EQUAL(U'e', c);
c = boost::detail::lcast_char_constants<char32_t>::capital_e;
BOOST_TEST(U'E', == c);
BOOST_CHECK_EQUAL(U'E', c);
c = boost::detail::lcast_char_constants<char32_t>::c_decimal_separator;
BOOST_TEST(U'.' == c);
BOOST_CHECK_EQUAL(U'.', c);
#endif
BOOST_TEST(true);
BOOST_CHECK(true);
}
int main()
unit_test::test_suite *init_unit_test_suite(int, char *[])
{
test_char_types_conversions_wchar_t();
test_char_types_conversions_char16_t();
test_char_types_conversions_char32_t();
unit_test::test_suite *suite =
BOOST_TEST_SUITE("lexical_cast char => wide characters unit test (widening test)");
suite->add(BOOST_TEST_CASE(&test_char_types_conversions_wchar_t));
suite->add(BOOST_TEST_CASE(&test_char_types_conversions_char16_t));
suite->add(BOOST_TEST_CASE(&test_char_types_conversions_char32_t));
return boost::report_errors();
return suite;
}
-78
View File
@@ -1,78 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012-2026.
//
// 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/config.hpp>
#if defined(__INTEL_COMPILER)
#pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif
#include <boost/core/lightweight_test.hpp>
#include <boost/range/iterator_range.hpp>
#include <cstdlib>
#if defined(BOOST_USE_MODULES)
#undef BOOST_USE_MODULES
#endif
#include <boost/lexical_cast.hpp>
#include "escape_struct.hpp"
#ifndef BOOST_NO_EXCEPTIONS
#error "This test must be compiled with -DBOOST_NO_EXCEPTIONS"
#endif
namespace boost {
BOOST_NORETURN void throw_exception(std::exception const & ) {
static int state = 0;
++ state;
EscapeStruct v("");
switch(state) {
case 1:
lexical_cast<char>(v); // should call boost::throw_exception
std::exit(1);
case 2:
lexical_cast<unsigned char>(v); // should call boost::throw_exception
std::exit(2);
}
std::exit(boost::report_errors());
}
}
void test_exceptions_off() {
using namespace boost;
EscapeStruct v("");
v = lexical_cast<EscapeStruct>(100);
BOOST_TEST_EQ(lexical_cast<int>(v), 100);
BOOST_TEST_EQ(lexical_cast<unsigned int>(v), 100u);
v = lexical_cast<EscapeStruct>(0.0);
BOOST_TEST_EQ(lexical_cast<double>(v), 0.0);
BOOST_TEST_EQ(lexical_cast<short>(100), 100);
BOOST_TEST_EQ(lexical_cast<float>(0.0), 0.0);
lexical_cast<short>(700000); // should call boost::throw_exception
BOOST_TEST(false);
}
int main() {
test_exceptions_off();
return boost::report_errors();
}
-143
View File
@@ -1,143 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012-2026.
//
// 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/core/lightweight_test.hpp>
#include <boost/range/iterator_range.hpp>
#include "escape_struct.hpp"
#include <vector>
#include <boost/lexical_cast.hpp>
using namespace boost;
// Testing compilation and some basic usage with BOOST_NO_STD_LOCALE
// Tests are mainly copyied from empty_input_test.cpp (something
// new added to test_empty_3)
#ifndef BOOST_NO_STD_LOCALE
#error "This test must be compiled with -DBOOST_NO_STD_LOCALE"
#endif
template <class T>
void do_test_on_empty_input(T& v)
{
BOOST_TEST_THROWS(lexical_cast<int>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<float>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<double>(v), bad_lexical_cast);
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
BOOST_TEST_THROWS(lexical_cast<long double>(v), bad_lexical_cast);
#endif
BOOST_TEST_THROWS(lexical_cast<unsigned int>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned short>(v), bad_lexical_cast);
#if defined(BOOST_HAS_LONG_LONG)
BOOST_TEST_THROWS(lexical_cast<boost::ulong_long_type>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<boost::long_long_type>(v), bad_lexical_cast);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_TEST_THROWS(lexical_cast<unsigned __int64>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<__int64>(v), bad_lexical_cast);
#endif
}
void test_empty_1()
{
boost::iterator_range<char*> v;
do_test_on_empty_input(v);
BOOST_TEST_EQ(lexical_cast<std::string>(v), std::string());
BOOST_TEST_THROWS(lexical_cast<char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(v), bad_lexical_cast);
boost::iterator_range<const char*> cv;
do_test_on_empty_input(cv);
BOOST_TEST_EQ(lexical_cast<std::string>(cv), std::string());
BOOST_TEST_THROWS(lexical_cast<char>(cv), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(cv), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(cv), bad_lexical_cast);
const boost::iterator_range<const char*> ccv;
do_test_on_empty_input(ccv);
BOOST_TEST_EQ(lexical_cast<std::string>(ccv), std::string());
BOOST_TEST_THROWS(lexical_cast<char>(ccv), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(ccv), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(ccv), bad_lexical_cast);
}
void test_empty_2()
{
std::string v;
do_test_on_empty_input(v);
BOOST_TEST_THROWS(lexical_cast<char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(v), bad_lexical_cast);
}
void test_empty_3()
{
EscapeStruct v("");
do_test_on_empty_input(v);
BOOST_TEST_THROWS(lexical_cast<char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(v), bad_lexical_cast);
v = lexical_cast<EscapeStruct>(100);
BOOST_TEST_EQ(lexical_cast<int>(v), 100);
BOOST_TEST_EQ(lexical_cast<unsigned int>(v), 100u);
v = lexical_cast<EscapeStruct>(0.0);
BOOST_TEST_EQ(lexical_cast<double>(v), 0.0);
}
namespace std {
inline std::ostream & operator<<(std::ostream & out, const std::vector<long> & v)
{
std::ostream_iterator<long> it(out);
std::copy(v.begin(), v.end(), it);
BOOST_TEST(out);
return out;
}
}
void test_empty_4()
{
std::vector<long> v;
do_test_on_empty_input(v);
BOOST_TEST_THROWS(lexical_cast<char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<unsigned char>(v), bad_lexical_cast);
BOOST_TEST_THROWS(lexical_cast<signed char>(v), bad_lexical_cast);
}
struct my_string {
friend std::ostream &operator<<(std::ostream& sout, my_string const&/* st*/) {
return sout << "";
}
};
void test_empty_5()
{
my_string st;
BOOST_TEST_EQ(boost::lexical_cast<std::string>(st), std::string());;
}
int main()
{
test_empty_1();
test_empty_2();
test_empty_3();
test_empty_4();
test_empty_5();
return boost::report_errors();
}
+101
View File
@@ -0,0 +1,101 @@
// boost utility cast test program -----------------------------------------//
// (C) Copyright Beman Dawes, Dave Abrahams 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)
// See http://www.boost.org for most recent version including documentation.
// Revision History
// 28 Set 04 factored out numeric_cast<> test (Fernando Cacciola)
// 20 Jan 01 removed use of <limits> for portability to raw GCC (David Abrahams)
// 28 Jun 00 implicit_cast removed (Beman Dawes)
// 30 Aug 99 value_cast replaced by numeric_cast
// 3 Aug 99 Initial Version
#include <iostream>
#include <climits>
#include <cfloat> // for DBL_MAX (Peter Schmid)
#include <boost/cast.hpp>
#include "boost/test/minimal.hpp"
# if SCHAR_MAX == LONG_MAX
# error "This test program doesn't work if SCHAR_MAX == LONG_MAX"
# endif
using namespace boost;
using std::cout;
int test_main( int , char * [] )
{
# ifdef NDEBUG
cout << "NDEBUG is defined\n";
# else
cout << "NDEBUG is not defined\n";
# endif
cout << "\nBeginning tests...\n";
// test implicit_cast and numeric_cast -------------------------------------//
// tests which should succeed
long small_value = 1;
long small_negative_value = -1;
long large_value = LONG_MAX;
long large_negative_value = LONG_MIN;
signed char c = 0;
c = static_cast<signed char>(large_value);
c = numeric_cast<signed char>( small_value );
BOOST_CHECK( c == 1 );
c = 0;
c = numeric_cast<signed char>( small_value );
BOOST_CHECK( c == 1 );
c = 0;
c = numeric_cast<signed char>( small_negative_value );
BOOST_CHECK( c == -1 );
// These tests courtesy of Joe R NWP Swatosh<joe.r.swatosh@usace.army.mil>
BOOST_CHECK( 0.0f == numeric_cast<float>( 0.0 ) );
BOOST_CHECK( 0.0 == numeric_cast<double>( 0.0 ) );
// tests which should result in errors being detected
bool caught_exception = false;
try { c = numeric_cast<signed char>( large_value ); }
catch (bad_numeric_cast)
{ cout<<"caught bad_numeric_cast #1\n"; caught_exception = true; }
BOOST_CHECK ( caught_exception );
caught_exception = false;
try { c = numeric_cast<signed char>( large_negative_value ); }
catch (bad_numeric_cast)
{ cout<<"caught bad_numeric_cast #2\n"; caught_exception = true; }
BOOST_CHECK ( caught_exception );
unsigned long ul;
caught_exception = false;
try { ul = numeric_cast<unsigned long>( large_negative_value ); }
catch (bad_numeric_cast)
{ cout<<"caught bad_numeric_cast #3\n"; caught_exception = true; }
BOOST_CHECK ( caught_exception );
caught_exception = false;
try { ul = numeric_cast<unsigned long>( small_negative_value ); }
catch (bad_numeric_cast)
{ cout<<"caught bad_numeric_cast #4\n"; caught_exception = true; }
BOOST_CHECK ( caught_exception );
caught_exception = false;
try { numeric_cast<int>( DBL_MAX ); }
catch (bad_numeric_cast)
{ cout<<"caught bad_numeric_cast #5\n"; caught_exception = true; }
BOOST_CHECK ( caught_exception );
(void)ul; // Supressing GCC warning about set but unused wariable
return 0 ;
}
-195
View File
@@ -1,195 +0,0 @@
// Copyright Antony Polukhin, 2012-2026.
//
// 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_USE_MODULES)
#undef BOOST_USE_MODULES
#endif
#include <boost/lexical_cast/detail/converter_lexical.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/array.hpp>
#include <boost/container/string.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/utility/string_view.hpp>
#include <type_traits>
template <class T>
struct is_optimized_stream : std::false_type {};
template <class CharT, class Traits, std::size_t CharacterBufferSize>
struct is_optimized_stream< boost::detail::lcast::optimized_src_stream<CharT, Traits, CharacterBufferSize> > : std::true_type {};
template <class Source, class Target>
static void assert_optimized_stream()
{
BOOST_TEST((is_optimized_stream<
typename boost::detail::lexical_converter_impl<Source, Target>::from_src_stream
>::value));
}
template <class T>
static void test_optimized_types_to_string_const()
{
namespace de = boost::detail;
typedef de::lexical_cast_stream_traits<T, std::string> trait_1;
BOOST_TEST((std::is_same<typename trait_1::src_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_1::target_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_1::char_type, char>::value));
assert_optimized_stream<T, std::string>();
assert_optimized_stream<T, boost::container::string>();
typedef de::lexical_cast_stream_traits<const T, std::string> trait_2;
BOOST_TEST((std::is_same<typename trait_2::src_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_2::target_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_2::char_type, char>::value));
typedef de::lexical_cast_stream_traits<T, std::wstring> trait_3;
BOOST_TEST((std::is_same<typename trait_3::src_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_3::target_char_t, wchar_t>::value));
BOOST_TEST((std::is_same<typename trait_3::char_type, wchar_t>::value));
assert_optimized_stream<T, std::wstring>();
assert_optimized_stream<T, boost::container::wstring>();
}
template <class T>
static void test_optimized_types_to_string()
{
test_optimized_types_to_string_const<T>();
namespace de = boost::detail;
typedef de::lexical_cast_stream_traits<std::string, T> trait_4;
BOOST_TEST((std::is_same<typename trait_4::src_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_4::target_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_4::char_type, char>::value));
assert_optimized_stream<std::string, T>();
typedef de::lexical_cast_stream_traits<const std::string, T> trait_5;
BOOST_TEST((std::is_same<typename trait_5::src_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_5::target_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_5::char_type, char>::value));
typedef de::lexical_cast_stream_traits<const std::wstring, T> trait_6;
BOOST_TEST((std::is_same<typename trait_6::src_char_t, wchar_t>::value));
BOOST_TEST((std::is_same<typename trait_6::target_char_t, char>::value));
BOOST_TEST((std::is_same<typename trait_6::char_type, wchar_t>::value));
}
template <class T>
static void test_optimized_types_to_x_string()
{
test_optimized_types_to_string<T>();
assert_optimized_stream<std::wstring, T>();
assert_optimized_stream<boost::container::wstring, T>();
}
template <class T>
static void test_optimized_types_to_wstring()
{
assert_optimized_stream<std::wstring, T>();
assert_optimized_stream<T, std::wstring>();
assert_optimized_stream<boost::container::wstring, T>();
assert_optimized_stream<T, boost::container::wstring>();
}
void test_metafunctions()
{
test_optimized_types_to_x_string<bool>();
test_optimized_types_to_x_string<char>();
test_optimized_types_to_x_string<unsigned char>();
test_optimized_types_to_x_string<signed char>();
test_optimized_types_to_x_string<short>();
test_optimized_types_to_x_string<unsigned short>();
test_optimized_types_to_x_string<int>();
test_optimized_types_to_x_string<unsigned int>();
test_optimized_types_to_x_string<long>();
test_optimized_types_to_x_string<unsigned long>();
#if defined(BOOST_HAS_LONG_LONG)
test_optimized_types_to_x_string<boost::ulong_long_type>();
test_optimized_types_to_x_string<boost::long_long_type>();
#elif defined(BOOST_HAS_MS_INT64)
test_optimized_types_to_x_string<unsigned __int64>();
test_optimized_types_to_x_string<__int64>();
#endif
test_optimized_types_to_string<float>();
test_optimized_types_to_string<double>();
test_optimized_types_to_string<long double>();
test_optimized_types_to_string<std::string>();
test_optimized_types_to_string<char*>();
//test_optimized_types_to_string<char[5]>();
//test_optimized_types_to_string<char[1]>();
test_optimized_types_to_string<unsigned char*>();
//test_optimized_types_to_string<unsigned char[5]>();
//test_optimized_types_to_string<unsigned char[1]>();
test_optimized_types_to_string<signed char*>();
//test_optimized_types_to_string<signed char[5]>();
//test_optimized_types_to_string<signed char[1]>();
test_optimized_types_to_string<boost::array<char, 1> >();
test_optimized_types_to_string<boost::array<char, 5> >();
test_optimized_types_to_string<boost::array<unsigned char, 1> >();
test_optimized_types_to_string<boost::array<unsigned char, 5> >();
test_optimized_types_to_string<boost::array<signed char, 1> >();
test_optimized_types_to_string<boost::array<signed char, 5> >();
test_optimized_types_to_string<boost::iterator_range<char*> >();
test_optimized_types_to_string<boost::iterator_range<unsigned char*> >();
test_optimized_types_to_string<boost::iterator_range<signed char*> >();
test_optimized_types_to_string_const<boost::array<const char, 1> >();
test_optimized_types_to_string_const<boost::array<const char, 5> >();
test_optimized_types_to_string_const<boost::array<const unsigned char, 1> >();
test_optimized_types_to_string_const<boost::array<const unsigned char, 5> >();
test_optimized_types_to_string_const<boost::array<const signed char, 1> >();
test_optimized_types_to_string_const<boost::array<const signed char, 5> >();
test_optimized_types_to_string_const<boost::iterator_range<const char*> >();
test_optimized_types_to_string_const<boost::iterator_range<const unsigned char*> >();
test_optimized_types_to_string_const<boost::iterator_range<const signed char*> >();
#ifndef BOOST_NO_CXX11_HDR_ARRAY
test_optimized_types_to_string<std::array<char, 1> >();
test_optimized_types_to_string<std::array<char, 5> >();
test_optimized_types_to_string<std::array<unsigned char, 1> >();
test_optimized_types_to_string<std::array<unsigned char, 5> >();
test_optimized_types_to_string<std::array<signed char, 1> >();
test_optimized_types_to_string<std::array<signed char, 5> >();
test_optimized_types_to_string_const<std::array<const char, 1> >();
test_optimized_types_to_string_const<std::array<const char, 5> >();
test_optimized_types_to_string_const<std::array<const unsigned char, 1> >();
test_optimized_types_to_string_const<std::array<const unsigned char, 5> >();
test_optimized_types_to_string_const<std::array<const signed char, 1> >();
test_optimized_types_to_string_const<std::array<const signed char, 5> >();
test_optimized_types_to_wstring<std::array<wchar_t, 42>>();
test_optimized_types_to_wstring<std::array<const wchar_t, 42>>();
#endif
test_optimized_types_to_wstring<wchar_t*>();
test_optimized_types_to_wstring<const wchar_t*>();
test_optimized_types_to_wstring<boost::iterator_range<const wchar_t*>>();
test_optimized_types_to_wstring<boost::iterator_range<wchar_t*>>();
test_optimized_types_to_string<boost::string_view>();
test_optimized_types_to_wstring<boost::basic_string_view<wchar_t>>();
#ifndef BOOST_NO_CXX17_HDR_STRING_VIEW
test_optimized_types_to_string<std::string_view>();
test_optimized_types_to_wstring<std::basic_string_view<wchar_t>>();
#endif
}
int main()
{
test_metafunctions();
return boost::report_errors();
}
-49
View File
@@ -1,49 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2012-2026.
//
// 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/utility/string_view.hpp>
#ifndef BOOST_NO_CXX17_HDR_STRING_VIEW
#include <string_view>
#endif
#include <boost/core/lightweight_test.hpp>
#include <boost/lexical_cast.hpp>
template <class StringView>
void test_string_view_conversion() {
using boost::lexical_cast;
StringView sw = "1";
BOOST_TEST_EQ(lexical_cast<std::string>(sw), "1");
BOOST_TEST_EQ(lexical_cast<int>(sw), 1);
sw = StringView("a\0b", 3);
BOOST_TEST_EQ(lexical_cast<std::string>(sw), std::string("a\0b", 3));
sw = StringView("a\0b", 4);
BOOST_TEST_EQ(lexical_cast<std::string>(sw), std::string("a\0b", 4));
sw = StringView("\0a\0", 3);
BOOST_TEST_EQ(lexical_cast<std::string>(sw), std::string("\0a\0", 3));
}
int main() {
test_string_view_conversion<boost::string_view>();
#ifndef BOOST_NO_CXX17_HDR_STRING_VIEW
test_string_view_conversion<std::string_view>();
#endif
return boost::report_errors();
}
-75
View File
@@ -1,75 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2014-2026.
//
// 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/core/lightweight_test.hpp>
#include <boost/lexical_cast/try_lexical_convert.hpp>
using namespace boost::conversion;
void try_uncommon_cases()
{
std::string sres;
const bool res1 = try_lexical_convert(std::string("Test string"), sres);
BOOST_TEST(res1);
BOOST_TEST_EQ(sres, "Test string");
volatile int vires;
const bool res2 = try_lexical_convert(100, vires);
BOOST_TEST(res2);
BOOST_TEST_EQ(vires, 100);
const bool res3 = try_lexical_convert("Test string", sres);
BOOST_TEST(res3);
BOOST_TEST_EQ(sres, "Test string");
const bool res4 = try_lexical_convert("Test string", sizeof("Test string") - 1, sres);
BOOST_TEST(res4);
BOOST_TEST_EQ(sres, "Test string");
int ires;
BOOST_TEST(!try_lexical_convert("Test string", ires));
BOOST_TEST(!try_lexical_convert(1.1, ires));
BOOST_TEST(!try_lexical_convert(-1.9, ires));
BOOST_TEST(!try_lexical_convert("1.1", ires));
BOOST_TEST(!try_lexical_convert("1000000000000000000000000000000000000000", ires));
}
void try_common_cases()
{
int ires = 0;
const bool res1 = try_lexical_convert(std::string("100"), ires);
BOOST_TEST(res1);
BOOST_TEST_EQ(ires, 100);
ires = 0;
const bool res2 = try_lexical_convert("-100", ires);
BOOST_TEST(res2);
BOOST_TEST_EQ(ires, -100);
float fres = 1.0f;
const bool res3 = try_lexical_convert("0.0", fres);
BOOST_TEST(res3);
BOOST_TEST_EQ(fres, 0.0f);
fres = 1.0f;
const bool res4 = try_lexical_convert("0.0", sizeof("0.0") - 1, fres);
BOOST_TEST(res4);
BOOST_TEST_EQ(fres, 0.0f);
}
int main()
{
try_uncommon_cases();
try_common_cases();
return boost::report_errors();
}
-53
View File
@@ -1,53 +0,0 @@
// Unit test for boost::lexical_cast.
//
// See http://www.boost.org for most recent version, including documentation.
//
// Copyright Antony Polukhin, 2011-2026.
//
// 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/lexical_cast.hpp>
#include <boost/core/lightweight_test.hpp>
void test_typedefed_wchar_t(unsigned short) // wchar_t is a typedef for unsigned short
{
BOOST_TEST(boost::lexical_cast<int>(L'A') == 65);
BOOST_TEST(boost::lexical_cast<int>(L'B') == 66);
BOOST_TEST(boost::lexical_cast<wchar_t>(L"65") == 65);
BOOST_TEST(boost::lexical_cast<wchar_t>(L"66") == 66);
}
template <class T>
void test_typedefed_wchar_t(T)
{
BOOST_TEST(1);
}
void test_typedefed_wchar_t_runtime()
{
test_typedefed_wchar_t(L'0');
}
void test_unsigned_short_to_wstring()
{
// Test case from https://github.com/boostorg/lexical_cast/issues/89
unsigned short number = 4550;
auto res1 = boost::lexical_cast<std::wstring>(number);
BOOST_TEST(res1 == L"4550");
auto res2 = boost::lexical_cast<std::string>(number);
BOOST_TEST_EQ(res2, "4550");
}
int main()
{
test_typedefed_wchar_t_runtime();
test_unsigned_short_to_wstring();
return boost::report_errors();
}