blob: c9d66ba2374d3755f76f35338eee8bc75a2d76aa [file] [log] [blame]
Csaba Dabis0202c352019-08-22 00:20:36 +00001#pragma clang system_header
2
Artem Dergachevaf992e62019-08-23 03:23:58 +00003#include "system-header-simulator-cxx.h"
4
Csaba Dabis0202c352019-08-22 00:20:36 +00005namespace llvm {
6template <class X, class Y>
7const X *cast(Y Value);
8
9template <class X, class Y>
10const X *dyn_cast(Y *Value);
11template <class X, class Y>
12const X &dyn_cast(Y &Value);
13
14template <class X, class Y>
15const X *cast_or_null(Y Value);
16
17template <class X, class Y>
18const X *dyn_cast_or_null(Y *Value);
19template <class X, class Y>
20const X *dyn_cast_or_null(Y &Value);
Csaba Dabis4d716002019-08-22 02:57:59 +000021
22template <class X, class Y>
23bool isa(Y Value);
24
25template <class X, class Y>
26bool isa_and_nonnull(Y Value);
Artem Dergachevaf992e62019-08-23 03:23:58 +000027
28template <typename X, typename Y>
29std::unique_ptr<X> cast(std::unique_ptr<Y> &&Value);
Csaba Dabis0202c352019-08-22 00:20:36 +000030} // namespace llvm