id_policy.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 138 行

HPP
138
字号
//  (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: 49312 $////  Description : some generic identification policies definition// ***************************************************************************#ifndef BOOST_RT_CLA_ID_POLICY_HPP_062604GER#define BOOST_RT_CLA_ID_POLICY_HPP_062604GER// Boost.Runtime.Parameter#include <boost/test/utils/runtime/config.hpp>#include <boost/test/utils/runtime/cla/fwd.hpp>#include <boost/test/utils/runtime/cla/modifier.hpp>#include <boost/test/utils/runtime/cla/argv_traverser.hpp>#include <boost/test/utils/runtime/cla/iface/id_policy.hpp>// Boost.Test#include <boost/test/utils/class_properties.hpp>#include <boost/test/utils/rtti.hpp>namespace boost {namespace BOOST_RT_PARAM_NAMESPACE {namespace cla {// ************************************************************************** //// **************               naming_policy_base             ************** //// ************************************************************************** //// model: <prefix> <name> <separtor>class basic_naming_policy : public identification_policy {public:    // Policy interface    virtual bool    responds_to( cstring name ) const       { return m_name == name; }    virtual cstring id_2_report() const                     { return m_name; }    virtual void    usage_info( format_stream& fs ) const;    virtual bool    matching( parameter const& p, argv_traverser& tr, bool primary ) const;    // Accept modifer    template<typename Modifier>    void            accept_modifier( Modifier const& m )    {        nfp::optionally_assign( m_prefix,    m, prefix );        nfp::optionally_assign( m_name,      m, name );        nfp::optionally_assign( m_separator, m, separator );    }protected:    explicit basic_naming_policy( rtti::id_t const& dyn_type )    : identification_policy( dyn_type )    {}    BOOST_RT_PARAM_UNNEEDED_VIRTUAL ~basic_naming_policy() {}    // Naming policy interface    virtual bool    match_prefix( argv_traverser& tr ) const;    virtual bool    match_name( argv_traverser& tr ) const;    virtual bool    match_separator( argv_traverser& tr ) const;    // Data members    dstring      m_prefix;    dstring      m_name;    dstring      m_separator;};// ************************************************************************** //// **************                 dual_id_policy               ************** //// ************************************************************************** //template<typename MostDerived,typename PrimaryId,typename SecondId>class dual_id_policy : public identification_policy {public:    // Constructor    dual_id_policy()    : identification_policy( rtti::type_id<MostDerived>() )    , m_primary()    , m_secondary()    {}    // Policy interface    virtual bool    responds_to( cstring name ) const    {        return m_primary.responds_to( name ) || m_secondary.responds_to( name );    }    virtual bool    conflict_with( identification_policy const& id_p ) const    {        return m_primary.conflict_with( id_p ) || m_secondary.conflict_with( id_p );    }    virtual cstring id_2_report() const    {        return m_primary.id_2_report();    }    virtual void    usage_info( format_stream& fs ) const    {        fs << BOOST_RT_PARAM_LITERAL( '{' );        m_primary.usage_info( fs );        fs << BOOST_RT_PARAM_LITERAL( '|' );        m_secondary.usage_info( fs );        fs << BOOST_RT_PARAM_LITERAL( '}' );    }    virtual bool    matching( parameter const& p, argv_traverser& tr, bool primary ) const    {        return m_primary.matching( p, tr, primary ) || m_secondary.matching( p, tr, primary );    }protected:    BOOST_RT_PARAM_UNNEEDED_VIRTUAL ~dual_id_policy() {}    // Data members    PrimaryId       m_primary;    SecondId        m_secondary;};} // namespace cla} // namespace BOOST_RT_PARAM_NAMESPACE} // namespace boost#ifndef BOOST_RT_PARAM_OFFLINE#  define BOOST_RT_PARAM_INLINE inline#  include <boost/test/utils/runtime/cla/id_policy.ipp>#endif#endif // BOOST_RT_CLA_ID_POLICY_HPP_062604GER

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?