//===- llvm/TextAPI/Record.h - TAPI Record ----------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// \brief Implements the TAPI Record Types. /// //===----------------------------------------------------------------------===// #ifndef LLVM_TEXTAPI_RECORD_H #define LLVM_TEXTAPI_RECORD_H #include "llvm/ADT/MapVector.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Casting.h" #include "llvm/TextAPI/Symbol.h" #include <string> namespace llvm { namespace MachO { LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(…); class RecordsSlice; // Defines lightweight source location for records. struct RecordLoc { … }; // Defines a list of linkage types. enum class RecordLinkage : uint8_t { … }; /// Define Record. They represent API's in binaries that could be linkable /// symbols. class Record { … }; // Defines broadly non-objc records, categorized as variables or functions. class GlobalRecord : public Record { … }; // Define Objective-C instance variable records. class ObjCIVarRecord : public Record { … }; RecordMap; // Defines Objective-C record types that have assigned methods, properties, // instance variable (ivars) and protocols. class ObjCContainerRecord : public Record { … }; // Define Objective-C category types. They don't generate linkable symbols, but // they have assigned ivars that do. class ObjCCategoryRecord : public ObjCContainerRecord { … }; // Define Objective-C Interfaces or class types. class ObjCInterfaceRecord : public ObjCContainerRecord { … }; } // end namespace MachO. } // end namespace llvm. #endif // LLVM_TEXTAPI_RECORD_H