www.pudn.com > lucent_softphone.rar > KVList.h


	 
// KVList.h : Declaration of the CKVList 
 
#ifndef __KVLIST_H_ 
#define __KVLIST_H_ 
 
#include "resource.h"       // main symbols 
 
///////////////////////////////////////////////////////////////////////////// 
// CKVList 
extern LPKVLIST CreateKVList(TKVList *pKVList); 
 
///////////////////////////////////////////////////////////////////////////// 
// CKVList 
class ATL_NO_VTABLE CKVList :  
	public CComObjectRootEx, 
	public CComCoClass, 
	public IKVList 
{ 
public: 
	CKVList() 
	{ 
		m_pKVList = NULL; 
		m_pUnkMarshaler = NULL; 
	} 
 
DECLARE_REGISTRY_RESOURCEID(IDR_KVLIST) 
DECLARE_NOT_AGGREGATABLE(CKVList) 
DECLARE_GET_CONTROLLING_UNKNOWN() 
 
DECLARE_PROTECT_FINAL_CONSTRUCT() 
 
BEGIN_COM_MAP(CKVList) 
	COM_INTERFACE_ENTRY(IKVList) 
	COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p) 
END_COM_MAP() 
 
	HRESULT FinalConstruct() 
	{ 
		m_pKVList = TKVListCreate(); 
		if(!m_pKVList) return(E_OUTOFMEMORY); 
		return CoCreateFreeThreadedMarshaler( 
			GetControllingUnknown(), &m_pUnkMarshaler.p); 
	} 
 
	void FinalRelease() 
	{ 
		TKVListFree(m_pKVList); 
		m_pUnkMarshaler.Release(); 
	} 
 
	CComPtr m_pUnkMarshaler; 
	TKVList *m_pKVList; 
 
// IKVList 
public: 
	STDMETHOD_(KVRESULTS, GetPair)(/*[in]*/ BSTR key, /*[out, ref]*/ LPKVPAIR *pVal); 
	STDMETHOD_(KVRESULTS, GetBinaryValue)(/*[in]*/ BSTR key, /*[out, ref]*/ byte * *pVal); 
	STDMETHOD_(KVRESULTS, GetListValue)(/*[in]*/ BSTR key, /*[out, ref]*/ LPKVLIST *pVal); 
	STDMETHOD_(KVRESULTS, GetIntValue)(/*[in]*/ BSTR key, /*[out, ref]*/ int *pVal); 
	STDMETHOD_(KVRESULTS, GetStringValue)(/*[in]*/ BSTR key, /*[out, ref]*/ BSTR *pVal); 
	STDMETHOD_(LPKVPAIR, NextPair)(); 
	STDMETHOD_(KVRESULTS, InitScanLoop)(); 
	STDMETHOD_(KVRESULTS, DeleteAll)(); 
	STDMETHOD_(KVRESULTS, DeletePair)(/*[in]*/ BSTR key); 
	STDMETHOD_(KVRESULTS, AddBinary)(/*[in]*/ BSTR key, /*[in]*/ int length, /*[in, size_is(length)]*/ byte *value); 
	STDMETHOD_(KVRESULTS, AddList)(/*[in]*/ BSTR key, /*[in]*/ LPKVLIST value); 
	STDMETHOD_(KVRESULTS, AddInt)(/*[in]*/ BSTR key, /*[in]*/ int value); 
	STDMETHOD_(KVRESULTS, AddString)(/*[in]*/ BSTR key, /*[in]*/ BSTR value); 
	STDMETHOD_(LPKVLIST, Dup)(); 
}; 
 
#endif //__KVLIST_H_