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 }
SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char const char SDL_SCANF_FORMAT_STRING const char return SDL_ThreadFunction const char void return Uint32 return Uint32 void

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 }
void linkAndCopy(StructureChain const &rhs)
Definition: vulkan.hpp:565

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 }
void linkAndCopyElements(X const &xelem)
Definition: vulkan.hpp:583

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 }
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1574
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1574

◆ 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: