acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
comptr_array.h
1
// From cotaskptr.h by camilo on 2022-11-14 06:53 <3ThomasBorregaardSorensen!!
2
#pragma once
3
4
5
#include "acme/prototype/string/string.h"
6
7
8
template
<
typename
TYPE >
9
class
comptr_array
10
{
11
public
:
12
13
14
TYPE** m_pp;
15
UINT32 m_cCount;
16
17
comptr_array(TYPE** pp =
nullptr
, UINT32 cCount = 0) :
18
m_pp(pp),
19
m_cCount(cCount)
20
{
21
22
}
23
24
25
~comptr_array()
26
{
27
28
free();
29
30
}
31
32
bool
is_null()
const
33
{
34
35
return
m_pp ==
nullptr
;
36
37
}
38
39
bool
is_set()
const
40
{
41
42
return
m_pp !=
nullptr
;
43
44
}
45
46
virtual
void
free()
47
{
48
49
if
(m_pp !=
nullptr
)
50
{
51
52
for
(UINT32 u = 0; u < m_cCount; u++)
53
{
54
55
if
(m_pp[u])
56
{
57
58
m_pp[u]->Release();
59
60
}
61
62
}
63
64
::CoTaskMemFree(m_pp);
65
66
m_pp =
nullptr
;
67
68
}
69
70
}
71
72
73
operator
TYPE** ()
74
{
75
76
return
m_pp;
77
78
}
79
80
operator
const
TYPE** ()
const
81
{
82
83
return
m_pp;
84
85
}
86
87
88
TYPE** operator ->()
89
{
90
91
return
m_pp;
92
93
}
94
95
96
const
TYPE** operator ->()
const
97
{
98
99
return
m_pp;
100
101
}
102
103
TYPE*** operator &()
104
{
105
106
free();
107
108
return
&m_pp;
109
110
}
111
112
const
TYPE*** operator &()
const
113
{
114
115
return
&m_pp;
116
117
}
118
119
120
};
121
122
#define __comptr_array(a) &a.m_pp, &a.m_cCount
operating_system
windows_common
com
comptr_array.h
Generated by
1.17.0