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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: User_object.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 21:01:19  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: User_object.hpp,v 1000.0 2003/10/29 21:01:19 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 ASN data definition file
  42.  *   'general.asn'.
  43.  */
  44. #ifndef OBJECTS_GENERAL_USER_OBJECT_HPP
  45. #define OBJECTS_GENERAL_USER_OBJECT_HPP
  46. // generated includes
  47. #include <objects/general/User_object_.hpp>
  48. // generated classes
  49. BEGIN_NCBI_SCOPE
  50. BEGIN_objects_SCOPE // namespace ncbi::objects::
  51. class NCBI_GENERAL_EXPORT CUser_object : public CUser_object_Base
  52. {
  53.     typedef CUser_object_Base Tparent;
  54. public:
  55.     // constructor
  56.     CUser_object(void);
  57.     // destructor
  58.     ~CUser_object(void);
  59.     // add a data field to the user object that holds a given value
  60.     CUser_object& AddField(const string& label, const string& value);
  61.     CUser_object& AddField(const string& label, int           value);
  62.     CUser_object& AddField(const string& label, double        value);
  63.     CUser_object& AddField(const string& label, bool          value);
  64.     CUser_object& AddField(const string& label, const vector<string>& value);
  65.     CUser_object& AddField(const string& label, const vector<int>&    value);
  66.     CUser_object& AddField(const string& label, const vector<double>& value);
  67.     CUser_object& AddField(const string& label, CUser_object& value);
  68.     CUser_object& AddField(const string& label,
  69.                            const list< CRef<CUser_object> >& value);
  70.     CUser_object& AddField(const string& label,
  71.                            const list< CRef<CUser_field> >& value);
  72.     // access a named field in this user object.  This is a little
  73.     // sneaky in that it interprets a delimiter for recursion.
  74.     // The GetXXX() version will throw an exception if the field
  75.     // doesn't exist.
  76.     const CUser_field& GetField(const string& str,
  77.                                 const string& delim = ".") const;
  78.     CUser_field&       SetField(const string& str,
  79.                                 const string& delim = ".");
  80.     bool               HasField(const string& str,
  81.                                 const string& delim = ".") const;
  82.     // enum controlling what to return for a label
  83.     // this mirrors a request inside of feature::GetLabel()
  84.     enum ELabelContent {
  85.         eType,
  86.         eContent,
  87.         eBoth
  88.     };
  89.     // Append a label to label.  The type defaults to content for
  90.     // backward compatibility
  91.     void GetLabel(string* label, ELabelContent mode = eContent) const;
  92.     //
  93.     // enums for implicit typing of user objects
  94.     //
  95.     // general category
  96.     enum ECategory {
  97.         eCategory_Unknown = -1,
  98.         eCategory_Experiment
  99.     };
  100.     // sub-category experiment
  101.     enum EExperiment {
  102.         eExperiment_Unknown = -1,
  103.         eExperiment_Sage
  104.     };
  105.     // accessors: classify a given user object
  106.     ECategory GetCategory(void) const;
  107.     // sub-category accessors:
  108.     EExperiment GetExperimentType(void) const;
  109.     const CUser_object& GetExperiment(void) const;
  110.     // format a user object as a given type.  This returns a user-object
  111.     // that is suitable for containing whatever specifics might be needed
  112.     CUser_object& SetCategory(ECategory category);
  113.     // format a user object as a given type.  This returns a user-object
  114.     // that is suitable for containing whatever specifics might be needed
  115.     CUser_object& SetExperiment(EExperiment category);
  116. private:
  117.     // Prohibit copy constructor and assignment operator
  118.     CUser_object(const CUser_object& value);
  119.     CUser_object& operator=(const CUser_object& value);
  120. };
  121. /////////////////// CUser_object inline methods
  122. // constructor
  123. inline
  124. CUser_object::CUser_object(void)
  125. {
  126. }
  127. /////////////////// end of CUser_object inline methods
  128. END_objects_SCOPE // namespace ncbi::objects::
  129. END_NCBI_SCOPE
  130. /*
  131. * ===========================================================================
  132. *
  133. * $Log: User_object.hpp,v $
  134. * Revision 1000.0  2003/10/29 21:01:19  gouriano
  135. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.5
  136. *
  137. * Revision 1.5  2003/09/29 15:17:14  dicuccio
  138. * Fleshed out CUser_object API.  Added API to retrieve fields based on a
  139. * delimited key.  Added ability to encode a CUser_object as one of a number of
  140. * standard types (only experiment types are supported currently)
  141. *
  142. * Revision 1.4  2003/06/19 00:53:56  dicuccio
  143. * Added interface functions for adding defined key-value pairs as CUser_field
  144. * sub-objects
  145. *
  146. * Revision 1.3  2002/12/26 12:40:33  dicuccio
  147. * Added Win32 export specifiers
  148. *
  149. * Revision 1.2  2002/10/03 19:01:02  clausen
  150. * Removed extra whitespace
  151. *
  152. * Revision 1.1  2002/10/03 17:00:33  clausen
  153. * Added GetLabel()
  154. *
  155. *
  156. * ===========================================================================
  157. */
  158. #endif // OBJECTS_GENERAL_USER_OBJECT_HPP
  159. /* Original file checksum: lines: 93, chars: 2438, CRC32: 8ba203fc */