SDL  2.0
VULKAN_HPP_NAMESPACE::StructureChain< StructureElements > Class Template Reference

#include <vulkan.hpp>

+ Inheritance diagram for VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >:
+ Collaboration diagram for VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >:

Public Member Functions

 StructureChain ()
 
 StructureChain (StructureChain const &rhs)
 
 StructureChain (StructureElements const &... elems)
 
StructureChainoperator= (StructureChain const &rhs)
 
template<typename ClassType >
ClassType & get ()
 

Private Member Functions

template<typename List , typename X >
void link ()
 
template<typename List , typename X , typename Y , typename ... Z>
void link ()
 
template<typename List , typename X >
void linkAndCopy (StructureChain const &rhs)
 
template<typename List , typename X , typename Y , typename ... Z>
void linkAndCopy (StructureChain const &rhs)
 
template<typename List , typename X >
void linkAndCopyElements (X const &xelem)
 
template<typename List , typename X , typename Y , typename ... Z>
void linkAndCopyElements (X const &xelem, Y const &yelem, Z const &... zelem)
 
- Private Member Functions inherited from VULKAN_HPP_NAMESPACE::StructureChainElement< StructureElements >
 operator StructureElements & ()
 
 operator const StructureElements & () const
 

Detailed Description

template<typename ... StructureElements>
class VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >

Definition at line 521 of file vulkan.hpp.

Constructor & Destructor Documentation

◆ StructureChain() [1/3]

template<typename ... StructureElements>
VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::StructureChain ( )
inline

Definition at line 524 of file vulkan.hpp.

525  {
526  link<void, StructureElements...>();
527  }

References VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::link(), and void.

◆ StructureChain() [2/3]

template<typename ... StructureElements>
VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::StructureChain ( StructureChain< StructureElements > const &  rhs)
inline

Definition at line 529 of file vulkan.hpp.

530  {
531  linkAndCopy<void, StructureElements...>(rhs);
532  }

References VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::linkAndCopy(), and void.

◆ StructureChain() [3/3]

template<typename ... StructureElements>
VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::StructureChain ( StructureElements const &...  elems)
inline

Definition at line 534 of file vulkan.hpp.

535  {
536  linkAndCopyElements<void, StructureElements...>(elems...);
537  }

References VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::linkAndCopyElements(), and void.

Member Function Documentation

◆ get()

template<typename ... StructureElements>
template<typename ClassType >
ClassType& VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::get ( )
inline

Definition at line 545 of file vulkan.hpp.

545 { return static_cast<ClassType&>(*this);}

◆ link() [1/2]

template<typename ... StructureElements>
template<typename List , typename X >
void VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::link ( )
inlineprivate

Definition at line 549 of file vulkan.hpp.

550  {
551  static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
552  }

Referenced by VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::StructureChain().

◆ link() [2/2]

template<typename ... StructureElements>
template<typename List , typename X , typename Y , typename ... Z>
void VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::link ( )
inlineprivate

Definition at line 555 of file vulkan.hpp.

556  {
557  static_assert(extendCheck<List,X>::valid, "The structure chain is not valid!");
558  X& x = static_cast<X&>(*this);
559  Y& y = static_cast<Y&>(*this);
560  x.pNext = &y;
561  link<TypeList<List, X>, Y, Z...>();
562  }

◆ linkAndCopy() [1/2]

template<typename ... StructureElements>
template<typename List , typename X >
void VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::linkAndCopy ( StructureChain< StructureElements > const &  rhs)
inlineprivate

Definition at line 565 of file vulkan.hpp.

566  {
567  static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
568  static_cast<X&>(*this) = static_cast<X const &>(rhs);
569  }

Referenced by VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::operator=(), and VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::StructureChain().

◆ linkAndCopy() [2/2]

template<typename ... StructureElements>
template<typename List , typename X , typename Y , typename ... Z>
void VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::linkAndCopy ( StructureChain< StructureElements > const &  rhs)
inlineprivate

Definition at line 572 of file vulkan.hpp.

573  {
574  static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
575  X& x = static_cast<X&>(*this);
576  Y& y = static_cast<Y&>(*this);
577  x = static_cast<X const &>(rhs);
578  x.pNext = &y;
579  linkAndCopy<TypeList<List, X>, Y, Z...>(rhs);
580  }

◆ linkAndCopyElements() [1/2]

template<typename ... StructureElements>
template<typename List , typename X >
void VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::linkAndCopyElements ( X const &  xelem)
inlineprivate

Definition at line 583 of file vulkan.hpp.

584  {
585  static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
586  static_cast<X&>(*this) = xelem;
587  }

Referenced by VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::StructureChain().

◆ linkAndCopyElements() [2/2]

template<typename ... StructureElements>
template<typename List , typename X , typename Y , typename ... Z>
void VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::linkAndCopyElements ( X const &  xelem,
Y const &  yelem,
Z const &...  zelem 
)
inlineprivate

Definition at line 590 of file vulkan.hpp.

591  {
592  static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
593  X& x = static_cast<X&>(*this);
594  Y& y = static_cast<Y&>(*this);
595  x = xelem;
596  x.pNext = &y;
597  linkAndCopyElements<TypeList<List, X>, Y, Z...>(yelem, zelem...);
598  }

◆ operator=()

template<typename ... StructureElements>
StructureChain& VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::operator= ( StructureChain< StructureElements > const &  rhs)
inline

Definition at line 539 of file vulkan.hpp.

540  {
541  linkAndCopy<void, StructureElements...>(rhs);
542  return *this;
543  }

References VULKAN_HPP_NAMESPACE::StructureChain< StructureElements >::linkAndCopy(), and void.


The documentation for this class was generated from the following file:
VULKAN_HPP_NAMESPACE::StructureChain::link
void link()
Definition: vulkan.hpp:549
x
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1573
VULKAN_HPP_NAMESPACE::extendCheck::valid
static const bool valid
Definition: vulkan.hpp:495
y
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1573
VULKAN_HPP_NAMESPACE::StructureChain::linkAndCopyElements
void linkAndCopyElements(X const &xelem)
Definition: vulkan.hpp:583
void
const SDL_PRINTF_FORMAT_STRING char int const SDL_PRINTF_FORMAT_STRING char int const SDL_PRINTF_FORMAT_STRING char int const SDL_PRINTF_FORMAT_STRING char const char const SDL_SCANF_FORMAT_STRING char return SDL_ThreadFunction const char void return Uint32 return Uint32 void
Definition: SDL_dynapi_procs.h:89
VULKAN_HPP_NAMESPACE::StructureChain::linkAndCopy
void linkAndCopy(StructureChain const &rhs)
Definition: vulkan.hpp:565