Home ⌂Doc Index ◂Up ▴
Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type > Struct Template Reference

#include <flow_graph.h>

Collaboration diagram for tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >:

Public Types

typedef T async_type
 
typedef T::async_msg_data_type filtered_type
 

Static Public Member Functions

static const voidto_void_ptr (const T &t)
 
static voidto_void_ptr (T &t)
 
static const T & from_void_ptr (const void *p)
 
static T & from_void_ptr (void *p)
 
static tasktry_put_task_wrapper_impl (receiver< T > *const this_recv, const void *p, bool is_async)
 

Static Public Attributes

static const bool is_async_type = true
 

Detailed Description

template<typename T>
struct tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >

Definition at line 264 of file flow_graph.h.

Member Typedef Documentation

◆ async_type

template<typename T >
typedef T tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >::async_type

Definition at line 265 of file flow_graph.h.

◆ filtered_type

template<typename T >
typedef T::async_msg_data_type tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >::filtered_type

Definition at line 266 of file flow_graph.h.

Member Function Documentation

◆ from_void_ptr() [1/2]

template<typename T >
static const T& tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >::from_void_ptr ( const void p)
inlinestatic

Definition at line 280 of file flow_graph.h.

280  {
281  return *static_cast<const T*>(static_cast<const async_msg<filtered_type>*>(p));
282  }
void const char const char int ITT_FORMAT __itt_group_sync p

◆ from_void_ptr() [2/2]

template<typename T >
static T& tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >::from_void_ptr ( void p)
inlinestatic

Definition at line 284 of file flow_graph.h.

284  {
285  return *static_cast<T*>(static_cast<async_msg<filtered_type>*>(p));
286  }
void const char const char int ITT_FORMAT __itt_group_sync p

◆ to_void_ptr() [1/2]

template<typename T >
static const void* tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >::to_void_ptr ( const T &  t)
inlinestatic

Definition at line 271 of file flow_graph.h.

271  {
272  return static_cast<const void*>(&static_cast<const async_msg<filtered_type>&>(t));
273  }

◆ to_void_ptr() [2/2]

template<typename T >
static void* tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >::to_void_ptr ( T &  t)
inlinestatic

Definition at line 275 of file flow_graph.h.

275  {
276  return static_cast<void*>(&static_cast<async_msg<filtered_type>&>(t));
277  }

◆ try_put_task_wrapper_impl()

template<typename T >
static task* tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >::try_put_task_wrapper_impl ( receiver< T > *const  this_recv,
const void p,
bool  is_async 
)
inlinestatic

Definition at line 289 of file flow_graph.h.

289  {
290  if (is_async) {
291  // Both are async
292  return this_recv->try_put_task(from_void_ptr(p));
293  }
294  else {
295  // This (T) is async and incoming 'X t' is NOT async
296  // Create async_msg for X
298  const T msg(t);
299  return this_recv->try_put_task(msg);
300  }
301  }
static const T & from_void_ptr(const void *p)
Definition: flow_graph.h:237
void const char const char int ITT_FORMAT __itt_group_sync p

Member Data Documentation

◆ is_async_type

template<typename T >
const bool tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >::is_async_type = true
static

Definition at line 268 of file flow_graph.h.


The documentation for this struct was generated from the following file:

Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.