Home ⌂Doc Index ◂Up ▴
Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant Class Reference
Collaboration diagram for internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant:

Public Member Functions

 variant ()
 
template<typename T >
 variant (const T &x)
 
 variant (const variant &other)
 
void operator= (const variant &rhs)
 
template<typename U >
const U & variant_cast_to () const
 
template<typename U >
bool variant_is_a () const
 
bool variant_is_default_constructed () const
 
 ~variant ()
 

Private Types

typedef pick_tuple_max< N, Tuple, alignment_of >::type AlignType
 
typedef pick_tuple_max< N, Tuple, size_of >::type MaxSizeType
 
typedef tbb::aligned_space< AlignType, MaxNElementsSpaceType
 

Private Attributes

SpaceType my_space
 

Static Private Attributes

static const size_t N = tbb::flow::tuple_size<Tuple>::value
 
static const size_t MaxNBytes = (sizeof(Wrapper<MaxSizeType>)+sizeof(AlignType)-1)
 
static const size_t MaxNElements = MaxNBytes/sizeof(AlignType)
 
static const size_t MaxSize = sizeof(SpaceType)
 

Detailed Description

template<typename TagType, typename T0, typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
class internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant

Definition at line 633 of file _flow_graph_types_impl.h.

Member Typedef Documentation

◆ AlignType

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
typedef pick_tuple_max<N, Tuple, alignment_of>::type internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::AlignType
private

Definition at line 635 of file _flow_graph_types_impl.h.

◆ MaxSizeType

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
typedef pick_tuple_max<N, Tuple, size_of>::type internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::MaxSizeType
private

Definition at line 636 of file _flow_graph_types_impl.h.

◆ SpaceType

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
typedef tbb::aligned_space<AlignType, MaxNElements> internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::SpaceType
private

Definition at line 639 of file _flow_graph_types_impl.h.

Constructor & Destructor Documentation

◆ variant() [1/3]

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant ( )
inline

Definition at line 644 of file _flow_graph_types_impl.h.

644 { (void) new(&my_space) Wrapper<default_constructed>(default_constructed()); }

References internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space, and void.

◆ variant() [2/3]

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
template<typename T >
internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant ( const T &  x)
inline

Definition at line 647 of file _flow_graph_types_impl.h.

647  {
649  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value

References internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

◆ variant() [3/3]

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant ( const variant other)
inline

Definition at line 651 of file _flow_graph_types_impl.h.

651  {
652  const WrapperBase * h = punned_cast<const WrapperBase *>(&(other.my_space));
653  h->CopyTo(&my_space);
654  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h

References h, and internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

◆ ~variant()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::~variant ( )
inline

Definition at line 680 of file _flow_graph_types_impl.h.

680  {
681  WrapperBase *h = punned_cast<WrapperBase *>(&my_space);
682  h->~WrapperBase();
683  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h

References h, and internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

Member Function Documentation

◆ operator=()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
void internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::operator= ( const variant rhs)
inline

Definition at line 658 of file _flow_graph_types_impl.h.

658  {
659  if(&rhs != this) {
660  WrapperBase *h = punned_cast<WrapperBase *>(&my_space);
661  h->~WrapperBase();
662  const WrapperBase *ch = punned_cast<const WrapperBase *>(&(rhs.my_space));
663  ch->CopyTo(&my_space);
664  }
665  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h

References internal::WrapperBase::CopyTo(), h, and internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

Here is the call graph for this function:

◆ variant_cast_to()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
template<typename U >
const U& internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant_cast_to ( ) const
inline

Definition at line 668 of file _flow_graph_types_impl.h.

668  {
669  const Wrapper<U> *h = dynamic_cast<const Wrapper<U>*>(punned_cast<const WrapperBase *>(&my_space));
670  if(!h) {
672  }
673  return h->value();
674  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h
void throw_exception(exception_id eid)
Versionless convenience wrapper for throw_exception_v4()

References tbb::internal::eid_bad_tagged_msg_cast, h, internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space, and tbb::internal::throw_exception().

Here is the call graph for this function:

◆ variant_is_a()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
template<typename U >
bool internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant_is_a ( ) const
inline

Definition at line 676 of file _flow_graph_types_impl.h.

676 { return dynamic_cast<const Wrapper<U>*>(punned_cast<const WrapperBase *>(&my_space)) != NULL; }

References internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

◆ variant_is_default_constructed()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
bool internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant_is_default_constructed ( ) const
inline

Definition at line 678 of file _flow_graph_types_impl.h.

678 {return variant_is_a<default_constructed>();}

Referenced by internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::is_default_constructed().

Here is the caller graph for this function:

Member Data Documentation

◆ MaxNBytes

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
const size_t internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::MaxNBytes = (sizeof(Wrapper<MaxSizeType>)+sizeof(AlignType)-1)
staticprivate

Definition at line 637 of file _flow_graph_types_impl.h.

◆ MaxNElements

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
const size_t internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::MaxNElements = MaxNBytes/sizeof(AlignType)
staticprivate

Definition at line 638 of file _flow_graph_types_impl.h.

◆ MaxSize

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
const size_t internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::MaxSize = sizeof(SpaceType)
staticprivate

Definition at line 641 of file _flow_graph_types_impl.h.

◆ my_space

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
SpaceType internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space
private

◆ N

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
const size_t internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::N = tbb::flow::tuple_size<Tuple>::value
staticprivate

Definition at line 634 of file _flow_graph_types_impl.h.


The documentation for this class 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.