GLSL Struct 1.4.0
glslstruct
Loading...
Searching...
No Matches
glslstruct::base_layout< Traits > Class Template Reference

base layout container More...

#include <base_layout.hpp>

Inheritance diagram for glslstruct::base_layout< Traits >:
[legend]
Collaboration diagram for glslstruct::base_layout< Traits >:
[legend]

Public Types

using traits_type = Traits
 traits type

Public Member Functions

_GLSL_STRUCT_CONSTEXPR17 base_layout () noexcept _GLSL_STRUCT_REQUIRES(!has_context||(has_context &&std
 default constructor without providing context
template<class... Ts, size_t... Nums>
_GLSL_STRUCT_CONSTEXPR17 base_layout (const glsl_variable< Ts, Nums > &... vars) noexcept _GLSL_STRUCT_REQUIRES(!has_context||(has_context &&std
 constructor for multiple variables
_GLSL_STRUCT_CONSTEXPR17 base_layout (const _GLSL_STRUCT_TYPENAME17 base_struct::context_type &ctx) noexcept _GLSL_STRUCT_REQUIRES(has_context)
 constructor with provided context
template<class... Ts, size_t... Nums>
_GLSL_STRUCT_CONSTEXPR17 base_layout (const glsl_variable< Ts, Nums > &... vars, const _GLSL_STRUCT_TYPENAME17 base_struct::context_type &ctx) noexcept _GLSL_STRUCT_REQUIRES(has_context)
 constructor for multiple variables and with provided context
_GLSL_STRUCT_CONSTEXPR17 base_layout (const base_layout &other) noexcept=default
 default copy constructor
_GLSL_STRUCT_CONSTEXPR17 base_layout (base_layout &&other) noexcept=default
 default move constructor
_GLSL_STRUCT_CONSTEXPR20 ~base_layout () noexcept=default
 default destructor
_GLSL_STRUCT_CONSTEXPR17 base_layoutoperator= (const base_layout &other) noexcept=default
 default copy assign operator
_GLSL_STRUCT_CONSTEXPR17 base_layoutoperator= (base_layout &&other) noexcept=default
 default move assign operator
_GLSL_STRUCT_CONSTEXPR17 bool contains (const std::string_view name) const noexcept
 returns true if layout contains variable with given name
_GLSL_STRUCT_CONSTEXPR17 const var_dataget (const std::string_view name) const noexcept
 returns variable data
_GLSL_STRUCT_CONSTEXPR17 size_t get_array_count (const std::string_view name) const noexcept
 returns array count (if single value then returns 1 else if value doesn't exist returns 0 else array count)
_GLSL_STRUCT_CONSTEXPR17 size_t get_array_elem_size (const std::string_view name) const noexcept
 returns elem size of array
_GLSL_STRUCT_CONSTEXPR17 size_t get_offset (const std::string_view name) const noexcept
 returns offset of variable with given name
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > get_array_offsets (const std::string_view name) const noexcept
 returns offsets of array elements
_GLSL_STRUCT_CONSTEXPR17 const base_type_handleget_type (const std::string_view name) const noexcept
 returns type of variable
template<utils::glsl_type Type>
_GLSL_STRUCT_CONSTEXPR17 std::shared_ptr< Type > get_type (const std::string_view name) const noexcept
 returns type of variable with casting to given type (dynamic casting occurs)
_GLSL_STRUCT_CONSTEXPR17 size_t get_total_size (const std::string_view name) const noexcept
 returns total size of variable (size + padding)
_GLSL_STRUCT_CONSTEXPR17 size_t get_size (const std::string_view name) const noexcept
 returns size of variable
_GLSL_STRUCT_CONSTEXPR17 size_t get_padding (const std::string_view name) const noexcept
 returns padding of variable
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::string > get_names () const noexcept
 returns all variables names
_GLSL_STRUCT_CONSTEXPR20 const mstd::ordered_map< std::string, var_data > & get_variables () const noexcept
 returns all variables and their data
mstd::ordered_map< std::string, var_dataget_top_level_variables () const noexcept
 returns all top level variables and their data
_GLSL_STRUCT_CONSTEXPR17 size_t base_alignment () const noexcept
 returns base alignment of layout
_GLSL_STRUCT_CONSTEXPR17 size_t size () const noexcept
 returns size of layout
_GLSL_STRUCT_CONSTEXPR17 void clear () noexcept
 clears layout and all variables
template<utils::glsl_scalar S>
_GLSL_STRUCT_CONSTEXPR17 size_t add (const std::string_view name)
 adds scalar
template<utils::glsl_scalar S>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > add (const std::string_view name, const size_t count)
 adds array of scalars
template<utils::glsl_scalars_array SA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > add (const std::string_view name, const size_t count)
 adds array of scalars
template<utils::glsl_scalars_static_size_array SA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > add (const std::string_view name)
 adds array of scalars
template<utils::glsl_vec V>
_GLSL_STRUCT_CONSTEXPR17 size_t add (const std::string_view name)
 adds vec
template<utils::glsl_vec V>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > add (const std::string_view name, const size_t count)
 adds array of vecs
template<utils::glsl_vecs_array VA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > add (const std::string_view name, const size_t count)
 adds array of vecs
template<utils::glsl_vecs_static_size_array VA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > add (const std::string_view name)
 adds array of vecs
template<utils::glsl_mat M>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > add (const std::string_view name)
 adds mat
template<utils::glsl_mat M>
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::vector< size_t > > add (const std::string_view name, const size_t count)
 adds array of mats
template<utils::glsl_mats_array MA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::vector< size_t > > add (const std::string_view name, const size_t count)
 adds array of mats
template<utils::glsl_mats_static_size_array MA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::vector< size_t > > add (const std::string_view name)
 adds array of mats
_GLSL_STRUCT_CONSTEXPR17 size_t add (const std::string_view name, const base_layout &layout)
 adds struct with given layout
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > add (const std::string_view name, const base_layout &layout, const size_t count)
 adds array of structs with given layout
_GLSL_STRUCT_CONSTEXPR17 bool operator== (const base_layout &other) const noexcept
 checks equality of layouts
_GLSL_STRUCT_CONSTEXPR17 bool operator!= (const base_layout &other) const noexcept=default
 default not equal operator

Static Public Member Functions

static _GLSL_STRUCT_CONSTEXPR17 size_t bad_offset () noexcept
 value indicating error while returning offset

Static Public Attributes

static _GLSL_STRUCT_CONSTEXPR17 bool has_context = utils::has_layout_traits_context_v<traits_type>
 value indicating if traits has context defined

Private Types

using base_struct
 base layout struct

Private Member Functions

_GLSL_STRUCT_CONSTEXPR17 var_data_set_variable (const std::string_view name, const size_t offset, const base_type_handle &type, const bool isTopLevel, const size_t padding=0)
 sets variable data
_GLSL_STRUCT_CONSTEXPR17 var_data_add_variable (const std::string_view name, const size_t alignmentOffset, const bool isTopLevel, const base_type_handle &type)
 sets variable data
_GLSL_STRUCT_CONSTEXPR17 var_data_add_array_variable (const std::string_view name, const std::vector< size_t > &alignmentOffsets, const bool isTopLevel, const base_type_handle &elemType, const base_type_handle &arrayType)
 sets array variables data
_GLSL_STRUCT_CONSTEXPR17 var_data_add_array_variable (const std::string_view name, const std::vector< size_t > &alignmentOffsets, const bool isTopLevel, const size_t count, const base_type_handle &elemType, const size_t arrayBaseOffset)
 sets standard array variable
_GLSL_STRUCT_CONSTEXPR17 var_data_add_mat_variable (const std::string_view name, const std::vector< size_t > &alignmentOffsets, const bool isTopLevel, const ValueType valueType, const size_t columns, const size_t rows, const size_t vecBaseOffset, const size_t matBaseOffset)
 sets mat variable
var_data_add_mat_array_variable (const std::string_view name, const std::vector< std::vector< size_t > > &alignmentOffsets, const bool isTopLevel, const size_t count, const ValueType valueType, const size_t columns, const size_t rows, const size_t vecBaseOffset, const size_t matBaseOffset, const size_t arrayBaseOffset, const size_t matPadding)
 sets array of mats variable
_GLSL_STRUCT_CONSTEXPR17 void _before_add ()
 calls before add event
_GLSL_STRUCT_CONSTEXPR17 void _before_add_array ()
 calls before add array event
_GLSL_STRUCT_CONSTEXPR17 void _before_add_scalar ()
 calls before add scalar event
_GLSL_STRUCT_CONSTEXPR17 void _before_add_vec ()
 calls before add vec event
_GLSL_STRUCT_CONSTEXPR17 void _before_add_mat ()
 calls before add mat event
_GLSL_STRUCT_CONSTEXPR17 void _before_add_struct ()
 calls before add struct event
_GLSL_STRUCT_CONSTEXPR17 void _after_add (const size_t baseOffset, const size_t baseAlignment)
 calls after add event
_GLSL_STRUCT_CONSTEXPR17 void _after_add_array (const size_t baseOffset, const size_t baseAlignment)
 calls after add array event
_GLSL_STRUCT_CONSTEXPR17 void _after_add_scalar (const size_t baseOffset, const size_t baseAlignment)
 calls after add scalar event
_GLSL_STRUCT_CONSTEXPR17 void _after_add_vec (const size_t baseOffset, const size_t baseAlignment)
 calls after add vec event
_GLSL_STRUCT_CONSTEXPR17 void _after_add_mat (const size_t baseOffset, const size_t baseAlignment)
 calls after add mat event
_GLSL_STRUCT_CONSTEXPR17 void _after_add_struct (const size_t baseOffset, const size_t baseAlignment)
 calls after add struct event
_GLSL_STRUCT_CONSTEXPR17 size_t _get_array_alignment (const size_t elemBaseAlignment)
 returns array of elements alignment
_GLSL_STRUCT_CONSTEXPR17 size_t _get_scalar_alignment (const ValueType valueType)
 returns scalar alignment
_GLSL_STRUCT_CONSTEXPR17 size_t _get_scalar_array_alignment (const ValueType valueType)
 returns array of scalars alignment
_GLSL_STRUCT_CONSTEXPR17 size_t _get_vec_alignment (const ValueType valueType, const size_t length)
 returns vec alignment
_GLSL_STRUCT_CONSTEXPR17 size_t _get_vec_array_alignment (const ValueType valueType, const size_t length)
 returns array of vecs alignment
_GLSL_STRUCT_CONSTEXPR17 size_t _get_mat_alignment (const ValueType valueType, const size_t rows)
 returns mat alignment
_GLSL_STRUCT_CONSTEXPR17 size_t _add_scalar (const std::string_view name, const ValueType valueType)
 adds scalar
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > _add_scalar_array (const std::string_view name, const ValueType valueType, const size_t count)
 adds array of scalars
_GLSL_STRUCT_CONSTEXPR17 size_t _add_vec (const std::string_view name, const size_t length, const ValueType valueType)
 adds vec
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > _add_vec_array (const std::string_view name, const size_t length, const ValueType valueType, const size_t count)
 adds array of vecs
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > _add_mat (const std::string_view name, const size_t columns, const size_t rows, const ValueType valueType)
 adds mat
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::vector< size_t > > _add_mat_array (const std::string_view name, const size_t columns, const size_t rows, const ValueType valueType, const size_t count)
 adds array of mats
_GLSL_STRUCT_CONSTEXPR20 size_t _add_struct (const std::string_view name, const size_t baseAlignment, const size_t baseOffset, const mstd::ordered_map< std::string, var_data > &values)
 adds struct
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > _add_struct_array (const std::string_view name, const size_t baseAlignment, const size_t baseOffset, const mstd::ordered_map< std::string, var_data > &values, const size_t count)
 adds array of structs
template<class T, class... Ts, size_t Num, size_t... Nums>
_GLSL_STRUCT_CONSTEXPR17 void _add_variables (const glsl_variable< T, Num > &var, const glsl_variable< Ts, Nums > &... vars) noexcept
 adds multiple variables

Static Private Member Functions

static _GLSL_STRUCT_CONSTEXPR17 size_t _calculate_alignment_offset (const size_t currentOffset, const size_t baseAlignment) noexcept
 calculates alignment offset
static _GLSL_STRUCT_CONSTEXPR17 size_t _calculate_padding (const size_t currentOffset, const size_t baseAlignment) noexcept
 returns padding value
static _GLSL_STRUCT_CONSTEXPR17 bool _move_current_offset (size_t &currentOffset, const size_t distance) noexcept
 moves current offset to end of variable
static _GLSL_STRUCT_CONSTEXPR17 bool _is_vec_length_good (const size_t length) noexcept
 checks if vec length is between 2 and 4
static _GLSL_STRUCT_CONSTEXPR17 bool _is_array_count_good (const size_t count)
 checks if array count is not zero
static _GLSL_STRUCT_CONSTEXPR17 bool _is_struct_not_empty (const mstd::ordered_map< std::string, var_data > &values) noexcept
 checks if struct is not empty
static _GLSL_STRUCT_CONSTEXPR17 size_t _add (size_t &currentOffset, const size_t baseAlignment, const size_t baseOffset) noexcept
 returns alignment offset of variable and moves current offset
static _GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > _add_array (size_t &currentOffset, const size_t arrayBaseAlignment, const size_t elemBaseOffset, const size_t count) noexcept
 returns alignment offsets of array variables and moves current offset

Private Attributes

mstd::ordered_map< std::string, var_data_variables
 variables data
size_t _currentOffset = 0
 current offset

Friends

struct std::hash< base_layout >

Detailed Description

template<layout_traits Traits>
class glslstruct::base_layout< Traits >

base layout container

Template Parameters
Traitslayout traits type

Member Typedef Documentation

◆ base_struct

template<layout_traits Traits>
using glslstruct::base_layout< Traits >::base_struct
private
Initial value:
std::conditional_t<has_context, utils::layout_with_context<traits_type>, utils::layout_without_context>
empty container for layout
Definition base_layout.hpp:73

base layout struct

◆ traits_type

template<layout_traits Traits>
using glslstruct::base_layout< Traits >::traits_type = Traits

traits type

Constructor & Destructor Documentation

◆ base_layout() [1/6]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 glslstruct::base_layout< Traits >::base_layout ( ) &&
inlinenoexcept

default constructor without providing context

◆ base_layout() [2/6]

template<layout_traits Traits>
template<class... Ts, size_t... Nums>
_GLSL_STRUCT_CONSTEXPR17 glslstruct::base_layout< Traits >::base_layout ( const glsl_variable< Ts, Nums > &... vars) &&
inlineexplicitnoexcept

constructor for multiple variables

◆ base_layout() [3/6]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 glslstruct::base_layout< Traits >::base_layout ( const _GLSL_STRUCT_TYPENAME17 base_struct::context_type & ctx)
inlineexplicitnoexcept

constructor with provided context

◆ base_layout() [4/6]

template<layout_traits Traits>
template<class... Ts, size_t... Nums>
_GLSL_STRUCT_CONSTEXPR17 glslstruct::base_layout< Traits >::base_layout ( const glsl_variable< Ts, Nums > &... vars,
const _GLSL_STRUCT_TYPENAME17 base_struct::context_type & ctx )
inlineexplicitnoexcept

constructor for multiple variables and with provided context

◆ base_layout() [5/6]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 glslstruct::base_layout< Traits >::base_layout ( const base_layout< Traits > & other)
defaultnoexcept

default copy constructor

◆ base_layout() [6/6]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 glslstruct::base_layout< Traits >::base_layout ( base_layout< Traits > && other)
defaultnoexcept

default move constructor

◆ ~base_layout()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 glslstruct::base_layout< Traits >::~base_layout ( )
defaultnoexcept

default destructor

Member Function Documentation

◆ _add()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_add ( size_t & currentOffset,
const size_t baseAlignment,
const size_t baseOffset )
inlinestaticnodiscardprivatenoexcept

returns alignment offset of variable and moves current offset

◆ _add_array()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::_add_array ( size_t & currentOffset,
const size_t arrayBaseAlignment,
const size_t elemBaseOffset,
const size_t count )
inlinestaticnodiscardprivatenoexcept

returns alignment offsets of array variables and moves current offset

◆ _add_array_variable() [1/2]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 var_data & glslstruct::base_layout< Traits >::_add_array_variable ( const std::string_view name,
const std::vector< size_t > & alignmentOffsets,
const bool isTopLevel,
const base_type_handle & elemType,
const base_type_handle & arrayType )
inlineprivate

sets array variables data

◆ _add_array_variable() [2/2]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 var_data & glslstruct::base_layout< Traits >::_add_array_variable ( const std::string_view name,
const std::vector< size_t > & alignmentOffsets,
const bool isTopLevel,
const size_t count,
const base_type_handle & elemType,
const size_t arrayBaseOffset )
inlineprivate

sets standard array variable

◆ _add_mat()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::_add_mat ( const std::string_view name,
const size_t columns,
const size_t rows,
const ValueType valueType )
inlinenodiscardprivate

adds mat

◆ _add_mat_array()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::vector< size_t > > glslstruct::base_layout< Traits >::_add_mat_array ( const std::string_view name,
const size_t columns,
const size_t rows,
const ValueType valueType,
const size_t count )
inlinenodiscardprivate

adds array of mats

◆ _add_mat_array_variable()

template<layout_traits Traits>
var_data & glslstruct::base_layout< Traits >::_add_mat_array_variable ( const std::string_view name,
const std::vector< std::vector< size_t > > & alignmentOffsets,
const bool isTopLevel,
const size_t count,
const ValueType valueType,
const size_t columns,
const size_t rows,
const size_t vecBaseOffset,
const size_t matBaseOffset,
const size_t arrayBaseOffset,
const size_t matPadding )
inlineprivate

sets array of mats variable

◆ _add_mat_variable()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 var_data & glslstruct::base_layout< Traits >::_add_mat_variable ( const std::string_view name,
const std::vector< size_t > & alignmentOffsets,
const bool isTopLevel,
const ValueType valueType,
const size_t columns,
const size_t rows,
const size_t vecBaseOffset,
const size_t matBaseOffset )
inlineprivate

sets mat variable

◆ _add_scalar()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_add_scalar ( const std::string_view name,
const ValueType valueType )
inlinenodiscardprivate

adds scalar

◆ _add_scalar_array()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::_add_scalar_array ( const std::string_view name,
const ValueType valueType,
const size_t count )
inlinenodiscardprivate

adds array of scalars

◆ _add_struct()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 size_t glslstruct::base_layout< Traits >::_add_struct ( const std::string_view name,
const size_t baseAlignment,
const size_t baseOffset,
const mstd::ordered_map< std::string, var_data > & values )
inlinenodiscardprivate

adds struct

◆ _add_struct_array()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::_add_struct_array ( const std::string_view name,
const size_t baseAlignment,
const size_t baseOffset,
const mstd::ordered_map< std::string, var_data > & values,
const size_t count )
inlinenodiscardprivate

adds array of structs

◆ _add_variable()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 var_data & glslstruct::base_layout< Traits >::_add_variable ( const std::string_view name,
const size_t alignmentOffset,
const bool isTopLevel,
const base_type_handle & type )
inlineprivate

sets variable data

◆ _add_variables()

template<layout_traits Traits>
template<class T, class... Ts, size_t Num, size_t... Nums>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_add_variables ( const glsl_variable< T, Num > & var,
const glsl_variable< Ts, Nums > &... vars )
inlineprivatenoexcept

adds multiple variables

◆ _add_vec()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_add_vec ( const std::string_view name,
const size_t length,
const ValueType valueType )
inlinenodiscardprivate

adds vec

◆ _add_vec_array()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::_add_vec_array ( const std::string_view name,
const size_t length,
const ValueType valueType,
const size_t count )
inlinenodiscardprivate

adds array of vecs

◆ _after_add()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_after_add ( const size_t baseOffset,
const size_t baseAlignment )
inlineprivate

calls after add event

◆ _after_add_array()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_after_add_array ( const size_t baseOffset,
const size_t baseAlignment )
inlineprivate

calls after add array event

◆ _after_add_mat()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_after_add_mat ( const size_t baseOffset,
const size_t baseAlignment )
inlineprivate

calls after add mat event

◆ _after_add_scalar()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_after_add_scalar ( const size_t baseOffset,
const size_t baseAlignment )
inlineprivate

calls after add scalar event

◆ _after_add_struct()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_after_add_struct ( const size_t baseOffset,
const size_t baseAlignment )
inlineprivate

calls after add struct event

◆ _after_add_vec()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_after_add_vec ( const size_t baseOffset,
const size_t baseAlignment )
inlineprivate

calls after add vec event

◆ _before_add()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_before_add ( )
inlineprivate

calls before add event

◆ _before_add_array()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_before_add_array ( )
inlineprivate

calls before add array event

◆ _before_add_mat()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_before_add_mat ( )
inlineprivate

calls before add mat event

◆ _before_add_scalar()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_before_add_scalar ( )
inlineprivate

calls before add scalar event

◆ _before_add_struct()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_before_add_struct ( )
inlineprivate

calls before add struct event

◆ _before_add_vec()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::_before_add_vec ( )
inlineprivate

calls before add vec event

◆ _calculate_alignment_offset()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_calculate_alignment_offset ( const size_t currentOffset,
const size_t baseAlignment )
inlinestaticnodiscardprivatenoexcept

calculates alignment offset

◆ _calculate_padding()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_calculate_padding ( const size_t currentOffset,
const size_t baseAlignment )
inlinestaticnodiscardprivatenoexcept

returns padding value

◆ _get_array_alignment()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_get_array_alignment ( const size_t elemBaseAlignment)
inlinenodiscardprivate

returns array of elements alignment

◆ _get_mat_alignment()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_get_mat_alignment ( const ValueType valueType,
const size_t rows )
inlinenodiscardprivate

returns mat alignment

◆ _get_scalar_alignment()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_get_scalar_alignment ( const ValueType valueType)
inlinenodiscardprivate

returns scalar alignment

◆ _get_scalar_array_alignment()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_get_scalar_array_alignment ( const ValueType valueType)
inlinenodiscardprivate

returns array of scalars alignment

◆ _get_vec_alignment()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_get_vec_alignment ( const ValueType valueType,
const size_t length )
inlinenodiscardprivate

returns vec alignment

◆ _get_vec_array_alignment()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::_get_vec_array_alignment ( const ValueType valueType,
const size_t length )
inlinenodiscardprivate

returns array of vecs alignment

◆ _is_array_count_good()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 bool glslstruct::base_layout< Traits >::_is_array_count_good ( const size_t count)
inlinestaticnodiscardprivate

checks if array count is not zero

◆ _is_struct_not_empty()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 bool glslstruct::base_layout< Traits >::_is_struct_not_empty ( const mstd::ordered_map< std::string, var_data > & values)
inlinestaticnodiscardprivatenoexcept

checks if struct is not empty

◆ _is_vec_length_good()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 bool glslstruct::base_layout< Traits >::_is_vec_length_good ( const size_t length)
inlinestaticnodiscardprivatenoexcept

checks if vec length is between 2 and 4

◆ _move_current_offset()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 bool glslstruct::base_layout< Traits >::_move_current_offset ( size_t & currentOffset,
const size_t distance )
inlinestaticnodiscardprivatenoexcept

moves current offset to end of variable

◆ _set_variable()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 var_data & glslstruct::base_layout< Traits >::_set_variable ( const std::string_view name,
const size_t offset,
const base_type_handle & type,
const bool isTopLevel,
const size_t padding = 0 )
inlineprivate

sets variable data

◆ add() [1/14]

template<layout_traits Traits>
template<utils::glsl_mats_static_size_array MA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::vector< size_t > > glslstruct::base_layout< Traits >::add ( const std::string_view name)
inline

adds array of mats

◆ add() [2/14]

template<layout_traits Traits>
template<utils::glsl_mat M>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::add ( const std::string_view name)
inline

adds mat

◆ add() [3/14]

template<layout_traits Traits>
template<utils::glsl_vecs_static_size_array VA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::add ( const std::string_view name)
inline

adds array of vecs

◆ add() [4/14]

template<layout_traits Traits>
template<utils::glsl_vec V>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::add ( const std::string_view name)
inline

adds vec

◆ add() [5/14]

template<layout_traits Traits>
template<utils::glsl_scalars_static_size_array SA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::add ( const std::string_view name)
inline

adds array of scalars

◆ add() [6/14]

template<layout_traits Traits>
template<utils::glsl_scalar S>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::add ( const std::string_view name)
inline

adds scalar

◆ add() [7/14]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::add ( const std::string_view name,
const base_layout< Traits > & layout )
inline

adds struct with given layout

◆ add() [8/14]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::add ( const std::string_view name,
const base_layout< Traits > & layout,
const size_t count )
inline

adds array of structs with given layout

◆ add() [9/14]

template<layout_traits Traits>
template<utils::glsl_mats_array MA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::vector< size_t > > glslstruct::base_layout< Traits >::add ( const std::string_view name,
const size_t count )
inline

adds array of mats

◆ add() [10/14]

template<layout_traits Traits>
template<utils::glsl_mat M>
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::vector< size_t > > glslstruct::base_layout< Traits >::add ( const std::string_view name,
const size_t count )
inline

adds array of mats

◆ add() [11/14]

template<layout_traits Traits>
template<utils::glsl_vecs_array VA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::add ( const std::string_view name,
const size_t count )
inline

adds array of vecs

◆ add() [12/14]

template<layout_traits Traits>
template<utils::glsl_vec V>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::add ( const std::string_view name,
const size_t count )
inline

adds array of vecs

◆ add() [13/14]

template<layout_traits Traits>
template<utils::glsl_scalars_array SA>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::add ( const std::string_view name,
const size_t count )
inline

adds array of scalars

◆ add() [14/14]

template<layout_traits Traits>
template<utils::glsl_scalar S>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::add ( const std::string_view name,
const size_t count )
inline

adds array of scalars

◆ bad_offset()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::bad_offset ( )
inlinestaticnodiscardnoexcept

value indicating error while returning offset

◆ base_alignment()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::base_alignment ( ) const
inlinenodiscardnoexcept

returns base alignment of layout

◆ clear()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 void glslstruct::base_layout< Traits >::clear ( )
inlinenoexcept

clears layout and all variables

◆ contains()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 bool glslstruct::base_layout< Traits >::contains ( const std::string_view name) const
inlinenodiscardnoexcept

returns true if layout contains variable with given name

◆ get()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 const var_data & glslstruct::base_layout< Traits >::get ( const std::string_view name) const
inlinenodiscardnoexcept

returns variable data

◆ get_array_count()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::get_array_count ( const std::string_view name) const
inlinenodiscardnoexcept

returns array count (if single value then returns 1 else if value doesn't exist returns 0 else array count)

◆ get_array_elem_size()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::get_array_elem_size ( const std::string_view name) const
inlinenodiscardnoexcept

returns elem size of array

◆ get_array_offsets()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< size_t > glslstruct::base_layout< Traits >::get_array_offsets ( const std::string_view name) const
inlinenodiscardnoexcept

returns offsets of array elements

◆ get_names()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 std::vector< std::string > glslstruct::base_layout< Traits >::get_names ( ) const
inlinenodiscardnoexcept

returns all variables names

◆ get_offset()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::get_offset ( const std::string_view name) const
inlinenodiscardnoexcept

returns offset of variable with given name

◆ get_padding()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::get_padding ( const std::string_view name) const
inlinenodiscardnoexcept

returns padding of variable

◆ get_size()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::get_size ( const std::string_view name) const
inlinenodiscardnoexcept

returns size of variable

◆ get_top_level_variables()

template<layout_traits Traits>
mstd::ordered_map< std::string, var_data > glslstruct::base_layout< Traits >::get_top_level_variables ( ) const
inlinenodiscardnoexcept

returns all top level variables and their data

◆ get_total_size()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::get_total_size ( const std::string_view name) const
inlinenodiscardnoexcept

returns total size of variable (size + padding)

◆ get_type() [1/2]

template<layout_traits Traits>
template<utils::glsl_type Type>
_GLSL_STRUCT_CONSTEXPR17 std::shared_ptr< Type > glslstruct::base_layout< Traits >::get_type ( const std::string_view name) const
inlinenodiscardnoexcept

returns type of variable with casting to given type (dynamic casting occurs)

◆ get_type() [2/2]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 const base_type_handle & glslstruct::base_layout< Traits >::get_type ( const std::string_view name) const
inlinenodiscardnoexcept

returns type of variable

◆ get_variables()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR20 const mstd::ordered_map< std::string, var_data > & glslstruct::base_layout< Traits >::get_variables ( ) const
inlinenodiscardnoexcept

returns all variables and their data

◆ operator!=()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 bool glslstruct::base_layout< Traits >::operator!= ( const base_layout< Traits > & other) const
nodiscarddefaultnoexcept

default not equal operator

◆ operator=() [1/2]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 base_layout & glslstruct::base_layout< Traits >::operator= ( base_layout< Traits > && other)
defaultnoexcept

default move assign operator

◆ operator=() [2/2]

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 base_layout & glslstruct::base_layout< Traits >::operator= ( const base_layout< Traits > & other)
defaultnoexcept

default copy assign operator

◆ operator==()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 bool glslstruct::base_layout< Traits >::operator== ( const base_layout< Traits > & other) const
inlinenodiscardnoexcept

checks equality of layouts

◆ size()

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 size_t glslstruct::base_layout< Traits >::size ( ) const
inlinenodiscardnoexcept

returns size of layout

◆ std::hash< base_layout >

template<layout_traits Traits>
friend struct std::hash< base_layout >
friend

Member Data Documentation

◆ _currentOffset

template<layout_traits Traits>
size_t glslstruct::base_layout< Traits >::_currentOffset = 0
private

current offset

◆ _variables

template<layout_traits Traits>
mstd::ordered_map<std::string, var_data> glslstruct::base_layout< Traits >::_variables
private

variables data

◆ has_context

template<layout_traits Traits>
_GLSL_STRUCT_CONSTEXPR17 bool glslstruct::base_layout< Traits >::has_context = utils::has_layout_traits_context_v<traits_type>
static

value indicating if traits has context defined