blob: 0c90bb9cc358cbd59116b5a96ebb001099a6abc6 [file] [log] [blame]
Jeff Thompsonef2d5a42013-08-22 19:09:24 -07001// (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
Jeff Thompson3d613fd2013-10-15 15:39:04 -070015#ifndef NDNBOOST_RT_CLA_IFACE_ARGUMENT_FACTORY_HPP_062604GER
16#define NDNBOOST_RT_CLA_IFACE_ARGUMENT_FACTORY_HPP_062604GER
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070017
18// Boost.Runtime.Parameter
19#include <ndnboost/test/utils/runtime/config.hpp>
20#include <ndnboost/test/utils/runtime/fwd.hpp>
21
22#include <ndnboost/test/utils/runtime/cla/fwd.hpp>
23
24namespace ndnboost {
25
Jeff Thompson3d613fd2013-10-15 15:39:04 -070026namespace NDNBOOST_RT_PARAM_NAMESPACE {
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070027
28namespace cla {
29
30// ************************************************************************** //
31// ************** argument_factory ************** //
32// ************************************************************************** //
33// another name can be argument production policy
34
35class argument_factory {
36public:
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
41protected:
Jeff Thompson3d613fd2013-10-15 15:39:04 -070042 NDNBOOST_TEST_PROTECTED_VIRTUAL ~argument_factory() {}
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070043};
44
45} // namespace ndnboost
46
Jeff Thompson3d613fd2013-10-15 15:39:04 -070047} // namespace NDNBOOST_RT_PARAM_NAMESPACE
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070048
49} // namespace cla
50
Jeff Thompson3d613fd2013-10-15 15:39:04 -070051#endif // NDNBOOST_RT_CLA_IFACE_ARGUMENT_FACTORY_HPP_062604GER