windows-nt/Source/XPSP1/NT/net/tapi/skywalker/inc/sdpsadj.h
2020-09-26 16:20:57 +08:00

113 lines
2.4 KiB
C++

/*
Copyright (c) 1997-1999 Microsoft Corporation
*/
#ifndef __SDP_ADJUSTMENT_SAFEARRAY__
#define __SDP_ADJUSTMENT_SAFEARRAY__
#include "sdpcommo.h"
#include "sdpstp.h"
#include "sdpsuit.h"
#include "sdpfld.h"
class _DllDecl SDP_ULONG_SAFEARRAY : public SDP_UITYPE_SAFEARRAY<ULONG, SDP_ULONG, SDP_ULONG_LIST>
{
public:
inline SDP_ULONG_SAFEARRAY(
IN SDP_ULONG_LIST &SdpUlongList
);
};
inline
SDP_ULONG_SAFEARRAY::SDP_ULONG_SAFEARRAY(
IN SDP_ULONG_LIST &SdpUlongList
)
: SDP_UITYPE_SAFEARRAY<ULONG, SDP_ULONG, SDP_ULONG_LIST>(SdpUlongList)
{
m_VarType[0] = VT_UI4;
}
class _DllDecl SDP_ADJUSTMENT_SAFEARRAY :
protected SDP_TIME_PERIOD_SAFEARRAY,
protected SDP_ULONG_SAFEARRAY
{
public:
SDP_ADJUSTMENT_SAFEARRAY(
IN SDP_ADJUSTMENT &SdpAdjustment
);
HRESULT GetSafeArray(
OUT VARIANT *AdjustmentTimesVariant,
OUT VARIANT *IsCompactVariant,
OUT VARIANT *UnitVariant,
OUT VARIANT *CompactValueVariant,
OUT VARIANT *PeriodValueVariant
);
inline HRESULT SetSafeArray(
IN VARIANT &AdjustmentTimesVariant,
IN VARIANT &IsCompactVariant,
IN VARIANT &UnitVariant,
IN VARIANT &CompactValueVariant,
IN VARIANT &PeriodValueArray
);
protected:
VARTYPE m_VarType[5];
virtual BOOL GetElement(
IN ULONG Index,
IN ULONG NumEntries,
IN void **Element,
OUT HRESULT &HResult
);
virtual BOOL SetElement(
IN ULONG Index,
IN ULONG NumEntries,
IN void ***Element,
OUT HRESULT &HResult
);
virtual void RemoveExcessElements(
IN ULONG StartIndex
);
};
inline HRESULT
SDP_ADJUSTMENT_SAFEARRAY::SetSafeArray(
IN VARIANT &AdjustmentTimesVariant,
IN VARIANT &IsCompactVariant,
IN VARIANT &UnitVariant,
IN VARIANT &CompactValueVariant,
IN VARIANT &PeriodValueVariant
)
{
VARIANT *VariantArray[] = {
&IsCompactVariant, &UnitVariant,
&CompactValueVariant, &PeriodValueVariant
};
return SDP_ULONG_SAFEARRAY::SetSafeArrays(
sizeof(VariantArray)/sizeof(VARIANT *),
m_VarType,
VariantArray
);
}
#endif // __SDP_ADJUSTMENT_SAFEARRAY__