LeechCraft  0.6.70-6645-gcd10d7e
Modular cross-platform feature rich live environment.
prelude.h File Reference
#include <type_traits>
#include <iterator>
#include <QPair>
#include <QStringList>
#include <boost/optional.hpp>
#include "oldcppkludges.h"
+ Include dependency graph for prelude.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  LeechCraft::Util::WrapType< T >
 
struct  LeechCraft::Util::WrapType< QList< QString > >
 
struct  LeechCraft::Util::detail::ComparingByClosure< R >
 
struct  LeechCraft::Util::detail::Fst< F >
 
struct  LeechCraft::Util::detail::Snd< F >
 

Namespaces

 LeechCraft
 
 LeechCraft::Util
 
 LeechCraft::Util::detail
 

Typedefs

template<typename T >
using LeechCraft::Util::WrapType_t = typename WrapType< T >::type
 

Functions

template<typename T1 , typename T2 , template< typename U > class Container, typename F >
auto LeechCraft::Util::ZipWith (const Container< T1 > &c1, const Container< T2 > &c2, F f) -> WrapType_t< Container< Decay_t< ResultOf_t< F(T1, T2)>>>>
 
template<typename T1 , typename T2 , template< typename U > class Container, template< typename U1, typename U2 > class Pair = QPair>
auto LeechCraft::Util::Zip (const Container< T1 > &c1, const Container< T2 > &c2) -> Container< Pair< T1, T2 >>
 
template<typename Res , typename T >
void LeechCraft::Util::detail::Append (Res &result, T &&val, decltype(result.push_back(std::forward< T >(val)))*=nullptr)
 
template<typename Res , typename T >
void LeechCraft::Util::detail::Append (Res &result, T &&val, decltype(result.insert(std::forward< T >(val)))*=nullptr)
 
template<typename T , typename F >
constexpr bool LeechCraft::Util::detail::IsInvokableWithConstImpl (typename std::result_of< F(const T &)>::type *)
 
template<typename T , typename F >
constexpr bool LeechCraft::Util::detail::IsInvokableWithConstImpl (...)
 
template<typename T , typename F >
constexpr bool LeechCraft::Util::detail::IsInvokableWithConst ()
 
template<template< typename > class Cont, typename T >
constexpr bool LeechCraft::Util::detail::IsSimpleContainer ()
 
template<typename C >
constexpr bool LeechCraft::Util::detail::IsSimpleContainer ()
 
template<typename T , template< typename U > class Container, typename F >
auto LeechCraft::Util::Map (const Container< T > &c, F f) -> typename std::enable_if<!std::is_same< void, decltype(Invoke(f,*c.begin()))>::value, WrapType_t< Container< typename std::decay< decltype(Invoke(f,*c.begin()))>::type >>>::type
 
template<typename Container , typename F , template< typename > class ResultCont = QList>
auto LeechCraft::Util::Map (const Container &c, F f) -> typename std::enable_if<!detail::IsSimpleContainer< Container >()&&!std::is_same< void, decltype(Invoke(f,*c.begin()))>::value, WrapType_t< ResultCont< typename std::decay< decltype(Invoke(f,*c.begin()))>::type >>>::type
 
template<typename Container , typename F >
auto LeechCraft::Util::Map (Container &c, F f) -> typename std::enable_if<!detail::IsSimpleContainer< Container >()&&std::is_same< void, decltype(Invoke(f,*c.begin()))>::value >::type
 
template<typename T , template< typename U > class Container, typename F >
Container< T > LeechCraft::Util::Filter (const Container< T > &c, F f)
 
template<template< typename > class Container, typename T >
Container< T > LeechCraft::Util::Concat (const Container< Container< T >> &containers)
 
template<template< typename... > class Container, typename... ContArgs>
auto LeechCraft::Util::Concat (const Container< ContArgs... > &containers) -> typename std::decay< decltype(*containers.begin())>::type
 
template<typename Cont , typename F >
auto LeechCraft::Util::ConcatMap (Cont &&c, F &&f) -> decltype(Concat(Map(std::forward< Cont >(c), std::forward< F >(f))))
 
template<template< typename > class Container, typename T >
Container< Container< T > > LeechCraft::Util::SplitInto (size_t numChunks, const Container< T > &container)
 
template<template< typename Pair, typename...Rest > class Cont, template< typename K, typename V > class Pair, typename K , typename V , typename KV , typename... Rest>
boost::optional< V > LeechCraft::Util::Lookup (const KV &key, const Cont< Pair< K, V >, Rest... > &cont)
 
template<typename Cont >
Cont LeechCraft::Util::Sorted (Cont &&cont)
 
template<typename R >
detail::ComparingByClosure< R > LeechCraft::Util::ComparingBy (R r)
 
template<typename F >
detail::Fst< F > LeechCraft::Util::First (F f)
 
template<typename F >
detail::Snd< F > LeechCraft::Util::Second (F f)
 

Variables

struct {
LeechCraft::Util::Apply