//===- Region.h - MLIR Region Class -----------------------------*- 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 the Region class. // //===----------------------------------------------------------------------===// #ifndef MLIR_IR_REGION_H #define MLIR_IR_REGION_H #include "mlir/IR/Block.h" namespace mlir { class TypeRange; template <typename ValueRangeT> class ValueTypeRange; class IRMapping; /// This class contains a list of basic blocks and a link to the parent /// operation it is attached to. class Region { … }; /// This class provides an abstraction over the different types of ranges over /// Regions. In many cases, this prevents the need to explicitly materialize a /// SmallVector/std::vector. This class should be used in places that are not /// suitable for a more derived type (e.g. ArrayRef) or a template range /// parameter. class RegionRange : public llvm::detail::indexed_accessor_range_base< RegionRange, PointerUnion<Region *, const std::unique_ptr<Region> *, Region **>, Region *, Region *, Region *> { … }; } // namespace mlir #endif // MLIR_IR_REGION_H