Windows2003-3790/inetsrv/query/h/propmap.hxx

106 lines
2.7 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1994.
//
// File: propmap.hxx
//
// Contents: An implementation for IPropertyMapper interface based
// on the CPidLookTable class.
//
// Classes: CFwPropertyMapper
//
// History: 12-11-96 srikants Created
//
//----------------------------------------------------------------------------
#pragma once
#include <ciintf.h>
#include <pidtable.hxx>
#include <spropmap.hxx>
class CPidLookupTable;
class CFwPropertyMapper : public IPropertyMapper
{
public:
CFwPropertyMapper( CPidLookupTable & pidTable,
BOOL fMapStdOnly,
BOOL fOwnIt = FALSE ) :
_refCount(1),
_pPidTable(0),
_fOwned(fOwnIt),
_fMapStdOnly( fMapStdOnly ),
_papsShortLived( 0 ),
_pidNextAvailable( INIT_DOWNLEVEL_PID ),
_cps( 0 )
{
//
// No concept of a pidtable to map only std
// and Ole properties (for null catalog).
// We will store any requested properties
// (Ole properties that are stored as part of
// the documents themselves), for the purpose of
// pid mapping, in _papsShortLived which is an
// in memory structure and will go away along
// with the catalog (not persistent).
//
if (!_fMapStdOnly)
_pPidTable = &pidTable;
else
_papsShortLived = new CPropSpecArray;
}
~CFwPropertyMapper();
//
// IUnknown methods.
//
STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppiuk );
STDMETHOD_(ULONG, AddRef) (THIS);
STDMETHOD_(ULONG, Release) (THIS);
//
// IPropertyMapper methods
//
STDMETHOD(PropertyToPropid) (
const FULLPROPSPEC *pFullPropSpec,
BOOL fCreate,
PROPID *pPropId );
STDMETHOD(PropidToProperty) (
PROPID propId,
FULLPROPSPEC ** ppPropSpec)
{
Win4Assert( !"Not Yet Implemented" );
return E_NOTIMPL;
}
private:
long _refCount;
BOOL _fOwned;
BOOL _fMapStdOnly;
CPidLookupTable * _pPidTable;
CStandardPropMapper _propMapper;
//
// Support for null catalog. Enable
// propspecs to be stored in memory.
//
PROPID LocateOrAddProperty(CFullPropSpec const & ps);
PROPID _pidNextAvailable; // Next available pid
CPropSpecArray * _papsShortLived; // This is not persistent
ULONG _cps; // # of elements in _papsShortLived
};