1 //===-- include/flang/Semantics/runtime-type-info.h -------------*- 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 // BuildRuntimeDerivedTypeTables() translates the scopes of derived types
10 // and parameterized derived type instantiations into the type descriptions
11 // defined in module/__fortran_type_info.f90, packaging these descriptions
12 // as static initializers for compiler-created objects.
13 
14 #ifndef FORTRAN_SEMANTICS_RUNTIME_TYPE_INFO_H_
15 #define FORTRAN_SEMANTICS_RUNTIME_TYPE_INFO_H_
16 
17 #include <set>
18 #include <string>
19 
20 namespace llvm {
21 class raw_ostream;
22 }
23 
24 namespace Fortran::semantics {
25 class Scope;
26 class SemanticsContext;
27 class Symbol;
28 
29 struct RuntimeDerivedTypeTables {
30   Scope *schemata{nullptr};
31   std::set<std::string> names;
32 };
33 
34 RuntimeDerivedTypeTables BuildRuntimeDerivedTypeTables(SemanticsContext &);
35 
36 void Dump(llvm::raw_ostream &, const RuntimeDerivedTypeTables &);
37 } // namespace Fortran::semantics
38 #endif // FORTRAN_SEMANTICS_RUNTIME_TYPE_INFO_H_
39