acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
cast.h
1
//
2
// Created by camilo on 2024-10-25 00:28 <3ThomasBorregaardSorensen!!
3
//
4
#pragma once
5
6
7
8
template
<
typename
TYPE >
9
class
cast
10
{
11
public
:
12
13
14
TYPE * m_p;
15
16
17
cast()
18
{
19
20
m_p =
nullptr
;
21
22
}
23
24
25
template
<
typename
TYPE2 >
26
cast(
const
TYPE2 * p2)
27
{
28
29
m_p =
dynamic_cast <
TYPE *
>
((TYPE2 *)(p2));
30
31
}
32
33
34
template
<
typename
TYPE2 >
35
cast(const ::pointer < TYPE2 > & p2)
36
{
37
38
m_p =
dynamic_cast <
TYPE *
>
((
::subparticle
*)(p2.m_psubparticle));
39
40
}
41
42
43
template
<
typename
TYPE2 >
44
cast(const ::cast < TYPE2 > & p2)
45
{
46
47
m_p =
dynamic_cast <
TYPE *
>
((
::subparticle
*)(p2.m_p));
48
49
}
50
51
52
operator
TYPE *()
53
{
54
55
return
m_p;
56
57
}
58
59
60
operator
const
TYPE * ()
const
61
{
62
63
return
m_p;
64
65
}
66
67
68
TYPE * operator ->()
69
{
70
71
return
m_p;
72
73
}
74
75
76
TYPE * operator ->()
const
77
{
78
79
return
m_p;
80
81
}
82
83
84
TYPE & operator *()
85
{
86
87
return
*m_p;
88
89
}
90
91
92
const
TYPE & operator *()
const
93
{
94
95
return
*m_p;
96
97
}
98
99
100
cast& operator = (nullptr_t)
101
{
102
103
m_p =
nullptr
;
104
105
return
*
this
;
106
107
}
108
109
110
111
template
<
typename
TYPE2 >
112
cast & operator = (
const
TYPE2 * p2)
113
{
114
115
m_p =
dynamic_cast <
TYPE *
>
((TYPE2 *)(p2));
116
117
return
*
this
;
118
119
}
120
121
122
template
<
typename
TYPE2 >
123
cast& operator = (const ::pointer < TYPE2 >& p2);
124
125
126
template
<
typename
TYPE2 >
127
cast & operator = (const ::cast < TYPE2 > & p2)
128
{
129
130
m_p =
dynamic_cast <
TYPE *
>
((
::subparticle
*)(p2.m_p));
131
132
return
*
this
;
133
134
}
135
136
137
};
138
subparticle
Definition
subparticle.h:78
prototype
prototype
cast.h
Generated by
1.17.0