5#ifndef BASE_WIN_VARIANT_UTIL_H_
6#define BASE_WIN_VARIANT_UTIL_H_
21 return (
self == other) || (
self == VT_DISPATCH && other == VT_UNKNOWN);
26template <VARTYPE ElementVartype>
32 static constexpr VARIANT_BOOL VARIANT::*kMemberOffset = &VARIANT::boolVal;
38 static constexpr CHAR VARIANT::*kMemberOffset = &VARIANT::cVal;
44 static constexpr BYTE VARIANT::*kMemberOffset = &VARIANT::bVal;
50 static constexpr SHORT VARIANT::*kMemberOffset = &VARIANT::iVal;
56 static constexpr USHORT VARIANT::*kMemberOffset = &VARIANT::uiVal;
62 static constexpr LONG VARIANT::*kMemberOffset = &VARIANT::lVal;
68 static constexpr ULONG VARIANT::*kMemberOffset = &VARIANT::ulVal;
74 static constexpr LONGLONG VARIANT::*kMemberOffset = &VARIANT::llVal;
80 static constexpr ULONGLONG VARIANT::*kMemberOffset = &VARIANT::ullVal;
86 static constexpr FLOAT VARIANT::*kMemberOffset = &VARIANT::fltVal;
92 static constexpr DOUBLE VARIANT::*kMemberOffset = &VARIANT::dblVal;
98 static constexpr DATE VARIANT::*kMemberOffset = &VARIANT::date;
104 static constexpr BSTR VARIANT::*kMemberOffset = &VARIANT::bstrVal;
110 static constexpr IUnknown* VARIANT::*kMemberOffset = &VARIANT::punkVal;
116 static constexpr IDispatch* VARIANT::*kMemberOffset = &VARIANT::pdispVal;
121template <VARTYPE ElementVartype>
constexpr bool VarTypeIsConvertibleTo(VARTYPE self, VARTYPE other)
static constexpr bool IsConvertibleTo(VARTYPE vartype)
static constexpr bool IsConvertibleFrom(VARTYPE vartype)
static void RawSet(VARIANT *var, Type value)
static Type RawGet(const VARIANT &var)
#define BASE_DCHECK(condition)
unsigned __int64 ULONGLONG