102 lines
2.3 KiB
C++
102 lines
2.3 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1998.
|
|
//
|
|
// File: cidbprop.hxx
|
|
//
|
|
// Contents: IDBProperties implementation
|
|
//
|
|
// History: 1-09-97 srikants Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include <dbcmdtre.hxx>
|
|
|
|
class CDbProperties : public IDBProperties
|
|
{
|
|
public:
|
|
|
|
CDbProperties( IUnknown * pUnkOuter = 0 )
|
|
:_refCount(0),
|
|
_pUnkOuter(pUnkOuter)
|
|
{
|
|
AddRef();
|
|
}
|
|
|
|
//
|
|
// IUnknown methods.
|
|
//
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppiuk );
|
|
|
|
STDMETHOD_(ULONG, AddRef) (THIS);
|
|
|
|
STDMETHOD_(ULONG, Release) (THIS);
|
|
|
|
//
|
|
// IDBProperties methods.
|
|
//
|
|
STDMETHOD(GetProperties) (
|
|
ULONG cPropertyIDSets,
|
|
const DBPROPIDSET rgPropertyIDSets[],
|
|
ULONG *pcPropertySets,
|
|
DBPROPSET ** prgPropertySets);
|
|
|
|
STDMETHOD(GetPropertyInfo) (
|
|
ULONG cPropertyIDSets,
|
|
const DBPROPIDSET rgPropertyIDSets[],
|
|
ULONG *pcPropertyInfoSets,
|
|
DBPROPINFOSET * *prgPropertyInfoSets,
|
|
OLECHAR * *ppDescBuffer);
|
|
|
|
STDMETHOD(SetProperties) (
|
|
ULONG cPropertySets,
|
|
DBPROPSET rgPropertySets[]);
|
|
|
|
//
|
|
// Non-Interface methods.
|
|
//
|
|
void Marshall( PSerStream & stm ) const;
|
|
void Marshall( PSerStream & stm, ULONG cGuid, GUID const * pGuid ) const;
|
|
|
|
BOOL UnMarshall( PDeSerStream & stm );
|
|
|
|
//
|
|
// Memory allocation
|
|
//
|
|
void * operator new( size_t size )
|
|
{
|
|
return (void *) CoTaskMemAlloc( size );
|
|
}
|
|
|
|
inline void * operator new( size_t size, void * p )
|
|
{
|
|
return( p );
|
|
}
|
|
|
|
void operator delete( void * p )
|
|
{
|
|
CoTaskMemFree( p );
|
|
}
|
|
|
|
ULONG Count() const { return _aPropSet.Count(); }
|
|
|
|
CDbPropSet & GetPropSet( ULONG i ) { return _aPropSet[i]; }
|
|
|
|
private:
|
|
|
|
unsigned CreateReturnPropset( DBPROPIDSET const & PropIDSet,
|
|
CDbPropSet & Props );
|
|
|
|
void CopyProp( CDbProp & dst, CDbPropSet const & src,
|
|
DBPROPID dwPropId );
|
|
|
|
long _refCount;
|
|
IUnknown * _pUnkOuter;
|
|
|
|
XArrayOLEInPlace<CDbPropSet> _aPropSet;
|
|
};
|
|
|