Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r61893 - in trunk: boost/regex boost/regex/v4 libs/regex/build libs/regex/example libs/regex/example/grep libs/regex/example/snippets libs/regex/test libs/regex/test/c_compiler_checks libs/regex/test/regress libs/regex/test/unicode
From: john_at_[hidden]
Date: 2010-05-10 08:13:53


Author: johnmaddock
Date: 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
New Revision: 61893
URL: http://svn.boost.org/trac/boost/changeset/61893

Log:
Fix numerous VC-10 compiler warnings.
Rewrite ICU configuration to use the new Boost.Build configuration logic.
Added:
   trunk/libs/regex/build/has_icu_test.cpp (contents, props changed)
Text files modified:
   trunk/boost/regex/icu.hpp | 8 +
   trunk/boost/regex/v4/regex_workaround.hpp | 32 ++++
   trunk/boost/regex/v4/u32regex_token_iterator.hpp | 2
   trunk/libs/regex/build/Jamfile.v2 | 303 +++------------------------------------
   trunk/libs/regex/example/Jamfile.v2 | 5
   trunk/libs/regex/example/grep/grep.cpp | 7
   trunk/libs/regex/example/snippets/icu_example.cpp | 10 +
   trunk/libs/regex/example/snippets/partial_regex_grep.cpp | 2
   trunk/libs/regex/example/snippets/partial_regex_iterate.cpp | 2
   trunk/libs/regex/example/snippets/regex_grep_example_1.cpp | 2
   trunk/libs/regex/example/snippets/regex_grep_example_2.cpp | 2
   trunk/libs/regex/example/snippets/regex_grep_example_3.cpp | 2
   trunk/libs/regex/example/snippets/regex_iterator_example.cpp | 2
   trunk/libs/regex/example/snippets/regex_merge_example.cpp | 2
   trunk/libs/regex/example/snippets/regex_replace_example.cpp | 2
   trunk/libs/regex/example/snippets/regex_search_example.cpp | 2
   trunk/libs/regex/example/snippets/regex_split_example_2.cpp | 2
   trunk/libs/regex/example/snippets/regex_token_iterator_eg_2.cpp | 2
   trunk/libs/regex/test/Jamfile.v2 | 8
   trunk/libs/regex/test/c_compiler_checks/posix_api_check.c | 4
   trunk/libs/regex/test/c_compiler_checks/wide_posix_api_check.c | 8
   trunk/libs/regex/test/regress/main.cpp | 5
   trunk/libs/regex/test/unicode/unicode_iterator_test.cpp | 16 +-
   23 files changed, 119 insertions(+), 311 deletions(-)

Modified: trunk/boost/regex/icu.hpp
==============================================================================
--- trunk/boost/regex/icu.hpp (original)
+++ trunk/boost/regex/icu.hpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -27,6 +27,10 @@
 #include <boost/mpl/int_fwd.hpp>
 #include <bitset>
 
+#ifdef BOOST_MSVC
+#pragma warning (push)
+#pragma warning (disable: 4251)
+#endif
 
 namespace boost{
 
@@ -1015,6 +1019,10 @@
 
 } // namespace boost.
 
+#ifdef BOOST_MSVC
+#pragma warning (pop)
+#endif
+
 #include <boost/regex/v4/u32regex_iterator.hpp>
 #include <boost/regex/v4/u32regex_token_iterator.hpp>
 

Modified: trunk/boost/regex/v4/regex_workaround.hpp
==============================================================================
--- trunk/boost/regex/v4/regex_workaround.hpp (original)
+++ trunk/boost/regex/v4/regex_workaround.hpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -149,7 +149,37 @@
    {
       return stdext::unchecked_equal(first, last, with);
    }
-
+#elif BOOST_WORKAROUND(BOOST_MSVC, > 1500)
+ //
+ // MSVC 10 will either emit warnings or else refuse to compile
+ // code that makes perfectly legitimate use of std::copy, when
+ // the OutputIterator type is a user-defined class (apparently all user
+ // defined iterators are "unsafe"). What's more Microsoft have removed their
+ // non-standard "unchecked" versions, even though their still in the MS
+ // documentation!! Work around this as best we can:
+ //
+ template<class InputIterator, class OutputIterator>
+ inline OutputIterator copy(
+ InputIterator first,
+ InputIterator last,
+ OutputIterator dest
+ )
+ {
+ while(first != last)
+ *dest++ = *first++;
+ return dest;
+ }
+ template<class InputIterator1, class InputIterator2>
+ inline bool equal(
+ InputIterator1 first,
+ InputIterator1 last,
+ InputIterator2 with
+ )
+ {
+ while(first != last)
+ if(*first++ != *with++) return false;
+ return true;
+ }
 #else
    using std::copy;
    using std::equal;

Modified: trunk/boost/regex/v4/u32regex_token_iterator.hpp
==============================================================================
--- trunk/boost/regex/v4/u32regex_token_iterator.hpp (original)
+++ trunk/boost/regex/v4/u32regex_token_iterator.hpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -292,7 +292,7 @@
 inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
 {
    typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
- return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
+ return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, submatch, m);
 }
 inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
 {

Modified: trunk/libs/regex/build/Jamfile.v2
==============================================================================
--- trunk/libs/regex/build/Jamfile.v2 (original)
+++ trunk/libs/regex/build/Jamfile.v2 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -3,10 +3,6 @@
 # (See accompanying file LICENSE_1_0.txt or copy at
 # http://www.boost.org/LICENSE_1_0.txt.
 
-project boost/regex
- : source-location ../src
- ;
-
 #
 # ICU configuration:
 #
@@ -14,240 +10,35 @@
 {
     ICU_PATH = [ modules.peek : ICU_PATH ] ;
 }
+if [ modules.peek : ICU_LINK ]
+{
+ ICU_LINK = [ modules.peek : ICU_LINK ] ;
+}
 
-rule check-icu-config ( )
+if $(ICU_LINK)
 {
- local HAVE_ICU = [ modules.peek : HAVE_ICU ] ;
- local ICU_LINK = [ modules.peek : ICU_LINK ] ;
-
- if ! $(gICU_CONFIG_CHECKED)
- {
- if $(HAVE_ICU) && ! $(ICU_PATH)
- {
- gHAS_ICU = true ;
- gICU_CORE_LIB = icuuc ;
- gICU_IN_LIB = icui18n ;
- gICU_DATA_LIB = icudata ;
- gICU_CONFIG_CHECKED = true ;
- }
- else if $(ICU_PATH)
- {
- dir = $(ICU_PATH) ;
-
- if [ GLOB $(dir)/include/unicode : utypes.h ]
- {
- gHAS_ICU = true ;
-
- # try and find ICU libraries, look for NT versions first:
- if $(ICU_LINK)
- {
- gICU_LIBS += <linkflags>$(ICU_LINK) ;
- }
- else if [ GLOB $(dir)/lib64 : icuuc.* ]
- {
- gICU_CORE_LIB = icuuc ;
- }
- else if [ GLOB $(dir)/lib : icuuc.* ]
- {
- gICU_CORE_LIB = icuuc ;
- }
- else if [ GLOB $(dir)/lib : libicuuc.* ]
- {
- gICU_CORE_LIB = icuuc ;
- }
- else if [ GLOB $(ICU_PATH)/lib : cygicuuc*.dll ]
- {
- gICU_CORE_LIB = cygicuuc.dll ;
- gICU_CYGWIN = true ;
- }
- else
- {
- ECHO warning: ICU shared common library not found in path. ;
- ECHO hint: If the regex library fails to link then try again ;
- ECHO with the environment variable ICU_LINK set to contain ;
- ECHO the linker options required to link to ICU. ;
- ECHO Defaulting to look for libicuuc ... ;
- gICU_CORE_LIB = icuuc ;
- }
-
- if $(ICU_LINK)
- {
- # nothing to do, it's already been done!
- # gICU_LIBS += <linkflags>$(ICU_LINK) ;
- }
- else if [ GLOB $(dir)/lib : icuin.* ]
- {
- gICU_IN_LIB = icuin ;
- }
- else if [ GLOB $(dir)/lib : icui18n.* ]
- {
- gICU_IN_LIB = icui18n ;
- }
- else if [ GLOB $(dir)/lib64 : libicui18n.* ]
- {
- gICU_IN_LIB = icui18n ;
- }
- else if [ GLOB $(dir)/lib : libicui18n.* ]
- {
- gICU_IN_LIB = icui18n ;
- }
- else if [ GLOB $(ICU_PATH)/lib : cygicuin*.dll ]
- {
- gICU_IN_LIB = cygicuin.dll ;
- gICU_CYGWIN = true ;
- }
- else
- {
- ECHO warning: ICU shared i18n library not found in path. ;
- ECHO hint: If the regex library fails to link then try again ;
- ECHO with the environment variable ICU_LINK set to contain ;
- ECHO the linker options required to link to ICU. ;
- ECHO Defaulting to look for libicui18n ... ;
- gICU_IN_LIB = icui18n ;
- }
-#Added by Tommy Nordgren - libicudata muct be linked against on Mac OS X
- if $(ICU_LINK)
- {
- # nothing to do, it's already been done!
- # gICU_LIBS += <linkflags>$(ICU_LINK) ;
- }
- else if [ GLOB $(dir)/lib64 : icudt.* ]
- {
- gICU_DATA_LIB = icudt ;
- }
- else if [ GLOB $(dir)/lib : icudt.* ]
- {
- gICU_DATA_LIB = icudt ;
- }
- else if [ GLOB $(dir)/lib : libicudata.* ]
- {
- gICU_DATA_LIB = icudata ;
- }
- else if [ GLOB $(ICU_PATH)/lib : cygicudt*.dll ]
- {
- gICU_DATA_LIB = cygicudt.dll ;
- gICU_CYGWIN = true ;
- }
- else
- {
- local os = [ modules.peek : OS ] ;
- echo $(os) ;
- if $(os) != "DARWIN"
- {
- ECHO warning: ICU shared data library not found in path. ;
- ECHO hint: If the regex library fails to link then try again ;
- ECHO with the environment variable ICU_LINK set to contain ;
- ECHO the linker options required to link to ICU. ;
- }
- else
- {
- ECHO warning: ICU shared data library not found in path. ;
- ECHO hint: If the regex library fails to link then try again ;
- ECHO with the environment variable ICU_LINK set to contain ;
- ECHO the linker options required to link to ICU. ;
- ECHO Defaulting to look for libicudata ... ;
- gICU_DATA_LIB = icudata ;
- }
- }
-#End of addition by Tommy Nordgren
- }
- }
-
- gICU_CONFIG_CHECKED = true ;
- }
-
- if $(gHAS_ICU)
- {
- message icu_config ;
- message icu_config2
- : Note: Building Boost.Regex with Unicode/ICU support enabled
- : " Using ICU in " $(ICU_PATH:J=" ")/include ;
- return true ;
- }
- else
- {
- message icu_config
- : "warning: Building Boost.Regex with the optional Unicode/ICU support disabled."
- : "note: Please refer to the Boost.Regex documentation for more information"
- : "note: this is a strictly optional feature." ;
+ ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
+}
+else
+{
+ lib icuuc : : <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
+ lib icuuc : : <toolset>msvc <variant>debug <name>icuucd <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
+ lib icuuc : : <name>this_is_an_invalid_library_name ;
+ lib icudt : : <search>$(ICU_PATH)/lib <name>icudata <link>shared <runtime-link>shared ;
+ lib icudt : : <search>$(ICU_PATH)/lib <name>icudt <toolset>msvc <link>shared <runtime-link>shared ;
+ lib icudt : : <name>this_is_an_invalid_library_name ;
+ lib icuin : : <search>$(ICU_PATH)/lib <name>icui18n <link>shared <runtime-link>shared ;
+ lib icuin : : <toolset>msvc <variant>debug <name>icuind <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
+ lib icuin : : <toolset>msvc <variant>release <name>icuin <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
+ lib icuin : : <name>this_is_an_invalid_library_name ;
 
- if $(ICU_PATH)
- {
- message icu_config2
- : warning! ICU configuration failed
- : " Couldn't find utypes.h in " $(ICU_PATH:J=" ")/include/unicode ;
- }
- else
- {
- message icu_config2 ;
- }
- }
+ ICU_OPTS = <include>$(ICU_PATH)/include <library>icuuc/<link>shared/<runtime-link>shared <library>icudt/<link>shared/<runtime-link>shared <library>icuin/<link>shared/<runtime-link>shared <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
 }
 
-explicit icu_config ;
-explicit icu_config2 ;
+exe has_icu : ./has_icu_test.cpp : $(ICU_OPTS) ;
+explicit has_icu ;
 
-if [ check-icu-config ]
-{
-if $(gHAS_ICU)
-{
- BOOST_REGEX_ICU_OPTS = "<target-os>freebsd:<include>/usr/local/include" ;
- ICU_SEARCH_OPTS = "<target-os>freebsd:<search>$(ICU_PATH)/lib" ;
- BOOST_REGEX_ICU_OPTS += "<define>BOOST_HAS_ICU=1" ;
- BOOST_REGEX_ICU_OPTS += "$(gICU_LIBS)" ;
-
- if $(ICU_PATH)
- {
- # If ICU_PATH is specified on the command line, then it's
- # relative to the current directory, while paths specified
- # in a Jamfile are relative to that Jamfile. So, to
- # avoid confusing the user if he's not running from
- # libs/regex/build, explicitly root this.
- ICU_PATH = [ path.native
- [ path.root [ path.make $(ICU_PATH) ] [ path.pwd ] ] ] ;
- if $(ICU_PATH) != "/usr" && $(ICU_PATH) != "/usr/local"
- {
- BOOST_REGEX_ICU_OPTS += "<include>$(ICU_PATH)/include" ;
- ICU_SEARCH_OPTS = <search>$(ICU_PATH)/lib ;
- }
- }
-
- if $(gICU_CYGWIN)
- {
- if $(gICU_CORE_LIB)
- {
- BOOST_REGEX_ICU_OPTS += "<linkflags>$(gICU_CORE_LIB) ;
- }
- if $(gICU_IN_LIB)
- {
- BOOST_REGEX_ICU_OPTS += "<linkflags>$(gICU_IN_LIB) ;
- }
- }
- else
- {
- if $(gICU_CORE_LIB)
- {
- lib icucore : : <name>$(gICU_CORE_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
- ICU_EXTRA_SOURCE = icucore ;
- explicit icucore ;
- }
- if $(gICU_IN_LIB)
- {
- lib icuin : : <name>$(gICU_IN_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
- ICU_EXTRA_SOURCE += icuin ;
- explicit icuin ;
- }
-#Added by Tommy Nordgren libicudata must be linked against on Mac OS X
- if $(gICU_DATA_LIB)
- {
- lib icudata : : <name>$(gICU_DATA_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
- ICU_EXTRA_SOURCE += icudata ;
- explicit icudata ;
- }
-#End of addition by Tommy Nordgren
- }
- }
-}
+alias icu_options : : : : [ check-target-builds has_icu : $(ICU_OPTS) : ] ;
 
 SOURCES =
    c_regex_traits.cpp
@@ -269,59 +60,13 @@
    usinstances.cpp ;
 
 
-lib boost_regex : ../src/$(SOURCES) $(ICU_EXTRA_SOURCE) icu_config2 icu_config
+lib boost_regex : ../src/$(SOURCES) icu_options
     :
- #<link>static:<define>BOOST_REGEX_NO_LIB=1
- #<link>static:<define>BOOST_REGEX_STATIC_LINK=1
              <link>shared:<define>BOOST_REGEX_DYN_LINK=1
              <toolset>gcc-mw:<link>static
              <toolset>gcc-mingw:<link>static
              <toolset>gcc-cygwin:<link>static
- $(BOOST_REGEX_ICU_OPTS)
- <conditional>@force-shared-linking
     ;
 
-shared-linking-warning-emitted = ;
-
-# The ICU is shipped as shared libraries with dynamic runtime.
-# If Boost.Regex is built against static runtime, the combination
-# will not work. The below rule forces shared runtime, and
-# prints an explanation.
-rule force-shared-linking ( properties * )
-{
- if $(gHAS_ICU)
- {
- if <runtime-link>static in $(properties)
- {
- if ! $(shared-linking-warning-emitted)
- {
- shared-linking-warning-emitted = 1 ;
- ECHO "warning: forcing runtime-link=shared for Boost.Regex" ;
- ECHO "warning: this is required when using the ICU library" ;
- }
- }
- return <runtime-link>shared ;
- }
-}
-
-
-
-alias icu_options : $(ICU_EXTRA_SOURCE) : : : $(BOOST_REGEX_ICU_OPTS) ;
-explicit icu_options ;
-
 boost-install boost_regex ;
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Added: trunk/libs/regex/build/has_icu_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/regex/build/has_icu_test.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -0,0 +1,26 @@
+/*
+ *
+ * Copyright (c) 2010
+ * John Maddock
+ *
+ * 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)
+ *
+ */
+
+#include <unicode/uversion.h>
+#include <unicode/utypes.h>
+#include <unicode/uchar.h>
+#include <unicode/coll.h>
+
+#if defined(_MSC_VER) && !defined(_DLL)
+#error "Mixing ICU with a static runtime doesn't work"
+#endif
+
+int main()
+{
+ UErrorCode err = U_ZERO_ERROR;
+ UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, "GREEK SMALL LETTER ALPHA", &err);
+ return err;
+}
\ No newline at end of file

Modified: trunk/libs/regex/example/Jamfile.v2
==============================================================================
--- trunk/libs/regex/example/Jamfile.v2 (original)
+++ trunk/libs/regex/example/Jamfile.v2 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -10,9 +10,12 @@
       # There are unidentified linker problems on these platforms:
       <toolset>mipspro-7.4:<link>static
       <toolset>sun-5.9:<link>static
+ <toolset>msvc:<warnings>all
+ <toolset>gcc:<warnings>all
+ <toolset>gcc:<cxxflags>-Wextra
+ <define>U_USING_ICU_NAMESPACE=0
     ;
 
-
 rule regex-test-run ( sources + : input * : name * )
 {
         return [

Modified: trunk/libs/regex/example/grep/grep.cpp
==============================================================================
--- trunk/libs/regex/example/grep/grep.cpp (original)
+++ trunk/libs/regex/example/grep/grep.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -13,9 +13,14 @@
 #include <fstream>
 #include <string>
 #include <vector>
-#include <boost/program_options.hpp>
 #include <boost/regex.hpp>
 
+#ifdef BOOST_MSVC
+#pragma warning(disable:4512 4244)
+#endif
+
+#include <boost/program_options.hpp>
+
 namespace po = boost::program_options;
 
 int after_context;

Modified: trunk/libs/regex/example/snippets/icu_example.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/icu_example.cpp (original)
+++ trunk/libs/regex/example/snippets/icu_example.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -152,9 +152,15 @@
    assert(file == "d.h");
 
    // Greek text extraction with u32regex_search:
- U_NAMESPACE_QUALIFIER UnicodeString text = L"Some where in \x0391\x039D\x0395\x0398\x0391 2004";
+ const UChar t[] = {
+ 'S', 'o', 'm', 'e', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 'n', 0x0391, 0x039D, 0x0395, 0x0398, 0x0391, 0
+ };
+ const UChar g[] = {
+ 0x0391, 0x039D, 0x0395, 0x0398, 0x0391, 0
+ };
+ U_NAMESPACE_QUALIFIER UnicodeString text = t;
    U_NAMESPACE_QUALIFIER UnicodeString greek = extract_greek(text);
- assert(greek == L"\x0391\x039D\x0395\x0398\x0391 2004");
+ assert(greek == g);
 
    // extract currency symbols with associated value, use iterator interface:
    std::string text2 = " $100.23 or \xC2\xA3""198.12 "; // \xC2\xA3 is the pound sign encoded in UTF-8

Modified: trunk/libs/regex/example/snippets/partial_regex_grep.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/partial_regex_grep.cpp (original)
+++ trunk/libs/regex/example/snippets/partial_regex_grep.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -61,7 +61,7 @@
       std::memmove(buf, next_pos, leftover);
       // fill the rest from the stream:
       is.read(buf + leftover, size);
- unsigned read = is.gcount();
+ std::streamsize read = is.gcount();
       // check to see if we've run out of text:
       have_more = read == size;
       // reset next_pos:

Modified: trunk/libs/regex/example/snippets/partial_regex_iterate.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/partial_regex_iterate.cpp (original)
+++ trunk/libs/regex/example/snippets/partial_regex_iterate.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -51,7 +51,7 @@
       std::memmove(buf, next_pos, leftover);
       // fill the rest from the stream:
       is.read(buf + leftover, size);
- unsigned read = is.gcount();
+ std::streamsize read = is.gcount();
       // check to see if we've run out of text:
       have_more = read == size;
       // reset next_pos:

Modified: trunk/libs/regex/example/snippets/regex_grep_example_1.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_grep_example_1.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_grep_example_1.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -89,7 +89,7 @@
 {
    s.erase();
    if(is.bad()) return;
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/example/snippets/regex_grep_example_2.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_grep_example_2.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_grep_example_2.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -84,7 +84,7 @@
 {
    s.erase();
    if(is.bad()) return;
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/example/snippets/regex_grep_example_3.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_grep_example_3.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_grep_example_3.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -107,7 +107,7 @@
 {
    s.erase();
    if(is.bad()) return;
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/example/snippets/regex_iterator_example.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_iterator_example.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_iterator_example.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -72,7 +72,7 @@
 {
    s.erase();
    if(is.bad()) return;
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/example/snippets/regex_merge_example.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_merge_example.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_merge_example.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -42,7 +42,7 @@
 {
    s.erase();
    if(is.bad()) return;
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/example/snippets/regex_replace_example.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_replace_example.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_replace_example.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -42,7 +42,7 @@
 {
    s.erase();
    if(is.bad()) return;
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/example/snippets/regex_search_example.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_search_example.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_search_example.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -85,7 +85,7 @@
 {
    s.erase();
    if(is.bad()) return;
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/example/snippets/regex_split_example_2.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_split_example_2.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_split_example_2.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -33,7 +33,7 @@
    //
    // attempt to grow string buffer to match file size,
    // this doesn't always work...
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/example/snippets/regex_token_iterator_eg_2.cpp
==============================================================================
--- trunk/libs/regex/example/snippets/regex_token_iterator_eg_2.cpp (original)
+++ trunk/libs/regex/example/snippets/regex_token_iterator_eg_2.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -32,7 +32,7 @@
    //
    // attempt to grow string buffer to match file size,
    // this doesn't always work...
- s.reserve(is.rdbuf()->in_avail());
+ s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
    char c;
    while(is.get(c))
    {

Modified: trunk/libs/regex/test/Jamfile.v2
==============================================================================
--- trunk/libs/regex/test/Jamfile.v2 (original)
+++ trunk/libs/regex/test/Jamfile.v2 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -9,9 +9,15 @@
       <link>shared:<define>BOOST_REGEX_DYN_LINK=1
       <toolset>msvc-7.1:<define>TEST_MFC=1
       <toolset>msvc-7.0:<define>TEST_MFC=1
+ <toolset>msvc:<asynch-exceptions>on
       # There are unidentified linker problems on these platforms:
       <toolset>mipspro-7.4:<link>static
       <toolset>sun-5.9:<link>static
+ <toolset>msvc:<warnings>all
+ <toolset>gcc:<warnings>all
+ <toolset>gcc:<cxxflags>-Wextra
+ <toolset>gcc:<cxxflags>-Wshadow
+ <define>U_USING_ICU_NAMESPACE=0
     ;
 
 #
@@ -135,4 +141,4 @@
  ]
 ;
       
-
+build-project ../example ;

Modified: trunk/libs/regex/test/c_compiler_checks/posix_api_check.c
==============================================================================
--- trunk/libs/regex/test/c_compiler_checks/posix_api_check.c (original)
+++ trunk/libs/regex/test/c_compiler_checks/posix_api_check.c 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -35,7 +35,7 @@
    regex_tA re;
    int result;
    result = regcompA(&re, expression, REG_AWK);
- if(result > REG_NOERROR)
+ if(result > (int)REG_NOERROR)
    {
       char buf[256];
       regerrorA(result, &re, buf, sizeof(buf));
@@ -46,7 +46,7 @@
    matches[0].rm_so = 0;
    matches[0].rm_eo = strlen(text);
    result = regexecA(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
- if(result > REG_NOERROR)
+ if(result > (int)REG_NOERROR)
    {
       char buf[256];
       regerrorA(result, &re, buf, sizeof(buf));

Modified: trunk/libs/regex/test/c_compiler_checks/wide_posix_api_check.c
==============================================================================
--- trunk/libs/regex/test/c_compiler_checks/wide_posix_api_check.c (original)
+++ trunk/libs/regex/test/c_compiler_checks/wide_posix_api_check.c 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -45,11 +45,11 @@
    char nbuf[256];
    int i;
    result = regcomp(&re, expression, REG_AWK);
- if(result > REG_NOERROR)
+ if(result > (int)REG_NOERROR)
    {
       regerror(result, &re, buf, sizeof(buf));
       for(i = 0; i < 256; ++i)
- nbuf[i] = buf[i];
+ nbuf[i] = (char)(buf[i]);
       printf(nbuf);
       return result;
    }
@@ -61,11 +61,11 @@
    matches[0].rm_so = 0;
    matches[0].rm_eo = wcslen(text);
    result = regexec(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
- if(result > REG_NOERROR)
+ if(result > (int)REG_NOERROR)
    {
       regerror(result, &re, buf, sizeof(buf));
       for(i = 0; i < 256; ++i)
- nbuf[i] = buf[i];
+ nbuf[i] = (char)(buf[i]);
       printf(nbuf);
       regfree(&re);
       return result;

Modified: trunk/libs/regex/test/regress/main.cpp
==============================================================================
--- trunk/libs/regex/test/regress/main.cpp (original)
+++ trunk/libs/regex/test/regress/main.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -33,9 +33,14 @@
 
 int error_count = 0;
 
+#ifndef TEST_THREADS
 #define RUN_TESTS(name) \
    std::cout << "Running test case \"" #name "\".\n";\
    name();
+#else
+#define RUN_TESTS(name) \
+ name();
+#endif
 
 
 void run_tests()

Modified: trunk/libs/regex/test/unicode/unicode_iterator_test.cpp
==============================================================================
--- trunk/libs/regex/test/unicode/unicode_iterator_test.cpp (original)
+++ trunk/libs/regex/test/unicode/unicode_iterator_test.cpp 2010-05-10 08:13:49 EDT (Mon, 10 May 2010)
@@ -94,7 +94,7 @@
    std::copy(u32to16type(v.begin()), u32to16type(v.end()), std::back_inserter(v16));
 #endif
 #ifndef BOOST_NO_STD_DISTANCE
- BOOST_CHECK_EQUAL(std::distance(u32to16type(v.begin()), u32to16type(v.end())), v16.size());
+ BOOST_CHECK_EQUAL((std::size_t)std::distance(u32to16type(v.begin()), u32to16type(v.end())), v16.size());
 #endif
 #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
    v32.assign(u16to32type(v16.begin()), u16to32type(v16.end()));
@@ -103,7 +103,7 @@
    std::copy(u16to32type(v16.begin()), u16to32type(v16.end()), std::back_inserter(v32));
 #endif
 #ifndef BOOST_NO_STD_DISTANCE
- BOOST_CHECK_EQUAL(std::distance(u16to32type(v16.begin()), u16to32type(v16.end())), v32.size());
+ BOOST_CHECK_EQUAL((std::size_t)std::distance(u16to32type(v16.begin()), u16to32type(v16.end())), v32.size());
 #endif
    BOOST_CHECK_EQUAL(v.size(), v32.size());
    i = v.begin();
@@ -117,12 +117,12 @@
 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
    v16.assign(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin())));
 #ifndef BOOST_NO_STD_DISTANCE
- BOOST_CHECK_EQUAL(std::distance(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin()))), v16.size());
+ BOOST_CHECK_EQUAL((std::size_t)std::distance(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin()))), v16.size());
 #endif
    std::reverse(v16.begin(), v16.end());
    v32.assign(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin())));
 #ifndef BOOST_NO_STD_DISTANCE
- BOOST_CHECK_EQUAL(std::distance(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin()))), v32.size());
+ BOOST_CHECK_EQUAL((std::size_t)std::distance(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin()))), v32.size());
 #endif
    BOOST_CHECK_EQUAL(v.size(), v32.size());
    std::reverse(v32.begin(), v32.end());
@@ -142,7 +142,7 @@
    std::copy(u32to8type(v.begin()), u32to8type(v.end()), std::back_inserter(v8));
 #endif
 #ifndef BOOST_NO_STD_DISTANCE
- BOOST_CHECK_EQUAL(std::distance(u32to8type(v.begin()), u32to8type(v.end())), v8.size());
+ BOOST_CHECK_EQUAL((std::size_t)std::distance(u32to8type(v.begin()), u32to8type(v.end())), v8.size());
 #endif
 #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
    v32.assign(u8to32type(v8.begin()), u8to32type(v8.end()));
@@ -151,7 +151,7 @@
    std::copy(u8to32type(v8.begin()), u8to32type(v8.end()), std::back_inserter(v32));
 #endif
 #ifndef BOOST_NO_STD_DISTANCE
- BOOST_CHECK_EQUAL(std::distance(u8to32type(v8.begin()), u8to32type(v8.end())), v32.size());
+ BOOST_CHECK_EQUAL((std::size_t)std::distance(u8to32type(v8.begin()), u8to32type(v8.end())), v32.size());
 #endif
    BOOST_CHECK_EQUAL(v.size(), v32.size());
    i = v.begin();
@@ -165,12 +165,12 @@
 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
    v8.assign(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin())));
 #ifndef BOOST_NO_STD_DISTANCE
- BOOST_CHECK_EQUAL(std::distance(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin()))), v8.size());
+ BOOST_CHECK_EQUAL((std::size_t)std::distance(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin()))), v8.size());
 #endif
    std::reverse(v8.begin(), v8.end());
    v32.assign(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin())));
 #ifndef BOOST_NO_STD_DISTANCE
- BOOST_CHECK_EQUAL(std::distance(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin()))), v32.size());
+ BOOST_CHECK_EQUAL((std::size_t)std::distance(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin()))), v32.size());
 #endif
    BOOST_CHECK_EQUAL(v.size(), v32.size());
    std::reverse(v32.begin(), v32.end());


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