18 #include <type_traits>
23 inline namespace _V1 {
28 std::bitset<DataLessPropKind::DataLessPropKindSize> DataLessProps)
31 std::bitset<DataLessPropKind::DataLessPropKindSize> DataLessProps,
32 std::vector<std::shared_ptr<PropertyWithDataBase>> PropsWithData)
37 template <
typename... PropsT,
class PropT>
38 typename std::enable_if_t<std::is_base_of_v<DataLessPropertyBase, PropT>>
40 const int PropKind =
static_cast<int>(PropT::getKind());
45 template <
typename... PropsT,
class PropT>
46 typename std::enable_if_t<std::is_base_of_v<PropertyWithDataBase, PropT>>
53 template <
typename... PropsT,
class PropT>
54 typename std::enable_if_t<!std::is_base_of_v<PropertyWithDataBase, PropT> &&
55 !std::is_base_of_v<DataLessPropertyBase, PropT>>
60 template <
typename PropT>
61 typename std::enable_if_t<std::is_base_of_v<DataLessPropertyBase, PropT>,
64 const int PropKind =
static_cast<int>(PropT::getKind());
70 template <
typename PropT>
71 typename std::enable_if_t<std::is_base_of_v<PropertyWithDataBase, PropT>,
74 const int PropKind =
static_cast<int>(PropT::getKind());
75 for (
const std::shared_ptr<PropertyWithDataBase> &Prop :
MPropsWithData)
81 template <
typename PropT>
82 typename std::enable_if_t<std::is_base_of_v<DataLessPropertyBase, PropT>,
89 template <
typename PropT>
90 typename std::enable_if_t<std::is_base_of_v<PropertyWithDataBase, PropT>,
93 const int PropKind =
static_cast<int>(PropT::getKind());
95 throw sycl::invalid_object_error(
"The property is not found",
96 PI_ERROR_INVALID_VALUE);
98 for (
const std::shared_ptr<PropertyWithDataBase> &Prop :
MPropsWithData)
100 return *
static_cast<PropT *
>(Prop.get());
102 throw sycl::invalid_object_error(
"The property is not found",
103 PI_ERROR_INVALID_VALUE);
107 const std::vector<std::shared_ptr<PropertyWithDataBase>> &PropsWithData) {
108 for (
auto &Prop : PropsWithData) {
121 if ((*It)->isSame(Kind))
PropertyListBase(std::bitset< DataLessPropKind::DataLessPropKindSize > DataLessProps)
std::enable_if_t< std::is_base_of_v< PropertyWithDataBase, PropT >, PropT > get_property_helper() const
std::enable_if_t< std::is_base_of_v< DataLessPropertyBase, PropT >, PropT > get_property_helper() const
PropertyListBase(std::bitset< DataLessPropKind::DataLessPropKindSize > DataLessProps, std::vector< std::shared_ptr< PropertyWithDataBase >> PropsWithData)
std::enable_if_t< std::is_base_of_v< PropertyWithDataBase, PropT > > ctorHelper(PropT &Prop, PropsT... Props)
std::vector< std::shared_ptr< PropertyWithDataBase > > MPropsWithData
std::enable_if_t<!std::is_base_of_v< PropertyWithDataBase, PropT > &&!std::is_base_of_v< DataLessPropertyBase, PropT > > ctorHelper(PropT &, PropsT... Props)
void delete_accessor_property_helper(const PropWithDataKind &Kind)
std::enable_if_t< std::is_base_of_v< PropertyWithDataBase, PropT >, bool > has_property_helper() const noexcept
std::enable_if_t< std::is_base_of_v< DataLessPropertyBase, PropT >, bool > has_property_helper() const noexcept
std::enable_if_t< std::is_base_of_v< DataLessPropertyBase, PropT > > ctorHelper(PropT &, PropsT... Props)
void add_or_replace_accessor_properties_helper(const std::vector< std::shared_ptr< PropertyWithDataBase >> &PropsWithData)
std::bitset< DataLessPropKind::DataLessPropKindSize > MDataLessProps
@ LastKnownDataLessPropKind
_Abi const simd< _Tp, _Abi > & noexcept