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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: PluginConfigValues.hpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 19:46:12  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: PluginConfigValues.hpp,v 1000.2 2004/06/01 19:46:12 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:  Robert G. Smith
  35.  *
  36.  * File Description:
  37.  *   CPluginConfigValues represents one named set of key/value pairs
  38.  *   used to configure a plugin. It is identified by its 'item' and 'style' strings.
  39.  *   It is intended that 'item' would refer to the type of the data and 'style'
  40.  *   to particular saved data values. i.e. all those CPluginConfigValues that have
  41.  *   the same 'item' would have the same 'key's and structure in their 'keyvals'.
  42.  *   
  43.  *
  44.  * Remark:
  45.  *   This code was originally generated by application DATATOOL
  46.  *   using specifications from the data definition file
  47.  *   'plugin.asn'.
  48.  */
  49. #ifndef GUI_PLUGIN_PLUGINCONFIGVALUES_HPP
  50. #define GUI_PLUGIN_PLUGINCONFIGVALUES_HPP
  51. // generated includes
  52. #include <gui/config/PluginConfigValues_.hpp>
  53. #include <gui/config/KeyValue.hpp>
  54. #include <gui/config/PluginConfigID.hpp>
  55. // generated classes
  56. BEGIN_NCBI_SCOPE
  57. BEGIN_objects_SCOPE // namespace ncbi::objects::
  58. class NCBI_GUICONFIG_EXPORT CPluginConfigValues : public CPluginConfigValues_Base
  59. {
  60.     typedef CPluginConfigValues_Base Tparent;
  61. public:
  62.     // constructor
  63.     CPluginConfigValues(void);
  64.     CPluginConfigValues(const string& item, const string& style);
  65.     // destructor
  66.     ~CPluginConfigValues(void);
  67.     // merge the other_pcv with this one, over writing values in this one
  68.     // when the key is the same.
  69.     CPluginConfigValues& Merge(const CPluginConfigValues& other_pcv);
  70.     
  71.     // accessors
  72.     // Check these 'Can' methods before calling 'Get' methods
  73.     bool    CanGetByKey() const;
  74.     bool    CanGetByType() const;
  75.     
  76.     // search multiple levels with keys like: "label1|label2|label3"
  77.     const CKeyValue&    GetKeyvalueByKey(const string & key, const string& delim = "|") const;
  78.     const string&       GetStringByKey(const string & key, const string& delim = "|") const;   // Normally use this.
  79.  
  80.     /// Return a list of all the keys in this PCC.
  81.     /// use delim to separate parts of a hierachical key 
  82.     void    GetAllKeys(CKeyValue::TKeyList& key_list, const string& delim = "|") const;
  83.     // only single level keys (type) since recursion on multiple levels 
  84.     // must be done by CPluginConfigCache.
  85.     const CPluginConfigID&  GetPCIdByType(const string& type) const;
  86.     const string&           GetStyleByType(const string& type) const;
  87.     
  88.     // mutators
  89.     // We always can add/set data. 
  90.     // But call these if you want to make sure the other kind of data
  91.     // wasn't added before because you will lose it otherwise.
  92.     bool    CanAddKeys() const;
  93.     bool    CanAddPCId() const;
  94.     
  95.     // search and add multiple levels with keys like: "label1|label2|label3"
  96.     CKeyValue& AddKey(const string& key, const string& delim = "|");
  97.     CKeyValue& AddKeyString(const string& key, const string& value, const string& delim = "|");
  98.     
  99.     // only single level keys (type) since recursion on multiple levels 
  100.     // must be done by CPluginConfigCache.
  101.     CPluginConfigID&    AddPCId(const string& type, const string& style);
  102.     CPluginConfigID&    AddPCId(const CPluginConfigID& pcid);
  103.     // delete key value pairs.
  104.     bool    DelKeyval(const string & key, const string& delim = "|");
  105.     
  106.     // comparisons
  107.     bool    TypeMatches(string item) const;
  108.     bool    StyleMatches(string style) const;
  109. private:
  110.     // Prohibit copy constructor and assignment operator
  111.     CPluginConfigValues(const CPluginConfigValues& value);
  112.     CPluginConfigValues& operator=(const CPluginConfigValues& value);
  113. };
  114. /////////////////// CPluginConfigValues inline methods
  115. // constructor
  116. inline
  117. CPluginConfigValues::CPluginConfigValues(void)
  118. {
  119. }
  120. inline
  121. CPluginConfigValues::CPluginConfigValues(const string& item, const string& style)
  122. {
  123.     CRef<TId> pId(new TId(item, style));  // or would auto_ptr be better?
  124.     SetId(*pId);
  125. }
  126. // comparisons
  127. inline
  128. bool CPluginConfigValues::TypeMatches(string type) const
  129. {
  130.     if (CanGetId()) {
  131.         return (GetId().TypeMatches(type));
  132.     }
  133.     return false;
  134. }
  135. inline
  136. bool CPluginConfigValues::StyleMatches(string style) const
  137. {
  138.     if (CanGetId()) {
  139.         return (GetId().StyleMatches(style));
  140.     }
  141.     return false;
  142. }
  143. // accessors
  144. inline
  145. bool CPluginConfigValues::CanGetByKey() const
  146. {
  147.     return CanGetData() && GetData().IsKeyvals();
  148. }
  149. inline
  150. bool CPluginConfigValues::CanGetByType() const
  151. {
  152.     return CanGetData() && GetData().IsInclude();
  153. }
  154. inline
  155. const string& CPluginConfigValues::GetStringByKey(const string & key, const string& delim) const
  156. {
  157.     return GetKeyvalueByKey(key, delim).GetVal().GetStr();
  158. }
  159. inline
  160. const string& CPluginConfigValues::GetStyleByType(const string& type) const
  161. {
  162.     return GetPCIdByType(type).GetStyle();
  163. }
  164. // mutator (Set) methods
  165.     
  166. inline
  167. bool CPluginConfigValues::CanAddKeys() const
  168. {
  169.     return !IsSetData()  ||  (CanGetData()  &&  ! GetData().IsInclude());
  170. }
  171. inline
  172. bool CPluginConfigValues::CanAddPCId() const
  173. {
  174.     return !IsSetData()  ||  (CanGetData()  &&  ! GetData().IsKeyvals());
  175. }
  176. inline
  177. CKeyValue& CPluginConfigValues::AddKeyString(const string& key, const string& val, const string& delim)
  178. {
  179.     CKeyValue& kv = AddKey(key, delim);
  180.     kv.SetVal().SetStr(val);
  181.     return kv;
  182. }
  183. inline
  184. CPluginConfigID& CPluginConfigValues::AddPCId(const CPluginConfigID& pcid)
  185. {
  186.     _ASSERT(pcid.CanGetType()  &&  pcid.CanGetStyle());
  187.     
  188.     return AddPCId(pcid.GetType(), pcid.GetStyle());
  189. }
  190. /////////////////// end of CPluginConfigValues inline methods
  191. END_objects_SCOPE // namespace ncbi::objects::
  192. END_NCBI_SCOPE
  193. /*
  194. * ===========================================================================
  195. *
  196. * $Log: PluginConfigValues.hpp,v $
  197. * Revision 1000.2  2004/06/01 19:46:12  gouriano
  198. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  199. *
  200. * Revision 1.4  2004/04/20 14:06:19  rsmith
  201. * add GetAllKeys method.
  202. *
  203. * Revision 1.3  2003/11/21 12:48:32  rsmith
  204. * Add ability to delete entries by key.
  205. *
  206. * Revision 1.2  2003/10/10 19:35:31  dicuccio
  207. * Added export specifiers
  208. *
  209. * Revision 1.1  2003/10/10 17:41:23  rsmith
  210. * moved from gui/plugin to gui/config
  211. *
  212. * Revision 1.4  2003/08/19 18:12:05  rsmith
  213. * can always add anything. CanAddKeys() and CanAddPCId() only advisory.
  214. *
  215. * Revision 1.3  2003/08/13 20:24:20  rsmith
  216. * Merge method and get rid of FindIf
  217. *
  218. * Revision 1.2  2003/08/05 19:01:34  rsmith
  219. * change members used in mem_fun to satisfy certain compilers.
  220. *
  221. * Revision 1.1  2003/08/05 17:37:38  rsmith
  222. * Classes to allow saving of plugins configuration values as ASN.1.
  223. *
  224. *
  225. * ===========================================================================
  226. */
  227. #endif // GUI_PLUGIN_PLUGINCONFIGVALUES_HPP
  228. /* Original file checksum: lines: 93, chars: 2532, CRC32: 1662a326 */