brintos

brintos / llvm-project-archived public Read only

0
0
Text · 914 B · b80567b Raw
39 lines · c
1#pragma clang system_header2 3#include "system-header-simulator-cxx.h"4 5namespace 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);21 22template <class X, class Y> inline bool isa(const Y &Val);23 24template <typename First, typename Second, typename... Rest, typename Y>25inline bool isa(const Y &Val) {26  return isa<First>(Val) || isa<Second, Rest...>(Val);27}28 29template <typename... X, class Y>30inline bool isa_and_nonnull(const Y &Val) {31  if (!Val)32    return false;33  return isa<X...>(Val);34}35 36template <typename X, typename Y>37std::unique_ptr<X> cast(std::unique_ptr<Y> &&Value);38} // namespace llvm39