Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r49212 - in branches/release: boost/config boost/config/abi boost/config/compiler libs/config/doc libs/config/doc/html libs/config/doc/html/boost_config libs/config/test libs/config/test/all
From: john_at_[hidden]
Date: 2008-10-09 12:08:04


Author: johnmaddock
Date: 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
New Revision: 49212
URL: http://svn.boost.org/trac/boost/changeset/49212

Log:
Merge changes from Trunk: mainly fixes for the new Codegear compiler, plus a fix to the ABI code for 64-bit MSVC.
Added:
   branches/release/libs/config/test/boost_no_nested_friendship.ipp
      - copied unchanged from r49210, /trunk/libs/config/test/boost_no_nested_friendship.ipp
   branches/release/libs/config/test/boost_no_typename_with_ctor.ipp
      - copied unchanged from r49210, /trunk/libs/config/test/boost_no_typename_with_ctor.ipp
   branches/release/libs/config/test/no_nested_friendship_fail.cpp
      - copied unchanged from r49210, /trunk/libs/config/test/no_nested_friendship_fail.cpp
   branches/release/libs/config/test/no_nested_friendship_pass.cpp
      - copied unchanged from r49210, /trunk/libs/config/test/no_nested_friendship_pass.cpp
   branches/release/libs/config/test/no_typename_with_ctor_fail.cpp
      - copied unchanged from r49210, /trunk/libs/config/test/no_typename_with_ctor_fail.cpp
   branches/release/libs/config/test/no_typename_with_ctor_pass.cpp
      - copied unchanged from r49210, /trunk/libs/config/test/no_typename_with_ctor_pass.cpp
Text files modified:
   branches/release/boost/config/abi/msvc_prefix.hpp | 16 +++++++++++++++-
   branches/release/boost/config/compiler/codegear.hpp | 7 ++++---
   branches/release/boost/config/compiler/intel.hpp | 5 +++++
   branches/release/boost/config/compiler/sunpro_cc.hpp | 4 ++++
   branches/release/boost/config/suffix.hpp | 6 ++++++
   branches/release/libs/config/doc/html/boost_config/boost_macro_reference.html | 36 ++++++++++++++++++++++++++++++++++++
   branches/release/libs/config/doc/html/index.html | 2 +-
   branches/release/libs/config/doc/macro_reference.qbk | 8 ++++++++
   branches/release/libs/config/test/all/Jamfile.v2 | 8 +++++++-
   branches/release/libs/config/test/boost_no_is_abstract.ipp | 21 +++++++++++----------
   branches/release/libs/config/test/config_info.cpp | 4 ++++
   branches/release/libs/config/test/config_test.cpp | 22 +++++++++++++++++++++-
   12 files changed, 122 insertions(+), 17 deletions(-)

Modified: branches/release/boost/config/abi/msvc_prefix.hpp
==============================================================================
--- branches/release/boost/config/abi/msvc_prefix.hpp (original)
+++ branches/release/boost/config/abi/msvc_prefix.hpp 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -3,6 +3,20 @@
 // Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#pragma pack(push,8)
+//
+// Boost binaries are built with the compiler's default ABI settings,
+// if the user changes their default alignment in the VS IDE then their
+// code will no longer be binary compatible with the bjam built binaries
+// unless this header is included to force Boost code into a consistent ABI.
+//
+// Note that inclusion of this header is only necessary for libraries with
+// separate source, header only libraries DO NOT need this as long as all
+// translation units are built with the same options.
+//
+#if defined(_M_X64)
+# pragma pack(push,16)
+#else
+# pragma pack(push,8)
+#endif
 
 

Modified: branches/release/boost/config/compiler/codegear.hpp
==============================================================================
--- branches/release/boost/config/compiler/codegear.hpp (original)
+++ branches/release/boost/config/compiler/codegear.hpp 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -40,10 +40,11 @@
    // we shouldn't really need this - but too many things choke
    // without it, this needs more investigation:
 # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
+# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
 
-// Still need tests writing
-// # define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
-// # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
+// Temporary hack, until specific MPL preprocessed headers are generated
+# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
 # ifdef NDEBUG
       // fix broken <cstring> so that Boost.test works:

Modified: branches/release/boost/config/compiler/intel.hpp
==============================================================================
--- branches/release/boost/config/compiler/intel.hpp (original)
+++ branches/release/boost/config/compiler/intel.hpp 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -152,6 +152,11 @@
 # define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 #endif
 
+// Intel on Altix Itanium
+#if defined(__itanium__) && defined(__INTEL_COMPILER)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
 //
 // last known and checked version:
 #if (BOOST_INTEL_CXX_VERSION > 1010)

Modified: branches/release/boost/config/compiler/sunpro_cc.hpp
==============================================================================
--- branches/release/boost/config/compiler/sunpro_cc.hpp (original)
+++ branches/release/boost/config/compiler/sunpro_cc.hpp 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -75,6 +75,10 @@
 #define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 #define BOOST_NO_ADL_BARRIER
 
+#if(__SUNPRO_CC >= 0x590)
+# define BOOST_HAS_LONG_LONG
+#endif
+
 
 #define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC)
 

Modified: branches/release/boost/config/suffix.hpp
==============================================================================
--- branches/release/boost/config/suffix.hpp (original)
+++ branches/release/boost/config/suffix.hpp 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -442,6 +442,12 @@
 # define BOOST_DEDUCED_TYPENAME
 #endif
 
+#ifndef BOOST_NO_TYPENAME_WITH_CTOR
+# define BOOST_CTOR_TYPENAME typename
+#else
+# define BOOST_CTOR_TYPENAME
+#endif
+
 // long long workaround ------------------------------------------//
 // On gcc (and maybe other compilers?) long long is alway supported
 // but it's use may generate either warnings (with -ansi), or errors

Modified: branches/release/libs/config/doc/html/boost_config/boost_macro_reference.html
==============================================================================
--- branches/release/libs/config/doc/html/boost_config/boost_macro_reference.html (original)
+++ branches/release/libs/config/doc/html/boost_config/boost_macro_reference.html 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -652,6 +652,24 @@
 <tr>
 <td>
               <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_NESTED_FRIENDSHIP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler doesn't allow a nested class to access private members of
+ its containing class. Probably Borland/CodeGear specific.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
                 <code class="computeroutput"><span class="identifier">BOOST_NO_OPERATORS_IN_NAMESPACE</span></code>
               </p>
               </td>
@@ -1136,6 +1154,24 @@
 <tr>
 <td>
               <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TYPENAME_WITH_CTOR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The typename keyword cannot be used when creating a temporary of
+ a Dependent type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
                 <code class="computeroutput"><span class="identifier">BOOST_NO_UNREACHABLE_RETURN_DETECTION</span></code>
               </p>
               </td>

Modified: branches/release/libs/config/doc/html/index.html
==============================================================================
--- branches/release/libs/config/doc/html/index.html (original)
+++ branches/release/libs/config/doc/html/index.html 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -962,7 +962,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: August 25, 2008 at 09:59:24 GMT</small></p></td>
+<td align="left"><p><small>Last revised: September 19, 2008 at 12:01:08 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/release/libs/config/doc/macro_reference.qbk
==============================================================================
--- branches/release/libs/config/doc/macro_reference.qbk (original)
+++ branches/release/libs/config/doc/macro_reference.qbk 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -171,6 +171,10 @@
 specializations as a standard library "fix", only if the compiler supports
 the `__int64` datatype.
 ]]
+[[`BOOST_NO_NESTED_FRIENDSHIP`][Compiler][
+Compiler doesn't allow a nested class to access private members of its
+containing class. Probably Borland/CodeGear specific.
+]]
 [[`BOOST_NO_OPERATORS_IN_NAMESPACE`][Compiler][
 Compiler requires inherited operator friend functions to be defined at
 namespace scope, then using'ed to boost. Probably GCC specific. See
@@ -271,6 +275,10 @@
 [[`BOOST_NO_TYPEID`][Compiler][
 The compiler does not support the typeid operator at all.
 ]]
+[[`BOOST_NO_TYPENAME_WITH_CTOR`][Compiler][
+The typename keyword cannot be used when creating a temporary of a
+Dependent type.
+]]
 [[`BOOST_NO_UNREACHABLE_RETURN_DETECTION`][Compiler][
 If a return is unreachable, then no return statement should be required,
 however some compilers insist on it, while other issue a bunch of warnings

Modified: branches/release/libs/config/test/all/Jamfile.v2
==============================================================================
--- branches/release/libs/config/test/all/Jamfile.v2 (original)
+++ branches/release/libs/config/test/all/Jamfile.v2 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -1,7 +1,7 @@
 #
 # Regression test Jamfile for boost configuration setup.
 # *** DO NOT EDIT THIS FILE BY HAND ***
-# This file was automatically generated on Mon Aug 25 10:51:52 2008
+# This file was automatically generated on Sat Sep 20 09:49:52 2008
 # by libs/config/tools/generate.cpp
 # Copyright John Maddock.
 # Use, modification and distribution are subject to the
@@ -274,6 +274,9 @@
 test-suite "BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS" :
 [ run ../no_mem_tem_pnts_pass.cpp ]
 [ compile-fail ../no_mem_tem_pnts_fail.cpp ] ;
+test-suite "BOOST_NO_NESTED_FRIENDSHIP" :
+[ run ../no_nested_friendship_pass.cpp ]
+[ compile-fail ../no_nested_friendship_fail.cpp ] ;
 test-suite "BOOST_NO_OPERATORS_IN_NAMESPACE" :
 [ run ../no_ops_in_namespace_pass.cpp ]
 [ compile-fail ../no_ops_in_namespace_fail.cpp ] ;
@@ -355,6 +358,9 @@
 test-suite "BOOST_NO_TYPEID" :
 [ run ../no_typeid_pass.cpp ]
 [ compile-fail ../no_typeid_fail.cpp ] ;
+test-suite "BOOST_NO_TYPENAME_WITH_CTOR" :
+[ run ../no_typename_with_ctor_pass.cpp ]
+[ compile-fail ../no_typename_with_ctor_fail.cpp ] ;
 test-suite "BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL" :
 [ run ../no_using_breaks_adl_pass.cpp ]
 [ compile-fail ../no_using_breaks_adl_fail.cpp ] ;

Modified: branches/release/libs/config/test/boost_no_is_abstract.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_is_abstract.ipp (original)
+++ branches/release/libs/config/test/boost_no_is_abstract.ipp 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -12,11 +12,18 @@
 
 namespace boost_no_is_abstract{
 
+#if defined(__CODEGEARC__)
 template<class T>
 struct is_abstract_test
 {
- // Deduction fails if T is void, function type,
- // reference type (14.8.2/2)or an abstract class type
+ enum{ value = __is_abstract(T) };
+};
+#else
+template<class T>
+struct is_abstract_test
+{
+ // Deduction fails if T is void, function type,
+ // reference type (14.8.2/2)or an abstract class type
    // according to review status issue #337
    //
    template<class U>
@@ -29,9 +36,10 @@
 #else
    enum{ s1 = sizeof(check_sig<T>(0)) };
 #endif
-
+
    enum{ value = (s1 == sizeof(char)) };
 };
+#endif
 
 struct non_abstract{};
 struct abstract{ virtual void foo() = 0; };
@@ -43,10 +51,3 @@
 
 }
 
-
-
-
-
-
-
-

Modified: branches/release/libs/config/test/config_info.cpp
==============================================================================
--- branches/release/libs/config/test/config_info.cpp (original)
+++ branches/release/libs/config/test/config_info.cpp 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -982,6 +982,7 @@
    PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS);
    PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD);
    PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS);
+ PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP);
    PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE);
    PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS);
    PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
@@ -1010,6 +1011,7 @@
    PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES);
    PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP);
    PRINT_MACRO(BOOST_NO_TYPEID);
+ PRINT_MACRO(BOOST_NO_TYPENAME_WITH_CTOR);
    PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION);
    PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE);
    PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
@@ -1037,6 +1039,8 @@
 
 
 
+
+
    // END GENERATED BLOCK
 
    PRINT_MACRO(BOOST_INTEL);

Modified: branches/release/libs/config/test/config_test.cpp
==============================================================================
--- branches/release/libs/config/test/config_test.cpp (original)
+++ branches/release/libs/config/test/config_test.cpp 2008-10-09 12:08:03 EDT (Thu, 09 Oct 2008)
@@ -1,4 +1,4 @@
-// This file was automatically generated on Mon Aug 25 10:51:52 2008
+// This file was automatically generated on Sat Sep 20 09:49:52 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the
@@ -187,6 +187,11 @@
 #else
 namespace boost_no_pointer_to_member_template_parameters = empty_boost;
 #endif
+#ifndef BOOST_NO_NESTED_FRIENDSHIP
+#include "boost_no_nested_friendship.ipp"
+#else
+namespace boost_no_nested_friendship = empty_boost;
+#endif
 #ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
 #include "boost_no_ops_in_namespace.ipp"
 #else
@@ -322,6 +327,11 @@
 #else
 namespace boost_no_typeid = empty_boost;
 #endif
+#ifndef BOOST_NO_TYPENAME_WITH_CTOR
+#include "boost_no_typename_with_ctor.ipp"
+#else
+namespace boost_no_typename_with_ctor = empty_boost;
+#endif
 #ifndef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 #include "boost_no_using_breaks_adl.ipp"
 #else
@@ -1026,6 +1036,11 @@
       std::cerr << "Failed test for BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS at: " << __FILE__ << ":" << __LINE__ << std::endl;
       ++error_count;
    }
+ if(0 != boost_no_nested_friendship::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_NESTED_FRIENDSHIP at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
    if(0 != boost_no_operators_in_namespace::test())
    {
       std::cerr << "Failed test for BOOST_NO_OPERATORS_IN_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl;
@@ -1161,6 +1176,11 @@
       std::cerr << "Failed test for BOOST_NO_TYPEID at: " << __FILE__ << ":" << __LINE__ << std::endl;
       ++error_count;
    }
+ if(0 != boost_no_typename_with_ctor::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TYPENAME_WITH_CTOR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
    if(0 != boost_function_scope_using_declaration_breaks_adl::test())
    {
       std::cerr << "Failed test for BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL at: " << __FILE__ << ":" << __LINE__ << std::endl;


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