/* Copyright (c) 1997-1999 Microsoft Corporation */ #ifndef __SDP_TIME_PERIOD_SAFEARRAY__ #define __SDP_TIME_PERIOD_SAFEARRAY__ #include "sdpcommo.h" #include "sdpsarr.h" class _DllDecl SDP_TIME_PERIOD_SAFEARRAY : protected SDP_SAFEARRAY_WRAP_EX { public: inline SDP_TIME_PERIOD_SAFEARRAY( IN SDP_TIME_PERIOD_LIST &SdpTimePeriodList ); HRESULT GetSafeArray( OUT VARIANT *IsCompactVariant, OUT VARIANT *UnitVariant, OUT VARIANT *CompactValueVariant, OUT VARIANT *PeriodValueVariant ); inline HRESULT SetSafeArray( IN VARIANT &IsCompactVariant, IN VARIANT &UnitVariant, IN VARIANT &CompactValueVariant, IN VARIANT &PeriodValueVariant ); protected: VARTYPE m_VarType[4]; VARIANT_BOOL m_IsCompact; CHAR m_Unit; LONG m_CompactValue; LONG m_PeriodValue; virtual BOOL Get( IN SDP_TIME_PERIOD &ListMember, IN ULONG NumEntries, IN void **Element, OUT HRESULT &HResult ); virtual BOOL Set( IN SDP_TIME_PERIOD &ListMember, IN ULONG NumEntries, IN void ***Element, OUT HRESULT &HResult ); }; inline SDP_TIME_PERIOD_SAFEARRAY::SDP_TIME_PERIOD_SAFEARRAY( IN SDP_TIME_PERIOD_LIST &SdpTimePeriodList ) : SDP_SAFEARRAY_WRAP_EX(SdpTimePeriodList) { m_VarType[0] = VT_BOOL; m_VarType[1] = VT_I1; m_VarType[2] = VT_I4; m_VarType[3] = VT_I4; } inline HRESULT SDP_TIME_PERIOD_SAFEARRAY::SetSafeArray( IN VARIANT &IsCompactVariant, IN VARIANT &UnitVariant, IN VARIANT &CompactValueVariant, IN VARIANT &PeriodValueVariant ) { VARIANT *VariantArray[] = { &IsCompactVariant, &UnitVariant, &CompactValueVariant, &PeriodValueVariant }; return SetSafeArrays( sizeof(VariantArray)/sizeof(VARIANT *), m_VarType, VariantArray ); } #endif // __SDP_TIME_PERIOD_SAFEARRAY__