struct tagged_ptr_pair

Declaration

template <class Left, class Right>
struct tagged_ptr_pair { /* full declaration omitted */ };

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:64

Member Variables

public static const std::size_t left_tag_index = 3
public static const std::size_t right_tag_index = 7
public static const pika::concurrency::detail::tagged_ptr_pair:: compressed_ptr_t ptr_mask = 281474976710655L

Method Overview

  • public static Left * extract_left_ptr(const volatile pika::concurrency::detail::tagged_ptr_pair::compressed_ptr_pair_t & i)
  • public static pika::concurrency::detail::tagged_ptr_pair::tag_t extract_left_tag(const volatile pika::concurrency::detail::tagged_ptr_pair::compressed_ptr_pair_t & i)
  • public static Right * extract_right_ptr(const volatile pika::concurrency::detail::tagged_ptr_pair::compressed_ptr_pair_t & i)
  • public static pika::concurrency::detail::tagged_ptr_pair::tag_t extract_right_tag(const volatile pika::concurrency::detail::tagged_ptr_pair::compressed_ptr_pair_t & i)
  • public Left * get_left_ptr() const volatile
  • public pika::concurrency::detail::tagged_ptr_pair::tag_t get_left_tag() const volatile
  • public Right * get_right_ptr() const volatile
  • public pika::concurrency::detail::tagged_ptr_pair::tag_t get_right_tag() const volatile
  • public bool operator bool() const
  • public template <typename IntegralL, typename IntegralR>static void pack_ptr_pair(pika::concurrency::detail::tagged_ptr_pair::compressed_ptr_pair_t & pair, Left * lptr, Right * rptr, IntegralL ltag, IntegralR rtag)
  • public template <typename IntegralL, typename IntegralR>void reset(Left * lptr, Right * rptr, IntegralL ltag, IntegralR rtag)
  • public template <typename IntegralL>void reset(Left * lptr, Right * rptr, IntegralL ltag)
  • public void reset(Left * lptr, Right * rptr)
  • public void set(Left * lptr, Right * rptr)
  • public template <typename IntegralL, typename IntegralR>void set(Left * lptr, Right * rptr, IntegralL ltag, IntegralR rtag)
  • public template <typename IntegralL>void set(Left * lptr, Right * rptr, IntegralL ltag)
  • public void set_left_ptr(Left * lptr) volatile
  • public template <typename Integral>void set_left_tag(Integral ltag) volatile
  • public void set_right_ptr(Right * rptr) volatile
  • public template <typename Integral>void set_right_tag(Integral rtag) volatile
  • public template <typename IntegralL, typename IntegralR> tagged_ptr_pair<Left, Right>(Left * lptr, Right * rptr, IntegralL ltag, IntegralR rtag)
  • public template <typename IntegralL> tagged_ptr_pair<Left, Right>(Left * lptr, Right * rptr, IntegralL ltag)
  • public tagged_ptr_pair<Left, Right>(Left * lptr, Right * rptr)
  • public tagged_ptr_pair<Left, Right>(const tagged_ptr_pair<Left, Right> & p)
  • public tagged_ptr_pair<Left, Right>() noexcept

Methods

static Left* extract_left_ptr(
    const volatile pika::concurrency::detail::
        tagged_ptr_pair::compressed_ptr_pair_t& i)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:80

Parameters

const volatile pika::concurrency::detail:: tagged_ptr_pair::compressed_ptr_pair_t& i

static pika::concurrency::detail::
    tagged_ptr_pair::tag_t
    extract_left_tag(
        const volatile pika::concurrency::detail::
            tagged_ptr_pair::
                compressed_ptr_pair_t& i)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:90

Parameters

const volatile pika::concurrency::detail:: tagged_ptr_pair::compressed_ptr_pair_t& i

static Right* extract_right_ptr(
    const volatile pika::concurrency::detail::
        tagged_ptr_pair::compressed_ptr_pair_t& i)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:85

Parameters

const volatile pika::concurrency::detail:: tagged_ptr_pair::compressed_ptr_pair_t& i

static pika::concurrency::detail::
    tagged_ptr_pair::tag_t
    extract_right_tag(
        const volatile pika::concurrency::detail::
            tagged_ptr_pair::
                compressed_ptr_pair_t& i)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:98

Parameters

const volatile pika::concurrency::detail:: tagged_ptr_pair::compressed_ptr_pair_t& i

Left* get_left_ptr() const volatile

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:199

pika::concurrency::detail::tagged_ptr_pair::tag_t
get_left_tag() const volatile

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:228

Right* get_right_ptr() const volatile

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:204

pika::concurrency::detail::tagged_ptr_pair::tag_t
get_right_tag() const volatile

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:233

bool operator bool() const

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:259

template <typename IntegralL, typename IntegralR>
static void pack_ptr_pair(
    pika::concurrency::detail::tagged_ptr_pair::
        compressed_ptr_pair_t& pair,
    Left* lptr,
    Right* rptr,
    IntegralL ltag,
    IntegralR rtag)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:107

Parameters

pika::concurrency::detail::tagged_ptr_pair:: compressed_ptr_pair_t& pair
Left* lptr
Right* rptr
IntegralL ltag
IntegralR rtag

template <typename IntegralL, typename IntegralR>
void reset(Left* lptr,
           Right* rptr,
           IntegralL ltag,
           IntegralR rtag)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:178

Parameters

Left* lptr
Right* rptr
IntegralL ltag
IntegralR rtag

template <typename IntegralL>
void reset(Left* lptr,
           Right* rptr,
           IntegralL ltag)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:172

Parameters

Left* lptr
Right* rptr
IntegralL ltag

void reset(Left* lptr, Right* rptr)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:154

Parameters

Left* lptr
Right* rptr

void set(Left* lptr, Right* rptr)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:149

Parameters

Left* lptr
Right* rptr

template <typename IntegralL, typename IntegralR>
void set(Left* lptr,
         Right* rptr,
         IntegralL ltag,
         IntegralR rtag)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:166

Parameters

Left* lptr
Right* rptr
IntegralL ltag
IntegralR rtag

template <typename IntegralL>
void set(Left* lptr, Right* rptr, IntegralL ltag)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:160

Parameters

Left* lptr
Right* rptr
IntegralL ltag

void set_left_ptr(Left* lptr) volatile

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:209

Parameters

Left* lptr

template <typename Integral>
void set_left_tag(Integral ltag) volatile

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:239

Parameters

Integral ltag

void set_right_ptr(Right* rptr) volatile

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:217

Parameters

Right* rptr

template <typename Integral>
void set_right_tag(Integral rtag) volatile

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:248

Parameters

Integral rtag

template <typename IntegralL, typename IntegralR>
tagged_ptr_pair<Left, Right>(Left* lptr,
                             Right* rptr,
                             IntegralL ltag,
                             IntegralR rtag)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:132

Parameters

Left* lptr
Right* rptr
IntegralL ltag
IntegralR rtag

template <typename IntegralL>
tagged_ptr_pair<Left, Right>(Left* lptr,
                             Right* rptr,
                             IntegralL ltag)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:126

Parameters

Left* lptr
Right* rptr
IntegralL ltag

tagged_ptr_pair<Left, Right>(Left* lptr,
                             Right* rptr)

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:140

Parameters

Left* lptr
Right* rptr

tagged_ptr_pair<Left, Right>(
    const tagged_ptr_pair<Left, Right>& p)

Description

copy constructors

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:138

Parameters

const tagged_ptr_pair<Left, Right>& p

tagged_ptr_pair<Left, Right>() noexcept

Description

uninitialized constructor

Declared at: libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:119