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 parameter with single char name Chris@16: // *************************************************************************** Chris@16: Chris@16: #ifndef BOOST_RT_CLA_CHAR_PARAMETER_HPP_062604GER Chris@16: #define BOOST_RT_CLA_CHAR_PARAMETER_HPP_062604GER Chris@16: Chris@16: // Boost.Runtime.Parameter Chris@16: #include 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: // ************** char_name_policy ************** // Chris@16: // ************************************************************************** // Chris@16: Chris@16: class char_name_policy : public basic_naming_policy { Chris@16: public: Chris@16: // Constructor Chris@16: char_name_policy(); Chris@16: BOOST_RT_PARAM_UNNEEDED_VIRTUAL ~char_name_policy() {} Chris@16: Chris@16: // policy interface 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: BOOST_RT_PARAM_VALIDATE_LOGIC( p_name->size() <= 1, "Invalid parameter name " << p_name ); Chris@16: } Chris@16: }; Chris@16: Chris@16: // ************************************************************************** // Chris@16: // ************** runtime::cla::char_parameter ************** // Chris@16: // ************************************************************************** // Chris@16: Chris@16: template Chris@16: class char_parameter_t : public basic_parameter { Chris@16: typedef basic_parameter base; Chris@16: public: Chris@16: // Constructors Chris@16: explicit char_parameter_t( char_type name ) : base( cstring( &name, 1 ) ) {} Chris@16: }; Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: template Chris@16: inline shared_ptr > Chris@16: char_parameter( char_type name ) Chris@16: { Chris@16: return shared_ptr >( new char_parameter_t( name ) ); Chris@16: } Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: inline shared_ptr > Chris@16: char_parameter( char_type name ) Chris@16: { Chris@16: return shared_ptr >( new char_parameter_t( name ) ); Chris@16: } 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_CHAR_PARAMETER_HPP_062604GER