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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: PluginArg.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/04/12 18:14:37  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.18
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: PluginArg.hpp,v 1000.1 2004/04/12 18:14:37 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.  *    CPluginArg -- defines an interface for a single plugin argument
  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_PLUGINARG_HPP
  45. #define GUI_CORE_PLUGIN_PLUGINARG_HPP
  46. // generated includes
  47. #include <gui/plugin/PluginArg_.hpp>
  48. // generated classes
  49. BEGIN_NCBI_SCOPE
  50. // predeclarations
  51. class CObject;
  52. class IDocument;
  53. BEGIN_objects_SCOPE // namespace ncbi::objects::
  54. class NCBI_XGBPLUGIN_EXPORT CPluginArg : public CPluginArg_Base
  55. {
  56.     typedef CPluginArg_Base Tparent;
  57. public:
  58.     // constructor
  59.     CPluginArg(void);
  60.     // destructor
  61.     ~CPluginArg(void);
  62.     // enumerated list of types we support
  63.     enum EType {
  64.         eNotSet,
  65.         eBoolean,
  66.         eDocument,
  67.         eDouble,
  68.         eInteger,
  69.         eObject,
  70.         eString,
  71.         eFile,
  72.         // this must be last!
  73.         eMaxArg
  74.     };
  75.     // typedefs for collections of argument types
  76.     // CPluginValue supports type-specific data retrieval of single entities
  77.     // and also wraps the necessary document
  78.     typedef list< CConstRef<CPluginValue> > TValues;
  79.     // access the type for this argument
  80.     EType GetType(void) const;
  81.     // determine if this argument is empty (i.e., has all type information but
  82.     // no values)
  83.     bool IsEmpty(void) const;
  84.     // clear any objects from object-based arguments
  85.     void ClearObjects();
  86.     // accessors for specific sub-components
  87.     // in the event that the data type is list, NULL is returned
  88.     const IDocument* GetDocument      (void) const;
  89.     const CObject*   GetObject        (void) const;
  90.     // accessor for the object-specific type info
  91.     // in the event the data type is list, the type info for the first
  92.     // item is returned, as we guarantee that all items in a list will
  93.     // be equivalently typed
  94.     const string& GetObjectSubtype(void) const;
  95.     // set this argument as an integer
  96.     void SetBoolean(void);
  97.     void SetBoolean(bool arg);
  98.     void SetBoolean(const list<bool>& arg);
  99.     bool AsBoolean (void) const;
  100.     // set this argument as an integer
  101.     void SetInteger(void);
  102.     void SetInteger(const string& arg);
  103.     void SetInteger(int arg);
  104.     void SetInteger(const list<int>& arg);
  105.     int  AsInteger (void) const;
  106.     // set this argument as a double
  107.     void   SetDouble(void);
  108.     void   SetDouble(const string& arg);
  109.     void   SetDouble(double arg);
  110.     void   SetDouble(const list<double>& arg);
  111.     double AsDouble (void) const;
  112.     // set this argument as a string
  113.     void          SetString(void);
  114.     void          SetString(const string& arg);
  115.     void          SetString(const list<string>& arg);
  116.     const string& AsString (void) const;
  117.     // set this argument as a file
  118.     void          SetFile(void);
  119.     void          SetFile(const string& arg);
  120.     void          SetFile(const list<string>& arg);
  121.     const string& AsFile (void) const;
  122.     // set this argument as a IDocument
  123.     void             SetDocument(void);
  124.     void             SetDocument(const IDocument& arg);
  125.     void             SetDocument(const TValues& arg);
  126.     const IDocument& AsDocument (void) const;
  127.     // set this argument as a CObject.  There are multiple forms of this;
  128.     // we provide for the passing in of a CTypeInfo object that provides
  129.     // additional information, specifically about CSerialObject-derived
  130.     // objects
  131.     void           SetObject(const string& type);
  132.     void           SetObject(const CTypeInfo* info = NULL);
  133.     void           SetObject(const IDocument& doc, const CObject& arg);
  134.     void           SetObject(const TValues& arg);
  135.     const CObject& AsObject (void) const;
  136.     // insure that this argument can accept a list of its current type
  137.     void SetList(void);
  138.     void SetList(const TValues& values);
  139.     void AsList(TValues& values) const;
  140. private:
  141.     // Prohibit copy constructor and assignment operator
  142.     CPluginArg(const CPluginArg& value);
  143.     CPluginArg& operator=(const CPluginArg& value);
  144. };
  145. /////////////////// CPluginArg inline methods
  146. // constructor
  147. inline
  148. CPluginArg::CPluginArg(void)
  149. {
  150. }
  151. /////////////////// end of CPluginArg inline methods
  152. END_objects_SCOPE // namespace ncbi::objects::
  153. END_NCBI_SCOPE
  154. /*
  155. * ===========================================================================
  156. *
  157. * $Log: PluginArg.hpp,v $
  158. * Revision 1000.1  2004/04/12 18:14:37  gouriano
  159. * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.18
  160. *
  161. * Revision 1.18  2004/02/03 21:23:09  dicuccio
  162. * Added ClearObjects().  Added SetObjects() with string-based descriptor
  163. *
  164. * Revision 1.17  2003/12/23 20:23:22  jcherry
  165. * Make argument values persist across invocations of plugin
  166. *
  167. * Revision 1.16  2003/12/16 20:39:48  jcherry
  168. * Added support for plugin arguments of type file
  169. *
  170. * Revision 1.15  2003/10/27 17:30:38  dicuccio
  171. * Formatting changes.  Changed return value of SetString() to be const ref, not
  172. * value
  173. *
  174. * Revision 1.14  2003/10/07 13:33:43  dicuccio
  175. * Renamed CPluginURL* to CPluginValue*.  Dropped find_if.hpp.  Moved validation
  176. * code into CPluginUtils.
  177. *
  178. * Revision 1.13  2003/09/04 14:00:27  dicuccio
  179. * Introduce IDocument and IView as abstract base classes.  Use IDocument instead
  180. * of CDocument.
  181. *
  182. * Revision 1.12  2003/07/23 17:52:24  dicuccio
  183. * Moved logic for validating arguments into CPluginUtils.
  184. *
  185. * Revision 1.11  2003/07/22 15:27:51  dicuccio
  186. * Dropped support for CSeqVector as an explicitly handled argument type
  187. *
  188. * Revision 1.10  2003/05/19 13:33:02  dicuccio
  189. * Moved gui/core/plugin --> gui/plugin/
  190. *
  191. * Revision 1.9  2003/05/09 16:42:26  dicuccio
  192. * Added an IsEmpty() test to see if no value has been entered - useful check for
  193. * optional arguments
  194. *
  195. * Revision 1.8  2003/04/29 14:31:55  dicuccio
  196. * Removed lots of dead code.  Added function to wrap checking constraints against
  197. * object types
  198. *
  199. * Revision 1.7  2003/04/24 16:16:13  dicuccio
  200. * Simplified argument type access - eliminated most object derived types in favor
  201. * of a more generic type mechanism.  Added boolean types
  202. *
  203. * Revision 1.6  2003/03/25 19:37:50  dicuccio
  204. * Added CSeq_annot as a named type
  205. *
  206. * Revision 1.5  2003/03/10 16:02:47  dicuccio
  207. * Added accessors for an arguments URL (or set of URLs)'s document and abstract
  208. * object
  209. *
  210. * Revision 1.4  2003/03/03 14:22:04  dicuccio
  211. * Added argument constraints - lower bound, upper bound, range, and member-of-set
  212. *
  213. * Revision 1.3  2003/02/26 14:34:18  dicuccio
  214. * Changed all setters to take const arguments - relieves need to use const_cast<>
  215. * outside of the plugin framework.  Added beefed up argument validation.
  216. *
  217. * Revision 1.2  2003/02/25 14:42:17  dicuccio
  218. * Changed internal sotrage mechanism for plugin URL - confogrms more closely to
  219. * URL spec (addresses look like 'gbdata://PluginValue/Document=0xaddr&...')
  220. *
  221. * Revision 1.1  2003/02/24 13:00:18  dicuccio
  222. * Renamed classes in plugin spec:
  223. *     CArgSeg --> CPluginArgSet
  224. *     CArgument --> CPluginArg
  225. *     CPluginArgs --> CPluginCommand
  226. *     CPluginCommands --> CPluginCommandSet
  227. *
  228. * Revision 1.2  2003/02/21 16:44:13  dicuccio
  229. * Added Win32 export specifiers for new plugin library.  Fixed compilation
  230. * issues for Win32.
  231. *
  232. * Revision 1.1  2003/02/20 19:44:06  dicuccio
  233. * Created new plugin architecture, mediated via an ASN.1 spec.  Moved GBENCH
  234. * framework over to use new plugin architecture.
  235. *
  236. *
  237. * ===========================================================================
  238. */
  239. #endif // GUI_CORE_PLUGIN_PLUGINARG_HPP
  240. /* Original file checksum: lines: 93, chars: 2382, CRC32: fb41a3 */