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;
56 static constexpr USHORT
VARIANT::*kMemberOffset = &VARIANT::uiVal;
62 static constexpr LONG VARIANT::*kMemberOffset = &VARIANT::lVal;
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