hxvalue.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:12k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _HXVALUE_H_
  36. #define _HXVALUE_H_
  37. #include "hxcom.h"
  38. /*
  39.  * Forward declarations of some interfaces defined or used here-in.
  40.  */
  41. typedef _INTERFACE  IUnknown     IUnknown;
  42. typedef _INTERFACE  IHXBuffer     IHXBuffer;
  43. typedef _INTERFACE  IHXKeyValueList     IHXKeyValueList;
  44. typedef _INTERFACE  IHXKeyValueListIter            IHXKeyValueListIter;
  45. typedef _INTERFACE  IHXKeyValueListIterOneKey      IHXKeyValueListIterOneKey;
  46. typedef _INTERFACE  IHXValues     IHXValues;
  47. typedef _INTERFACE  IHXOptions     IHXOptions;
  48. /* Note : GUIDS 3101 - 3107 are deprecated. */
  49. /****************************************************************************
  50.  * 
  51.  *  Interface:
  52.  *
  53.  * IHXKeyValueList
  54.  *
  55.  *  Purpose:
  56.  *
  57.  * Stores a list of strings, where strings are keyed by not necessarily
  58.  *      unique keys.
  59.  *
  60.  *
  61.  *  IHXKeyValueList:
  62.  *
  63.  * {0x00003108-0901-11d1-8B06-00A024406D59}
  64.  *
  65.  */
  66. DEFINE_GUID(IID_IHXKeyValueList, 0x00003108, 0x901, 0x11d1, 
  67.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  68. #define CLSID_IHXKeyValueList IID_IHXKeyValueList
  69. #undef  INTERFACE
  70. #define INTERFACE   IHXKeyValueList
  71. DECLARE_INTERFACE_(IHXKeyValueList, IUnknown)
  72. {
  73.     /*
  74.      * IUnknown methods
  75.      */
  76.     STDMETHOD(QueryInterface) (THIS_
  77. REFIID riid,
  78. void** ppvObj) PURE;
  79.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  80.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  81.     /*
  82.      * Regular methods
  83.      */
  84.      /************************************************************************
  85.      * Method:
  86.      *     IHXKeyValueList::AddKeyValue
  87.      * Purpose:
  88.      *      Add a new key/value tuple to our list of strings.  You can have
  89.      *      multiple strings for the same key.
  90.      */
  91.     STDMETHOD(AddKeyValue) (THIS_
  92. const char* pKey,
  93. IHXBuffer* pStr) PURE;
  94.      /************************************************************************
  95.      * Method:
  96.      *     IHXKeyValueList::GetIter
  97.      * Purpose:
  98.      *      Return an iterator that allows you to iterate through all the 
  99.      *      key/value tuples in our list of strings.
  100.      */
  101.     STDMETHOD(GetIter) (THIS_
  102. REF(IHXKeyValueListIter*) pIter) PURE;
  103.      /************************************************************************
  104.      * Method:
  105.      *     IHXKeyValueList::GetIterOneKey
  106.      * Purpose:
  107.      *      Return an iterator that allows you to iterate through all the 
  108.      *      strings for a particular key.
  109.      */
  110.     STDMETHOD(GetIterOneKey) (THIS_
  111. const char* pKey,
  112. REF(IHXKeyValueListIterOneKey*) pIter) PURE;
  113.      /************************************************************************
  114.      * Method:
  115.      *     IHXKeyValueList::AppendAllListItems
  116.      * Purpose:
  117.      *      Append all the key/string tuples from another list to this list.
  118.      *      (You can have duplicate keys.)
  119.      */
  120.     STDMETHOD(AppendAllListItems)   (THIS_
  121.     IHXKeyValueList* pList) PURE;
  122.      /************************************************************************
  123.      * Method:
  124.      *     IHXKeyValueList::KeyExists
  125.      * Purpose:
  126.      *      See whether any strings exist for a particular key.
  127.      */
  128.     STDMETHOD_(BOOL,KeyExists)  (THIS_
  129. const char* pKey) PURE;
  130.      /************************************************************************
  131.      * Method:
  132.      *     IHXKeyValueList::CreateObject
  133.      * Purpose:
  134.      *      Create an empty object that is the same class as the current object.
  135.      */
  136.     STDMETHOD(CreateObject) (THIS_
  137. REF(IHXKeyValueList*) pNewList) PURE;
  138.      /************************************************************************
  139.      * Method:
  140.      *     IHXKeyValueList::ImportValues.
  141.      * Purpose:
  142.      *      Import all the strings from an IHXValues object into this object.
  143.      *      If this object also supports IHXValues, it should also import the 
  144.      *      ULONGs and Buffers.  You can have duplicate keys, and old data is 
  145.      *      left untouched.
  146.      */
  147.     STDMETHOD(ImportValues) (THIS_
  148. IHXValues* pValues) PURE;
  149. };
  150. /****************************************************************************
  151.  * 
  152.  *  Interface:
  153.  *
  154.  * IHXKeyValueListIter
  155.  *
  156.  *  Purpose:
  157.  *
  158.  * Iterate over all the items in a CKeyValueList.
  159.  *      Call IHXKeyValueList::GetIter to create an iterator.
  160.  *
  161.  *
  162.  *  IHXKeyValueListIter:
  163.  *
  164.  * {0x00003109-0901-11d1-8B06-00A024406D59}
  165.  *
  166.  */
  167. DEFINE_GUID(IID_IHXKeyValueListIter,   0x00003109, 0x901, 0x11d1, 
  168.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  169. #define CLSID_IHXKeyValueListIter IID_IHXKeyValueListIter
  170. #undef  INTERFACE
  171. #define INTERFACE   IHXKeyValueListIter
  172. DECLARE_INTERFACE_(IHXKeyValueListIter, IUnknown)
  173. {
  174.     /*
  175.      * IUnknown methods
  176.      */
  177.     STDMETHOD(QueryInterface) (THIS_
  178. REFIID riid,
  179. void** ppvObj) PURE;
  180.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  181.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  182.     /*
  183.      * Regular methods
  184.      */
  185.      /************************************************************************
  186.      * Method:
  187.      *     IHXKeyValueListIter::GetNextPair
  188.      * Purpose:
  189.      *      Each call to this method returns one key/value tuple from your
  190.      *      list of strings.  Strings are returned in same order that they
  191.      *      were inserted.
  192.      */
  193.     STDMETHOD(GetNextPair) (THIS_
  194. REF(const char*) pKey,
  195. REF(IHXBuffer*) pStr) PURE;
  196.      /************************************************************************
  197.      * Method:
  198.      *     IHXKeyValueListIter::ReplaceCurr
  199.      * Purpose:
  200.      *      Replaces the value in the key/value tuple that was returned 
  201.      *      in the last call to GetNextPair with a new string.
  202.      */
  203.     STDMETHOD(ReplaceCurr) (THIS_
  204. IHXBuffer* pStr) PURE;
  205. };
  206. /****************************************************************************
  207.  * 
  208.  *  Interface:
  209.  *
  210.  * IHXKeyValueListIterOneKey
  211.  *
  212.  *  Purpose:
  213.  *
  214.  * Iterate over all the items in a CKeyValueList that match a particular key.
  215.  *      Call IHXKeyValueList::GetIterOneKey to create an iterator.
  216.  *
  217.  *
  218.  *  IHXKeyValueListIterOneKey:
  219.  *
  220.  * {0x00003110-0901-11d1-8B06-00A024406D59}
  221.  *
  222.  */
  223. DEFINE_GUID(IID_IHXKeyValueListIterOneKey,   0x00003110, 0x901, 0x11d1, 
  224.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  225. #define CLSID_IHXKeyValueListIterOneKey IID_IHXKeyValueListIterOneKey
  226. #undef  INTERFACE
  227. #define INTERFACE   IHXKeyValueListIterOneKey
  228. DECLARE_INTERFACE_(IHXKeyValueListIterOneKey, IUnknown)
  229. {
  230.     /*
  231.      * IUnknown methods
  232.      */
  233.     STDMETHOD(QueryInterface) (THIS_
  234. REFIID riid,
  235. void** ppvObj) PURE;
  236.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  237.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  238.     /*
  239.      * Regular methods
  240.      */
  241.      /************************************************************************
  242.      * Method:
  243.      *     IHXKeyValueListIterOneKey::GetNextString
  244.      * Purpose:
  245.      *      Each call to this method returns one string that matches the 
  246.      *      key for this iterator.  Strings are returned in same order that they
  247.      *      were inserted.
  248.      *      
  249.      */
  250.     STDMETHOD(GetNextString) (THIS_
  251. REF(IHXBuffer*) pStr) PURE;
  252.      /************************************************************************
  253.      * Method:
  254.      *     IHXKeyValueListIterOneKey::ReplaceCurr
  255.      * Purpose:
  256.      *      Replaces the value in the key/value tuple that was referenced
  257.      *      in the last call to GetNextString with a new string.
  258.      *      
  259.      */
  260.     STDMETHOD(ReplaceCurr) (THIS_
  261. IHXBuffer* pStr) PURE;
  262. };
  263. /****************************************************************************
  264.  * 
  265.  *  Interface:
  266.  *
  267.  * IHXOptions
  268.  *
  269.  *  Purpose:
  270.  *
  271.  * This is a generic options interface, implemented by any object to
  272.  * allow its options to be read and set by another component of the
  273.  * system.
  274.  *
  275.  *
  276.  *  IHXOptions:
  277.  *
  278.  * {0x00003111-0901-11d1-8B06-00A024406D59}
  279.  *
  280.  */
  281. DEFINE_GUID(IID_IHXOptions,   0x00003111, 0x901, 0x11d1, 
  282.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  283. #define CLSID_IHXOptions IID_IHXOptions
  284. #undef  INTERFACE
  285. #define INTERFACE   IHXOptions
  286. DECLARE_INTERFACE_(IHXOptions, IUnknown)
  287. {
  288.     /*
  289.      * IUnknown methods
  290.      */
  291.     STDMETHOD(QueryInterface) (THIS_
  292. REFIID riid,
  293. void** ppvObj) PURE;
  294.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  295.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  296.     /*
  297.      * Regular methods
  298.      */
  299.      /************************************************************************
  300.      * Method:
  301.      *     IHXOptions::GetOptions
  302.      * Purpose:
  303.      *      This method returns a list of the options supported by this
  304.      *     particular object, along with the value currently set for each
  305.      *     option. Enumerate the members of the returned IHXValues object
  306.      *     to discover what options a component supports and the type of
  307.      *     each of those options. The value for each name-value pair is
  308.      *     the current setting for that option.
  309.      *      
  310.      */
  311.     STDMETHOD(GetOptions) (THIS_
  312. REF(IHXValues*) pOptions) PURE;
  313.      /************************************************************************
  314.      * Method:
  315.      *     IHXOptions::SetOptionULONG32
  316.      * Purpose:
  317.      *      Sets the value of a ULONG32 option. The return value indicates
  318.      *     whether or not the SetOptionULONG32 call succeeded.
  319.      *      
  320.      */
  321.     STDMETHOD(SetOptionULONG32) (THIS_
  322. const char* pName,
  323. ULONG32 ulValue) PURE;
  324.      /************************************************************************
  325.      * Method:
  326.      *     IHXOptions::SetOptionCString
  327.      * Purpose:
  328.      *      Sets the value of a CString option. The return value indicates
  329.      *     whether or not the SetOptionCString call succeeded.
  330.      *      
  331.      */
  332.     STDMETHOD(SetOptionCString) (THIS_
  333. const char* pName,
  334. IHXBuffer* pValue) PURE;
  335.      /************************************************************************
  336.      * Method:
  337.      *     IHXOptions::SetOptionBuffer
  338.      * Purpose:
  339.      *      Sets the value of a Buffer option. The return value indicates
  340.      *     whether or not the SetOptionBuffer call succeeded.
  341.      *      
  342.      */
  343.     STDMETHOD(SetOptionBuffer) (THIS_
  344. const char* pName,
  345. IHXBuffer* pValue) PURE;
  346. };
  347. #endif /* !_HXVALUE_H_ */