Home | History | Annotate | Download | only in iface
      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:
     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