argument.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 104 行
HPP
104 行
// (C) Copyright Gennadiy Rozental 2005-2008.// Distributed under 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 : model of actual argument (both typed and abstract interface)// ***************************************************************************#ifndef BOOST_RT_ARGUMENT_HPP_062604GER#define BOOST_RT_ARGUMENT_HPP_062604GER// Boost.Runtime.Parameter#include <boost/test/utils/runtime/config.hpp>#include <boost/test/utils/runtime/fwd.hpp>#include <boost/test/utils/runtime/validation.hpp>// Boost.Test#include <boost/test/utils/class_properties.hpp>#include <boost/test/utils/rtti.hpp>// STL#include <cassert>namespace boost {namespace BOOST_RT_PARAM_NAMESPACE {// ************************************************************************** //// ************** runtime::argument ************** //// ************************************************************************** //class argument {public: // Constructor argument( parameter const& p, rtti::id_t value_type ) : p_formal_parameter( p ) , p_value_type( value_type ) {} // Destructor virtual ~argument() {} // Public properties unit_test::readonly_property<parameter const&> p_formal_parameter; unit_test::readonly_property<rtti::id_t> p_value_type;};// ************************************************************************** //// ************** runtime::typed_argument ************** //// ************************************************************************** //template<typename T>class typed_argument : public argument {public: // Constructor explicit typed_argument( parameter const& p ) : argument( p, rtti::type_id<T>() ) {} typed_argument( parameter const& p, T const& t ) : argument( p, rtti::type_id<T>() ) , p_value( t ) {} unit_test::readwrite_property<T> p_value;};// ************************************************************************** //// ************** runtime::arg_value ************** //// ************************************************************************** //template<typename T>inline T const&arg_value( argument const& arg ){ assert( arg.p_value_type == rtti::type_id<T>() ); // detect logic error return static_cast<typed_argument<T> const&>( arg ).p_value.value;}//____________________________________________________________________________//template<typename T>inline T&arg_value( argument& arg ){ assert( arg.p_value_type == rtti::type_id<T>() ); // detect logic error return static_cast<typed_argument<T>&>( arg ).p_value.value;}//____________________________________________________________________________//} // namespace BOOST_RT_PARAM_NAMESPACE} // namespace boost#endif // BOOST_RT_ARGUMENT_HPP_062604GER
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?