func.h File Reference
#include "ttg/fwd.h"
#include "ttg/edge.h"
#include "ttg/impl_selector.h"
#include "ttg/terminal.h"
#include "ttg/traverse.h"
#include "ttg/tt.h"

Classes

struct  ttg::detail::value_copy_handler< Runtime >
 

Namespaces

 ttg
 top-level TTG namespace contains runtime-neutral functionality
 
 ttg::detail
 

Functions

template<typename keyT , typename valueT >
auto ttg::detail::get_out_terminal (size_t i, const char *func)
 
template<typename keyT >
auto ttg::detail::get_out_base_terminal (size_t i, const char *func)
 
template<typename... TTBasePtrs>
std::enable_if_t<(std::is_convertible_v< decltype(*(std::declval< TTBasePtrs >))), TTBase & > bool ttg::make_graph_executable (TTBasePtrs &&...tts)
 
template<typename keyT , typename valueT >
void ttg::connect (ttg::Out< keyT, valueT > *out, ttg::In< keyT, valueT > *in)
 Connect output terminal to successor input terminal. More...
 
void ttg::connect (ttg::TerminalBase *out, ttg::TerminalBase *in)
 Connect output terminal to successor input terminal. More...
 
template<std::size_t outindex, std::size_t inindex, typename producer_tt_ptr , typename successor_tt_ptr >
void ttg::connect (producer_tt_ptr &p, successor_tt_ptr &c)
 Connect producer output terminal outindex to consumer input terminal inindex (via unique or otherwise wrapped pointers to TTs) More...
 
template<std::size_t outindex, std::size_t inindex, typename producer_tt_ptr , typename successor_tt_ptr >
void ttg::connect (producer_tt_ptr *p, successor_tt_ptr *c)
 Connect producer output terminal outindex to consumer input terminal inindex (via bare pointers to TTs) More...
 
void ttg::connect (size_t outindex, size_t inindex, TTBase *producer, TTBase *consumer)
 Connect producer output terminal outindex to consumer input terminal inindex (via TTBase pointers) More...
 
template<typename keyT , typename... valuesT>
auto ttg::fuse (const Edge< keyT, valuesT > &...args)
 Fuse edges into one This allows receiving one data from either of the combined edges. More...
 
template<typename... inedgesT>
auto ttg::edges (inedgesT &&...args)
 Make a tuple of Edges to pass to. More...
 
template<typename keyT , typename valueT , typename output_terminalT , ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::send (const keyT &key, valueT &&value, ttg::Out< keyT, valueT > &t)
 Sends a task id and a value to the given output terminal. More...
 
template<typename keyT >
void ttg::sendk (const keyT &key, ttg::Out< keyT, void > &t)
 Sends a task id (without an accompanying value) to the given output terminal. More...
 
template<typename valueT , ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::sendv (valueT &&value, ttg::Out< void, valueT > &t)
 Sends a value (without an accompanying task id) to the given output terminal. More...
 
void ttg::send (ttg::Out< void, void > &t)
 Sends a control message (message without an accompanying task id or a value) to the given output terminal. More...
 
template<size_t i, typename keyT , typename valueT , typename... out_keysT, typename... out_valuesT, ttg::Runtime Runtime = ttg::ttg_runtime>
std::enable_if_t< meta::is_none_void_v< keyT, std::decay_t< valueT > >, void > ttg::send (const keyT &key, valueT &&value, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 Sends a task id and a value to the template tasks attached to the output terminal selected in the explicitly given terminal tuple t. More...
 
template<typename keyT , typename valueT , ttg::Runtime Runtime = ttg::ttg_runtime>
std::enable_if_t< meta::is_none_void_v< keyT, std::decay_t< valueT > >, void > ttg::send (size_t i, const keyT &key, valueT &&value)
 Sends a task id and a value to the template tasks attached to the output terminal of this template task. More...
 
template<size_t i, typename keyT , typename valueT , ttg::Runtime Runtime = ttg::ttg_runtime>
std::enable_if_t< meta::is_none_void_v< keyT, std::decay_t< valueT > >, void > ttg::send (const keyT &key, valueT &&value)
 Sends a task id and a value to the template tasks attached to the output terminal of this template task. More...
 
template<size_t i, typename keyT , typename... out_keysT, typename... out_valuesT>
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::sendk (const keyT &key, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 Sends a task id (without an accompanying value) to the template tasks attached to the output terminal selected in the explicitly given terminal tuple t. More...
 
template<typename keyT >
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::sendk (std::size_t i, const keyT &key)
 Sends a task id (without an accompanying value) to the template tasks attached to the output terminal of this template task. More...
 
template<size_t i, typename keyT >
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::sendk (const keyT &key)
 Sends a task id (without an accompanying value) to the template tasks attached to the output terminal of this template task. More...
 
template<size_t i, typename valueT , typename... out_keysT, typename... out_valuesT, ttg::Runtime Runtime = ttg::ttg_runtime>
std::enable_if_t<!meta::is_void_v< std::decay_t< valueT > >, void > ttg::sendv (valueT &&value, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 Sends a value (without an accompanying task id) to the template tasks attached to the output terminal selected in the explicitly given terminal tuple t. More...
 
template<typename valueT , ttg::Runtime Runtime = ttg::ttg_runtime>
std::enable_if_t<!meta::is_void_v< std::decay_t< valueT > >, void > ttg::sendv (std::size_t i, valueT &&value)
 Sends a value (without an accompanying task id) to the template tasks attached to the output terminal of this template task. More...
 
template<size_t i, typename valueT , ttg::Runtime Runtime = ttg::ttg_runtime>
std::enable_if_t<!meta::is_void_v< std::decay_t< valueT > >, void > ttg::sendv (valueT &&value)
 Sends a value (without an accompanying task id) to the template tasks attached to the output terminal of this template task. More...
 
template<size_t i, typename... out_keysT, typename... out_valuesT>
void ttg::send (std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 Sends a control message (message without an accompanying task id or a value) to the template tasks attached to the output terminal selected in the explicitly given terminal tuple t. More...
 
void ttg::send (std::size_t i)
 Sends a control message (message without an accompanying task id or a value) to the template tasks attached to the output terminal of this template task. More...
 
template<size_t i>
void ttg::send ()
 Sends a control message (message without an accompanying task id or a value) to the template tasks attached to the output terminal of this template task. More...
 
template<size_t KeyId, size_t i, size_t... I, typename... RangesT, typename valueT , typename... out_keysT, typename... out_valuesT>
void ttg::detail::broadcast (const std::tuple< RangesT... > &keylists, valueT &&value, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 
template<size_t KeyId, size_t i, size_t... I, typename... RangesT, typename valueT >
void ttg::detail::broadcast (const std::tuple< RangesT... > &keylists, valueT &&value)
 
template<size_t KeyId, size_t i, size_t... I, typename... RangesT, typename... out_keysT, typename... out_valuesT>
void ttg::detail::broadcast (const std::tuple< RangesT... > &keylists, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 
template<size_t KeyId, size_t i, size_t... I, typename... RangesT>
void ttg::detail::broadcast (const std::tuple< RangesT... > &keylists)
 
template<size_t i, typename rangeT , typename valueT , typename... out_keysT, typename... out_valuesT, ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcast (const rangeT &keylist, valueT &&value, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 
template<typename rangeT , typename valueT , typename... out_keysT, typename... out_valuesT, ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcast (std::size_t i, const rangeT &keylist, valueT &&value)
 
template<size_t i, typename rangeT , typename valueT , typename... out_keysT, typename... out_valuesT, ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcast (const rangeT &keylist, valueT &&value)
 
template<size_t i, size_t... I, typename... RangesT, typename valueT , typename... out_keysT, typename... out_valuesT, ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcast (const std::tuple< RangesT... > &keylists, valueT &&value, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 
template<size_t i, size_t... I, typename... RangesT, typename valueT , ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcast (const std::tuple< RangesT... > &keylists, valueT &&value)
 
template<size_t i, typename rangeT , typename... out_keysT, typename... out_valuesT, ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcastk (const rangeT &keylist, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 
template<typename rangeT , ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcastk (std::size_t i, const rangeT &keylist)
 
template<size_t i, typename rangeT , ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcastk (const rangeT &keylist)
 
template<size_t i, size_t... I, typename... RangesT, typename... out_keysT, typename... out_valuesT, ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcastk (const std::tuple< RangesT... > &keylists, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 
template<size_t i, size_t... I, typename... RangesT, ttg::Runtime Runtime = ttg::ttg_runtime>
void ttg::broadcastk (const std::tuple< RangesT... > &keylists)
 
template<typename keyT , typename out_valueT >
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::set_size (const keyT &key, const std::size_t size, ttg::Out< keyT, out_valueT > &t)
 
template<size_t i, typename keyT , typename... out_keysT, typename... out_valuesT>
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::set_size (const keyT &key, const std::size_t size, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 Set the size of all streaming input terminals connected to the output terminal for a task identified by key. More...
 
template<typename keyT >
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::set_size (std::size_t i, const keyT &key, const std::size_t size)
 
template<size_t i, typename keyT , typename... out_keysT, typename... out_valuesT>
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::set_size (const keyT &key, const std::size_t size)
 
template<typename out_keyT , typename out_valueT >
void ttg::set_size (const std::size_t size, ttg::Out< out_keyT, out_valueT > &t)
 Set the size of all streaming input terminals connected to an output terminal with void key. More...
 
template<size_t i, typename... out_keysT, typename... out_valuesT>
void ttg::set_size (const std::size_t size, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 Set the size of all streaming input terminals connected to an output terminal for a task, with void key. More...
 
void ttg::set_size (std::size_t i, const std::size_t size)
 
template<std::size_t i>
void ttg::set_size (const std::size_t size)
 
template<typename keyT , typename out_keyT , typename out_valueT >
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::finalize (const keyT &key, ttg::Out< out_keyT, out_valueT > &t)
 Finalize streaming input terminals connecting to the given output terminal for tasks identified by key. More...
 
template<size_t i, typename keyT , typename... out_keysT, typename... out_valuesT>
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::finalize (const keyT &key, std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 Finalize streaming input terminals connected to the given output terminal; use this to finalize terminals with non-void key. More...
 
template<typename keyT >
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::finalize (std::size_t i, const keyT &key)
 
template<std::size_t i, typename keyT >
std::enable_if_t<!meta::is_void_v< keyT >, void > ttg::finalize (const keyT &key)
 
template<typename out_keyT , typename out_valueT >
void ttg::finalize (ttg::Out< out_keyT, out_valueT > &t)
 Finalize streaming input terminals connected to the given output terminal; use this to finalize terminals with void key. More...
 
template<size_t i, typename... out_keysT, typename... out_valuesT>
void ttg::finalize (std::tuple< ttg::Out< out_keysT, out_valuesT >... > &t)
 Finalize streaming input terminals connected to the ith output terminal in the tuple; use this to finalize terminals with void key. More...
 
void ttg::finalize (std::size_t i)
 
template<std::size_t i>
void ttg::finalize ()
 Finalizes the TTG runtime. More...