/**************************************************************************** * * RealNetworks Transform Architecture * * $Id: rtapropertybag.h,v 1.8.4.2 2002/06/21 00:04:49 rbunnage Exp $ * * Copyright (C) 1995-2001 RealNetworks, Inc. All rights reserved. * * http://www.real.com/devzone * * This program contains proprietary information of RealNetworks, Inc, * and is licensed subject to restrictions on use and distribution. * * Defines a property bag for the RealNetworks Transform Architecture. * */ #ifndef rtapropertybag_h #define rtapropertybag_h #include "pncom.h" _INTERFACE IRTAProperty; _INTERFACE IRTAPropertyBag; enum ERMATypeId { eTypeNone = 0, eTypeBOOL, eTypeINT32, eTypeUINT32, eTypeINT64, eTypeDouble, eTypeCString, eTypeIntList, eTypeUintList, eTypeInt64List, eTypeDoubleList, eTypeIntRange, eTypeUintRange, eTypeInt64Range, eTypeDoubleRange, eTypeUnknown, /* used for property */ eTypeComposite, eTypeCustomComparison }; /**************************************************************************** * * IRTAPropertyEnumerator * */ /* {DE3AF55D-E608-4b96-B14A-9B1B63EE6D4E} */ DEFINE_GUID( IID_IRTAPropertyEnumerator, 0xde3af55d, 0xe608, 0x4b96, 0xb1, 0x4a, 0x9b, 0x1b, 0x63, 0xee, 0x6d, 0x4e); DECLARE_INTERFACE_( IRTAPropertyEnumerator, IUnknown ) { STDMETHOD_( UINT32, GetCount)( THIS ) const PURE; STDMETHOD( First )( THIS_ IRTAProperty **pValue ) PURE; STDMETHOD( Next )( THIS_ IRTAProperty **pValue ) PURE; STDMETHOD( Current )( THIS_ IRTAProperty **pValue ) PURE; }; /* {B79B102D-2ADD-4a2f-9258-6CEA02F38355} */ DEFINE_GUID( IID_IRTAIntEnumerator, 0xb79b102d, 0x2add, 0x4a2f, 0x92, 0x58, 0x6c, 0xea, 0x2, 0xf3, 0x83, 0x55); DECLARE_INTERFACE_( IRTAIntEnumerator, IUnknown ) { STDMETHOD_( UINT32, GetCount)( THIS ) const PURE; STDMETHOD( First )( THIS_ INT32 *pValue ) PURE; STDMETHOD( Next )( THIS_ INT32 *pValue ) PURE; STDMETHOD( Current )( THIS_ INT32 *pValue ) PURE; }; /* {FB119200-6A26-4275-9722-F2E6A0EDBF65} */ DEFINE_GUID( IID_IRTAUintEnumerator, 0xfb119200, 0x6a26, 0x4275, 0x97, 0x22, 0xf2, 0xe6, 0xa0, 0xed, 0xbf, 0x65); DECLARE_INTERFACE_( IRTAUintEnumerator, IUnknown ) { STDMETHOD_( UINT32, GetCount)( THIS ) const PURE; STDMETHOD( First )( THIS_ UINT32 *pValue ) PURE; STDMETHOD( Next )( THIS_ UINT32 *pValue ) PURE; STDMETHOD( Current )( THIS_ UINT32 *pValue ) PURE; }; /* {F3687366-C7BA-4512-8013-B633C80FA4F2} */ DEFINE_GUID( IID_IRTAInt64Enumerator, 0xf3687366, 0xc7ba, 0x4512, 0x80, 0x13, 0xb6, 0x33, 0xc8, 0xf, 0xa4, 0xf2); DECLARE_INTERFACE_( IRTAInt64Enumerator, IUnknown ) { STDMETHOD_( UINT32, GetCount)( THIS ) const PURE; STDMETHOD( First )( THIS_ INT64 *pValue ) PURE; STDMETHOD( Next )( THIS_ INT64 *pValue ) PURE; STDMETHOD( Current )( THIS_ INT64 *pValue ) PURE; }; /* {8B9435F7-C7A4-4dc0-B726-05D617E7727C} */ DEFINE_GUID( IID_IRTADoubleEnumerator, 0x8b9435f7, 0xc7a4, 0x4dc0, 0xb7, 0x26, 0x5, 0xd6, 0x17, 0xe7, 0x72, 0x7c); DECLARE_INTERFACE_( IRTADoubleEnumerator, IUnknown ) { STDMETHOD_( UINT32, GetCount)( THIS ) const PURE; STDMETHOD( First )( THIS_ double *pValue ) PURE; STDMETHOD( Next )( THIS_ double *pValue ) PURE; STDMETHOD( Current )( THIS_ double *pValue ) PURE; }; /* {C33AB619-BFC4-41c3-9B91-C46954FB7AB0} */ DEFINE_GUID( IID_IRTAStringEnumerator, 0xc33ab619, 0xbfc4, 0x41c3, 0x9b, 0x91, 0xc4, 0x69, 0x54, 0xfb, 0x7a, 0xb0); DECLARE_INTERFACE_( IRTAStringEnumerator, IUnknown ) { STDMETHOD_( UINT32, GetCount)( THIS ) const PURE; STDMETHOD( First )( THIS_ PCSTR *pValue ) PURE; STDMETHOD( Next )( THIS_ PCSTR *pValue ) PURE; STDMETHOD( Current )( THIS_ PCSTR *pValue ) PURE; }; /* IRTAIntRange */ /* {C3A72969-7B9A-42b3-9EDE-0CA689CDAE1B} */ DEFINE_GUID( IID_IRTAIntRange, 0xc3a72969, 0x7b9a, 0x42b3, 0x9e, 0xde, 0xc, 0xa6, 0x89, 0xcd, 0xae, 0x1b); DECLARE_INTERFACE_( IRTAIntRange, IUnknown ) { STDMETHOD_( INT32, GetMin )( THIS ) const PURE; STDMETHOD_( INT32, GetMax )( THIS ) const PURE; STDMETHOD_( INT32, GetStepSize )( THIS ) const PURE; STDMETHOD( Set )( THIS_ INT32 uMin, INT32 uMax, INT32 uStepSize = 1 ) PURE; STDMETHOD_( BOOL, IsInRange )( THIS_ INT32 uValue ) const PURE; STDMETHOD( Compare )( THIS_ IRTAIntRange *pRange, IRTAIntRange **ppResult ) const PURE; }; #define IRTARange IRTAIntRange #define IRTARangePtr IRTAIntRangePtr /* IRTAUintRange */ /* {6BB9FEA0-A1BC-498c-B08F-800C95A30A19} */ DEFINE_GUID( IID_IRTAUintRange, 0x6bb9fea0, 0xa1bc, 0x498c, 0xb0, 0x8f, 0x80, 0xc, 0x95, 0xa3, 0xa, 0x19); DECLARE_INTERFACE_( IRTAUintRange, IUnknown ) { STDMETHOD_( UINT32, GetMin )( THIS ) const PURE; STDMETHOD_( UINT32, GetMax )( THIS ) const PURE; STDMETHOD_( UINT32, GetStepSize )( THIS ) const PURE; STDMETHOD( Set )( THIS_ UINT32 uMin, UINT32 uMax, UINT32 uStepSize = 1 ) PURE; STDMETHOD_( BOOL, IsInRange )( THIS_ UINT32 uValue ) const PURE; STDMETHOD( Compare )( THIS_ IRTAUintRange *pRange, IRTAUintRange **ppResult ) const PURE; }; /* {CE755DAF-5402-44c5-9FE3-187B341401BF} */ DEFINE_GUID( IID_IRTAInt64Range, 0xce755daf, 0x5402, 0x44c5, 0x9f, 0xe3, 0x18, 0x7b, 0x34, 0x14, 0x1, 0xbf); DECLARE_INTERFACE_( IRTAInt64Range, IUnknown ) { STDMETHOD_( INT64, GetMin )( THIS ) const PURE; STDMETHOD_( INT64, GetMax )( THIS ) const PURE; STDMETHOD_( INT64, GetStepSize )( THIS ) const PURE; STDMETHOD( Set )( THIS_ INT64 uMin, INT64 uMax, INT64 uStepSize = 1 ) PURE; STDMETHOD_( BOOL, IsInRange )( THIS_ INT64 uValue ) const PURE; STDMETHOD( Compare )( THIS_ IRTAInt64Range *pRange, IRTAInt64Range **ppResult ) const PURE; }; /* {B560CB1B-5A07-40bf-9C1E-41537F1B2485} */ DEFINE_GUID( IID_IRTADoubleRange, 0xb560cb1b, 0x5a07, 0x40bf, 0x9c, 0x1e, 0x41, 0x53, 0x7f, 0x1b, 0x24, 0x85); DECLARE_INTERFACE_( IRTADoubleRange, IUnknown ) { STDMETHOD_( double, GetMin )( THIS ) const PURE; STDMETHOD_( double, GetMax )( THIS ) const PURE; STDMETHOD_( double, GetStepSize )( THIS ) const PURE; STDMETHOD_( double, GetError )( THIS ) const PURE; STDMETHOD( Set )( double dMin, double dMax, double dStepSize, double dError ) PURE; STDMETHOD_( BOOL, IsInRange )( THIS_ double dValue ) const PURE; STDMETHOD( Compare )( THIS_ IRTADoubleRange *pRange, IRTADoubleRange **ppResult ) const PURE; }; /* create interface for a list of integers */ /* {0AF8BC8C-8157-48ef-865E-F75F5E539ABC} */ DEFINE_GUID( IID_IRTAIntList, 0xaf8bc8c, 0x8157, 0x48ef, 0x86, 0x5e, 0xf7, 0x5f, 0x5e, 0x53, 0x9a, 0xbc); DECLARE_INTERFACE_( IRTAIntList, IUnknown ) { STDMETHOD_( INT32, GetFront )( THIS ) PURE; STDMETHOD_( INT32, PopFront )( THIS ) PURE; STDMETHOD( PushFront )( THIS_ INT32 value ) PURE; STDMETHOD_( INT32, GetBack )( THIS ) PURE; STDMETHOD_( INT32, PopBack )( THIS ) PURE; STDMETHOD( PushBack )( THIS_ INT32 value ) PURE; STDMETHOD_( UINT32, GetSize )( THIS ) PURE; STDMETHOD_( BOOL, IsEmpty )( THIS ) PURE; STDMETHOD( Clear )( THIS ) PURE; STDMETHOD( Compare )( THIS_ IRTAIntList *pList, INT32 *puValue ) const PURE; STDMETHOD( GetIntersection )( THIS_ IRTAIntList *pList, IRTAIntList **ppIntersection ) const PURE; STDMETHOD_( BOOL, Contains )( THIS_ INT32 value ) const PURE; STDMETHOD( GetEnumerator )( THIS_ IRTAIntEnumerator **pEnumerator ) PURE; }; /* {1548135D-84CF-4102-AA6D-22245C480B74} */ DEFINE_GUID( IID_IRTAUintList, 0x1548135d, 0x84cf, 0x4102, 0xaa, 0x6d, 0x22, 0x24, 0x5c, 0x48, 0xb, 0x74); DECLARE_INTERFACE_( IRTAUintList, IUnknown ) { STDMETHOD_( UINT32, GetFront )( THIS ) PURE; STDMETHOD_( UINT32, PopFront )( THIS ) PURE; STDMETHOD( PushFront )( THIS_ UINT32 value ) PURE; STDMETHOD_( UINT32, GetBack )( THIS ) PURE; STDMETHOD_( UINT32, PopBack )( THIS ) PURE; STDMETHOD( PushBack )( UINT32 value ) PURE; STDMETHOD_( UINT32, GetSize )( THIS ) PURE; STDMETHOD_( BOOL, IsEmpty )( THIS ) PURE; STDMETHOD( Clear )( THIS ) PURE; STDMETHOD( Compare )( THIS_ IRTAUintList *pList, UINT32 *puValue ) const PURE; STDMETHOD( GetIntersection )( THIS_ IRTAUintList *pList, IRTAUintList **ppIntersection ) const PURE; STDMETHOD_( BOOL, Contains )( THIS_ UINT32 value ) const PURE; STDMETHOD( GetEnumerator )( THIS_ IRTAUintEnumerator **pEnumerator ) PURE; }; /* {2E89B96E-AE62-43d7-B819-61D979605FC7} */ DEFINE_GUID( IID_IRTAInt64List, 0x2e89b96e, 0xae62, 0x43d7, 0xb8, 0x19, 0x61, 0xd9, 0x79, 0x60, 0x5f, 0xc7); DECLARE_INTERFACE_( IRTAInt64List, IUnknown ) { STDMETHOD_( INT64, GetFront )( THIS ) PURE; STDMETHOD_( INT64, PopFront )( THIS ) PURE; STDMETHOD( PushFront )( THIS_ INT64 value ) PURE; STDMETHOD_( INT64, GetBack )( THIS ) PURE; STDMETHOD_( INT64, PopBack )( THIS ) PURE; STDMETHOD( PushBack )( THIS_ INT64 value ) PURE; STDMETHOD_( UINT32, GetSize )( THIS ) PURE; STDMETHOD_( BOOL, IsEmpty )( THIS ) PURE; STDMETHOD( Clear )( THIS ) PURE; STDMETHOD( Compare )( THIS_ IRTAInt64List *pList, INT64 *puValue ) const PURE; STDMETHOD( GetIntersection )( THIS_ IRTAInt64List *pList, IRTAInt64List **ppIntersection ) const PURE; STDMETHOD_( BOOL, Contains )( THIS_ INT64 value ) const PURE; STDMETHOD( GetEnumerator )( THIS_ IRTAInt64Enumerator **pEnumerator ) PURE; }; /* {BCF2A536-4D85-4bff-B114-E38268623476} */ DEFINE_GUID( IID_IRTADoubleList, 0xbcf2a536, 0x4d85, 0x4bff, 0xb1, 0x14, 0xe3, 0x82, 0x68, 0x62, 0x34, 0x76); DECLARE_INTERFACE_( IRTADoubleList, IUnknown ) { STDMETHOD_( double, GetFront )( THIS ) PURE; STDMETHOD_( double, PopFront )( THIS ) PURE; STDMETHOD( PushFront )( THIS_ double value ) PURE; STDMETHOD_( double, GetBack )( THIS ) PURE; STDMETHOD_( double, PopBack )( THIS ) PURE; STDMETHOD( PushBack )( THIS_ double value ) PURE; STDMETHOD_( UINT32, GetSize )( THIS ) PURE; STDMETHOD_( BOOL, IsEmpty )( THIS ) PURE; STDMETHOD( Clear )( THIS ) PURE; STDMETHOD( Compare )( THIS_ IRTADoubleList *pList, double *puValue ) const PURE; STDMETHOD( GetIntersection )( THIS_ IRTADoubleList *pList, IRTADoubleList **ppIntersection ) const PURE; STDMETHOD_( BOOL, Contains )( THIS_ double value ) const PURE; STDMETHOD( GetEnumerator )( THIS_ IRTADoubleEnumerator **pEnumerator ) PURE; }; /**************************************************************************** * * IRTACustomComparison * */ DECLARE_INTERFACE_( IRTACustomComparison, IUnknown ) { STDMETHOD( Compare )( THIS_ IUnknown *pConnectingProperty, IUnknown **ppNegotiatedProperty ) PURE; }; // {A9A58DAF-97A7-469a-AE53-E817CFE97AD0} DEFINE_GUID( IID_IRTACustomComparison, 0xa9a58daf, 0x97a7, 0x469a, 0xae, 0x53, 0xe8, 0x17, 0xcf, 0xe9, 0x7a, 0xd0); /**************************************************************************** * * IRTAProperty * */ DECLARE_INTERFACE_( IRTAProperty, IUnknown ) { STDMETHOD_( const CHAR*, GetKey)( THIS ) const PURE; STDMETHOD_(UINT32, GetType)( THIS ) const PURE; STDMETHOD(GetBool)( BOOL *pbValue ) const PURE; STDMETHOD(SetBool)( BOOL bValue ) PURE; /* access to integer elements */ STDMETHOD(GetInt)( INT32 *pnValue ) const PURE; STDMETHOD(SetInt)( INT32 nValue ) PURE; /* access to unsigned integer elements */ STDMETHOD(GetUint)( UINT32 *puValue ) const PURE; STDMETHOD(SetUint)( UINT32 uValue ) PURE; /* access to int64 elements */ STDMETHOD(GetInt64)( INT64 *pn64Value ) const PURE; STDMETHOD(SetInt64)( INT64 n64Value ) PURE; /* access to double elements */ STDMETHOD(GetDouble)( double *pdValue ) const PURE; STDMETHOD(SetDouble)( double dValue ) PURE; /* access to string elements */ STDMETHOD(GetString)( const CHAR **pcszValue ) const PURE; STDMETHOD(SetString)( const CHAR *cszValue ) PURE; /* access to list elements (elements that are lists themselves) */ STDMETHOD(GetIntList)( IRTAIntList **ppValue ) const PURE; STDMETHOD(SetIntList)( IRTAIntList *pValue ) PURE; /* access to list elements (elements that are lists themselves) */ STDMETHOD(GetUintList)( IRTAUintList **ppValue ) const PURE; STDMETHOD(SetUintList)( IRTAUintList *pValue ) PURE; /* access to list elements (elements that are lists themselves) */ STDMETHOD(GetInt64List)( IRTAInt64List **ppValue ) const PURE; STDMETHOD(SetInt64List)( IRTAInt64List *pValue ) PURE; /* access to list elements (elements that are lists themselves) */ STDMETHOD(GetDoubleList)( IRTADoubleList **ppValue ) const PURE; STDMETHOD(SetDoubleList)( IRTADoubleList *pValue ) PURE; /* access to "int-range" elements */ STDMETHOD(GetIntRange)( IRTAIntRange **ppValue ) const PURE; STDMETHOD(SetIntRange)( IRTAIntRange *pValue ) PURE; /* access to "unsigned-int-range" elements */ STDMETHOD(GetUintRange)( IRTAUintRange **ppValue ) const PURE; STDMETHOD(SetUintRange)( IRTAUintRange *pValue ) PURE; /* access to "int64-range" elements */ STDMETHOD(GetInt64Range)( IRTAInt64Range **ppValue ) const PURE; STDMETHOD(SetInt64Range)( IRTAInt64Range *pValue ) PURE; /* access to "double-range" elements */ STDMETHOD(GetDoubleRange)( IRTADoubleRange **ppValue ) const PURE; STDMETHOD(SetDoubleRange)( IRTADoubleRange *pValue ) PURE; /* catch all for com objects */ STDMETHOD( GetUnknown )( IUnknown **ppType ) const PURE; STDMETHOD( SetUnknown )( IUnknown *pType ) PURE; /* access to nested property elements */ STDMETHOD(GetPropertyBag)( IRTAPropertyBag **ppValue ) const PURE; STDMETHOD(SetPropertyBag)( IRTAPropertyBag *pValue ) PURE; }; /* {0FF75E41-6F66-4392-BE4A-71030C434BF0} */ DEFINE_GUID( IID_IRTAProperty, 0xff75e41, 0x6f66, 0x4392, 0xbe, 0x4a, 0x71, 0x3, 0xc, 0x43, 0x4b, 0xf0); /**************************************************************************** * * IRTAPropertyBag * */ DECLARE_INTERFACE_( IRTAPropertyBag, IUnknown ) { /* attribute access */ STDMETHOD_(UINT32, GetCount)( THIS ) PURE; /* direct access */ /* access to bool values */ STDMETHOD(GetBool)( THIS_ const CHAR* pName, BOOL *pbValue ) PURE; STDMETHOD(SetBool)( THIS_ const CHAR* pName, BOOL bValue ) PURE; /* access to integer elements */ STDMETHOD(GetInt)( THIS_ const CHAR* pName, INT32 *puValue ) PURE; STDMETHOD(SetInt)( THIS_ const CHAR* pName, INT32 nValue ) PURE; /* access to unsigned integer elements */ STDMETHOD(GetUint)( THIS_ const CHAR* pName, UINT32 *puValue ) PURE; STDMETHOD(SetUint)( THIS_ const CHAR* pName, UINT32 uValue ) PURE; /* access to int64 elements */ STDMETHOD(GetInt64)( THIS_ const CHAR* pName, INT64 *puValue ) PURE; STDMETHOD(SetInt64)( THIS_ const CHAR* pName, INT64 nValue ) PURE; /* access to double elements */ STDMETHOD(GetDouble)( THIS_ const CHAR* pName, double *puValue ) PURE; STDMETHOD(SetDouble)( THIS_ const CHAR* pName, double nValue ) PURE; /* access to string elements */ STDMETHOD(GetString)( THIS_ const CHAR* pName, const CHAR **pcszValue ) PURE; STDMETHOD(SetString)( THIS_ const CHAR* pName, const CHAR *cszValue ) PURE; /* access to list elements (elements that are lists themselves) */ STDMETHOD(GetIntList)( THIS_ const CHAR* pName, IRTAIntList **ppValue ) PURE; STDMETHOD(SetIntList)( THIS_ const CHAR* pName, IRTAIntList *pValue ) PURE; /* access to list elements (elements that are lists themselves) */ STDMETHOD(GetUintList)( THIS_ const CHAR* pName, IRTAUintList **ppValue ) PURE; STDMETHOD(SetUintList)( THIS_ const CHAR* pName, IRTAUintList *pValue ) PURE; /* access to list elements (elements that are lists themselves) */ STDMETHOD(GetInt64List)( THIS_ const CHAR* pName, IRTAInt64List **ppValue ) PURE; STDMETHOD(SetInt64List)( THIS_ const CHAR* pName, IRTAInt64List *pValue ) PURE; /* access to list elements (elements that are lists themselves) */ STDMETHOD(GetDoubleList)( THIS_ const CHAR* pName, IRTADoubleList **ppValue ) PURE; STDMETHOD(SetDoubleList)( THIS_ const CHAR* pName, IRTADoubleList *pValue ) PURE; /* access to "int-range" elements */ STDMETHOD(GetIntRange)( THIS_ const CHAR* pName, IRTAIntRange **ppValue ) PURE; STDMETHOD(SetIntRange)( THIS_ const CHAR* pName, IRTAIntRange *pValue ) PURE; /* access to "unsigned-int-range" elements */ STDMETHOD(GetUintRange)( THIS_ const CHAR* pName, IRTAUintRange **ppValue ) PURE; STDMETHOD(SetUintRange)( THIS_ const CHAR* pName, IRTAUintRange *pValue ) PURE; /* access to "int64-range" elements */ STDMETHOD(GetInt64Range)( THIS_ const CHAR* pName, IRTAInt64Range **ppValue ) PURE; STDMETHOD(SetInt64Range)( THIS_ const CHAR* pName, IRTAInt64Range *pValue ) PURE; /* access to "double-range" elements */ STDMETHOD(GetDoubleRange)( THIS_ const CHAR* pName, IRTADoubleRange **ppValue ) PURE; STDMETHOD(SetDoubleRange)( THIS_ const CHAR* pName, IRTADoubleRange *pValue ) PURE; /* catch all for com objects */ STDMETHOD( GetUnknown )( THIS_ const CHAR* pName, IUnknown **ppType ) PURE; STDMETHOD( SetUnknown )( THIS_ const CHAR* pName, IUnknown *pType ) PURE; /* access to property objects */ STDMETHOD(GetProperty)( THIS_ const CHAR* pName, IRTAProperty **pProperty ) PURE; STDMETHOD(SetProperty)( THIS_ IRTAProperty *pProperty ) PURE; /* access to nested property elements */ STDMETHOD(GetPropertyBag)( THIS_ const CHAR* pName, IRTAPropertyBag **ppValue ) PURE; STDMETHOD(SetPropertyBag)( THIS_ const CHAR* pName, IRTAPropertyBag *pValue ) PURE; /* removal */ STDMETHOD( Remove )( THIS_ const CHAR* pName ) PURE; /* enumerator access */ STDMETHOD(GetPropertyEnumerator)( THIS_ IRTAPropertyEnumerator **ppEnumerator ) PURE; STDMETHOD(GetPropertyBagEnumerator)( THIS_ IRTAPropertyEnumerator **ppEnumerator ) PURE; }; /* {4C959CF0-35F9-40f2-84DD-091537702C34} */ DEFINE_GUID( IID_IRTAPropertyBag, 0x4c959cf0, 0x35f9, 0x40f2, 0x84, 0xdd, 0x9, 0x15, 0x37, 0x70, 0x2c, 0x34); DECLARE_INTERFACE_( IRTAPropertyUtility, IUnknown ) { STDMETHOD( IsPropertyCompatibleWith )( IRTAProperty *pProperty1, IRTAProperty *pProperty2, IRTAProperty **ppResult = NULL ) PURE; STDMETHOD( IsPropertyBagCompatibleWith )( IRTAPropertyBag *pPropertyBag1, IRTAPropertyBag *pPropertyBag2, IRTAPropertyBag **ppResult = NULL , IRTAPropertyBag **ppErrors = NULL ) PURE; STDMETHOD( ArePropertyBagsEquivalent )( IRTAPropertyBag *pPropertyBag1, IRTAPropertyBag *pPropertyBag2 ) PURE; STDMETHOD( ArePropertiesEquivalent )( IRTAProperty *pProperty1, IRTAProperty *pProperty2 ) PURE; STDMETHOD( CloneProperty )( IRTAProperty *pSourceProp, IRTAProperty **ppClonedProp = NULL ) PURE; STDMETHOD( ClonePropertyBag )( IRTAPropertyBag *pSourceBag, IRTAPropertyBag **ppClonedBag = NULL ) PURE; }; // {4EFFA493-982B-4fd7-B25F-34B2859B0A24} DEFINE_GUID( IID_IRTAPropertyUtility, 0x4effa493, 0x982b, 0x4fd7, 0xb2, 0x5f, 0x34, 0xb2, 0x85, 0x9b, 0xa, 0x24); #endif /* rtapropertybag_h */