FLANG

Classes | Macros | Typedefs | Functions
RTBuilder.h File Reference
`#include "flang/Lower/ConvertType.h"`
`#include "flang/Optimizer/Dialect/FIRType.h"`
`#include "mlir/IR/MLIRContext.h"`
`#include "mlir/IR/StandardTypes.h"`
`#include "llvm/ADT/SmallVector.h"`
`#include <functional>`
`#include "../../runtime/io-api.h"`

Go to the source code of this file.

## Classes
struct | Fortran::lower::RuntimeTableKey<... >
struct | Fortran::lower::RuntimeTableKey< RT(ATs...)>
struct | Fortran::lower::RuntimeTableEntry<... >
struct | Fortran::lower::RuntimeTableEntry< RuntimeTableKey< KT >, RuntimeIdentifier< Cs... > >

## Macros
#define | E(L, I) (I < sizeof(L) / sizeof(*L) ? L[I] : 0)
#define | QuoteKey(X) #X
#define | MacroExpandKey(X)
#define | ExpandKey(X) MacroExpandKey(QuoteKey(X))
#define | FullSeq(X) std::integer_sequence<char, ExpandKey(X)>
#define | AsSequence(X) decltype(Fortran::lower::details::filter(FullSeq(X){}))
#define | mkKey(X)

## Typedefs
using | Fortran::lower::TypeBuilderFunc = mlir::Type(*)(mlir::MLIRContext *)
using | Fortran::lower::FuncTypeBuilderFunc = mlir::FunctionType(*)(mlir::MLIRContext *)
template<char... Cs>
using | Fortran::lower::RuntimeIdentifier = std::integer_sequence< char, Cs... >

## Functions
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< int > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< int & > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< Fortran::runtime::io::Iostat > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< char * > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< const char * > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< const char16_t * > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< const char32_t * > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< void ** > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< std::int64_t > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< std::int64_t & > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< std::size_t > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< Fortran::runtime::io::IoStatementState * > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< double > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< double & > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< float > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< float & > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< bool > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< bool & > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< const Fortran::runtime::Descriptor & > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< const Fortran::runtime::NamelistGroup & > ()
template<>
constexpr TypeBuilderFunc | Fortran::lower::getModel< void > ()

## Detailed Description

This file defines some C++17 template classes that are used to convert the signatures of plain old C functions into a model that can be used to generate MLIR calls to those functions. This can be used to autogenerate tables at compiler compile-time to call runtime support code.

## Macro Definition Documentation

## ◆ MacroExpandKey

#define MacroExpandKey | ( |  | X | ) |

Value:
E(X, 0), E(X, 1), E(X, 2), E(X, 3), E(X, 4), E(X, 5), E(X, 6), E(X, 7), \
E(X, 8), E(X, 9), E(X, 10), E(X, 11), E(X, 12), E(X, 13), E(X, 14), \
E(X, 15), E(X, 16), E(X, 17), E(X, 18), E(X, 19), E(X, 20), E(X, 21), \
E(X, 22), E(X, 23), E(X, 24), E(X, 25), E(X, 26), E(X, 27), E(X, 28), \
E(X, 29), E(X, 30), E(X, 31), E(X, 32), E(X, 33), E(X, 34), E(X, 35), \
E(X, 36), E(X, 37), E(X, 38), E(X, 39), E(X, 40), E(X, 41), E(X, 42), \
E(X, 43), E(X, 44), E(X, 45), E(X, 46), E(X, 47), E(X, 48), E(X, 49)

## ◆ mkKey

#define mkKey | ( |  | X | ) |

Value:
Fortran::lower::RuntimeTableEntry< \
Fortran::lower::RuntimeTableKey<decltype(X)>, AsSequence(X)>
Fortran::lower::RuntimeTableEntry
Definition: RTBuilder.h:239