| // (C) Copyright Gennadiy Rozental 2005-2008. |
| // 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) |
| |
| // See http://www.boost.org/libs/test for the library home page. |
| // |
| // File : $RCSfile$ |
| // |
| // Version : $Revision: 54633 $ |
| // |
| // Description : some generic identification policies implementation |
| // *************************************************************************** |
| |
| #ifndef NDNBOOST_RT_CLA_ID_POLICY_IPP_062904GER |
| #define NDNBOOST_RT_CLA_ID_POLICY_IPP_062904GER |
| |
| // Boost.Runtime.Parameter |
| #include <ndnboost/test/utils/runtime/config.hpp> |
| |
| #include <ndnboost/test/utils/runtime/cla/id_policy.hpp> |
| #include <ndnboost/test/utils/runtime/cla/parameter.hpp> |
| |
| namespace ndnboost { |
| |
| namespace NDNBOOST_RT_PARAM_NAMESPACE { |
| |
| namespace cla { |
| |
| // ************************************************************************** // |
| // ************** basic_naming_policy ************** // |
| // ************************************************************************** // |
| |
| NDNBOOST_RT_PARAM_INLINE void |
| basic_naming_policy::usage_info( format_stream& fs ) const |
| { |
| fs << p_prefix << p_name << p_separator; |
| |
| if( p_separator->empty() ) |
| fs << NDNBOOST_RT_PARAM_LITERAL( ' ' ); |
| } |
| |
| //____________________________________________________________________________// |
| |
| NDNBOOST_RT_PARAM_INLINE bool |
| basic_naming_policy::match_prefix( argv_traverser& tr ) const |
| { |
| if( !tr.match_front( p_prefix.get() ) ) |
| return false; |
| |
| tr.trim( p_prefix->size() ); |
| return true; |
| } |
| |
| //____________________________________________________________________________// |
| |
| NDNBOOST_RT_PARAM_INLINE bool |
| basic_naming_policy::match_name( argv_traverser& tr ) const |
| { |
| if( !tr.match_front( p_name.get() ) ) |
| return false; |
| |
| tr.trim( p_name->size() ); |
| return true; |
| } |
| |
| //____________________________________________________________________________// |
| |
| NDNBOOST_RT_PARAM_INLINE bool |
| basic_naming_policy::match_separator( argv_traverser& tr, bool optional_value ) const |
| { |
| if( p_separator->empty() ) { |
| if( !tr.token().is_empty() ) |
| return false; |
| |
| tr.trim( 1 ); |
| } |
| else { |
| if( !tr.match_front( p_separator.get() ) ) { |
| // if parameter has optional value separator is optional as well |
| if( optional_value && ( tr.eoi() || tr.match_front( ' ' ) ) ) { |
| return true; |
| } |
| return false; |
| } |
| |
| tr.trim( p_separator->size() ); |
| } |
| |
| return true; |
| } |
| |
| //____________________________________________________________________________// |
| |
| NDNBOOST_RT_PARAM_INLINE bool |
| basic_naming_policy::matching( parameter const& p, argv_traverser& tr, bool ) const |
| { |
| if( !match_prefix( tr ) ) |
| return false; |
| |
| if( !match_name( tr ) ) |
| return false; |
| |
| if( !match_separator( tr, p.p_optional_value ) ) |
| return false; |
| |
| return true; |
| } |
| |
| //____________________________________________________________________________// |
| |
| } // namespace cla |
| |
| } // namespace NDNBOOST_RT_PARAM_NAMESPACE |
| |
| } // namespace ndnboost |
| |
| #endif // NDNBOOST_RT_CLA_ID_POLICY_IPP_062904GER |