$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: bdawes_at_[hidden]
Date: 2007-08-30 15:16:19
Author: bemandawes
Date: 2007-08-30 15:16:17 EDT (Thu, 30 Aug 2007)
New Revision: 39078
URL: http://svn.boost.org/trac/boost/changeset/39078
Log:
Add error_condition::operator<, error_code::operator<, minor code cleanups, add BOOST_ERROR_CODE_HEADER_ONLY, header_only_test.cpp
Added:
   branches/libs/system/system/test/header_only_test.cpp   (contents, props changed)
Text files modified: 
   branches/libs/system/boost/system/error_code.hpp     |    40 +++++++++++++++++++++++++++++++---------
   branches/libs/system/system/test/error_code_test.cpp |     6 +++++-                                  
   2 files changed, 36 insertions(+), 10 deletions(-)
Modified: branches/libs/system/boost/system/error_code.hpp
==============================================================================
--- branches/libs/system/boost/system/error_code.hpp	(original)
+++ branches/libs/system/boost/system/error_code.hpp	2007-08-30 15:16:17 EDT (Thu, 30 Aug 2007)
@@ -233,8 +233,17 @@
                                      const error_condition & rhs )
       {
         return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
+      }                  
+
+      inline friend bool operator<( const error_condition & lhs,
+                                    const error_condition & rhs )
+        //  the more symmetrical non-member syntax allows enum
+        //  conversions work for both rhs and lhs.
+      {
+        return lhs.m_cat < rhs.m_cat
+          || (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
       }
-                  
+
     private:
       int                     m_val;
       const error_category *  m_cat;
@@ -312,6 +321,15 @@
       {
         return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
       }
+
+      inline friend bool operator<( const error_code & lhs,
+                                    const error_code & rhs )
+        //  the more symmetrical non-member syntax allows enum
+        //  conversions work for both rhs and lhs.
+      {
+        return lhs.m_cat < rhs.m_cat
+          || (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
+      }
                   
       private:
       int                     m_val;
@@ -333,11 +351,11 @@
       return !(lhs == rhs);
     }
 
-    inline bool operator==( const error_code & lhs,
-                            const error_condition & rhs )
+    inline bool operator==( const error_code & code,
+                            const error_condition & condition )
     {
-      return lhs.category().equivalent( lhs.value(), rhs )
-        || rhs.category().equivalent( lhs, rhs.value() );
+      return code.category().equivalent( code.value(), condition )
+        || condition.category().equivalent( code, condition.value() );
     }
                 
     inline bool operator!=( const error_code & lhs,
@@ -346,11 +364,11 @@
       return !(lhs == rhs);
     }
                 
-    inline bool operator==( const error_condition & lhs,
-                            const error_code & rhs )
+    inline bool operator==( const error_condition & condition,
+                            const error_code & code )
     {
-      return lhs.category().equivalent( rhs, lhs.value() )
-        || rhs.category().equivalent( rhs.value(), lhs );
+      return condition.category().equivalent( code, condition.value() )
+        || code.category().equivalent( code.value(), condition );
     }
                 
     inline bool operator!=( const error_condition & lhs,
@@ -632,6 +650,10 @@
 
 #include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
 
+# ifdef BOOST_ERROR_CODE_HEADER_ONLY
+#   include <boost/../libs/system/src/error_code.cpp>
+# endif
+
 #endif // BOOST_ERROR_CODE_HPP
 
 
Modified: branches/libs/system/system/test/error_code_test.cpp
==============================================================================
--- branches/libs/system/system/test/error_code_test.cpp	(original)
+++ branches/libs/system/system/test/error_code_test.cpp	2007-08-30 15:16:17 EDT (Thu, 30 Aug 2007)
@@ -10,7 +10,7 @@
 //----------------------------------------------------------------------------// 
 
 //  VC++ 8.0 warns on usage of certain Standard Library and API functions that
-//  can be cause buffer overruns or no_posix_equivalent possible security issues if misused.
+//  can be cause buffer overruns or other possible security issues if misused.
 //  See http://msdn.microsoft.com/msdnmag/issues/05/05/SafeCandC/default.aspx
 //  But the wording of the warning is misleading and unsettling, there are no
 //  portable altersystem functions, and VC++ 8.0's own libraries use the
@@ -69,6 +69,10 @@
   BOOST_CHECK( ec == posix::success );
   BOOST_CHECK( ec.category() == system_category );
   BOOST_CHECK( ec.category().name() == "system" );
+  BOOST_CHECK( !(ec < error_code( 0, system_category )) );
+  BOOST_CHECK( !(error_code( 0, system_category ) < ec) );
+  BOOST_CHECK( ec < error_code( 1, system_category ) );
+  BOOST_CHECK( !(error_code( 1, system_category ) < ec) );
 
   error_code ec_0_system( 0, system_category );
   BOOST_CHECK( !ec_0_system );
Added: branches/libs/system/system/test/header_only_test.cpp
==============================================================================
--- (empty file)
+++ branches/libs/system/system/test/header_only_test.cpp	2007-08-30 15:16:17 EDT (Thu, 30 Aug 2007)
@@ -0,0 +1,31 @@
+//  error_code_test.cpp  -----------------------------------------------------//
+
+//  Copyright Beman Dawes 2006
+
+//  Distributed under the Boost Software License, Version 1.0. (See accompanying
+//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+//  See library home page at http://www.boost.org/libs/system
+
+//----------------------------------------------------------------------------// 
+
+//  VC++ 8.0 warns on usage of certain Standard Library and API functions that
+//  can be cause buffer overruns or other possible security issues if misused.
+//  See http://msdn.microsoft.com/msdnmag/issues/05/05/SafeCandC/default.aspx
+//  But the wording of the warning is misleading and unsettling, there are no
+//  portable altersystem functions, and VC++ 8.0's own libraries use the
+//  functions in question. So turn off the warnings.
+#define _CRT_SECURE_NO_DEPRECATE
+#define _SCL_SECURE_NO_DEPRECATE
+
+#define BOOST_ERROR_CODE_HEADER_ONLY
+
+#include <boost/test/minimal.hpp>
+
+#include <boost/system/error_code.hpp>
+
+int test_main( int, char*[] )
+{
+  boost::system::error_code ec( 0, boost::system::system_category );
+  return 0;
+}
\ No newline at end of file