summaryrefslogtreecommitdiff
path: root/boost/test/utils/runtime/cla/parser.ipp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/test/utils/runtime/cla/parser.ipp')
-rw-r--r--boost/test/utils/runtime/cla/parser.ipp109
1 files changed, 59 insertions, 50 deletions
diff --git a/boost/test/utils/runtime/cla/parser.ipp b/boost/test/utils/runtime/cla/parser.ipp
index 188d303156..b8a4ca4636 100644
--- a/boost/test/utils/runtime/cla/parser.ipp
+++ b/boost/test/utils/runtime/cla/parser.ipp
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2008.
+// (C) Copyright Gennadiy Rozental 2005-2014.
// 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)
@@ -12,8 +12,8 @@
// Description : implements parser - public interface for CLA parsing and accessing
// ***************************************************************************
-#ifndef BOOST_RT_CLA_PARSER_IPP_062904GER
-#define BOOST_RT_CLA_PARSER_IPP_062904GER
+#ifndef BOOST_TEST_UTILS_RUNTIME_CLA_PARSER_IPP
+#define BOOST_TEST_UTILS_RUNTIME_CLA_PARSER_IPP
// Boost.Runtime.Parameter
#include <boost/test/utils/runtime/config.hpp>
@@ -35,7 +35,7 @@
namespace boost {
-namespace BOOST_RT_PARAM_NAMESPACE {
+namespace BOOST_TEST_UTILS_RUNTIME_PARAM_NAMESPACE {
namespace cla {
@@ -43,7 +43,7 @@ namespace cla {
// ************** runtime::cla::parser ************** //
// ************************************************************************** //
-BOOST_RT_PARAM_INLINE
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE
parser::parser( cstring program_name )
{
assign_op( m_program_name, program_name, 0 );
@@ -51,7 +51,7 @@ parser::parser( cstring program_name )
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE parser::param_iterator
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE parser::param_iterator
parser::first_param() const
{
return m_parameters.begin();
@@ -59,7 +59,7 @@ parser::first_param() const
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE parser::param_iterator
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE parser::param_iterator
parser::last_param() const
{
return m_parameters.end();
@@ -67,25 +67,25 @@ parser::last_param() const
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE argument const&
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE argument const&
parser::valid_argument( cstring string_id ) const
{
const_argument_ptr arg = (*this)[string_id];
- BOOST_RT_PARAM_VALIDATE_LOGIC( !!arg, "Actual argument for parameter " << string_id << " is not present" );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_VALIDATE_LOGIC( !!arg, "Actual argument for parameter " << string_id << " is not present" );
return *arg;
}
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE parser&
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE parser&
parser::operator<<( parameter_ptr new_param )
{
BOOST_TEST_FOREACH( parameter_ptr, old_param, m_parameters ) {
- BOOST_RT_PARAM_VALIDATE_LOGIC( !old_param->conflict_with( *new_param ),
- BOOST_RT_PARAM_LITERAL( "Definition of parameter " ) << new_param->id_2_report() <<
- BOOST_RT_PARAM_LITERAL( " conflicts with defintion of parameter " ) << old_param->id_2_report() );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_VALIDATE_LOGIC( !old_param->conflict_with( *new_param ),
+ BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( "Definition of parameter " ) << new_param->id_2_report() <<
+ BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( " conflicts with defintion of parameter " ) << old_param->id_2_report() );
}
m_parameters.push_back( new_param );
@@ -95,12 +95,12 @@ parser::operator<<( parameter_ptr new_param )
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE void
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE void
parser::parse( int& argc, char_type** argv )
{
if( m_program_name.empty() ) {
m_program_name.assign( argv[0] );
- dstring::size_type pos = m_program_name.find_last_of( BOOST_RT_PARAM_LITERAL( "/\\" ) );
+ dstring::size_type pos = m_program_name.find_last_of( BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( "/\\" ) );
if( pos != static_cast<dstring::size_type>(cstring::npos) )
m_program_name.erase( 0, pos+1 );
@@ -108,18 +108,18 @@ parser::parse( int& argc, char_type** argv )
m_traverser.init( argc, argv );
- try {
+ BOOST_TEST_IMPL_TRY {
while( !m_traverser.eoi() ) {
parameter_ptr found_param;
- BOOST_RT_PARAM_TRACE( "Total " << m_parameters.size() << " parameters registered" );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_TRACE( "Total " << m_parameters.size() << " parameters registered" );
BOOST_TEST_FOREACH( parameter_ptr const&, curr_param, m_parameters ) {
- BOOST_RT_PARAM_TRACE( "Try parameter " << curr_param->id_2_report() );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_TRACE( "Try parameter " << curr_param->id_2_report() );
if( curr_param->matching( m_traverser, !found_param ) ) {
- BOOST_RT_PARAM_TRACE( "Match found" );
- BOOST_RT_CLA_VALIDATE_INPUT( !found_param, (m_traverser.rollback(),m_traverser), "Ambiguous input" );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_TRACE( "Match found" );
+ BOOST_TEST_UTILS_RUNTIME_CLA_VALIDATE_INPUT( !found_param, (m_traverser.rollback(),m_traverser), "Ambiguous input" );
found_param = curr_param;
}
@@ -128,14 +128,14 @@ parser::parse( int& argc, char_type** argv )
}
if( !found_param ) {
- BOOST_RT_PARAM_TRACE( "No match found" );
- BOOST_RT_CLA_VALIDATE_INPUT( m_traverser.handle_mismatch(), m_traverser,
- BOOST_RT_PARAM_LITERAL( "Unexpected input" ) );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_TRACE( "No match found" );
+ BOOST_TEST_UTILS_RUNTIME_CLA_VALIDATE_INPUT( m_traverser.handle_mismatch(), m_traverser,
+ BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( "Unexpected input" ) );
continue;
}
- BOOST_RT_PARAM_TRACE( "Parse argument value" );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_TRACE( "Parse argument value" );
found_param->produce_argument( m_traverser );
m_traverser.commit();
@@ -145,31 +145,31 @@ parser::parse( int& argc, char_type** argv )
if( !curr_param->p_optional && !curr_param->actual_argument() ) {
curr_param->produce_argument( *this );
- BOOST_RT_PARAM_VALIDATE_LOGIC( curr_param->actual_argument(),
- BOOST_RT_PARAM_LITERAL( "Required argument for parameter " ) << curr_param->id_2_report()
- << BOOST_RT_PARAM_LITERAL( " is missing" ) );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_VALIDATE_LOGIC( curr_param->actual_argument(),
+ BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( "Required argument for parameter " ) << curr_param->id_2_report()
+ << BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( " is missing" ) );
}
}
}
- catch( bad_lexical_cast const& ) {
- BOOST_RT_PARAM_REPORT_LOGIC_ERROR(
- BOOST_RT_PARAM_LITERAL( "String to value convertion error during input parsing" ) );
- }
+ BOOST_TEST_IMPL_CATCH0( bad_lexical_cast ) {
+ BOOST_TEST_UTILS_RUNTIME_PARAM_REPORT_LOGIC_ERROR(
+ BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( "String to value convertion error during input parsing" ) );
+ };
m_traverser.remainder( argc, argv );
}
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE const_argument_ptr
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE const_argument_ptr
parser::operator[]( cstring string_id ) const
{
parameter_ptr found_param;
BOOST_TEST_FOREACH( parameter_ptr const&, curr_param, m_parameters ) {
if( curr_param->responds_to( string_id ) ) {
- BOOST_RT_PARAM_VALIDATE_LOGIC( !found_param,
- BOOST_RT_PARAM_LITERAL( "Ambiguous parameter string id: " ) << string_id );
+ BOOST_TEST_UTILS_RUNTIME_PARAM_VALIDATE_LOGIC( !found_param,
+ BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( "Ambiguous parameter string id: " ) << string_id );
found_param = curr_param;
}
@@ -180,7 +180,7 @@ parser::operator[]( cstring string_id ) const
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE cstring
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE cstring
parser::get( cstring string_id ) const
{
return get<cstring>( string_id );
@@ -188,46 +188,46 @@ parser::get( cstring string_id ) const
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE void
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE void
parser::usage( out_stream& ostr )
{
if( m_program_name.empty() )
- assign_op( m_program_name, BOOST_RT_PARAM_CSTRING_LITERAL( "<program>" ), 0 );
+ assign_op( m_program_name, BOOST_TEST_UTILS_RUNTIME_PARAM_CSTRING_LITERAL( "<program>" ), 0 );
format_stream fs;
fs << m_program_name;
BOOST_TEST_FOREACH( parameter_ptr const&, curr_param, m_parameters ) {
- fs << BOOST_RT_PARAM_LITERAL( ' ' );
+ fs << BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( ' ' );
if( curr_param->p_optional )
- fs << BOOST_RT_PARAM_LITERAL( '[' );
+ fs << BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( '[' );
curr_param->usage_info( fs );
if( curr_param->p_optional )
- fs << BOOST_RT_PARAM_LITERAL( ']' );
+ fs << BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( ']' );
if( curr_param->p_multiplicable ) {
- fs << BOOST_RT_PARAM_CSTRING_LITERAL( " ... " );
-
+ fs << BOOST_TEST_UTILS_RUNTIME_PARAM_CSTRING_LITERAL( " ... " );
+
if( curr_param->p_optional )
- fs << BOOST_RT_PARAM_LITERAL( '[' );
+ fs << BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( '[' );
curr_param->usage_info( fs );
if( curr_param->p_optional )
- fs << BOOST_RT_PARAM_LITERAL( ']' );
+ fs << BOOST_TEST_UTILS_RUNTIME_PARAM_LITERAL( ']' );
}
}
- ostr << BOOST_RT_PARAM_CSTRING_LITERAL( "Usage:\n" ) << fs.str() << std::endl;
+ ostr << BOOST_TEST_UTILS_RUNTIME_PARAM_CSTRING_LITERAL( "Usage:\n" ) << fs.str() << std::endl;
}
//____________________________________________________________________________//
-BOOST_RT_PARAM_INLINE void
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE void
parser::help( out_stream& ostr )
{
usage( ostr );
@@ -239,20 +239,29 @@ parser::help( out_stream& ostr )
continue;
if( need_where ) {
- ostr << BOOST_RT_PARAM_CSTRING_LITERAL( "where:\n" );
+ ostr << BOOST_TEST_UTILS_RUNTIME_PARAM_CSTRING_LITERAL( "where:\n" );
need_where = false;
}
- ostr << curr_param->id_2_report() << BOOST_RT_PARAM_CSTRING_LITERAL( " - " ) << curr_param->p_description << std::endl;
+ ostr << curr_param->id_2_report() << BOOST_TEST_UTILS_RUNTIME_PARAM_CSTRING_LITERAL( " - " ) << curr_param->p_description << std::endl;
}
}
//____________________________________________________________________________//
+BOOST_TEST_UTILS_RUNTIME_PARAM_INLINE void
+parser::reset()
+{
+ BOOST_TEST_FOREACH( parameter_ptr const&, param, m_parameters )
+ param->reset();
+}
+
+//____________________________________________________________________________//
+
} // namespace cla
-} // namespace BOOST_RT_PARAM_NAMESPACE
+} // namespace BOOST_TEST_UTILS_RUNTIME_PARAM_NAMESPACE
} // namespace boost
-#endif // BOOST_RT_CLA_PARSER_IPP_062904GER
+#endif // BOOST_TEST_UTILS_RUNTIME_CLA_PARSER_IPP