14#ifndef LLVM_CLANG_AST_NONTRIVIALTYPEVISITOR_H 
   15#define LLVM_CLANG_AST_NONTRIVIALTYPEVISITOR_H 
   24                                     std::forward<Ts>(Args)...);
 
 
   27  template <
class... Ts>
 
   32      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
 
   34      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
 
   36      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
 
   38      return asDerived().visitCXXDestructor(FT, std::forward<Ts>(Args)...);
 
   40      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
 
   43    llvm_unreachable(
"unknown destruction kind");
 
 
   46  Derived &
asDerived() { 
return static_cast<Derived &
>(*this); }
 
 
   49template <
class Derived, 
class RetTy = 
void>
 
   54        std::forward<Ts>(Args)...);
 
 
   57  template <
class... Ts>
 
   62      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
 
   64      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
 
   66      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
 
   68      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
 
   71    llvm_unreachable(
"unknown default-initialize kind");
 
 
   74  Derived &
asDerived() { 
return static_cast<Derived &
>(*this); }
 
 
   77template <
class Derived, 
bool IsMove, 
class RetTy = 
void>
 
   83    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
 
 
   86  template <
class... Ts>
 
   89    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
 
   93      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
 
   95      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
 
   97      return asDerived().visitPtrAuth(FT, std::forward<Ts>(Args)...);
 
   99      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
 
  101      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
 
  103      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
 
  106    llvm_unreachable(
"unknown primitive copy kind");
 
 
  109  Derived &
asDerived() { 
return static_cast<Derived &
>(*this); }
 
 
C Language Family Type Representation.
A (possibly-)qualified type.
@ DK_objc_strong_lifetime
PrimitiveDefaultInitializeKind
@ PDIK_ARCWeak
The type is an Objective-C retainable pointer type that is qualified with the ARC __weak qualifier.
@ PDIK_Trivial
The type does not fall into any of the following categories.
@ PDIK_ARCStrong
The type is an Objective-C retainable pointer type that is qualified with the ARC __strong qualifier.
@ PDIK_Struct
The type is a struct containing a field whose type is not PCK_Trivial.
PrimitiveCopyKind isNonTrivialToPrimitiveCopy() const
Check if this is a non-trivial type that would cause a C struct transitively containing this type to ...
PrimitiveDefaultInitializeKind isNonTrivialToPrimitiveDefaultInitialize() const
Functions to query basic properties of non-trivial C struct types.
DestructionKind isDestructedType() const
Returns a nonzero value if objects of this type require non-trivial work to clean up after.
PrimitiveCopyKind isNonTrivialToPrimitiveDestructiveMove() const
Check if this is a non-trivial type that would cause a C struct transitively containing this type to ...
@ PCK_Struct
The type is a struct containing a field whose type is neither PCK_Trivial nor PCK_VolatileTrivial.
@ PCK_Trivial
The type does not fall into any of the following categories.
@ PCK_ARCStrong
The type is an Objective-C retainable pointer type that is qualified with the ARC __strong qualifier.
@ PCK_VolatileTrivial
The type would be trivial except that it is volatile-qualified.
@ PCK_PtrAuth
The type is an address-discriminated signed pointer type.
@ PCK_ARCWeak
The type is an Objective-C retainable pointer type that is qualified with the ARC __weak qualifier.
The JSON file list parser is used to communicate input to InstallAPI.
RetTy visit(QualType FT, Ts &&... Args)
RetTy visitWithKind(QualType::PrimitiveCopyKind PCK, QualType FT, Ts &&... Args)
RetTy visit(QualType FT, Ts &&... Args)
RetTy visitWithKind(QualType::PrimitiveDefaultInitializeKind PDIK, QualType FT, Ts &&... Args)
RetTy visit(QualType FT, Ts &&... Args)
RetTy visitWithKind(QualType::DestructionKind DK, QualType FT, Ts &&... Args)