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;