You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.3 KiB
84 lines
2.3 KiB
//
|
|
// epval.h
|
|
//
|
|
// CEnumPropertyValBase
|
|
//
|
|
|
|
#ifndef EPVAL_H
|
|
#define EPVAL_H
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// SHARED_TFPROPERTYVAL_ARRAY
|
|
//
|
|
// I would love to make this a class,
|
|
// but I can't get the compiler to accept a run-time template arg
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
typedef struct _SHARED_TFPROPERTYVAL_ARRAY
|
|
{
|
|
ULONG cRef;
|
|
ULONG cAttrVals;
|
|
TF_PROPERTYVAL rgAttrVals[1]; // 1 or more...
|
|
} SHARED_TFPROPERTYVAL_ARRAY;
|
|
|
|
SHARED_TFPROPERTYVAL_ARRAY *SAA_New(ULONG cAttrVals);
|
|
|
|
inline void SAA_AddRef(SHARED_TFPROPERTYVAL_ARRAY *paa)
|
|
{
|
|
paa->cRef++;
|
|
}
|
|
|
|
void SAA_Release(SHARED_TFPROPERTYVAL_ARRAY *paa);
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CEnumPropertyValue
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
class CEnumPropertyValue : public IEnumTfPropertyValue,
|
|
public CComObjectRootImmx
|
|
{
|
|
public:
|
|
CEnumPropertyValue(SHARED_TFPROPERTYVAL_ARRAY *paa)
|
|
{
|
|
Dbg_MemSetThisNameID(TEXT("CEnumPropertyValue"));
|
|
Assert(_ulCur == 0);
|
|
_paa = paa;
|
|
SAA_AddRef(paa);
|
|
}
|
|
~CEnumPropertyValue()
|
|
{
|
|
if (_paa != NULL)
|
|
{
|
|
SAA_Release(_paa);
|
|
}
|
|
}
|
|
|
|
BEGIN_COM_MAP_IMMX(CEnumPropertyValue)
|
|
COM_INTERFACE_ENTRY(IEnumTfPropertyValue)
|
|
END_COM_MAP_IMMX()
|
|
|
|
IMMX_OBJECT_IUNKNOWN_FOR_ATL()
|
|
|
|
// IEnumTfAppPropertyValue
|
|
STDMETHODIMP Clone(IEnumTfPropertyValue **ppEnum);
|
|
STDMETHODIMP Next(ULONG ulCount, TF_PROPERTYVAL *rgValues, ULONG *pcFetched);
|
|
STDMETHODIMP Reset();
|
|
STDMETHODIMP Skip(ULONG ulCount);
|
|
|
|
private:
|
|
CEnumPropertyValue() { Dbg_MemSetThisNameID(TEXT("CEnumPropertyValue")); }
|
|
|
|
ULONG _ulCur;
|
|
SHARED_TFPROPERTYVAL_ARRAY *_paa;
|
|
DBG_ID_DECLARE;
|
|
};
|
|
|
|
#endif // EPVAL_H
|