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

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: hxclreg.h,v 1.1.1.1.50.1 2004/07/09 02:07:18 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. #ifndef _HXCLIENTREG_H_
  50. #define _HXCLIENTREG_H_
  51. struct IHXRegistry;
  52. class  CommonRegistry;
  53. class HXClientRegistry : public IHXRegistry
  54. {
  55. protected:
  56.     virtual ~HXClientRegistry();
  57.     PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
  58.     LONG32 m_lRefCount;
  59.     CommonRegistry* m_pPropDB;
  60.     IUnknown* m_pContext;
  61. public:
  62.     HXClientRegistry();
  63.     void Init    (IUnknown* pContext);
  64.     void Close   (void);
  65.     /*
  66.      * IUnknown methods
  67.      */
  68.     STDMETHOD(QueryInterface) (THIS_
  69. REFIID riid,
  70. void** ppvObj);
  71.     STDMETHOD_(ULONG32,AddRef) (THIS);
  72.     STDMETHOD_(ULONG32,Release) (THIS);
  73.     /*
  74.      * IHXRegistry methods
  75.      */
  76.     /************************************************************************
  77.      *  Method:
  78.      *      IHXRegistry::CreatePropWatch
  79.      *  Purpose:
  80.      *      Create a new IUnknown object which can then be queried for the
  81.      *  right kind of IHXPropWatch object.
  82.      */
  83.     STDMETHOD(CreatePropWatch) (THIS_
  84. REF(IHXPropWatch*) pPropWatch);
  85.     /************************************************************************
  86.      *  Method:
  87.      *      HXRegistry::AddComp
  88.      *  Purpose:
  89.      *      Add a COMPOSITE property to the registry and return its hash
  90.      *  key value if successful. It returns ZERO (0) if an error occured
  91.      *  during the operation.
  92.      */
  93.     STDMETHOD_(UINT32, AddComp) (THIS_
  94. const char* pName);
  95.     /************************************************************************
  96.      *  Method:
  97.      *      HXRegistry::AddInt
  98.      *  Purpose:
  99.      *      Add an INTEGER property with name in "pName" and value in 
  100.      *  "iValue" to the registry. The return value is the id to
  101.      *  the newly added Property or ZERO if there was an error.
  102.      */
  103.     STDMETHOD_(UINT32, AddInt) (THIS_
  104. const char* pName, 
  105. const INT32 iValue);
  106.     /************************************************************************
  107.      *  Method:
  108.      *      HXRegistry::GetInt
  109.      *  Purpose:
  110.      *      Retreive an INTEGER value from the registry given its Property
  111.      *  name "pName" or by its id "id". If the Property 
  112.      *  is found, it will return HXR_OK, otherwise it returns HXR_FAIL.
  113.      */
  114.     STDMETHOD(GetIntByName) (THIS_
  115. const char* pName,
  116. REF(INT32) nValue) const;
  117.     STDMETHOD(GetIntById) (THIS_
  118. const UINT32 id,
  119. REF(INT32) nValue) const;
  120.     /************************************************************************
  121.      *  Method:
  122.      *      HXRegistry::SetIntByXYZ
  123.      *  Purpose:
  124.      *      Modify a Property's INTEGER value in the registry given the
  125.      *  Property's name "pName" or its id "id". If the value 
  126.      *  was set, it will return HXR_OK, otherwise it returns HXR_FAIL.
  127.      */
  128.     STDMETHOD(SetIntByName) (THIS_
  129. const char* pName, 
  130. const INT32 iValue);
  131.     STDMETHOD(SetIntById) (THIS_
  132. const UINT32 id,
  133. const INT32 iValue);
  134.     /************************************************************************
  135.      *  Method:
  136.      *      HXRegistry::AddStr
  137.      *  Purpose:
  138.      *      Add an STRING property with name in "pName" and value in 
  139.      *  "pcValue" to the registry.
  140.      */
  141.     STDMETHOD_(UINT32, AddStr) (THIS_
  142. const char* pName, 
  143. IHXBuffer* pValue);
  144.     /************************************************************************
  145.      *  Method:
  146.      *      HXRegistry::GetStrByXYZ
  147.      *  Purpose:
  148.      *      Retreive an STRING value from the registry given its Property
  149.      *  name "pName" or by its id "id". If the Property 
  150.      *  is found, it will return HXR_OK, otherwise it returns HXR_FAIL.
  151.      */
  152.     STDMETHOD(GetStrByName) (THIS_
  153. const char*     pName,
  154. REF(IHXBuffer*)    pValue) const;
  155.     STDMETHOD(GetStrById) (THIS_
  156. const UINT32     id,
  157. REF(IHXBuffer*)    pValue) const;
  158.     /************************************************************************
  159.      *  Method:
  160.      *      HXRegistry::SetStrByXYZ
  161.      *  Purpose:
  162.      *      Modify a Property's STRING value in the registry given the
  163.      *  Property's name "pName" or its id "id". If the value 
  164.      *  was set, it will return HXR_OK, otherwise it returns HXR_FAIL.
  165.      */
  166.     STDMETHOD(SetStrByName) (THIS_
  167. const char* pName, 
  168. IHXBuffer* pValue);
  169.     STDMETHOD(SetStrById) (THIS_
  170. const UINT32 id,
  171. IHXBuffer* pValue);
  172.     /************************************************************************
  173.      *  Method:
  174.      *      HXRegistry::AddBuf
  175.      *  Purpose:
  176.      *      Add an BUFFER property with name in "pName" and value in 
  177.      *  "pValue" to the registry.
  178.      */
  179.     STDMETHOD_(UINT32, AddBuf) (THIS_
  180. const char* pName, 
  181. IHXBuffer* pValue);
  182.     /************************************************************************
  183.      *  Method:
  184.      *      HXRegistry::GetStrByXYZ
  185.      *  Purpose:
  186.      *      Retreive the BUFFER from the registry given its Property
  187.      *  name "pName" or its id "id". If the Property 
  188.      *  is found, it will return HXR_OK, otherwise it returns HXR_FAIL.
  189.      */
  190.     STDMETHOD(GetBufByName) (THIS_
  191. const char* pName,
  192. REF(IHXBuffer*) ppValue) const;
  193.     STDMETHOD(GetBufById) (THIS_
  194. const UINT32 id,
  195. REF(IHXBuffer*) ppValue) const;
  196.     /************************************************************************
  197.      *  Method:
  198.      *      HXRegistry::SetBufByXYZ
  199.      *  Purpose:
  200.      *      Modify a Property's BUFFER in the registry given the
  201.      *  Property's name "pName" or its id "id". If the value 
  202.      *  was set, it will return HXR_OK, otherwise it returns HXR_FAIL.
  203.      */
  204.     STDMETHOD(SetBufByName) (THIS_
  205. const char* pName, 
  206. IHXBuffer* pValue);
  207.     STDMETHOD(SetBufById) (THIS_
  208. const UINT32 id,
  209. IHXBuffer* pValue);
  210.     /************************************************************************
  211.      *  Method:
  212.      *      HXRegistry::AddIntRef
  213.      *  Purpose:
  214.      *      Add an INTEGER REFERENCE property with name in "pName" and 
  215.      *  value in "iValue" to the registry. This property allows the user
  216.      *  to modify its contents directly, without having to go through the
  217.      *  registry.
  218.      */
  219.     STDMETHOD_(UINT32, AddIntRef) (THIS_
  220. const char* pName, 
  221. INT32*   piValue);
  222.     /************************************************************************
  223.      *  Method:
  224.      *      HXRegistry::DeleteByXYZ
  225.      *  Purpose:
  226.      *      Delete a Property from the registry using its name "pName"
  227.      *  or id "id".
  228.      */
  229.     STDMETHOD_(UINT32, DeleteByName) (THIS_
  230. const char* pName);
  231.     STDMETHOD_(UINT32, DeleteById) (THIS_
  232. const UINT32 id);
  233.     /************************************************************************
  234.      *  Method:
  235.      *      HXRegistry::GetTypeByXYZ
  236.      *  Purpose:
  237.      *      Returns the datatype of the Property given its name "pName"
  238.      *  or its id "id".
  239.      */
  240.     STDMETHOD_(HXPropType, GetTypeByName) (THIS_
  241. const char* pName) const;
  242.     STDMETHOD_(HXPropType, GetTypeById) (THIS_
  243. const UINT32 id) const;
  244.     /************************************************************************
  245.      *  Method:
  246.      *      HXRegistry::FindParentIdByXYZ
  247.      *  Purpose:
  248.      *      Returns the id value of the parent node if it exists.
  249.      *  If it fails, a ZERO value is returned.
  250.      */
  251.     STDMETHOD_(UINT32, FindParentIdByName) (THIS_
  252. const char* pName) const;
  253.     STDMETHOD_(UINT32, FindParentIdById) (THIS_
  254. const UINT32 id) const;
  255.     /************************************************************************
  256.      *  Method:
  257.      *      HXRegistry::GetPropName
  258.      *  Purpose:
  259.      *      Returns the Property name in the pName char buffer passed
  260.      *  as a parameter, given the Property's id "ulId".
  261.      */
  262.     STDMETHOD(GetPropName) (THIS_
  263. const UINT32 ulId,
  264. REF(IHXBuffer*) pName) const;
  265.     /************************************************************************
  266.      *  Method:
  267.      *      HXRegistry::GetId
  268.      *  Purpose:
  269.      *      Returns the Property's id given the Property name.
  270.      */
  271.     STDMETHOD_(UINT32, GetId) (THIS_
  272. const char* pName) const;
  273.     /************************************************************************
  274.      *  Method:
  275.      *      IHXRegistry::GetPropListOfRoot
  276.      *  Purpose:
  277.      *      Returns an array of a Properties under the root level of the 
  278.      *  registry's hierarchy.
  279.      */
  280.     STDMETHOD(GetPropListOfRoot)  (THIS_
  281. REF(IHXValues*) pValues) const;
  282.     /************************************************************************
  283.      *  Method:
  284.      *      IHXRegistry::GetPropListByXYZ
  285.      *  Purpose:
  286.      *      Returns an array of Properties immediately under the one with
  287.      *  name "pName" or id "id".
  288.      */
  289.     STDMETHOD(GetPropListByName)  (THIS_
  290.  const char* pName,
  291.  REF(IHXValues*) pValues) const;
  292.     STDMETHOD(GetPropListById)    (THIS_
  293.  const UINT32 id,
  294.  REF(IHXValues*) pValues) const;
  295.     /************************************************************************
  296.      *  Method:
  297.      *      HXRegistry::GetNumProps
  298.      *  Purpose:
  299.      *      Returns the count of the number of Properties within the
  300.      *  registry. If a property name of id is specified, then it
  301.      *  returns the number of Properties under it.
  302.      */
  303.     STDMETHOD_(INT32, GetNumPropsAtRoot) (THIS) const;
  304.     STDMETHOD_(INT32, GetNumPropsByName)(THIS_
  305. const char* pName) const;
  306.     STDMETHOD_(INT32, GetNumPropsById) (THIS_
  307. const UINT32 id) const;
  308. };
  309. #endif /*_HXCLIENTREG_H_*/