raSystem
1.0 bata
raSmartPointer.h
Go to the documentation of this file.
1
#pragma once
2
3
template
<
class
T>
class
raSmartPointer
4
{
5
public
:
6
raSmartPointer
() throw()
7
{
8
m_data = NULL;
9
m_rc =
new
IRAUnknown
();
10
m_rc->
AddRef
();
11
}
12
raSmartPointer
(T *pVal)
throw
()
13
{
14
m_data = pVal;
15
m_rc =
new
IRAUnknown
();
16
m_rc->
AddRef
();
17
}
18
raSmartPointer
(
const
raSmartPointer<T>
& ptrCopy)
throw
()
19
{
20
m_data = ptrCopy.m_data;
21
m_rc = ptrCopy.m_rc;
22
23
m_rc->
AddRef
();
24
}
25
raSmartPointer<T>
&
operator =
(
const
raSmartPointer<T>
& sp)
throw
()
26
{
27
if
(
this
!= &sp)
28
{
29
if
(m_rc->
Release
() == 0)
30
{
31
delete
m_data;
32
delete
m_rc;
33
}
34
m_data = sp.m_data;
35
m_rc = sp.m_rc;
36
m_rc->
AddRef
();
37
}
38
return
*
this
;
39
}
40
~raSmartPointer
(
void
)
41
{
42
if
(m_rc->
Release
() == 0)
43
{
44
delete
m_data;
45
delete
m_rc;
46
}
47
}
48
T&
operator*
()
const
throw()
49
{
50
return
*m_data;
51
}
52
53
T *
operator->
()
const
throw()
54
{
55
return
m_data;
56
}
57
58
T *
get
()
const
throw
()
59
{
60
return
m_data;
61
}
62
PROPERTY
(T*, Data);
63
GET
(Data)
64
{
65
return
m_data;
66
}
67
SET
(Data)
68
{
69
m_data = value;
70
m_rc->
AddRef
();
71
}
72
private
:
73
T *m_data;
74
IRAUnknown
* m_rc;
75
};
raSmartPointer::operator*
T & operator*() const
Definition:
raSmartPointer.h:48
raSmartPointer::raSmartPointer
raSmartPointer()
Definition:
raSmartPointer.h:6
IRAUnknown::AddRef
void AddRef()
Definition:
IRAUnknown.h:10
IRAUnknown
Definition:
IRAUnknown.h:3
raSmartPointer::operator->
T * operator->() const
Definition:
raSmartPointer.h:53
IRAUnknown::Release
int Release()
Definition:
IRAUnknown.h:14
raSmartPointer::raSmartPointer
raSmartPointer(const raSmartPointer< T > &ptrCopy)
Definition:
raSmartPointer.h:18
raSmartPointer
Definition:
raSmartPointer.h:3
raSmartPointer::SET
SET(Data)
Definition:
raSmartPointer.h:67
raSmartPointer::raSmartPointer
raSmartPointer(T *pVal)
Definition:
raSmartPointer.h:12
raSmartPointer::operator=
raSmartPointer< T > & operator=(const raSmartPointer< T > &sp)
Definition:
raSmartPointer.h:25
raSmartPointer::GET
GET(Data)
Definition:
raSmartPointer.h:63
raSmartPointer::~raSmartPointer
~raSmartPointer(void)
Definition:
raSmartPointer.h:40
raSmartPointer::PROPERTY
PROPERTY(T *, Data)
include
raSmartPointer.h
Generated by
1.8.13