My Project
Classes | Namespaces | Typedefs | Functions
STLExtras.h File Reference
#include "mlir/Support/LLVM.h"
#include "llvm/ADT/STLExtras.h"
Include dependency graph for STLExtras.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mlir::ClassID
 
struct  mlir::detail::detector< class, Op, Args >
 
struct  mlir::detail::detector< void_t< Op< Args... > >, Op, Args... >
 
class  mlir::indexed_accessor_iterator< DerivedT, BaseT, T, PointerT, ReferenceT >
 
class  mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >
 
class  mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::iterator
 An iterator element of this range. More...
 
class  mlir::indexed_accessor_range< DerivedT, BaseT, T, PointerT, ReferenceT >
 
struct  mlir::FunctionTraits< T, isClass >
 
struct  mlir::FunctionTraits< ReturnType(ClassType::*)(Args...) const, false >
 Overload for class function types. More...
 
struct  mlir::FunctionTraits< ReturnType(*)(Args...), false >
 Overload for non-class function types. More...
 
struct  llvm::DenseMapInfo< std::tuple< Ts... > >
 

Namespaces

 mlir
 
 mlir::detail
 Check if a Callable type can be invoked with the given set of arg types.
 
 llvm
 

Typedefs

template<typename RangeT >
using mlir::detail::ValueOfRange = typename std::remove_reference< decltype(*std::begin(std::declval< RangeT & >()))>::type
 
template<typename... >
using mlir::detail::void_t = void
 
template<template< class... > class Op, class... Args>
using mlir::is_detected = typename detail::detector< void, Op, Args... >::value_t
 
template<typename Callable , typename... Args>
using mlir::detail::is_invocable = decltype(std::declval< Callable & >()(std::declval< Args >()...))
 
template<typename Callable , typename... Args>
using mlir::is_invocable = is_detected< detail::is_invocable, Callable, Args... >
 

Functions

template<typename ForwardIterator , typename UnaryFunctor , typename NullaryFunctor , typename = typename std::enable_if< !std::is_constructible<StringRef, UnaryFunctor>::value && !std::is_constructible<StringRef, NullaryFunctor>::value>::type>
void mlir::interleave (ForwardIterator begin, ForwardIterator end, UnaryFunctor each_fn, NullaryFunctor between_fn)
 
template<typename Container , typename UnaryFunctor , typename NullaryFunctor , typename = typename std::enable_if< !std::is_constructible<StringRef, UnaryFunctor>::value && !std::is_constructible<StringRef, NullaryFunctor>::value>::type>
void mlir::interleave (const Container &c, UnaryFunctor each_fn, NullaryFunctor between_fn)
 
template<typename Container , typename UnaryFunctor , typename raw_ostream , typename T = detail::ValueOfRange<Container>>
void mlir::interleave (const Container &c, raw_ostream &os, UnaryFunctor each_fn, const StringRef &separator)
 Overload of interleave for the common case of string separator. More...
 
template<typename Container , typename raw_ostream , typename T = detail::ValueOfRange<Container>>
void mlir::interleave (const Container &c, raw_ostream &os, const StringRef &separator)
 
template<typename Container , typename UnaryFunctor , typename raw_ostream , typename T = detail::ValueOfRange<Container>>
void mlir::interleaveComma (const Container &c, raw_ostream &os, UnaryFunctor each_fn)
 
template<typename Container , typename raw_ostream , typename T = detail::ValueOfRange<Container>>
void mlir::interleaveComma (const Container &c, raw_ostream &os)
 
template<typename ContainerTy >
auto mlir::make_second_range (ContainerTy &&c)
 Given a container of pairs, return a range over the second elements. More...
 
template<typename ContainerTy >
bool mlir::has_single_element (ContainerTy &&c)
 Returns true of the given range only contains a single element. More...