hxwinreg.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:11k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: hxwinreg.h,v 1.1.1.1.50.3 2004/07/09 01:47:42 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. class CHXString;
  50. #include "hlxclib/windows.h"
  51. class _CListOfCHXString_Node
  52. {
  53. public:
  54.     _CListOfCHXString_Node();
  55.     ~_CListOfCHXString_Node();
  56.     CHXString& value();
  57.     const CHXString& value() const;
  58.     void value(const CHXString& rclsNewValue);
  59.     _CListOfCHXString_Node& operator=(const CHXString& rclsNewValue); 
  60.     _CListOfCHXString_Node* next() const;
  61.     void next(_CListOfCHXString_Node* plocnNew);
  62.     _CListOfCHXString_Node* prev() const;
  63.     void prev(_CListOfCHXString_Node* plocnNew);
  64.     void Remove();
  65.     void Insert(_CListOfCHXString_Node& rlocnNew);
  66. protected:
  67.     CHXString m_clsValue;
  68.     _CListOfCHXString_Node* m_plocPrev;
  69.     _CListOfCHXString_Node* m_plocNext;
  70.     _CListOfCHXString_Node(const _CListOfCHXString_Node& rlocnOther){}
  71. };
  72. class _CListIteratorCHXString_;
  73. class _CListReverseIteratorCHXString_;
  74. class _CListOfCHXString_
  75. {
  76. public:
  77.     typedef _CListIteratorCHXString_ iterator;
  78.     typedef _CListReverseIteratorCHXString_ reverse_iterator;
  79.     typedef const _CListReverseIteratorCHXString_ const_reverse_iterator;
  80.     _CListOfCHXString_();
  81.     _CListOfCHXString_(const _CListOfCHXString_& rlocOther);
  82.     ~_CListOfCHXString_();
  83.     _CListOfCHXString_& operator=(const _CListOfCHXString_& rlocOther); 
  84.     iterator begin();
  85.     const iterator begin() const;
  86.     iterator end();
  87.     const iterator end() const;
  88.     reverse_iterator rbegin();
  89.     const reverse_iterator rbegin() const;
  90.     reverse_iterator rend();
  91.     const reverse_iterator rend() const;
  92.     iterator insert(iterator itBefore, const CHXString&);
  93.     void insert
  94.     (
  95. iterator itBefore,
  96. const iterator itFirst,
  97. const iterator itLast
  98.     );
  99.     void remove(iterator itThis);
  100.     void remove(iterator itFirst, iterator itLast);
  101.     void empty();
  102. protected:
  103.     _CListOfCHXString_Node m_locnREnd;
  104.     _CListOfCHXString_Node m_locnEnd;
  105.     void _copy(const _CListOfCHXString_& rlocOther);
  106. };
  107. class _CListIteratorCHXString_
  108. {
  109. public:
  110.     _CListIteratorCHXString_();
  111.     _CListIteratorCHXString_
  112.     (
  113.         const _CListOfCHXString_Node& rlocnNewLocation
  114.     );
  115.     _CListIteratorCHXString_(const _CListIteratorCHXString_& rliocOther);
  116.     ~_CListIteratorCHXString_();
  117.     _CListIteratorCHXString_& operator=
  118.     (
  119. const _CListIteratorCHXString_& rliocOther
  120.     );
  121.     CHXString& operator*();
  122.     _CListIteratorCHXString_& operator=(const CHXString& rclsNewValue);
  123.     _CListIteratorCHXString_& operator++();
  124.     const _CListIteratorCHXString_ operator++(int);
  125.     _CListIteratorCHXString_& operator--();
  126.     const _CListIteratorCHXString_ operator--(int);
  127. private:
  128.     _CListOfCHXString_Node* m_plocCurrent;
  129.     friend class _CListOfCHXString_;
  130.     friend BOOL operator==
  131.     (
  132. const _CListIteratorCHXString_& rliocLeft,
  133. const _CListIteratorCHXString_& rliocRight
  134.     );
  135.     friend BOOL operator!=
  136.     (
  137. const _CListIteratorCHXString_& rliocLeft,
  138. const _CListIteratorCHXString_& rliocRight
  139.     );
  140. };
  141. BOOL operator==
  142. (
  143.     const _CListIteratorCHXString_& rliocLeft,
  144.     const _CListIteratorCHXString_& rliocRight
  145. );
  146. BOOL operator!=
  147. (
  148.     const _CListIteratorCHXString_& rliocLeft,
  149.     const _CListIteratorCHXString_& rliocRight
  150. );
  151. class _CListReverseIteratorCHXString_
  152. {
  153. public:
  154.     _CListReverseIteratorCHXString_();
  155.     _CListReverseIteratorCHXString_
  156.     (
  157.         const _CListOfCHXString_Node& rlocnNewLocation
  158.     );
  159.     _CListReverseIteratorCHXString_
  160.     (
  161. _CListReverseIteratorCHXString_& rlriocOther
  162.     );
  163.     ~_CListReverseIteratorCHXString_();
  164.     _CListReverseIteratorCHXString_& operator=
  165.     (
  166. const _CListReverseIteratorCHXString_& rlriocOther
  167.     );
  168.     CHXString& operator*();
  169.     _CListReverseIteratorCHXString_& operator=(const CHXString& rclsNewValue);
  170.     _CListReverseIteratorCHXString_& operator++();
  171.     const _CListReverseIteratorCHXString_ operator++(int);
  172.     _CListReverseIteratorCHXString_& operator--();
  173.     const _CListReverseIteratorCHXString_ operator--(int);
  174. private:
  175.     _CListOfCHXString_Node* m_plocCurrent;
  176.     friend class _CListOfCHXString_;
  177.     friend BOOL operator==
  178.     (
  179. const _CListReverseIteratorCHXString_& rlriocLeft,
  180. const _CListReverseIteratorCHXString_& rlriocRight
  181.     );
  182.     friend BOOL operator!=
  183.     (
  184. const _CListReverseIteratorCHXString_& rlriocLeft,
  185. const _CListReverseIteratorCHXString_& rlriocRight
  186.     );
  187. };
  188. BOOL operator==
  189. (
  190.     const _CListReverseIteratorCHXString_& rlriocLeft,
  191.     const _CListReverseIteratorCHXString_& rlriocRight
  192. );
  193. BOOL operator!=
  194. (
  195.     const _CListReverseIteratorCHXString_& rlriocLeft,
  196.     const _CListReverseIteratorCHXString_& rlriocRight
  197. );     
  198. class AWinRegValue
  199. {
  200. public:
  201.     AWinRegValue(const char* szName, HKEY hkParent)
  202. : m_hkParent(hkParent)
  203. , m_sName(szName)
  204.     {
  205.     }
  206.     virtual ~AWinRegValue(){}
  207.     HX_RESULT Delete()
  208.     {
  209. if
  210. (
  211.     RegDeleteValue
  212.     (
  213. m_hkParent,
  214. OS_STRING(m_sName)
  215.     ) == ERROR_SUCCESS
  216. )
  217. {
  218.     return HXR_OK;
  219. }
  220.         return HXR_FAIL;
  221.     }
  222.     void SetName(const char* szName){m_sName = szName;}
  223.     CHXString& GetName(){return m_sName;}
  224.     void SetParent(HKEY hkParent){m_hkParent = hkParent;}
  225.     
  226.     virtual BOOL DoesExist() =0;
  227.     virtual BOOL IsDWORD(){return FALSE;}
  228.     virtual BOOL AsDWORD(UINT32*){return FALSE;}
  229.     virtual BOOL FromDWORD(UINT32){return FALSE;}
  230.     virtual BOOL IsString(){return FALSE;}
  231.     virtual BOOL AsString(CHXString&){return FALSE;}
  232.     virtual BOOL FromString(const char*){return FALSE;}
  233.     virtual BOOL IsStringArray(){return FALSE;}
  234.     virtual BOOL AsStringArray(_CListOfCHXString_&){return FALSE;}
  235.     virtual BOOL AsStringArray(char**){return FALSE;}
  236.     virtual BOOL FromStringArray (const _CListOfCHXString_&){return FALSE;}
  237.     virtual BOOL FromStringArray(const char*, UINT32){return FALSE;}
  238.     void FreeStringArray
  239.     (
  240. char*& rszValue
  241.     ){delete [] rszValue;rszValue=NULL;}
  242. protected:
  243.     HKEY m_hkParent;
  244.     CHXString m_sName;
  245.     AWinRegValue(){}
  246. private:
  247. };
  248. class CWinRegStringValue : public AWinRegValue
  249. {
  250. public:
  251.     CWinRegStringValue(const char* szName, HKEY hkParent);
  252.     virtual ~CWinRegStringValue();
  253.     CWinRegStringValue& operator=(const char* szNewValue);
  254.     BOOL IsString();
  255.     BOOL AsString(CHXString&);
  256.     BOOL FromString(const char*);
  257.     HX_RESULT Delete();
  258.     
  259.     BOOL DoesExist();
  260. private:
  261.     CWinRegStringValue(){}
  262.     CWinRegStringValue(const CWinRegStringValue&){}
  263. };
  264. class CWinRegDWORDValue : public AWinRegValue
  265. {
  266. public:
  267.     CWinRegDWORDValue(const char* szName, HKEY hkParent);
  268.     virtual ~CWinRegDWORDValue();
  269.     CWinRegDWORDValue& operator=(UINT32 dwNewValue);
  270.     BOOL IsDWORD();
  271.     BOOL AsDWORD(UINT32*);
  272.     BOOL FromDWORD(UINT32);
  273.     HX_RESULT Delete();
  274.     
  275.     BOOL DoesExist();
  276. private:
  277.     CWinRegDWORDValue(){}
  278.     CWinRegDWORDValue(const CWinRegDWORDValue&){}
  279. };
  280. class CWinRegStringArrayValue : public AWinRegValue
  281. {
  282. public:
  283.     CWinRegStringArrayValue(const char* szName, HKEY hkParent);
  284.     virtual ~CWinRegStringArrayValue();
  285.     CWinRegStringArrayValue& operator=(const _CListOfCHXString_&);
  286.     BOOL IsStringArray();
  287.     BOOL AsStringArray(_CListOfCHXString_&);
  288.     BOOL AsStringArray(char**);
  289.     BOOL FromStringArray(const _CListOfCHXString_&);
  290.     BOOL FromStringArray(const char*, UINT32);
  291.     HX_RESULT Delete();
  292.     
  293.     BOOL DoesExist();
  294. private:
  295.     CWinRegStringArrayValue(){}
  296.     CWinRegStringArrayValue(const CWinRegStringArrayValue&){}
  297. };
  298. class CWinRegKey
  299. {
  300. public:
  301.     CWinRegKey();
  302.     virtual ~CWinRegKey();
  303.     HX_RESULT Open();
  304.     HX_RESULT Create
  305.     (
  306. const char* szClass=NULL, 
  307. DWORD dwOptions=REG_OPTION_NON_VOLATILE
  308.     );
  309.     HX_RESULT Close();
  310.     HX_RESULT Flush();
  311.     HX_RESULT DeleteSubKey(const char* szName);
  312.     
  313.     BOOL DoesExist();
  314.     BOOL SetDesiredAccess(REGSAM rsNew);
  315.     REGSAM GetDesiredAccess();
  316.     BOOL SetRootKey(HKEY hkRoot);
  317.     HKEY GetRootKey();
  318.     HKEY GetHandle();
  319.     BOOL SetRelativePath(const char* szPath);
  320.     CHXString& GetRelativePath();
  321.     BOOL GetValue(const char* szName, AWinRegValue** ppwrvOut, UINT32 ulType=0);
  322.     BOOL ResetKeyEnumerator();
  323.     BOOL GetNextKey(CWinRegKey&);
  324.     BOOL ResetValueEnumerator();
  325.     BOOL GetNextValue(AWinRegValue** ppwrvNext);
  326.     void FreeValue(AWinRegValue*&);
  327. protected:
  328. private:
  329.     HKEY m_hkRoot;
  330.     HKEY m_hkThis;
  331.     CHXString m_sPath;
  332.     DWORD m_dwKeyEnumPos;
  333.     DWORD m_dwValueEnumPos;
  334.     REGSAM m_rsAccess;
  335.     BOOL m_bOpen;
  336. };