1 // (C) Copyright Gennadiy Rozental 2005-2008. 2 // Use, modification, and distribution are subject to the 3 // Boost Software License, Version 1.0. (See accompanying file 4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6 // See http://www.boost.org/libs/test for the library home page. 7 // 8 // File : $RCSfile$ 9 // 10 // Version : $Revision: 54633 $ 11 // 12 // Description : defines interface for argument_factory 13 // *************************************************************************** 14 15 #ifndef BOOST_RT_CLA_IFACE_ARGUMENT_FACTORY_HPP_062604GER 16 #define BOOST_RT_CLA_IFACE_ARGUMENT_FACTORY_HPP_062604GER 17 18 // Boost.Runtime.Parameter 19 #include <boost/test/utils/runtime/config.hpp> 20 #include <boost/test/utils/runtime/fwd.hpp> 21 22 #include <boost/test/utils/runtime/cla/fwd.hpp> 23 24 namespace boost { 25 26 namespace BOOST_RT_PARAM_NAMESPACE { 27 28 namespace cla { 29 30 // ************************************************************************** // 31 // ************** argument_factory ************** // 32 // ************************************************************************** // 33 // another name can be argument production policy 34 35 class argument_factory { 36 public: 37 // Argument factory interface 38 virtual argument_ptr produce_using( parameter& p, argv_traverser& tr ) = 0; /// produce argument based on input 39 virtual argument_ptr produce_using( parameter& p, parser const& ) = 0; /// produce argument based on internal generator and/or values of other parameters 40 virtual void argument_usage_info( format_stream& fs ) = 0; /// argument value format information 41 protected: ~argument_factory()42 BOOST_TEST_PROTECTED_VIRTUAL ~argument_factory() {} 43 }; 44 45 } // namespace boost 46 47 } // namespace BOOST_RT_PARAM_NAMESPACE 48 49 } // namespace cla 50 51 #endif // BOOST_RT_CLA_IFACE_ARGUMENT_FACTORY_HPP_062604GER 52