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