GLSL Struct 1.4.0
glslstruct
Loading...
Searching...
No Matches
glslstruct::utils::glsl_writer Class Reference

general glsl writer More...

#include <writer.hpp>

Collaboration diagram for glslstruct::utils::glsl_writer:
[legend]

Public Member Functions

 glsl_writer ()
 default constructor
template<class Type>
void visit (Type &&varType)
 type visitor
void append_struct (std::string_view name, const struct_type &structType)
 appends struct with given name
void append_struct (const struct_type &structType)
 appends struct with generated name
void append_uniform_buffer (std::string_view layoutData, std::string_view name, const mstd::ordered_map< std::string, var_data > &variables, std::string_view varName="")
 appends uniform buffer
void append_shader_storage_buffer (std::string_view layoutData, std::string_view name, const mstd::ordered_map< std::string, var_data > &variables, std::string_view varName="", std::string_view qualifiers="")
 appends shader storage buffer
const std::string & to_string () const noexcept
 returns result string

Private Member Functions

void _append_struct_body (std::string_view structBody)
 appends struct body to result
std::string _get_struct_body (std::string_view type, std::string_view name, bool canHaveVariableSizeArray, const mstd::ordered_map< std::string, var_data > &variables)
 returns struct body string
void _append_buffer_body (std::string_view layoutData, std::string_view name, std::string_view bufferType, bool canHaveVariableSizeArray, const mstd::ordered_map< std::string, var_data > &variables, std::string_view varName="")
 appends buffer body to result
void _append_shader_storage_buffer_body (std::string_view layoutData, std::string_view name, const mstd::ordered_map< std::string, var_data > &variables, std::string_view varName="", std::string_view qualifiers="")
 appends shader storage buffer body (SSBO)
bool _contains_name (std::string_view name)
 returns true if struct, UBO or SSBO with given name already was appended

Static Private Member Functions

static std::string _get_layout (std::string_view layoutData)
 returns layout string

Private Attributes

std::string _result
 result
size_t _structIdx = 0
 struct name generator idx
mstd::ordered_map< struct_type, std::string > _uniqueStructs
 struct name generator idx
std::unordered_set< std::string > _uniqueNames
 unique names of all strucs, UBOs and SSBOs

Detailed Description

general glsl writer

Constructor & Destructor Documentation

◆ glsl_writer()

glsl_writer::glsl_writer ( )
default

default constructor

Member Function Documentation

◆ _append_buffer_body()

void glsl_writer::_append_buffer_body ( std::string_view layoutData,
std::string_view name,
std::string_view bufferType,
bool canHaveVariableSizeArray,
const mstd::ordered_map< std::string, var_data > & variables,
std::string_view varName = "" )
private

appends buffer body to result

◆ _append_shader_storage_buffer_body()

void glsl_writer::_append_shader_storage_buffer_body ( std::string_view layoutData,
std::string_view name,
const mstd::ordered_map< std::string, var_data > & variables,
std::string_view varName = "",
std::string_view qualifiers = "" )
private

appends shader storage buffer body (SSBO)

◆ _append_struct_body()

void glsl_writer::_append_struct_body ( std::string_view structBody)
private

appends struct body to result

◆ _contains_name()

bool glsl_writer::_contains_name ( std::string_view name)
nodiscardprivate

returns true if struct, UBO or SSBO with given name already was appended

◆ _get_layout()

std::string glsl_writer::_get_layout ( std::string_view layoutData)
staticnodiscardprivate

returns layout string

◆ _get_struct_body()

std::string glsl_writer::_get_struct_body ( std::string_view type,
std::string_view name,
bool canHaveVariableSizeArray,
const mstd::ordered_map< std::string, var_data > & variables )
nodiscardprivate

returns struct body string

◆ append_shader_storage_buffer()

void glsl_writer::append_shader_storage_buffer ( std::string_view layoutData,
std::string_view name,
const mstd::ordered_map< std::string, var_data > & variables,
std::string_view varName = "",
std::string_view qualifiers = "" )

appends shader storage buffer

◆ append_struct() [1/2]

void glsl_writer::append_struct ( const struct_type & structType)

appends struct with generated name

◆ append_struct() [2/2]

void glsl_writer::append_struct ( std::string_view name,
const struct_type & structType )

appends struct with given name

◆ append_uniform_buffer()

void glsl_writer::append_uniform_buffer ( std::string_view layoutData,
std::string_view name,
const mstd::ordered_map< std::string, var_data > & variables,
std::string_view varName = "" )

appends uniform buffer

◆ to_string()

const std::string & glsl_writer::to_string ( ) const
nodiscardnoexcept

returns result string

◆ visit()

template<class Type>
void glslstruct::utils::glsl_writer::visit ( Type && varType)
inline

type visitor

Member Data Documentation

◆ _result

std::string glslstruct::utils::glsl_writer::_result
private

result

◆ _structIdx

size_t glslstruct::utils::glsl_writer::_structIdx = 0
private

struct name generator idx

◆ _uniqueNames

std::unordered_set<std::string> glslstruct::utils::glsl_writer::_uniqueNames
private

unique names of all strucs, UBOs and SSBOs

◆ _uniqueStructs

mstd::ordered_map<struct_type, std::string> glslstruct::utils::glsl_writer::_uniqueStructs
private

struct name generator idx