Home | History | Annotate | Line # | Download | only in Basic
      1 //===----- ABI.h - ABI related declarations ---------------------*- C++ -*-===//
      2 //
      3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      4 // See https://llvm.org/LICENSE.txt for license information.
      5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      6 //
      7 //===----------------------------------------------------------------------===//
      8 ///
      9 /// \file
     10 /// Enums/classes describing ABI related information about constructors,
     11 /// destructors and thunks.
     12 ///
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef LLVM_CLANG_BASIC_ABI_H
     16 #define LLVM_CLANG_BASIC_ABI_H
     17 
     18 #include "llvm/Support/DataTypes.h"
     19 #include <cstring>
     20 
     21 namespace clang {
     22 
     23 /// C++ constructor types.
     24 enum CXXCtorType {
     25   Ctor_Complete,       ///< Complete object ctor
     26   Ctor_Base,           ///< Base object ctor
     27   Ctor_Comdat,         ///< The COMDAT used for ctors
     28   Ctor_CopyingClosure, ///< Copying closure variant of a ctor
     29   Ctor_DefaultClosure, ///< Default closure variant of a ctor
     30 };
     31 
     32 /// C++ destructor types.
     33 enum CXXDtorType {
     34     Dtor_Deleting, ///< Deleting dtor
     35     Dtor_Complete, ///< Complete object dtor
     36     Dtor_Base,     ///< Base object dtor
     37     Dtor_Comdat    ///< The COMDAT used for dtors
     38 };
     39 
     40 } // end namespace clang
     41 
     42 #endif
     43