acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
class.h
1
#pragma once
2
3
4
5
6
template
<
class
T >
7
class
base_class
8
{
9
public
:
10
11
12
template
<
class
T2 >
13
inline
static
bool
bases(T2 * p)
14
{
15
return
dynamic_cast <
T *
>
(p) !=
nullptr
;
16
}
17
18
template
<
class
T2 >
19
inline
static
bool
bases(const ::pointer<T2>& p)
20
{
21
return
dynamic_cast <
T *
>
((T2 *)p.m_p) !=
nullptr
;
22
}
23
24
};
25
26
27
28
29
#define ASSERT_KINDOF(class_name, matter) ASSERT(base_class < class_name > ::bases(matter))
30
#define DYNAMIC_DOWNCAST(class_name, matter) (dynamic_cast < class_name * > (matter))
31
#define STATIC_DOWNCAST(class_name, matter) (dynamic_cast<class_name*>(matter))
32
#define STATIC_DOWNCAST_T(class_name, T1, matter) (static_cast<class_name<T1>*>(::acme::StaticDownCast(RUNTIME_CLASS_T(class_name, T1), matter)))
33
#define STATIC_DOWNCAST_T2(class_name, T1, T2, matter) (static_cast<class_name<T1, T2>*>(::acme::StaticDownCast(RUNTIME_CLASS_T2(class_name, T1, T2), matter)))
34
35
base_class
Definition
class.h:8
platform
class.h
Generated by
1.17.0