Chris@16: // (C) Copyright Gennadiy Rozental 2005-2008. Chris@16: // Use, modification, and distribution are subject to the Chris@16: // Boost Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: // See http://www.boost.org/libs/test for the library home page. Chris@16: // Chris@16: // File : $RCSfile$ Chris@16: // Chris@101: // Version : $Revision$ Chris@16: // Chris@16: // Description : defines model of named parameter Chris@16: // *************************************************************************** Chris@16: Chris@16: #ifndef BOOST_RT_CLA_NAMED_PARAMETER_HPP_062604GER Chris@16: #define BOOST_RT_CLA_NAMED_PARAMETER_HPP_062604GER Chris@16: Chris@16: // Boost.Runtime.Parameter Chris@16: #include Chris@16: Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: Chris@16: namespace BOOST_RT_PARAM_NAMESPACE { Chris@16: Chris@16: namespace cla { Chris@16: Chris@16: // ************************************************************************** // Chris@16: // ************** string_name_policy ************** // Chris@16: // ************************************************************************** // Chris@16: Chris@16: class string_name_policy : public basic_naming_policy { Chris@16: public: Chris@16: // Constructor Chris@16: string_name_policy(); Chris@16: BOOST_RT_PARAM_UNNEEDED_VIRTUAL ~string_name_policy() {} Chris@16: Chris@16: // policy interface Chris@16: virtual bool responds_to( cstring name ) const; Chris@16: virtual bool conflict_with( identification_policy const& ) const; Chris@16: Chris@16: // Accept modifier Chris@16: template Chris@16: void accept_modifier( Modifier const& m ) Chris@16: { Chris@16: basic_naming_policy::accept_modifier( m ); Chris@16: Chris@16: if( m.has( guess_name_m ) ) Chris@16: m_guess_name = true; Chris@16: } Chris@16: Chris@16: private: Chris@16: // Naming policy interface Chris@16: virtual bool match_name( argv_traverser& tr ) const; Chris@16: Chris@16: // Data members Chris@16: bool m_guess_name; Chris@16: }; Chris@16: Chris@16: // ************************************************************************** // Chris@16: // ************** runtime::cla::named_parameter ************** // Chris@16: // ************************************************************************** // Chris@16: Chris@16: template Chris@16: class named_parameter_t : public basic_parameter { Chris@16: typedef basic_parameter base; Chris@16: public: Chris@16: // Constructors Chris@16: explicit named_parameter_t( cstring name ) : base( name ) {} Chris@16: }; Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: BOOST_RT_CLA_NAMED_PARAM_GENERATORS( named_parameter ) Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: } // namespace cla Chris@16: Chris@16: } // namespace BOOST_RT_PARAM_NAMESPACE Chris@16: Chris@16: } // namespace boost Chris@16: Chris@16: #ifndef BOOST_RT_PARAM_OFFLINE Chris@16: Chris@16: # define BOOST_RT_PARAM_INLINE inline Chris@16: # include Chris@16: Chris@16: #endif Chris@16: Chris@16: #endif // BOOST_RT_CLA_NAMED_PARAMETER_HPP_062604GER