HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GenContext Class Reference

#include <GenContext.h>

Public Member Functions

 GenContext (ShaderGeneratorPtr sg)
 Constructor. More...
 
ShaderGenerator & getShaderGenerator ()
 Return shader generatior. More...
 
GenOptions & getOptions ()
 Return shader generation options. More...
 
const GenOptions & getOptions () const
 Return shader generation options. More...
 
TypeDesc getTypeDesc (const string &name) const
 Return a TypeDesc for the given type name. More...
 
void registerSourceCodeSearchPath (const FilePath &path)
 
void registerSourceCodeSearchPath (const FileSearchPath &path)
 
FilePath resolveSourceFile (const FilePath &filename, const FilePath &localPath) const
 
void addReservedWords (const StringSet &names)
 
const StringSet & getReservedWords () const
 
void addNodeImplementation (const string &name, ShaderNodeImplPtr impl)
 Cache a shader node implementation. More...
 
ShaderNodeImplPtr findNodeImplementation (const string &name) const
 
void getNodeImplementationNames (StringSet &names)
 Get the names of all cached node implementations. More...
 
void clearNodeImplementations ()
 Clear all cached shader node implementation. More...
 
void pushParentNode (ConstNodePtr node)
 Push a parent node onto the stack. More...
 
void popParentNode ()
 Pop the current parent node from the stack. More...
 
const vector< ConstNodePtr > & getParentNodes ()
 Return the current stack of parent nodes. More...
 
void pushUserData (const string &name, GenUserDataPtr data)
 
void popUserData (const string &name)
 Remove user data from the context. More...
 
void clearUserData ()
 Clear all user data from the context. More...
 
template<class T >
std::shared_ptr< T > getUserData (const string &name)
 
void addInputSuffix (const ShaderInput *input, const string &suffix)
 
void removeInputSuffix (const ShaderInput *input)
 
void getInputSuffix (const ShaderInput *input, string &suffix) const
 
void addOutputSuffix (const ShaderOutput *output, const string &suffix)
 
void removeOutputSuffix (const ShaderOutput *output)
 
void getOutputSuffix (const ShaderOutput *output, string &suffix) const
 
void setApplicationVariableHandler (ApplicationVariableHandler handler)
 Set handler for application variables. More...
 
ApplicationVariableHandler getApplicationVariableHandler () const
 Get handler for application variables. More...
 

Protected Member Functions

 GenContext ()=delete
 

Protected Attributes

ShaderGeneratorPtr _sg
 
GenOptions _options
 
FileSearchPath _sourceCodeSearchPath
 
StringSet _reservedWords
 
std::unordered_map< string,
ShaderNodeImplPtr > 
_nodeImpls
 
std::unordered_map< string,
vector< GenUserDataPtr > > 
_userData
 
std::unordered_map< const
ShaderInput *, string > 
_inputSuffix
 
std::unordered_map< const
ShaderOutput *, string > 
_outputSuffix
 
vector< ConstNodePtr > _parentNodes
 
ApplicationVariableHandler _applicationVariableHandler
 

Detailed Description

A context class for shader generation. Used for thread local storage of data needed during shader generation.

Definition at line 29 of file GenContext.h.

Constructor & Destructor Documentation

GenContext::GenContext ( ShaderGeneratorPtr  sg)

Constructor.

GenContext::GenContext ( )
protecteddelete

Member Function Documentation

void GenContext::addInputSuffix ( const ShaderInput *  input,
const string &  suffix 
)

Add an input suffix to be used for the input in this context.

Parameters
inputNode input
suffixSuffix string
void GenContext::addNodeImplementation ( const string &  name,
ShaderNodeImplPtr  impl 
)

Cache a shader node implementation.

void GenContext::addOutputSuffix ( const ShaderOutput *  output,
const string &  suffix 
)

Add an output suffix to be used for the output in this context.

Parameters
outputNode output
suffixSuffix string
void GenContext::addReservedWords ( const StringSet &  names)
inline

Add reserved words that should not be used as identifiers during code generation.

Definition at line 87 of file GenContext.h.

void GenContext::clearNodeImplementations ( )

Clear all cached shader node implementation.

void GenContext::clearUserData ( )

Clear all user data from the context.

ShaderNodeImplPtr GenContext::findNodeImplementation ( const string &  name) const

Find and return a cached shader node implementation, or return nullptr if no implementation is found.

ApplicationVariableHandler GenContext::getApplicationVariableHandler ( ) const
inline

Get handler for application variables.

Definition at line 202 of file GenContext.h.

void GenContext::getInputSuffix ( const ShaderInput *  input,
string &  suffix 
) const

Get an input suffix to be used for the input in this context.

Parameters
inputNode input
suffixSuffix string returned. Is empty if not found.
void GenContext::getNodeImplementationNames ( StringSet &  names)

Get the names of all cached node implementations.

GenOptions& GenContext::getOptions ( )
inline

Return shader generation options.

Definition at line 42 of file GenContext.h.

const GenOptions& GenContext::getOptions ( ) const
inline

Return shader generation options.

Definition at line 48 of file GenContext.h.

void GenContext::getOutputSuffix ( const ShaderOutput *  output,
string &  suffix 
) const

Get an output suffix to be used for the output in this context.

Parameters
outputNode output
suffixSuffix string returned. Is empty if not found.
const vector<ConstNodePtr>& GenContext::getParentNodes ( )
inline

Return the current stack of parent nodes.

Definition at line 125 of file GenContext.h.

const StringSet& GenContext::getReservedWords ( ) const
inline

Return the set of reserved words that should not be used as identifiers during code generation.

Definition at line 94 of file GenContext.h.

ShaderGenerator& GenContext::getShaderGenerator ( )
inline

Return shader generatior.

Definition at line 36 of file GenContext.h.

TypeDesc GenContext::getTypeDesc ( const string &  name) const
inline

Return a TypeDesc for the given type name.

Definition at line 54 of file GenContext.h.

template<class T >
std::shared_ptr<T> GenContext::getUserData ( const string &  name)
inline

Return user data with given name, or nullptr if no data is found.

Definition at line 161 of file GenContext.h.

void GenContext::popParentNode ( )
inline

Pop the current parent node from the stack.

Definition at line 119 of file GenContext.h.

void GenContext::popUserData ( const string &  name)
inline

Remove user data from the context.

Definition at line 146 of file GenContext.h.

void GenContext::pushParentNode ( ConstNodePtr  node)
inline

Push a parent node onto the stack.

Definition at line 113 of file GenContext.h.

void GenContext::pushUserData ( const string &  name,
GenUserDataPtr  data 
)
inline

Add user data to the context to make it available during shader generator.

Definition at line 132 of file GenContext.h.

void GenContext::registerSourceCodeSearchPath ( const FilePath &  path)
inline

Register a user search path for finding source code during code generation.

Definition at line 61 of file GenContext.h.

void GenContext::registerSourceCodeSearchPath ( const FileSearchPath &  path)
inline

Register a user search path for finding source code during code generation.

Definition at line 68 of file GenContext.h.

void GenContext::removeInputSuffix ( const ShaderInput *  input)

Remove an input suffix to be used for the input in this context.

Parameters
inputNode input
void GenContext::removeOutputSuffix ( const ShaderOutput *  output)

Remove an output suffix to be used for the output in this context.

Parameters
outputNode output
FilePath GenContext::resolveSourceFile ( const FilePath &  filename,
const FilePath &  localPath 
) const
inline

Resolve a source code filename, first checking the given local path then checking any file paths registered by the user.

Definition at line 75 of file GenContext.h.

void GenContext::setApplicationVariableHandler ( ApplicationVariableHandler  handler)
inline

Set handler for application variables.

Definition at line 196 of file GenContext.h.

Member Data Documentation

ApplicationVariableHandler GenContext::_applicationVariableHandler
protected

Definition at line 222 of file GenContext.h.

std::unordered_map<const ShaderInput*, string> GenContext::_inputSuffix
protected

Definition at line 217 of file GenContext.h.

std::unordered_map<string, ShaderNodeImplPtr> GenContext::_nodeImpls
protected

Definition at line 215 of file GenContext.h.

GenOptions GenContext::_options
protected

Definition at line 211 of file GenContext.h.

std::unordered_map<const ShaderOutput*, string> GenContext::_outputSuffix
protected

Definition at line 218 of file GenContext.h.

vector<ConstNodePtr> GenContext::_parentNodes
protected

Definition at line 220 of file GenContext.h.

StringSet GenContext::_reservedWords
protected

Definition at line 213 of file GenContext.h.

ShaderGeneratorPtr GenContext::_sg
protected

Definition at line 210 of file GenContext.h.

FileSearchPath GenContext::_sourceCodeSearchPath
protected

Definition at line 212 of file GenContext.h.

std::unordered_map<string, vector<GenUserDataPtr> > GenContext::_userData
protected

Definition at line 216 of file GenContext.h.


The documentation for this class was generated from the following file: