rocPRIM
Namespaces | Classes | Typedefs | Functions | Variables
Utilsmodule_tuple
Collaboration diagram for Utilsmodule_tuple:

Namespaces

 detail
 Deprecated: Configuration of device-level scan primitives.
 

Classes

class  tuple< Types >
 Fixed-size collection of heterogeneous values. More...
 
class  tuple_size< T >
 Provides access to the number of elements in a tuple as a compile-time constant expression. More...
 
class  tuple_size<::rocprim::tuple< Types... > >
 For T that is tuple, tuple_size<T>::value is the the number of elements in a tuple (equal to sizeof...(Types)). More...
 
class  tuple_size< const T >
 const T specialization of tuple_size More...
 
class  tuple_size< volatile T >
 volatile T specialization of tuple_size More...
 
class  tuple_size< const volatile T >
 const volatile T specialization of tuple_size More...
 
struct  tuple_element< I, T >
 Provides compile-time indexed access to the types of the elements of the tuple. More...
 
struct  tuple_element< I, ::rocprim::tuple< Types... > >
 For T that is tuple, tuple_element<I, T>::type is the type of Ith element of that tuple. More...
 
struct  tuple_element< I, const T >
 const T specialization of tuple_element More...
 
struct  tuple_element< I, volatile T >
 volatile T specialization of tuple_element More...
 
struct  tuple_element< I, const volatile T >
 const volatile T specialization of tuple_element More...
 
class  tuple<>
 

Typedefs

template<size_t I, class T >
using tuple_element_t = typename tuple_element< I, T >::type
 This is an alias used for convenience. More...
 
using ignore_type = detail::ignore_t
 

Functions

template<size_t I, class... UTypes>
ROCPRIM_HOST_DEVICE const tuple_element_t< I, tuple< UTypes... > > & get (const tuple< UTypes... > &) noexcept
 
template<size_t I, class... UTypes>
ROCPRIM_HOST_DEVICE tuple_element_t< I, tuple< UTypes... > > & get (tuple< UTypes... > &) noexcept
 
template<size_t I, class... UTypes>
ROCPRIM_HOST_DEVICE tuple_element_t< I, tuple< UTypes... > > && get (tuple< UTypes... > &&) noexcept
 
template<class... TTypes, class... UTypes, typename = typename std::enable_if< sizeof...(TTypes) == sizeof...(UTypes) >::type>
ROCPRIM_HOST_DEVICE bool operator== (const tuple< TTypes... > &lhs, const tuple< UTypes... > &rhs)
 Equal to operator for tuples. More...
 
template<class... TTypes, class... UTypes>
ROCPRIM_HOST_DEVICE bool operator!= (const tuple< TTypes... > &lhs, const tuple< UTypes... > &rhs)
 Not equal to operator for tuples. More...
 
template<class... TTypes, class... UTypes, typename = typename std::enable_if< sizeof...(TTypes) == sizeof...(UTypes) >::type>
ROCPRIM_HOST_DEVICE bool operator< (const tuple< TTypes... > &lhs, const tuple< UTypes... > &rhs)
 Less than operator for tuples. More...
 
template<class... TTypes, class... UTypes>
ROCPRIM_HOST_DEVICE bool operator> (const tuple< TTypes... > &lhs, const tuple< UTypes... > &rhs)
 Greater than operator for tuples. More...
 
template<class... TTypes, class... UTypes>
ROCPRIM_HOST_DEVICE bool operator<= (const tuple< TTypes... > &lhs, const tuple< UTypes... > &rhs)
 Less than or equal to operator for tuples. More...
 
template<class... TTypes, class... UTypes>
ROCPRIM_HOST_DEVICE bool operator>= (const tuple< TTypes... > &lhs, const tuple< UTypes... > &rhs)
 Greater than or equal to operator for tuples. More...
 
template<class... Types>
ROCPRIM_HOST_DEVICE void swap (tuple< Types... > &lhs, tuple< Types... > &rhs) noexcept
 Swaps the content of lhs tuple with the content rhs. More...
 
template<size_t I, class... Types>
ROCPRIM_HOST_DEVICE const tuple_element_t< I, tuple< Types... > > & get (const tuple< Types... > &t) noexcept
 Extracts the I-th element from the tuple, where I is an integer value from range [0, sizeof...(Types)). More...
 
template<size_t I, class... Types>
ROCPRIM_HOST_DEVICE tuple_element_t< I, tuple< Types... > > & get (tuple< Types... > &t) noexcept
 Extracts the I-th element from the tuple, where I is an integer value from range [0, sizeof...(Types)). More...
 
template<size_t I, class... Types>
ROCPRIM_HOST_DEVICE tuple_element_t< I, tuple< Types... > > && get (tuple< Types... > &&t) noexcept
 Extracts the I-th element from the tuple, where I is an integer value from range [0, sizeof...(Types)). More...
 
template<class... Types>
ROCPRIM_HOST_DEVICE tuple< detail::make_tuple_return_t< Types >... > make_tuple (Types &&... args) noexcept
 
template<class... Types>
ROCPRIM_HOST_DEVICE tuple< Types &... > tie (Types &... args) noexcept
 Creates a tuple of lvalue references to its arguments args or instances of rocprim::ignore. More...
 

Variables

const ignore_type ignore
 Assigning value to ignore object has no effect. More...
 

Detailed Description

Typedef Documentation

◆ tuple_element_t

template<size_t I, class T >
using tuple_element_t = typename tuple_element<I, T>::type

This is an alias used for convenience.

It represents tuple_element<I, T>::type.

Template Parameters
T- type of the elements contained in the tuple
I- size of the tuple (number of elements)

Function Documentation

◆ get() [1/3]

template<size_t I, class... Types>
ROCPRIM_HOST_DEVICE const tuple_element_t<I, tuple<Types...> >& get ( const tuple< Types... > &  t)
inlinenoexcept

Extracts the I-th element from the tuple, where I is an integer value from range [0, sizeof...(Types)).

Parameters
ttuple whose contents to extract
Returns
constant refernce to the selected element of input tuple t.

◆ get() [2/3]

template<size_t I, class... Types>
ROCPRIM_HOST_DEVICE tuple_element_t<I, tuple<Types...> >& get ( tuple< Types... > &  t)
inlinenoexcept

Extracts the I-th element from the tuple, where I is an integer value from range [0, sizeof...(Types)).

Parameters
ttuple whose contents to extract
Returns
refernce to the selected element of input tuple t.

◆ get() [3/3]

template<size_t I, class... Types>
ROCPRIM_HOST_DEVICE tuple_element_t<I, tuple<Types...> >&& get ( tuple< Types... > &&  t)
inlinenoexcept

Extracts the I-th element from the tuple, where I is an integer value from range [0, sizeof...(Types)).

Parameters
ttuple whose contents to extract
Returns
rvalue refernce to the selected element of input tuple t.

◆ operator!=()

template<class... TTypes, class... UTypes>
ROCPRIM_HOST_DEVICE bool operator!= ( const tuple< TTypes... > &  lhs,
const tuple< UTypes... > &  rhs 
)
inline

Not equal to operator for tuples.

Template Parameters
TTypes...- the element types of lhs tuple.
UTypes...- the element types of rhs tuple.

Compares every element of the tuple lhs with the corresponding element of the tuple rhs, and returns true if at least one of such pairs is not equal.

Parameters
lhstuple to compare with rhs
rhstuple to compare with lhs
Returns
!(lhr == rhs)

◆ operator<()

template<class... TTypes, class... UTypes, typename = typename std::enable_if< sizeof...(TTypes) == sizeof...(UTypes) >::type>
ROCPRIM_HOST_DEVICE bool operator< ( const tuple< TTypes... > &  lhs,
const tuple< UTypes... > &  rhs 
)
inline

Less than operator for tuples.

Template Parameters
TTypes...- the element types of lhs tuple.
UTypes...- the element types of rhs tuple.

Compares lhs and rhs lexicographically.

Parameters
lhstuple to compare with rhs
rhstuple to compare with lhs
Returns
(bool)(rocprim::get<0>(lhs) < rocprim::get<0>(rhs)) || (!(bool)(rocprim::get<0>(rhs) < rocprim::get<0>(lhs)) && lhstail < rhstail), where lhstail is lhs without its first element, and rhstail is rhs without its first element. For two empty tuples, it returns false.

◆ operator<=()

template<class... TTypes, class... UTypes>
ROCPRIM_HOST_DEVICE bool operator<= ( const tuple< TTypes... > &  lhs,
const tuple< UTypes... > &  rhs 
)
inline

Less than or equal to operator for tuples.

Template Parameters
TTypes...- the element types of lhs tuple.
UTypes...- the element types of rhs tuple.

Compares lhs and rhs lexicographically.

Parameters
lhstuple to compare with rhs
rhstuple to compare with lhs
Returns
!(rhs < lhs)

◆ operator==()

template<class... TTypes, class... UTypes, typename = typename std::enable_if< sizeof...(TTypes) == sizeof...(UTypes) >::type>
ROCPRIM_HOST_DEVICE bool operator== ( const tuple< TTypes... > &  lhs,
const tuple< UTypes... > &  rhs 
)
inline

Equal to operator for tuples.

Template Parameters
TTypes...- the element types of lhs tuple.
UTypes...- the element types of rhs tuple.

Compares every element of the tuple lhs with the corresponding element of the tuple rhs, and returns true if all are equal.

Parameters
lhstuple to compare with rhs
rhstuple to compare with lhs
Returns
true if rocprim::get<i>(lhs) == rocprim::get<i>(rhs) for all i in [0, sizeof...(TTypes)); otherwise - false. Comparing two empty tuples returns true.

◆ operator>()

template<class... TTypes, class... UTypes>
ROCPRIM_HOST_DEVICE bool operator> ( const tuple< TTypes... > &  lhs,
const tuple< UTypes... > &  rhs 
)
inline

Greater than operator for tuples.

Template Parameters
TTypes...- the element types of lhs tuple.
UTypes...- the element types of rhs tuple.

Compares lhs and rhs lexicographically.

Parameters
lhstuple to compare with rhs
rhstuple to compare with lhs
Returns
rhs < lhs

◆ operator>=()

template<class... TTypes, class... UTypes>
ROCPRIM_HOST_DEVICE bool operator>= ( const tuple< TTypes... > &  lhs,
const tuple< UTypes... > &  rhs 
)
inline

Greater than or equal to operator for tuples.

Template Parameters
TTypes...- the element types of lhs tuple.
UTypes...- the element types of rhs tuple.

Compares lhs and rhs lexicographically.

Parameters
lhstuple to compare with rhs
rhstuple to compare with lhs
Returns
!(lhs < rhs)

◆ swap()

template<class... Types>
ROCPRIM_HOST_DEVICE void swap ( tuple< Types... > &  lhs,
tuple< Types... > &  rhs 
)
inlinenoexcept

Swaps the content of lhs tuple with the content rhs.

Parameters
lhs,rhstuples whose contents to swap

◆ tie()

template<class... Types>
ROCPRIM_HOST_DEVICE tuple<Types&...> tie ( Types &...  args)
inlinenoexcept

Creates a tuple of lvalue references to its arguments args or instances of rocprim::ignore.

Parameters
args- zero or more input lvalue references used to create tuple
See also
std::tie

Variable Documentation

◆ ignore

const ignore_type ignore

Assigning value to ignore object has no effect.

Intended for use with rocprim::tie when unpacking a tuple, as a placeholder for the arguments that are not used.

See also
std::ignore