template <size_t Index, typename T, typename... ChainElements>
struct StructureChainContains
{
- static const bool value =
- std::is_same<T, typename std::tuple_element<Index, std::tuple<ChainElements...>>::type>::value ||
- StructureChainContains<Index - 1, T, ChainElements...>::value;
+ static const bool value = std::is_same<T, typename std::tuple_element<Index, std::tuple<ChainElements...>>::type>::value ||
+ StructureChainContains<Index - 1, T, ChainElements...>::value;
};
template <typename T, typename... ChainElements>
struct StructureChainContains<0, T, ChainElements...>
{
- static const bool value =
- std::is_same<T, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value;
+ static const bool value = std::is_same<T, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value;
};
template <size_t Index, typename... ChainElements>
struct StructureChainValidation
{
- using TestType = typename std::tuple_element<Index, std::tuple<ChainElements...>>::type;
- static const bool valid =
- StructExtends<TestType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value &&
- ( TestType::allowDuplicate || !StructureChainContains<Index - 1, TestType, ChainElements...>::value ) &&
- StructureChainValidation<Index - 1, ChainElements...>::valid;
+ using TestType = typename std::tuple_element<Index, std::tuple<ChainElements...>>::type;
+ static const bool valid = StructExtends<TestType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value &&
+ ( TestType::allowDuplicate || !StructureChainContains<Index - 1, TestType, ChainElements...>::value ) &&
+ StructureChainValidation<Index - 1, ChainElements...>::valid;
};
template <typename... ChainElements>
public:
StructureChain() VULKAN_HPP_NOEXCEPT
{
- static_assert( StructureChainValidation<sizeof...( ChainElements ) - 1, ChainElements...>::valid,
- "The structure chain is not valid!" );
+ static_assert( StructureChainValidation<sizeof...( ChainElements ) - 1, ChainElements...>::valid, "The structure chain is not valid!" );
link<sizeof...( ChainElements ) - 1>();
}
StructureChain( StructureChain const & rhs ) VULKAN_HPP_NOEXCEPT : std::tuple<ChainElements...>( rhs )
{
- static_assert( StructureChainValidation<sizeof...( ChainElements ) - 1, ChainElements...>::valid,
- "The structure chain is not valid!" );
+ static_assert( StructureChainValidation<sizeof...( ChainElements ) - 1, ChainElements...>::valid, "The structure chain is not valid!" );
link( &std::get<0>( *this ),
&std::get<0>( rhs ),
reinterpret_cast<VkBaseOutStructure *>( &std::get<0>( *this ) ),
reinterpret_cast<VkBaseInStructure const *>( &std::get<0>( rhs ) ) );
}
- StructureChain( StructureChain && rhs ) VULKAN_HPP_NOEXCEPT
- : std::tuple<ChainElements...>( std::forward<std::tuple<ChainElements...>>( rhs ) )
+ StructureChain( StructureChain && rhs ) VULKAN_HPP_NOEXCEPT : std::tuple<ChainElements...>( std::forward<std::tuple<ChainElements...>>( rhs ) )
{
- static_assert( StructureChainValidation<sizeof...( ChainElements ) - 1, ChainElements...>::valid,
- "The structure chain is not valid!" );
+ static_assert( StructureChainValidation<sizeof...( ChainElements ) - 1, ChainElements...>::valid, "The structure chain is not valid!" );
link( &std::get<0>( *this ),
&std::get<0>( rhs ),
reinterpret_cast<VkBaseOutStructure *>( &std::get<0>( *this ) ),
StructureChain( ChainElements const &... elems ) VULKAN_HPP_NOEXCEPT : std::tuple<ChainElements...>( elems... )
{
- static_assert( StructureChainValidation<sizeof...( ChainElements ) - 1, ChainElements...>::valid,
- "The structure chain is not valid!" );
+ static_assert( StructureChainValidation<sizeof...( ChainElements ) - 1, ChainElements...>::valid, "The structure chain is not valid!" );
link<sizeof...( ChainElements ) - 1>();
}
template <typename T = typename std::tuple_element<0, std::tuple<ChainElements...>>::type, size_t Which = 0>
T & get() VULKAN_HPP_NOEXCEPT
{
- return std::get<ChainElementIndex<0, T, Which, void, ChainElements...>::value>(
- static_cast<std::tuple<ChainElements...> &>( *this ) );
+ return std::get<ChainElementIndex<0, T, Which, void, ChainElements...>::value>( static_cast<std::tuple<ChainElements...> &>( *this ) );
}
template <typename T = typename std::tuple_element<0, std::tuple<ChainElements...>>::type, size_t Which = 0>
T const & get() const VULKAN_HPP_NOEXCEPT
{
- return std::get<ChainElementIndex<0, T, Which, void, ChainElements...>::value>(
- static_cast<std::tuple<ChainElements...> const &>( *this ) );
+ return std::get<ChainElementIndex<0, T, Which, void, ChainElements...>::value>( static_cast<std::tuple<ChainElements...> const &>( *this ) );
}
template <typename T0, typename T1, typename... Ts>
void * pNext = lhs.pNext;
lhs = rhs;
lhs.pNext = pNext;
- return *this;
+ return *this;
}
template <typename ClassType, size_t Which = 0>
- typename std::enable_if<
- std::is_same<ClassType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value &&
- ( Which == 0 ),
- bool>::type
+ typename std::enable_if<std::is_same<ClassType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value && ( Which == 0 ), bool>::type
isLinked() const VULKAN_HPP_NOEXCEPT
{
return true;
}
template <typename ClassType, size_t Which = 0>
- typename std::enable_if<
- !std::is_same<ClassType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value ||
- ( Which != 0 ),
- bool>::type
+ typename std::enable_if<!std::is_same<ClassType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value || ( Which != 0 ), bool>::type
isLinked() const VULKAN_HPP_NOEXCEPT
{
- static_assert( IsPartOfStructureChain<ClassType, ChainElements...>::valid,
- "Can't unlink Structure that's not part of this StructureChain!" );
+ static_assert( IsPartOfStructureChain<ClassType, ChainElements...>::valid, "Can't unlink Structure that's not part of this StructureChain!" );
return isLinked( reinterpret_cast<VkBaseInStructure const *>( &get<ClassType, Which>() ) );
}
template <typename ClassType, size_t Which = 0>
- typename std::enable_if<
- !std::is_same<ClassType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value ||
- ( Which != 0 ),
- void>::type relink() VULKAN_HPP_NOEXCEPT
+ typename std::enable_if<!std::is_same<ClassType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value || ( Which != 0 ), void>::type
+ relink() VULKAN_HPP_NOEXCEPT
{
- static_assert( IsPartOfStructureChain<ClassType, ChainElements...>::valid,
- "Can't relink Structure that's not part of this StructureChain!" );
+ static_assert( IsPartOfStructureChain<ClassType, ChainElements...>::valid, "Can't relink Structure that's not part of this StructureChain!" );
auto pNext = reinterpret_cast<VkBaseInStructure *>( &get<ClassType, Which>() );
VULKAN_HPP_ASSERT( !isLinked( pNext ) );
auto & headElement = std::get<0>( static_cast<std::tuple<ChainElements...> &>( *this ) );
}
template <typename ClassType, size_t Which = 0>
- typename std::enable_if<
- !std::is_same<ClassType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value ||
- ( Which != 0 ),
- void>::type unlink() VULKAN_HPP_NOEXCEPT
+ typename std::enable_if<!std::is_same<ClassType, typename std::tuple_element<0, std::tuple<ChainElements...>>::type>::value || ( Which != 0 ), void>::type
+ unlink() VULKAN_HPP_NOEXCEPT
{
- static_assert( IsPartOfStructureChain<ClassType, ChainElements...>::valid,
- "Can't unlink Structure that's not part of this StructureChain!" );
+ static_assert( IsPartOfStructureChain<ClassType, ChainElements...>::valid, "Can't unlink Structure that's not part of this StructureChain!" );
unlink( reinterpret_cast<VkBaseOutStructure const *>( &get<ClassType, Which>() ) );
}
private:
template <int Index, typename T, int Which, typename, class First, class... Types>
struct ChainElementIndex : ChainElementIndex<Index + 1, T, Which, void, Types...>
- {};
+ {
+ };
template <int Index, typename T, int Which, class First, class... Types>
- struct ChainElementIndex<Index,
- T,
- Which,
- typename std::enable_if<!std::is_same<T, First>::value, void>::type,
- First,
- Types...> : ChainElementIndex<Index + 1, T, Which, void, Types...>
- {};
+ struct ChainElementIndex<Index, T, Which, typename std::enable_if<!std::is_same<T, First>::value, void>::type, First, Types...>
+ : ChainElementIndex<Index + 1, T, Which, void, Types...>
+ {
+ };
template <int Index, typename T, int Which, class First, class... Types>
- struct ChainElementIndex<Index,
- T,
- Which,
- typename std::enable_if<std::is_same<T, First>::value, void>::type,
- First,
- Types...> : ChainElementIndex<Index + 1, T, Which - 1, void, Types...>
- {};
+ struct ChainElementIndex<Index, T, Which, typename std::enable_if<std::is_same<T, First>::value, void>::type, First, Types...>
+ : ChainElementIndex<Index + 1, T, Which - 1, void, Types...>
+ {
+ };
template <int Index, typename T, class First, class... Types>
- struct ChainElementIndex<Index,
- T,
- 0,
- typename std::enable_if<std::is_same<T, First>::value, void>::type,
- First,
- Types...> : std::integral_constant<int, Index>
- {};
+ struct ChainElementIndex<Index, T, 0, typename std::enable_if<std::is_same<T, First>::value, void>::type, First, Types...>
+ : std::integral_constant<int, Index>
+ {
+ };
bool isLinked( VkBaseInStructure const * pNext ) const VULKAN_HPP_NOEXCEPT
{
- VkBaseInStructure const * elementPtr = reinterpret_cast<VkBaseInStructure const *>(
- &std::get<0>( static_cast<std::tuple<ChainElements...> const &>( *this ) ) );
+ VkBaseInStructure const * elementPtr =
+ reinterpret_cast<VkBaseInStructure const *>( &std::get<0>( static_cast<std::tuple<ChainElements...> const &>( *this ) ) );
while ( elementPtr )
{
if ( elementPtr->pNext == pNext )
template <size_t Index>
typename std::enable_if<Index == 0, void>::type link() VULKAN_HPP_NOEXCEPT
- {}
+ {
+ }
void link( void * dstBase, void const * srcBase, VkBaseOutStructure * dst, VkBaseInStructure const * src )
{
while ( src->pNext )
{
- std::ptrdiff_t offset =
- reinterpret_cast<char const *>( src->pNext ) - reinterpret_cast<char const *>( srcBase );
- dst->pNext = reinterpret_cast<VkBaseOutStructure *>( reinterpret_cast<char *>( dstBase ) + offset );
- dst = dst->pNext;
- src = src->pNext;
+ std::ptrdiff_t offset = reinterpret_cast<char const *>( src->pNext ) - reinterpret_cast<char const *>( srcBase );
+ dst->pNext = reinterpret_cast<VkBaseOutStructure *>( reinterpret_cast<char *>( dstBase ) + offset );
+ dst = dst->pNext;
+ src = src->pNext;
}
dst->pNext = nullptr;
}
void unlink( VkBaseOutStructure const * pNext ) VULKAN_HPP_NOEXCEPT
{
- VkBaseOutStructure * elementPtr =
- reinterpret_cast<VkBaseOutStructure *>( &std::get<0>( static_cast<std::tuple<ChainElements...> &>( *this ) ) );
+ VkBaseOutStructure * elementPtr = reinterpret_cast<VkBaseOutStructure *>( &std::get<0>( static_cast<std::tuple<ChainElements...> &>( *this ) ) );
while ( elementPtr && ( elementPtr->pNext != pNext ) )
{
elementPtr = elementPtr->pNext;