MLIR  17.0.0git
Classes | Namespaces | Typedefs | Functions
InterfaceSupport.h File Reference
#include "mlir/Support/TypeID.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/Support/TypeName.h"
+ Include dependency graph for InterfaceSupport.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  mlir::detail::Interface< ConcreteType, ValueT, Traits, BaseType, BaseTrait >
 This class represents an abstract interface. More...
 
struct  mlir::detail::Interface< ConcreteType, ValueT, Traits, BaseType, BaseTrait >::Trait< ConcreteT >
 This is a special trait that registers a given interface with an object. More...
 
struct  mlir::detail::count_if_t_impl< Pred, N, Ts >
 Template utility that computes the number of elements within T that satisfy the given predicate. More...
 
struct  mlir::detail::count_if_t_impl< Pred, N, T, Us... >
 
class  mlir::detail::InterfaceMap
 This class provides an efficient mapping between a given Interface type, and a particular implementation of its concept. More...
 
struct  llvm::DenseMapInfo< T, std::enable_if_t< mlir::detail::IsInterface< T >::value > >
 

Namespaces

 mlir
 Include the generated interface declarations.
 
 mlir::detail
 Detect if any of the given parameter types has a sub-element handler.
 
 llvm
 Include the generated interface declarations.
 

Typedefs

template<template< class > class Pred, typename... Ts>
using mlir::detail::count_if_t = count_if_t_impl< Pred, 0, Ts... >
 
template<typename T >
using mlir::detail::is_interface_t = decltype(isInterfaceImpl(std::declval< T & >()))
 
template<typename T >
using mlir::detail::IsInterface = llvm::is_detected< is_interface_t, T >
 

Functions

template<typename ConcreteType , typename ValueT , typename Traits , typename BaseType , template< typename, template< typename > class > class BaseTrait>
void mlir::detail::isInterfaceImpl (Interface< ConcreteType, ValueT, Traits, BaseType, BaseTrait > &)