1 // PropVariantUtils.cpp
\r
5 #include "PropVariantUtils.h"
\r
6 #include "Common/StringConvert.h"
\r
7 #include "Common/IntToString.h"
\r
9 using namespace NWindows;
\r
11 static AString GetHex(UInt32 v)
\r
13 char sz[32] = { '0', 'x' };
\r
14 ConvertUInt64ToString(v, sz + 2, 16);
\r
18 void StringToProp(const AString &s, NCOM::CPropVariant &prop)
\r
20 prop = MultiByteToUnicodeString(s);
\r
23 void PairToProp(const CUInt32PCharPair *pairs, unsigned num, UInt32 value, NCOM::CPropVariant &prop)
\r
26 for (unsigned i = 0; i < num; i++)
\r
28 const CUInt32PCharPair &p = pairs[i];
\r
29 if (p.Value == value)
\r
34 StringToProp(s, prop);
\r
37 AString TypeToString(const char *table[], unsigned num, UInt32 value)
\r
40 return table[value];
\r
41 return GetHex(value);
\r
44 void TypeToProp(const char *table[], unsigned num, UInt32 value, NCOM::CPropVariant &prop)
\r
46 StringToProp(TypeToString(table, num, value), prop);
\r
50 AString FlagsToString(const CUInt32PCharPair *pairs, unsigned num, UInt32 flags)
\r
53 for (unsigned i = 0; i < num; i++)
\r
55 const CUInt32PCharPair &p = pairs[i];
\r
56 UInt32 flag = (UInt32)1 << (unsigned)p.Value;
\r
57 if ((flags & flag) != 0)
\r
74 void FlagsToProp(const CUInt32PCharPair *pairs, unsigned num, UInt32 flags, NCOM::CPropVariant &prop)
\r
76 StringToProp(FlagsToString(pairs, num, flags), prop);
\r