DPC++ Runtime
Runtime libraries for oneAPI DPC++
annotated_ptr.hpp File Reference
Include dependency graph for annotated_ptr.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  sycl::_V1::ext::oneapi::experimental::annotated_ref< T, PropertyListT >
 
struct  sycl::_V1::ext::oneapi::experimental::detail::is_ann_ref_impl< T >
 
struct  sycl::_V1::ext::oneapi::experimental::detail::is_ann_ref_impl< annotated_ref< T, P > >
 
struct  sycl::_V1::ext::oneapi::experimental::detail::is_ann_ref_impl< const annotated_ref< T, P > >
 
struct  sycl::_V1::ext::oneapi::experimental::annotationHelper< I, P >
 
struct  sycl::_V1::ext::oneapi::experimental::annotationHelper< I, detail::properties_t< P... > >
 
class  sycl::_V1::ext::oneapi::experimental::annotated_ref< T, detail::properties_t< Props... > >
 
class  sycl::_V1::ext::oneapi::experimental::annotated_ptr< T, PropertyListT >
 

Namespaces

 sycl
 
 sycl::_V1
 
 sycl::_V1::ext
 
 sycl::_V1::ext::oneapi
 
 sycl::_V1::ext::oneapi::experimental
 
 sycl::_V1::ext::oneapi::experimental::detail
 

Macros

#define PROPAGATE_OP(op)
 
#define PROPAGATE_OP(op)
 
#define PROPAGATE_OP(op)
 

Typedefs

template<typename... Ts>
using sycl::_V1::ext::oneapi::experimental::detail::contains_alignment = detail::ContainsProperty< alignment_key, std::tuple< Ts... > >
 
template<typename property_list , template< class... > typename filter>
using sycl::_V1::ext::oneapi::experimental::detail::PropertiesFilter = sycl::detail::boost::mp11::mp_copy_if< property_list, filter >
 
template<typename... Props>
using sycl::_V1::ext::oneapi::experimental::detail::annotation_filter = properties< PropertiesFilter< std::tuple< Props... >, propagateToPtrAnnotation > >
 
using sycl::_V1::ext::oneapi::experimental::property_list_t = detail::properties_t< Props... >
 
using sycl::_V1::ext::oneapi::experimental::reference = sycl::ext::oneapi::experimental::annotated_ref< T, property_list_t >
 

Functions

template<typename T , typename... Props>
class __SYCL_SPECIAL_CLASS sycl::_V1::ext::oneapi::experimental::__SYCL_TYPE (annotated_ptr) annotated_ptr< T
 
 sycl::_V1::ext::oneapi::experimental::annotated_ptr (const annotated_ptr &)=default
 
annotated_ptr & sycl::_V1::ext::oneapi::experimental::operator= (const annotated_ptr &)=default
 
 sycl::_V1::ext::oneapi::experimental::annotated_ptr (T *Ptr, const property_list_t &=properties{}) noexcept
 
template<typename... PropertyValueTs>
 sycl::_V1::ext::oneapi::experimental::annotated_ptr (T *Ptr, const PropertyValueTs &...props) noexcept
 
template<typename T2 , typename PropertyList2 >
 sycl::_V1::ext::oneapi::experimental::annotated_ptr (const annotated_ptr< T2, PropertyList2 > &other) noexcept
 
template<typename T2 , typename PropertyListU , typename PropertyListV >
 sycl::_V1::ext::oneapi::experimental::annotated_ptr (const annotated_ptr< T2, PropertyListU > &other, const PropertyListV &) noexcept
 
reference sycl::_V1::ext::oneapi::experimental::operator* () const noexcept
 
std::ptrdiff_t sycl::_V1::ext::oneapi::experimental::operator- (annotated_ptr other) const noexcept
 
 sycl::_V1::ext::oneapi::experimental::operator bool () const noexcept
 
 sycl::_V1::ext::oneapi::experimental::operator T* () noexcept
 
T * sycl::_V1::ext::oneapi::experimental::get () const noexcept
 
T & sycl::_V1::ext::oneapi::experimental::operator[] (std::ptrdiff_t idx) const noexcept
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<!has_alignment>>
annotated_ptr sycl::_V1::ext::oneapi::experimental::operator+ (size_t offset) const noexcept
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<has_alignment>>
auto sycl::_V1::ext::oneapi::experimental::operator+ (size_t offset) const noexcept -> decltype("operator+ is not available when alignment is specified!")=delete
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<!has_alignment>>
annotated_ptr & sycl::_V1::ext::oneapi::experimental::operator++ () noexcept
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<has_alignment>>
auto sycl::_V1::ext::oneapi::experimental::operator++ () noexcept -> decltype("operator++ is not available when alignment is specified!")=delete
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<!has_alignment>>
annotated_ptr sycl::_V1::ext::oneapi::experimental::operator++ (int) noexcept
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<has_alignment>>
auto sycl::_V1::ext::oneapi::experimental::operator++ (int) noexcept -> decltype("operator++ is not available when alignment is specified!")=delete
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<!has_alignment>>
annotated_ptr & sycl::_V1::ext::oneapi::experimental::operator-- () noexcept
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<has_alignment>>
auto sycl::_V1::ext::oneapi::experimental::operator-- () noexcept -> decltype("operator-- is not available when alignment is specified!")=delete
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<!has_alignment>>
annotated_ptr sycl::_V1::ext::oneapi::experimental::operator-- (int) noexcept
 
template<bool has_alignment = detail::contains_alignment<Props...>::value, class = std::enable_if_t<has_alignment>>
auto sycl::_V1::ext::oneapi::experimental::operator-- (int) noexcept -> decltype("operator-- is not available when alignment is specified!")=delete
 
template<typename PropertyT >
static constexpr bool sycl::_V1::ext::oneapi::experimental::has_property ()
 
template<typename PropertyT >
static constexpr auto sycl::_V1::ext::oneapi::experimental::get_property ()
 

Variables

template<class T >
constexpr bool sycl::_V1::ext::oneapi::experimental::detail::is_ann_ref_v
 
T * sycl::_V1::ext::oneapi::experimental::m_Ptr
 
static constexpr bool sycl::_V1::ext::oneapi::experimental::is_valid_property_list
 
static constexpr bool sycl::_V1::ext::oneapi::experimental::contains_valid_properties
 
static constexpr bool sycl::_V1::ext::oneapi::experimental::hasValidFPGAProperties
 
static constexpr bool sycl::_V1::ext::oneapi::experimental::hasConduitAndRegisterMapProperties
 

Macro Definition Documentation

◆ PROPAGATE_OP [1/3]

#define PROPAGATE_OP (   op)
Value:
template <class O, typename = std::enable_if_t<!detail::is_ann_ref_v<O>>> \
T operator op(O &&rhs) const { \
T t = this->operator T(); \
t op std::forward<O>(rhs); \
*this = t; \
return t; \
} \
template <class O, class P> \
T operator op(const annotated_ref<O, P> &rhs) const { \
T t = this->operator T(); \
O t2 = rhs.operator T(); \
t op t2; \
*this = t; \
return t; \
}

Definition at line 197 of file annotated_ptr.hpp.

◆ PROPAGATE_OP [2/3]

#define PROPAGATE_OP (   op)
Value:
template <class O> \
friend auto operator op(O &&a, const annotated_ref &b) \
->decltype(std::forward<O>(a) op std::declval<T>()) { \
return std::forward<O>(a) op b.operator T(); \
} \
template <class O, typename = std::enable_if_t<!detail::is_ann_ref_v<O>>> \
friend auto operator op(const annotated_ref &a, O &&b) \
->decltype(std::declval<T>() op std::forward<O>(b)) { \
return a.operator T() op std::forward<O>(b); \
}
auto autodecltype(a) b

Definition at line 197 of file annotated_ptr.hpp.

◆ PROPAGATE_OP [3/3]

#define PROPAGATE_OP (   op)
Value:
template <typename O = T> \
auto operator op() const->decltype(op std::declval<O>()) { \
return op this->operator O(); \
}

Definition at line 197 of file annotated_ptr.hpp.