annotate foosdk/sdk/libPPUI/CPropVariant.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 class CPropVariant : public PROPVARIANT {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 CPropVariant() {init();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 ~CPropVariant() {clear();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 CPropVariant( const CPropVariant & other ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 init();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 PropVariantCopy( this, &other );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 const CPropVariant& operator=( const CPropVariant & other ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 clear();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 PropVariantCopy(this, &other);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 return *this;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 bool toInt64(int64_t & out) const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 switch( vt ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 case VT_I1: out = (int64_t) cVal; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 case VT_I2: out = (int64_t) iVal; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 case VT_I4: out = (int64_t) lVal; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 case VT_I8: out = (int64_t) hVal.QuadPart; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 case VT_INT: out = (int64_t) intVal; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 default: return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 bool toUint64(uint64_t & out) const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 switch( vt ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 case VT_UI1: out = (uint64_t) bVal; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 case VT_UI2: out = (uint64_t) uiVal; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 case VT_UI4: out = (uint64_t) ulVal; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 case VT_UI8: out = (uint64_t) uhVal.QuadPart; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 case VT_UINT: out = (uint64_t) uintVal; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 default: return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 bool toString( pfc::string_base & out ) const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 switch( vt ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 case VT_LPSTR:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 out = pfc::stringcvt::string_utf8_from_ansi( pszVal ); return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 case VT_LPWSTR:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 out = pfc::stringcvt::string_utf8_from_wide( pwszVal ); return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 default: return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 void clear() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 PropVariantClear( this );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 void init() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 PROPVARIANT * pv = this;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 PropVariantInit( pv );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 };