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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: PluginValue.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/04/12 18:14:51  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: PluginValue.hpp,v 1000.1 2004/04/12 18:14:51 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:  .......
  35.  *
  36.  * File Description:
  37.  *   .......
  38.  *
  39.  * Remark:
  40.  *   This code was originally generated by application DATATOOL
  41.  *   using specifications from the data definition file
  42.  *   'plugin.asn'.
  43.  */
  44. #ifndef GUI_CORE_PLUGIN_PLUGINURL_HPP
  45. #define GUI_CORE_PLUGIN_PLUGINURL_HPP
  46. // generated includes
  47. #include <gui/plugin/PluginObject.hpp>
  48. #include <gui/plugin/PluginValue_.hpp>
  49. #include <gui/plugin/PluginArg.hpp>
  50. #include <gui/core/plugin_exception.hpp>
  51. // generated classes
  52. BEGIN_NCBI_SCOPE
  53. BEGIN_objects_SCOPE // namespace ncbi::objects::
  54. class NCBI_XGBPLUGIN_EXPORT CPluginValue
  55.     : public CPluginValue_Base
  56. {
  57.     typedef CPluginValue_Base Tparent;
  58. public:
  59.     // default constructor
  60.     CPluginValue(void);
  61.     // conversion constructors
  62.     CPluginValue(int i);
  63.     CPluginValue(double d);
  64.     CPluginValue(bool b);
  65.     CPluginValue(const string& str);
  66.     CPluginValue(const IDocument& doc);
  67.     CPluginValue(const IDocument& doc, const CObject& obj);
  68.     CPluginValue(const CTypeInfo* info);
  69.     // destructor
  70.     ~CPluginValue(void);
  71.     // determine if this argument has an empty value
  72.     bool IsEmpty(void) const;
  73.     // Special accessor for the implied or actual document
  74.     const IDocument*    GetDocument (void) const;
  75.     // Special accessor for the stored object
  76.     const CObject*      GetObject   (void) const;
  77.     // Special accessor for any named object subtype
  78.     const string&       GetObjectSubtype(void) const;
  79.     bool             AsBoolean (void) const;
  80.     int              AsInteger (void) const;
  81.     double           AsDouble  (void) const;
  82.     const string&    AsString  (void) const;
  83.     const string&    AsFile    (void) const;
  84.     const IDocument& AsDocument(void) const;
  85.     const CObject&   AsObject  (void) const;
  86.     // type-specific setters
  87.     const string& SetInteger();
  88.     void SetInteger(const string& str);
  89.     void SetInteger(int val);
  90.     const string& SetDouble();
  91.     void SetDouble(const string& str);
  92.     void SetDouble(double val);
  93.     const string& SetBoolean();
  94.     void SetBoolean(const string& str);
  95.     void SetBoolean(bool val);
  96.     // setters for object arguments
  97.     void SetDocument(void);
  98.     void SetDocument(const IDocument& doc);
  99.     void SetObject(const IDocument& doc, const CObject& obj);
  100.     void SetObject(const CTypeInfo* info = NULL);
  101.     void SetObject(const string& subtype);
  102. private:
  103.     // Prohibit copy constructor and assignment operator
  104.     CPluginValue(const CPluginValue& value);
  105.     CPluginValue& operator=(const CPluginValue& value);
  106. };
  107. /////////////////// CPluginValue inline methods
  108. inline
  109. const IDocument* CPluginValue::GetDocument(void) const
  110. {
  111.     if (IsDocument()) {
  112.         return Tparent::GetDocument().GetDocument();
  113.     } else if (IsObject()) {
  114.         return Tparent::GetObject().GetDocument();
  115.     }
  116.     NCBI_THROW(CPluginException, eInvalidArg,
  117.                "Attempt to access non-object argument as object");
  118. }
  119. inline
  120. const CObject* CPluginValue::GetObject(void) const
  121. {
  122.     if (IsDocument()) {
  123.         return Tparent::GetDocument().GetObject();
  124.     } else if (IsObject()) {
  125.         return Tparent::GetObject().GetObject();
  126.     }
  127.     NCBI_THROW(CPluginException, eInvalidArg,
  128.                "Attempt to access non-object argument as object");
  129. }
  130. /////////////////// end of CPluginValue inline methods
  131. END_objects_SCOPE // namespace ncbi::objects::
  132. END_NCBI_SCOPE
  133. /*
  134.  * ===========================================================================
  135.  *
  136.  * $Log: PluginValue.hpp,v $
  137.  * Revision 1000.1  2004/04/12 18:14:51  gouriano
  138.  * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.5
  139.  *
  140.  * Revision 1.5  2004/02/03 21:23:10  dicuccio
  141.  * Added ClearObjects().  Added SetObjects() with string-based descriptor
  142.  *
  143.  * Revision 1.4  2003/12/22 19:14:59  dicuccio
  144.  * Added explicit setters from parent for integer, boolean, double
  145.  *
  146.  * Revision 1.3  2003/12/16 20:39:48  jcherry
  147.  * Added support for plugin arguments of type file
  148.  *
  149.  * Revision 1.2  2003/10/27 17:32:19  dicuccio
  150.  * Introduced CPluginObject to hold CPluginValue types when the type is an object.
  151.  * Made CPluginValue a variant; removed ad hoc URL encoding
  152.  *
  153.  * Revision 1.1  2003/10/07 13:33:43  dicuccio
  154.  * Renamed CPluginURL* to CPluginValue*.  Dropped find_if.hpp.  Moved validation
  155.  * code into CPluginUtils.
  156.  *
  157.  * Revision 1.15  2003/09/04 14:00:27  dicuccio
  158.  * Introduce IDocument and IView as abstract base classes.  Use IDocument instead
  159.  * of CDocument.
  160.  *
  161.  * Revision 1.14  2003/08/05 19:25:45  meric
  162.  * Removed superfluous semicolon
  163.  *
  164.  * Revision 1.13  2003/07/22 15:27:51  dicuccio
  165.  * Dropped support for CSeqVector as an explicitly handled argument type
  166.  *
  167.  * Revision 1.12  2003/06/26 15:32:02  dicuccio
  168.  * Moved GetURLValue() from PluginURL.hpp to plugin_utils.hpp - relieves one
  169.  * circular dependency betweein gui/gqplugin and gui/core/
  170.  *
  171.  * Revision 1.11  2003/06/02 16:01:29  dicuccio
  172.  * Rearranged include/objects/ subtree.  This includes the following shifts:
  173.  *     - include/objects/alnmgr --> include/objtools/alnmgr
  174.  *     - include/objects/cddalignview --> include/objtools/cddalignview
  175.  *     - include/objects/flat --> include/objtools/flat
  176.  *     - include/objects/objmgr/ --> include/objmgr/
  177.  *     - include/objects/util/ --> include/objmgr/util/
  178.  *     - include/objects/validator --> include/objtools/validator
  179.  *
  180.  * Revision 1.10  2003/05/19 13:33:02  dicuccio
  181.  * Moved gui/core/plugin --> gui/plugin/
  182.  *
  183.  * Revision 1.9  2003/05/09 16:44:20  dicuccio
  184.  * Added check to see if a given URL is empty - useful for optional arguments
  185.  *
  186.  * Revision 1.8  2003/04/24 16:17:51  dicuccio
  187.  * Simplified type-specific access - eliminated most distinct object types in
  188.  * favor of a more generic mechanism.
  189.  *
  190.  * Revision 1.7  2003/03/28 17:12:03  dicuccio
  191.  * Added PostRead()
  192.  *
  193.  * Revision 1.6  2003/03/25 19:37:50  dicuccio
  194.  * Added CSeq_annot as a named type
  195.  *
  196.  * Revision 1.5  2003/02/28 15:05:42  dicuccio
  197.  * Added overloaded Assign() as well as generic object accessor
  198.  *
  199.  * Revision 1.4  2003/02/26 20:51:22  dicuccio
  200.  * Added utility function to wrap insertion into a multimap
  201.  *
  202.  * Revision 1.3  2003/02/26 14:34:18  dicuccio
  203.  * Changed all setters to take const arguments - relieves need to use
  204.  * const_cast<> outside of the plugin framework.  Added beefed up argument
  205.  * validation.
  206.  *
  207.  * Revision 1.2  2003/02/25 14:42:17  dicuccio
  208.  * Changed internal sotrage mechanism for plugin URL - confogrms more closely to
  209.  * URL spec (addresses look like 'gbdata://PluginValue/Document=0xaddr&...')
  210.  *
  211.  * Revision 1.1  2003/02/24 13:00:18  dicuccio
  212.  * Renamed classes in plugin spec:
  213.  *     CArgSeg --> CPluginArgSet
  214.  *     CArgument --> CPluginArg
  215.  *     CPluginArgs --> CPluginCommand
  216.  *     CPluginCommands --> CPluginCommandSet
  217.  *
  218.  * Revision 1.2  2003/02/21 16:44:13  dicuccio
  219.  * Added Win32 export specifiers for new plugin library.  Fixed compilation
  220.  * issues for Win32.
  221.  *
  222.  * Revision 1.1  2003/02/20 19:44:06  dicuccio
  223.  * Created new plugin architecture, mediated via an ASN.1 spec.  Moved GBENCH
  224.  * framework over to use new plugin architecture.
  225.  *
  226.  *
  227.  * ===========================================================================
  228.  */
  229. #endif // GUI_CORE_PLUGIN_PLUGINURL_HPP
  230. /* Original file checksum: lines: 93, chars: 2297, CRC32: e57c0a79 */