1
// PropVariantConversions.cpp
7
#include "PropVariantConversions.h"
9
#include "Windows/Defs.h"
11
#include "Common/StringConvert.h"
12
#include "Common/IntToString.h"
14
static UString ConvertUInt64ToString(UInt64 value)
17
ConvertUInt64ToString(value, buffer);
21
static UString ConvertInt64ToString(Int64 value)
24
ConvertInt64ToString(value, buffer);
28
static char *UIntToStringSpec(UInt32 value, char *s, int numPos)
34
temp[pos++] = (char)('0' + value % 10);
39
for (i = 0; i < numPos - pos; i++)
48
bool ConvertFileTimeToString(const FILETIME &ft, char *s, bool includeTime, bool includeSeconds)
52
if(!BOOLToBool(FileTimeToSystemTime(&ft, &st)))
54
s = UIntToStringSpec(st.wYear, s, 4);
56
s = UIntToStringSpec(st.wMonth, s, 2);
58
s = UIntToStringSpec(st.wDay, s, 2);
62
s = UIntToStringSpec(st.wHour, s, 2);
64
s = UIntToStringSpec(st.wMinute, s, 2);
68
UIntToStringSpec(st.wSecond, s, 2);
72
sprintf(s, "%04d-%02d-%02d", st.wYear, st.wMonth, st.wDay);
75
sprintf(s + strlen(s), " %02d:%02d", st.wHour, st.wMinute);
77
sprintf(s + strlen(s), ":%02d", st.wSecond);
83
UString ConvertFileTimeToString(const FILETIME &fileTime, bool includeTime, bool includeSeconds)
86
ConvertFileTimeToString(fileTime, s, includeTime, includeSeconds);
87
return GetUnicodeString(s);
91
UString ConvertPropVariantToString(const PROPVARIANT &propVariant)
93
switch (propVariant.vt)
98
return propVariant.bstrVal;
100
return ConvertUInt64ToString(propVariant.bVal);
102
return ConvertUInt64ToString(propVariant.uiVal);
104
return ConvertUInt64ToString(propVariant.ulVal);
106
return ConvertUInt64ToString(propVariant.uhVal.QuadPart);
108
return ConvertFileTimeToString(propVariant.filetime, true, true);
111
return ConvertInt64ToString(propVariant.cVal);
114
return ConvertInt64ToString(propVariant.iVal);
116
return ConvertInt64ToString(propVariant.lVal);
118
return ConvertInt64ToString(propVariant.hVal.QuadPart);
121
return VARIANT_BOOLToBool(propVariant.boolVal) ? L"+" : L"-";
131
UInt64 ConvertPropVariantToUInt64(const PROPVARIANT &propVariant)
133
switch (propVariant.vt)
136
return propVariant.bVal;
138
return propVariant.uiVal;
140
return propVariant.ulVal;
142
return (UInt64)propVariant.uhVal.QuadPart;