HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SlangSyntax.h
Go to the documentation of this file.
1 //
2 // Copyright Contributors to the MaterialX Project
3 // SPDX-License-Identifier: Apache-2.0
4 //
5 
6 #ifndef MATERIALX_SLANG_SYNTAX_H
7 #define MATERIALX_SLANG_SYNTAX_H
8 
9 /// @file
10 /// Slang syntax class
11 
13 
15 
17 
18 /// Syntax class for Slang Shading Language
20 {
21  public:
22  SlangSyntax(TypeSystemPtr typeSystem);
23 
24  static SyntaxPtr create(TypeSystemPtr typeSystem) { return std::make_shared<SlangSyntax>(typeSystem); }
25 
26  const string& getInputQualifier() const override { return INPUT_QUALIFIER; }
27  const string& getOutputQualifier() const override { return OUTPUT_QUALIFIER; }
28  const string& getConstantQualifier() const override { return CONSTANT_QUALIFIER; };
29  const string& getUniformQualifier() const override { return UNIFORM_QUALIFIER; };
30  const string& getSourceFileExtension() const override { return SOURCE_FILE_EXTENSION; };
31 
32  bool typeSupported(const TypeDesc* type) const override;
33 
34  void makeValidName(string& name) const override;
35 
36  /// Given an input specification attempt to remap this to an enumeration which is accepted by
37  /// the shader generator. The enumeration may be converted to a different type than the input.
38  bool remapEnumeration(const string& value, TypeDesc type, const string& enumNames, std::pair<TypeDesc, ValuePtr>& result) const override;
39 
40  StructTypeSyntaxPtr createStructSyntax(const string& structTypeName, const string& defaultValue,
41  const string& uniformDefaultValue, const string& typeAlias,
42  const string& typeDefinition) const override;
43 
44  static const string INPUT_QUALIFIER;
45  static const string OUTPUT_QUALIFIER;
46  static const string UNIFORM_QUALIFIER;
47  static const string CONSTANT_QUALIFIER;
48  static const string FLAT_QUALIFIER;
49  static const string SOURCE_FILE_EXTENSION;
50 
51  static const StringVec VEC2_MEMBERS;
52  static const StringVec VEC3_MEMBERS;
53  static const StringVec VEC4_MEMBERS;
54 };
55 
56 /// Specialization of TypeSyntax for aggregate types.
58 {
59  public:
61 
62  string getValue(const Value& value, bool uniform) const override;
63 };
64 
66 
67 #endif
static const StringVec VEC4_MEMBERS
Definition: SlangSyntax.h:53
static const StringVec VEC3_MEMBERS
Definition: SlangSyntax.h:52
string getValue(const Value &value, bool uniform) const override
shared_ptr< StructTypeSyntax > StructTypeSyntaxPtr
Shared pointer to a StructTypeSyntax.
Definition: Syntax.h:34
#define MATERIALX_NAMESPACE_BEGIN
Definition: Generated.h:25
vector< string > StringVec
A vector of strings.
Definition: Library.h:61
static const string FLAT_QUALIFIER
Definition: SlangSyntax.h:48
virtual bool typeSupported(const TypeDesc *type) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
shared_ptr< Syntax > SyntaxPtr
Shared pointer to a Syntax.
Definition: Syntax.h:28
**But if you need a result
Definition: thread.h:622
static SyntaxPtr create(TypeSystemPtr typeSystem)
Definition: SlangSyntax.h:24
static const string OUTPUT_QUALIFIER
Definition: SlangSyntax.h:45
shared_ptr< class TypeSystem > TypeSystemPtr
Definition: TypeDesc.h:219
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:108
const string & getOutputQualifier() const override
Definition: SlangSyntax.h:27
A generic, discriminated value, whose type may be queried dynamically.
Definition: Value.h:45
static const string INPUT_QUALIFIER
Definition: SlangSyntax.h:44
virtual StructTypeSyntaxPtr createStructSyntax(const string &structTypeName, const string &defaultValue, const string &uniformDefaultValue, const string &typeAlias, const string &typeDefinition) const
Syntax class for Slang Shading Language.
Definition: SlangSyntax.h:19
const string & getSourceFileExtension() const override
Return the file extension used for source code files in this language.
Definition: SlangSyntax.h:30
GLuint const GLchar * name
Definition: glcorearb.h:786
virtual bool remapEnumeration(const string &value, TypeDesc type, const string &enumNames, std::pair< TypeDesc, ValuePtr > &result) const
static const string UNIFORM_QUALIFIER
Definition: SlangSyntax.h:46
#define MX_GENSLANG_API
Definition: Export.h:18
static const string SOURCE_FILE_EXTENSION
Definition: SlangSyntax.h:49
const string & getUniformQualifier() const override
Definition: SlangSyntax.h:29
const string & getInputQualifier() const override
Definition: SlangSyntax.h:26
const string & getConstantQualifier() const override
Definition: SlangSyntax.h:28
StructTypeSyntax(const Syntax *parent, const string &name, const string &defaultValue, const string &uniformDefaultValue, const string &typeAlias=EMPTY_STRING, const string &typeDefinition=EMPTY_STRING, const StringVec &members=EMPTY_MEMBERS)
static const StringVec VEC2_MEMBERS
Definition: SlangSyntax.h:51
Specialization of TypeSyntax for struct types.
Definition: Syntax.h:309
#define MATERIALX_NAMESPACE_END
Definition: Generated.h:26
Specialization of TypeSyntax for aggregate types.
Definition: SlangSyntax.h:57
Definition: Syntax.h:43
virtual void makeValidName(string &name) const
Modify the given name string to remove any invalid characters or tokens.
static const string CONSTANT_QUALIFIER
Definition: SlangSyntax.h:47