$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r74400 - in trunk/boost/test/utils/runtime: . cla
From: gennadiy.rozental_at_[hidden]
Date: 2011-09-15 23:19:44
Author: rogeeff
Date: 2011-09-15 23:19:43 EDT (Thu, 15 Sep 2011)
New Revision: 74400
URL: http://svn.boost.org/trac/boost/changeset/74400
Log:
facilitated CLA parser reuse for multiple parsing sessions
fixed bug in handling boolean parameters
Text files modified: 
   trunk/boost/test/utils/runtime/cla/argv_traverser.ipp       |     2 ++                                      
   trunk/boost/test/utils/runtime/cla/parameter.hpp            |     1 +                                       
   trunk/boost/test/utils/runtime/cla/parser.hpp               |     2 ++                                      
   trunk/boost/test/utils/runtime/cla/parser.ipp               |     9 +++++++++                               
   trunk/boost/test/utils/runtime/interpret_argument_value.hpp |     2 +-                                      
   5 files changed, 15 insertions(+), 1 deletions(-)
Modified: trunk/boost/test/utils/runtime/cla/argv_traverser.ipp
==============================================================================
--- trunk/boost/test/utils/runtime/cla/argv_traverser.ipp	(original)
+++ trunk/boost/test/utils/runtime/cla/argv_traverser.ipp	2011-09-15 23:19:43 EDT (Thu, 15 Sep 2011)
@@ -49,6 +49,8 @@
 BOOST_RT_PARAM_INLINE void
 argv_traverser::init( int argc, char_type** argv )
 {
+    m_buffer.clear();
+
     for( int index = 1; index < argc; ++index ) {
         m_buffer += argv[index];
         if( index != argc-1 )
Modified: trunk/boost/test/utils/runtime/cla/parameter.hpp
==============================================================================
--- trunk/boost/test/utils/runtime/cla/parameter.hpp	(original)
+++ trunk/boost/test/utils/runtime/cla/parameter.hpp	2011-09-15 23:19:43 EDT (Thu, 15 Sep 2011)
@@ -81,6 +81,7 @@
     bool            has_argument() const                        { return m_actual_argument; }
     argument const& actual_argument() const                     { return *m_actual_argument; }
     argument_ptr    actual_argument()                           { return m_actual_argument; }
+    void            reset()                                     { m_actual_argument.reset(); }
 
 
     // identification interface
Modified: trunk/boost/test/utils/runtime/cla/parser.hpp
==============================================================================
--- trunk/boost/test/utils/runtime/cla/parser.hpp	(original)
+++ trunk/boost/test/utils/runtime/cla/parser.hpp	2011-09-15 23:19:43 EDT (Thu, 15 Sep 2011)
@@ -100,6 +100,8 @@
     // parameters access
     param_iterator      first_param() const;
     param_iterator      last_param() const;
+    unsigned            num_params() const  { return m_parameters.size(); }
+    void                reset();
 
     // arguments access
     const_argument_ptr  operator[]( cstring string_id ) const;
Modified: trunk/boost/test/utils/runtime/cla/parser.ipp
==============================================================================
--- trunk/boost/test/utils/runtime/cla/parser.ipp	(original)
+++ trunk/boost/test/utils/runtime/cla/parser.ipp	2011-09-15 23:19:43 EDT (Thu, 15 Sep 2011)
@@ -249,6 +249,15 @@
 
 //____________________________________________________________________________//
 
+BOOST_RT_PARAM_INLINE void
+parser::reset()
+{
+    BOOST_TEST_FOREACH( parameter_ptr const&, param, m_parameters )
+        param->reset();
+}
+
+//____________________________________________________________________________//
+
 } // namespace cla
 
 } // namespace BOOST_RT_PARAM_NAMESPACE
Modified: trunk/boost/test/utils/runtime/interpret_argument_value.hpp
==============================================================================
--- trunk/boost/test/utils/runtime/interpret_argument_value.hpp	(original)
+++ trunk/boost/test/utils/runtime/interpret_argument_value.hpp	2011-09-15 23:19:43 EDT (Thu, 15 Sep 2011)
@@ -114,7 +114,7 @@
         }
         else {
             res = true;
-            return false;
+            return source.is_empty();
         }
     }
 };