PluginCommand.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:8k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: PluginCommand.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 20:53:39  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.13
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: PluginCommand.cpp,v 1000.2 2004/06/01 20:53:39 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Mike DiCuccio, Denis Vakatov, Anatoliy Kuznetsov
  35.  *
  36.  * File Description:
  37.  *    CPluginCommand -- defines an interface for managing a single command
  38.  *                      passed in to a plugin
  39.  *
  40.  * Remark:
  41.  *   This code was originally generated by application DATATOOL
  42.  *   using specifications from the data definition file
  43.  *   'plugin.asn'.
  44.  */
  45. // standard includes
  46. // generated includes
  47. #include <ncbi_pch.hpp>
  48. #include <gui/plugin/PluginCommand.hpp>
  49. #include <gui/plugin/PluginArgSet.hpp>
  50. // generated classes
  51. BEGIN_NCBI_SCOPE
  52. BEGIN_objects_SCOPE // namespace ncbi::objects::
  53. // destructor
  54. CPluginCommand::~CPluginCommand(void)
  55. {
  56. }
  57. // operator[] for indexing based on named argument
  58. // this will throw if the named argument isn't found
  59. const CPluginArg& CPluginCommand::operator[](const string& name) const
  60. {
  61.     return GetArgs()[ name ];
  62. }
  63. CPluginArg& CPluginCommand::operator[](const string& name)
  64. {
  65.     return SetArgs()[ name ];
  66. }
  67. // verify whether a named argument exists
  68. bool CPluginCommand::HasArgument(const string& name) const
  69. {
  70.     return GetArgs().HasArgument(name);
  71. }
  72. // add a named argument.  This argument is required, and has no default
  73. // value.  Attempts to access the value without setting the value will
  74. // result in an exception being thrown.
  75. CPluginArg& CPluginCommand::AddArgument(const string& name,
  76.                                  const string& desc,
  77.                                  CPluginArg::EType type,
  78.                                  CPluginArg::TData::E_Choice single_or_array)
  79. {
  80.     return SetArgs().AddArgument(name, desc, type, single_or_array);
  81. }
  82. // add a named argument.  This argument is required, and has no default
  83. // value.  Attempts to access the value without setting the value will
  84. // result in an exception being thrown.
  85. CPluginArg& CPluginCommand::AddArgument(const string& name,
  86.                                  const string& desc,
  87.                                  const CTypeInfo* type,
  88.                                  CPluginArg::TData::E_Choice single_or_array)
  89. {
  90.     return SetArgs().AddArgument(name, desc, type, single_or_array);
  91. }
  92. CPluginArg& CPluginCommand::AddFlag(const string& name,
  93.                                     const string& desc)
  94. {
  95.     return SetArgs().AddFlag(name, desc);
  96. }
  97. // Add a default argument to the set of arguments.  This function creates a
  98. // named argument with a default value of type string.
  99. CPluginArg& CPluginCommand::AddDefaultArgument(const string& name,
  100.                                         const string& desc,
  101.                                         CPluginArg::EType type,
  102.                                         const string& val)
  103. {
  104.     return SetArgs().AddDefaultArgument(name, desc, type, val);
  105. }
  106. CPluginArg& CPluginCommand::AddDefaultFlag(const string& name,
  107.                                            const string& desc,
  108.                                            bool val)
  109. {
  110.     return SetArgs().AddDefaultFlag(name, desc, val);
  111. }
  112. // add an optional argument to the set of arguments.  This supports an
  113. // optional default value argument.  For non-built-in types, the default
  114. // value is ignored.
  115. CPluginArg& CPluginCommand::AddOptionalArgument(const string& name,
  116.                                          const string& desc,
  117.                                          CPluginArg::EType type,
  118.                                          CPluginArg::TData::E_Choice s_or_a)
  119. {
  120.     return SetArgs().AddOptionalArgument(name, desc, type, s_or_a);
  121. }
  122. CPluginArg& CPluginCommand::AddOptionalArgument(const string& name,
  123.                                          const string& desc,
  124.                                          const CTypeInfo* type,
  125.                                          CPluginArg::TData::E_Choice s_or_a)
  126. {
  127.     return SetArgs().AddOptionalArgument(name, desc, type, s_or_a);
  128. }
  129. // add a constraint to a named argument
  130. void CPluginCommand::SetConstraint(const string& name,
  131.                                    CPluginValueConstraint& constraint)
  132. {
  133.     SetArgs().SetConstraint(name, constraint);
  134. }
  135. void CPluginCommand::AddConstraint(const string& name,
  136.                                    CPluginValueConstraint& constraint)
  137. {
  138.     SetArgs().AddConstraint(name, constraint);
  139. }
  140. END_objects_SCOPE // namespace ncbi::objects::
  141. END_NCBI_SCOPE
  142. /*
  143.  * ===========================================================================
  144.  *
  145.  * $Log: PluginCommand.cpp,v $
  146.  * Revision 1000.2  2004/06/01 20:53:39  gouriano
  147.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.13
  148.  *
  149.  * Revision 1.13  2004/05/21 22:27:45  gorelenk
  150.  * Added PCH ncbi_pch.hpp
  151.  *
  152.  * Revision 1.12  2004/01/21 14:13:16  dicuccio
  153.  * Added AddFlag() and AddDefaultFlag() - front-ends to AddArgument() and
  154.  * AddDefaultArgument()
  155.  *
  156.  * Revision 1.11  2003/10/07 13:36:45  dicuccio
  157.  * Renamed PluginURL* to PluginValue*.  Moved validation code into CPluginUtils
  158.  *
  159.  * Revision 1.10  2003/07/31 17:01:31  dicuccio
  160.  * Changed AddArgument() functions to return the argument added
  161.  *
  162.  * Revision 1.9  2003/07/23 19:14:08  dicuccio
  163.  * Moved logic for validating plugin arguments into CPluginUtils.
  164.  *
  165.  * Revision 1.8  2003/06/20 14:48:16  dicuccio
  166.  * Revised handling of default arguments - all built-in argument types are now
  167.  * supported
  168.  *
  169.  * Revision 1.7  2003/05/19 13:37:46  dicuccio
  170.  * Moved gui/core/plugin/ --> gui/plugin/
  171.  *
  172.  * Revision 1.6  2003/05/09 16:47:02  dicuccio
  173.  * Added interface forwards for non-const op[], HasCommand() -> directed to
  174.  * CPluginArgSet
  175.  *
  176.  * Revision 1.5  2003/04/30 13:57:06  dicuccio
  177.  * Added interface for specifying multiple constraints for a given argument
  178.  *
  179.  * Revision 1.4  2003/04/25 14:14:58  dicuccio
  180.  * Changed optional argument API - allow data model objects as optional arguments
  181.  * using new plugin API; remove old "optional-and-default" notions
  182.  *
  183.  * Revision 1.3  2003/04/24 16:33:34  dicuccio
  184.  * Added new interface to specify argument object type to AddArgument
  185.  *
  186.  * Revision 1.2  2003/03/03 14:50:56  dicuccio
  187.  * Added plugin argument constraints - lower bound, upper bound, range, and
  188.  * member-of-set
  189.  *
  190.  * Revision 1.1  2003/02/24 13:03:17  dicuccio
  191.  * Renamed classes in plugin spec:
  192.  *     CArgSeg --> CPluginArgSet
  193.  *     CArgument --> CPluginArg
  194.  *     CPluginArgs --> CPluginCommand
  195.  *     CPluginCommands --> CPluginCommandSet
  196.  *
  197.  * Revision 1.1  2003/02/20 19:49:57  dicuccio
  198.  * Created new plugin architecture, based on ASN.1 spec.  Moved GBENCH frameowrk
  199.  * over to use new plugin architecture.
  200.  *
  201.  *
  202.  * ===========================================================================
  203.  */
  204. /* Original file checksum: lines: 64, chars: 1885, CRC32: 56e32803 */