1
#ifndef _VARIANT_COLLECTION_H
2
#define _VARIANT_COLLECTION_H
3![](/Images/OutliningIndicators/None.gif)
4
#include <comutil.h>
5
#pragma comment(lib,"comsuppw.lib")
6![](/Images/OutliningIndicators/None.gif)
7
class variant_collection : public STLCollection<_variant_t>
8![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
9
typedef STLCollection<_variant_t> base;
10![](/Images/OutliningIndicators/InBlock.gif)
11
public:
12
using base::add;
13
using base::insert;
14
using base::set;
15![](/Images/OutliningIndicators/InBlock.gif)
16
void add(signed char val)
17![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
18
add<signed char>(val);
19
}
20
void add(unsigned char val)
21![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
22
add<unsigned char>(val);
23
}
24
void add(short val)
25![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
26
add<short>(val);
27
}
28
void add(unsigned short val)
29![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
30
add<unsigned short>(val);
31
}
32
void add(int val)
33![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
34
add<int>(val);
35
}
36
void add(unsigned int val)
37![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
38
add<unsigned int>(val);
39
}
40
void add(float val)
41![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
42
add<float>(val);
43
}
44
void add(double val)
45![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
46
add<double>(val);
47
}
48
void add(const char* val)
49![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
50
add<const char*>(val);
51
}
52![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
53
void insert(size_t index,signed char val)
54![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
55
insert<signed char>(index,val);
56
}
57
void insert(size_t index,unsigned char val)
58![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
59
insert<unsigned char>(index,val);
60
}
61
void insert(size_t index,short val)
62![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
63
insert<short>(index,val);
64
}
65
void insert(size_t index,unsigned short val)
66![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
67
insert<unsigned short>(index,val);
68
}
69
void insert(size_t index,int val)
70![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
71
insert<int>(index,val);
72
}
73
void insert(size_t index,unsigned int val)
74![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
75
insert<unsigned int>(index,val);
76
}
77
void insert(size_t index,float val)
78![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
79
insert<float>(index,val);
80
}
81
void insert(size_t index,double val)
82![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
83
insert<double>(index,val);
84
}
85
void insert(size_t index,const char* val)
86![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
87
insert<const char*>(index,val);
88
}
89![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
void set(size_t index,signed char val)
91![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
92
set<signed char>(index,val);
93
}
94
void set(size_t index,unsigned char val)
95![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
96
set<unsigned char>(index,val);
97
}
98
void set(size_t index,short val)
99![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
100
set<short>(index,val);
101
}
102
void set(size_t index,unsigned short val)
103![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
104
set<unsigned short>(index,val);
105
}
106
void set(size_t index,int val)
107![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
108
set<int>(index,val);
109
}
110
void set(size_t index,unsigned int val)
111![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
112
set<unsigned int>(index,val);
113
}
114
void set(size_t index,float val)
115![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
116
set<float>(index,val);
117
}
118
void set(size_t index,double val)
119![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
120
set<double>(index,val);
121
}
122
void set(size_t index,const char* val)
123![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
124
set<const char*>(index,val);
125
}
126![](/Images/OutliningIndicators/InBlock.gif)
127
protected:
128
template<typename T>
129
void add(T val)
130![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
131
_variant_t var(val);
132
base::add(var);
133
}
134
template<typename T>
135
void insert(size_t index,T val)
136![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
137
_variant_t var(val);
138
base::insert(index,var);
139
}
140
template<typename T>
141
void set(size_t index,T val)
142![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
143
_variant_t* p_var = base::get(index);
144
if (p_var) *p_var = val;
145
}
146
};
147![](/Images/OutliningIndicators/None.gif)
148
#endif