rmavalue.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:11k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmavalue.h,v 1.1 2003/05/30 02:18:01 gabest Exp $
  4.  *
  5.  *  Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
  6.  *  
  7.  *  http://www.real.com/devzone
  8.  *
  9.  *  This program contains proprietary 
  10.  *  information of Progressive Networks, Inc, and is licensed
  11.  *  subject to restrictions on use and distribution.
  12.  *
  13.  *
  14.  *  RealMedia Architecture Plug-in Interfaces.
  15.  *
  16.  */
  17. #ifndef _RMAVALUE_H_
  18. #define _RMAVALUE_H_
  19. /*
  20.  * Forward declarations of some interfaces defined or used here-in.
  21.  */
  22. typedef _INTERFACE  IUnknown     IUnknown;
  23. typedef _INTERFACE  IRMABuffer     IRMABuffer;
  24. typedef _INTERFACE  IRMAKeyValueList     IRMAKeyValueList;
  25. typedef _INTERFACE  IRMAKeyValueListIter            IRMAKeyValueListIter;
  26. typedef _INTERFACE  IRMAKeyValueListIterOneKey      IRMAKeyValueListIterOneKey;
  27. typedef _INTERFACE  IRMAValues     IRMAValues;
  28. typedef _INTERFACE  IRMAOptions     IRMAOptions;
  29. /* Note : GUIDS 3101 - 3107 are deprecated. */
  30. /****************************************************************************
  31.  * 
  32.  *  Interface:
  33.  *
  34.  * IRMAKeyValueList
  35.  *
  36.  *  Purpose:
  37.  *
  38.  * Stores a list of strings, where strings are keyed by not necessarily
  39.  *      unique keys.
  40.  *
  41.  *
  42.  *  IRMAKeyValueList:
  43.  *
  44.  * {0x00003108-0901-11d1-8B06-00A024406D59}
  45.  *
  46.  */
  47. DEFINE_GUID(IID_IRMAKeyValueList, 0x00003108, 0x901, 0x11d1, 
  48.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  49. #define CLSID_IRMAKeyValueList IID_IRMAKeyValueList
  50. #undef  INTERFACE
  51. #define INTERFACE   IRMAKeyValueList
  52. DECLARE_INTERFACE_(IRMAKeyValueList, IUnknown)
  53. {
  54.     /*
  55.      * IUnknown methods
  56.      */
  57.     STDMETHOD(QueryInterface) (THIS_
  58. REFIID riid,
  59. void** ppvObj) PURE;
  60.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  61.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  62.     /*
  63.      * Regular methods
  64.      */
  65.      /************************************************************************
  66.      * Method:
  67.      *     IRMAKeyValueList::AddKeyValue
  68.      * Purpose:
  69.      *      Add a new key/value tuple to our list of strings.  You can have
  70.      *      multiple strings for the same key.
  71.      */
  72.     STDMETHOD(AddKeyValue) (THIS_
  73. const char* pKey,
  74. IRMABuffer* pStr) PURE;
  75.      /************************************************************************
  76.      * Method:
  77.      *     IRMAKeyValueList::GetIter
  78.      * Purpose:
  79.      *      Return an iterator that allows you to iterate through all the 
  80.      *      key/value tuples in our list of strings.
  81.      */
  82.     STDMETHOD(GetIter) (THIS_
  83. REF(IRMAKeyValueListIter*) pIter) PURE;
  84.      /************************************************************************
  85.      * Method:
  86.      *     IRMAKeyValueList::GetIterOneKey
  87.      * Purpose:
  88.      *      Return an iterator that allows you to iterate through all the 
  89.      *      strings for a particular key.
  90.      */
  91.     STDMETHOD(GetIterOneKey) (THIS_
  92. const char* pKey,
  93. REF(IRMAKeyValueListIterOneKey*) pIter) PURE;
  94.      /************************************************************************
  95.      * Method:
  96.      *     IRMAKeyValueList::AppendAllListItems
  97.      * Purpose:
  98.      *      Append all the key/string tuples from another list to this list.
  99.      *      (You can have duplicate keys.)
  100.      */
  101.     STDMETHOD(AppendAllListItems)   (THIS_
  102.     IRMAKeyValueList* pList) PURE;
  103.      /************************************************************************
  104.      * Method:
  105.      *     IRMAKeyValueList::KeyExists
  106.      * Purpose:
  107.      *      See whether any strings exist for a particular key.
  108.      */
  109.     STDMETHOD_(BOOL,KeyExists)  (THIS_
  110. const char* pKey) PURE;
  111.      /************************************************************************
  112.      * Method:
  113.      *     IRMAKeyValueList::CreateObject
  114.      * Purpose:
  115.      *      Create an empty object that is the same class as the current object.
  116.      */
  117.     STDMETHOD(CreateObject) (THIS_
  118. REF(IRMAKeyValueList*) pNewList) PURE;
  119.      /************************************************************************
  120.      * Method:
  121.      *     IRMAKeyValueList::ImportValues.
  122.      * Purpose:
  123.      *      Import all the strings from an IRMAValues object into this object.
  124.      *      If this object also supports IRMAValues, it should also import the 
  125.      *      ULONGs and Buffers.  You can have duplicate keys, and old data is 
  126.      *      left untouched.
  127.      */
  128.     STDMETHOD(ImportValues) (THIS_
  129. IRMAValues* pValues) PURE;
  130. };
  131. /****************************************************************************
  132.  * 
  133.  *  Interface:
  134.  *
  135.  * IRMAKeyValueListIter
  136.  *
  137.  *  Purpose:
  138.  *
  139.  * Iterate over all the items in a CKeyValueList.
  140.  *      Call IRMAKeyValueList::GetIter to create an iterator.
  141.  *
  142.  *
  143.  *  IRMAKeyValueListIter:
  144.  *
  145.  * {0x00003109-0901-11d1-8B06-00A024406D59}
  146.  *
  147.  */
  148. DEFINE_GUID(IID_IRMAKeyValueListIter,   0x00003109, 0x901, 0x11d1, 
  149.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  150. #define CLSID_IRMAKeyValueListIter IID_IRMAKeyValueListIter
  151. #undef  INTERFACE
  152. #define INTERFACE   IRMAKeyValueListIter
  153. DECLARE_INTERFACE_(IRMAKeyValueListIter, IUnknown)
  154. {
  155.     /*
  156.      * IUnknown methods
  157.      */
  158.     STDMETHOD(QueryInterface) (THIS_
  159. REFIID riid,
  160. void** ppvObj) PURE;
  161.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  162.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  163.     /*
  164.      * Regular methods
  165.      */
  166.      /************************************************************************
  167.      * Method:
  168.      *     IRMAKeyValueListIter::GetNextPair
  169.      * Purpose:
  170.      *      Each call to this method returns one key/value tuple from your
  171.      *      list of strings.  Strings are returned in same order that they
  172.      *      were inserted.
  173.      */
  174.     STDMETHOD(GetNextPair) (THIS_
  175. REF(const char*) pKey,
  176. REF(IRMABuffer*) pStr) PURE;
  177.      /************************************************************************
  178.      * Method:
  179.      *     IRMAKeyValueListIter::ReplaceCurr
  180.      * Purpose:
  181.      *      Replaces the value in the key/value tuple that was returned 
  182.      *      in the last call to GetNextPair with a new string.
  183.      */
  184.     STDMETHOD(ReplaceCurr) (THIS_
  185. IRMABuffer* pStr) PURE;
  186. };
  187. /****************************************************************************
  188.  * 
  189.  *  Interface:
  190.  *
  191.  * IRMAKeyValueListIterOneKey
  192.  *
  193.  *  Purpose:
  194.  *
  195.  * Iterate over all the items in a CKeyValueList that match a particular key.
  196.  *      Call IRMAKeyValueList::GetIterOneKey to create an iterator.
  197.  *
  198.  *
  199.  *  IRMAKeyValueListIterOneKey:
  200.  *
  201.  * {0x00003110-0901-11d1-8B06-00A024406D59}
  202.  *
  203.  */
  204. DEFINE_GUID(IID_IRMAKeyValueListIterOneKey,   0x00003110, 0x901, 0x11d1, 
  205.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  206. #define CLSID_IRMAKeyValueListIterOneKey IID_IRMAKeyValueListIterOneKey
  207. #undef  INTERFACE
  208. #define INTERFACE   IRMAKeyValueListIterOneKey
  209. DECLARE_INTERFACE_(IRMAKeyValueListIterOneKey, IUnknown)
  210. {
  211.     /*
  212.      * IUnknown methods
  213.      */
  214.     STDMETHOD(QueryInterface) (THIS_
  215. REFIID riid,
  216. void** ppvObj) PURE;
  217.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  218.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  219.     /*
  220.      * Regular methods
  221.      */
  222.      /************************************************************************
  223.      * Method:
  224.      *     IRMAKeyValueListIterOneKey::GetNextString
  225.      * Purpose:
  226.      *      Each call to this method returns one string that matches the 
  227.      *      key for this iterator.  Strings are returned in same order that they
  228.      *      were inserted.
  229.      *      
  230.      */
  231.     STDMETHOD(GetNextString) (THIS_
  232. REF(IRMABuffer*) pStr) PURE;
  233.      /************************************************************************
  234.      * Method:
  235.      *     IRMAKeyValueListIterOneKey::ReplaceCurr
  236.      * Purpose:
  237.      *      Replaces the value in the key/value tuple that was referenced
  238.      *      in the last call to GetNextString with a new string.
  239.      *      
  240.      */
  241.     STDMETHOD(ReplaceCurr) (THIS_
  242. IRMABuffer* pStr) PURE;
  243. };
  244. /****************************************************************************
  245.  * 
  246.  *  Interface:
  247.  *
  248.  * IRMAOptions
  249.  *
  250.  *  Purpose:
  251.  *
  252.  * This is a generic options interface, implemented by any object to
  253.  * allow its options to be read and set by another component of the
  254.  * system.
  255.  *
  256.  *
  257.  *  IRMAOptions:
  258.  *
  259.  * {0x00003111-0901-11d1-8B06-00A024406D59}
  260.  *
  261.  */
  262. DEFINE_GUID(IID_IRMAOptions,   0x00003111, 0x901, 0x11d1, 
  263.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  264. #define CLSID_IRMAOptions IID_IRMAOptions
  265. #undef  INTERFACE
  266. #define INTERFACE   IRMAOptions
  267. DECLARE_INTERFACE_(IRMAOptions, IUnknown)
  268. {
  269.     /*
  270.      * IUnknown methods
  271.      */
  272.     STDMETHOD(QueryInterface) (THIS_
  273. REFIID riid,
  274. void** ppvObj) PURE;
  275.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  276.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  277.     /*
  278.      * Regular methods
  279.      */
  280.      /************************************************************************
  281.      * Method:
  282.      *     IRMAOptions::GetOptions
  283.      * Purpose:
  284.      *      This method returns a list of the options supported by this
  285.      *     particular object, along with the value currently set for each
  286.      *     option. Enumerate the members of the returned IRMAValues object
  287.      *     to discover what options a component supports and the type of
  288.      *     each of those options. The value for each name-value pair is
  289.      *     the current setting for that option.
  290.      *      
  291.      */
  292.     STDMETHOD(GetOptions) (THIS_
  293. REF(IRMAValues*) pOptions) PURE;
  294.      /************************************************************************
  295.      * Method:
  296.      *     IRMAOptions::SetOptionULONG32
  297.      * Purpose:
  298.      *      Sets the value of a ULONG32 option. The return value indicates
  299.      *     whether or not the SetOptionULONG32 call succeeded.
  300.      *      
  301.      */
  302.     STDMETHOD(SetOptionULONG32) (THIS_
  303. const char* pName,
  304. ULONG32 ulValue) PURE;
  305.      /************************************************************************
  306.      * Method:
  307.      *     IRMAOptions::SetOptionCString
  308.      * Purpose:
  309.      *      Sets the value of a CString option. The return value indicates
  310.      *     whether or not the SetOptionCString call succeeded.
  311.      *      
  312.      */
  313.     STDMETHOD(SetOptionCString) (THIS_
  314. const char* pName,
  315. IRMABuffer* pValue) PURE;
  316.      /************************************************************************
  317.      * Method:
  318.      *     IRMAOptions::SetOptionBuffer
  319.      * Purpose:
  320.      *      Sets the value of a Buffer option. The return value indicates
  321.      *     whether or not the SetOptionBuffer call succeeded.
  322.      *      
  323.      */
  324.     STDMETHOD(SetOptionBuffer) (THIS_
  325. const char* pName,
  326. IRMABuffer* pValue) PURE;
  327. };
  328. #endif /* !_RMAVALUE_H_ */