MaterialX 1.39.5
Loading...
Searching...
No Matches
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
11
13
15
16MATERIALX_NAMESPACE_BEGIN
17
19class MX_GENSLANG_API SlangSyntax : public Syntax
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
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
57class MX_GENSLANG_API SlangStructTypeSyntax : public StructTypeSyntax
58{
59 public:
60 using StructTypeSyntax::StructTypeSyntax;
61
62 string getValue(const Value& value, bool uniform) const override;
63};
64
65MATERIALX_NAMESPACE_END
66
67#endif
vector< string > StringVec
A vector of strings.
Definition Library.h:61
Macros for declaring imported and exported symbols.
Base class for syntax handling for shader generators.
shared_ptr< StructTypeSyntax > StructTypeSyntaxPtr
Shared pointer to a StructTypeSyntax.
Definition Syntax.h:34
shared_ptr< Syntax > SyntaxPtr
Shared pointer to a Syntax.
Definition Syntax.h:28
Specialization of TypeSyntax for aggregate types.
Definition SlangSyntax.h:58
string getValue(const Value &value, bool uniform) const override
Returns a value formatted according to this type syntax.
bool remapEnumeration(const string &value, TypeDesc type, const string &enumNames, std::pair< TypeDesc, ValuePtr > &result) const override
Given an input specification attempt to remap this to an enumeration which is accepted by the shader ...
const string & getInputQualifier() const override
Returns a type qualifier to be used when declaring types for input variables.
Definition SlangSyntax.h:26
const string & getConstantQualifier() const override
Get the qualifier used when declaring constant variables.
Definition SlangSyntax.h:28
const string & getOutputQualifier() const override
Returns a type qualifier to be used when declaring types for output variables.
Definition SlangSyntax.h:27
const string & getUniformQualifier() const override
Get the qualifier used when declaring uniform variables.
Definition SlangSyntax.h:29
const string & getSourceFileExtension() const override
Return the file extension used for source code files in this language.
Definition SlangSyntax.h:30
void makeValidName(string &name) const override
Modify the given name string to remove any invalid characters or tokens.
bool typeSupported(const TypeDesc *type) const override
Query if given type is supported in the syntax.
Syntax(TypeSystemPtr typeSystem)
Protected constructor.
A type descriptor for MaterialX data types.
Definition TypeDesc.h:40
A generic, discriminated value, whose type may be queried dynamically.
Definition Value.h:46