//===-- CompilerType.h ------------------------------------------*- 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 // //===----------------------------------------------------------------------===// #ifndef LLDB_SYMBOL_COMPILERTYPE_H #define LLDB_SYMBOL_COMPILERTYPE_H #include <functional> #include <optional> #include <string> #include <vector> #include "lldb/lldb-private.h" #include "llvm/ADT/APSInt.h" #include "llvm/Support/Casting.h" namespace lldb_private { class DataExtractor; class TypeSystem; /// Generic representation of a type in a programming language. /// /// This class serves as an abstraction for a type inside one of the TypeSystems /// implemented by the language plugins. It does not have any actual logic in it /// but only stores an opaque pointer and a pointer to the TypeSystem that /// gives meaning to this opaque pointer. All methods of this class should call /// their respective method in the TypeSystem interface and pass the opaque /// pointer along. /// /// \see lldb_private::TypeSystem class CompilerType { … }; bool operator==(const CompilerType &lhs, const CompilerType &rhs); bool operator!=(const CompilerType &lhs, const CompilerType &rhs); struct CompilerType::IntegralTemplateArgument { … }; } // namespace lldb_private #endif // LLDB_SYMBOL_COMPILERTYPE_H