//===- TypeSupport.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 // //===----------------------------------------------------------------------===// // // This file defines support types for registering dialect extended types. // //===----------------------------------------------------------------------===// #ifndef MLIR_IR_TYPESUPPORT_H #define MLIR_IR_TYPESUPPORT_H #include "mlir/IR/MLIRContext.h" #include "mlir/IR/StorageUniquerSupport.h" #include "llvm/ADT/Twine.h" namespace mlir { class Dialect; class MLIRContext; //===----------------------------------------------------------------------===// // AbstractType //===----------------------------------------------------------------------===// /// This class contains all of the static information common to all instances of /// a registered Type. class AbstractType { … }; //===----------------------------------------------------------------------===// // TypeStorage //===----------------------------------------------------------------------===// namespace detail { struct TypeUniquer; } // namespace detail /// Base storage class appearing in a Type. class TypeStorage : public StorageUniquer::BaseStorage { … }; /// Default storage type for types that require no additional initialization or /// storage. DefaultTypeStorage; //===----------------------------------------------------------------------===// // TypeStorageAllocator //===----------------------------------------------------------------------===// /// This is a utility allocator used to allocate memory for instances of derived /// Types. TypeStorageAllocator; //===----------------------------------------------------------------------===// // TypeUniquer //===----------------------------------------------------------------------===// namespace detail { /// A utility class to get, or create, unique instances of types within an /// MLIRContext. This class manages all creation and uniquing of types. struct TypeUniquer { … }; } // namespace detail } // namespace mlir #endif