@@ -45,6 +45,36 @@ EMSCRIPTEN_BINDINGS(slang)
45
45
" getDescriptorSetDescriptorRangeType" ,
46
46
&slang::wgsl::TypeLayoutReflection::getDescriptorSetDescriptorRangeType);
47
47
48
+ enum_<slang::Modifier::ID>(" ModifierID" )
49
+ .value (" Shared" , slang::Modifier::ID::Shared)
50
+ .value (" NoDiff" , slang::Modifier::ID::NoDiff)
51
+ .value (" Static" , slang::Modifier::ID::Static)
52
+ .value (" Const" , slang::Modifier::ID::Const)
53
+ .value (" Export" , slang::Modifier::ID::Export)
54
+ .value (" Extern" , slang::Modifier::ID::Extern)
55
+ .value (" Differentiable" , slang::Modifier::ID::Differentiable)
56
+ .value (" Mutating" , slang::Modifier::ID::Mutating)
57
+ .value (" In" , slang::Modifier::ID::In)
58
+ .value (" Out" , slang::Modifier::ID::Out)
59
+ .value (" InOut" , slang::Modifier::ID::InOut);
60
+
61
+ class_<slang::Modifier>(" Modifier" );
62
+
63
+ class_<slang::wgsl::VariableReflection>(" VariableReflection" )
64
+ .function (" getName" , &slang::wgsl::VariableReflection::getName)
65
+ .function (
66
+ " findModifier" ,
67
+ &slang::wgsl::VariableReflection::findModifier,
68
+ allow_raw_pointers ())
69
+ .function (" getType" , &slang::wgsl::VariableReflection::getType, allow_raw_pointers ())
70
+ .function (" getUserAttributeCount" , &slang::wgsl::VariableReflection::getUserAttributeCount)
71
+ .function (
72
+ " getUserAttributeByIndex" ,
73
+ &slang::wgsl::VariableReflection::getUserAttributeByIndex,
74
+ allow_raw_pointers ())
75
+ .function (" hasDefaultValue" , &slang::wgsl::VariableReflection::hasDefaultValue);
76
+
77
+
48
78
class_<slang::wgsl::VariableLayoutReflection>(" VariableLayoutReflection" )
49
79
.function (" getName" , &slang::wgsl::VariableLayoutReflection::getName)
50
80
.function (
@@ -53,6 +83,130 @@ EMSCRIPTEN_BINDINGS(slang)
53
83
allow_raw_pointers ())
54
84
.function (" getBindingIndex" , &slang::wgsl::VariableLayoutReflection::getBindingIndex);
55
85
86
+ class_<slang::wgsl::GenericReflection>(" GenericReflection" )
87
+ .function (" getName" , &slang::wgsl::GenericReflection::getName)
88
+ .function (" getTypeParameterCount" , &slang::wgsl::GenericReflection::getTypeParameterCount)
89
+ .function (" getValueParameterCount" , &slang::wgsl::GenericReflection::getValueParameterCount)
90
+ .function (" getInnerKind" , &slang::wgsl::GenericReflection::getInnerKind)
91
+ .function (" asDecl" , &slang::wgsl::GenericReflection::asDecl, allow_raw_pointers ())
92
+ // .function(
93
+ // "getTypeParameterConstraintCount",
94
+ // &slang::wgsl::GenericReflection::getTypeParameterConstraintCount,
95
+ // allow_raw_pointers())
96
+ .function (
97
+ " getTypeParameter" ,
98
+ &slang::wgsl::GenericReflection::getTypeParameter,
99
+ allow_raw_pointers ())
100
+ .function (
101
+ " getValueParameter" ,
102
+ &slang::wgsl::GenericReflection::getValueParameter,
103
+ allow_raw_pointers ())
104
+ .function (
105
+ " getInnerDecl" ,
106
+ &slang::wgsl::GenericReflection::getInnerDecl,
107
+ allow_raw_pointers ())
108
+ .function (
109
+ " getOuterGenericContainer" ,
110
+ &slang::wgsl::GenericReflection::getOuterGenericContainer,
111
+ allow_raw_pointers ());
112
+
113
+ enum_<SlangDeclKind>(" SlangDeclKind" )
114
+ .value (
115
+ " SLANG_DECL_KIND_UNSUPPORTED_FOR_REFLECTION" ,
116
+ SlangDeclKind::SLANG_DECL_KIND_UNSUPPORTED_FOR_REFLECTION)
117
+ .value (" SLANG_DECL_KIND_STRUCT" , SlangDeclKind::SLANG_DECL_KIND_STRUCT)
118
+ .value (" SLANG_DECL_KIND_FUNC" , SlangDeclKind::SLANG_DECL_KIND_FUNC)
119
+ .value (" SLANG_DECL_KIND_MODULE" , SlangDeclKind::SLANG_DECL_KIND_MODULE)
120
+ .value (" SLANG_DECL_KIND_GENERIC" , SlangDeclKind::SLANG_DECL_KIND_GENERIC)
121
+ .value (" SLANG_DECL_KIND_VARIABLE" , SlangDeclKind::SLANG_DECL_KIND_VARIABLE)
122
+ .value (" SLANG_DECL_KIND_NAMESPACE" , SlangDeclKind::SLANG_DECL_KIND_NAMESPACE);
123
+
124
+ class_<slang::wgsl::DeclReflection>(" DeclReflection" )
125
+ .function (" getName" , &slang::wgsl::DeclReflection::getName)
126
+ .function (" getChildrenCount" , &slang::wgsl::DeclReflection::getChildrenCount)
127
+ .function (" getKind" , &slang::wgsl::DeclReflection::getKind)
128
+ .function (" getChild" , &slang::wgsl::DeclReflection::getChild, allow_raw_pointers ())
129
+ .function (" getType" , &slang::wgsl::DeclReflection::getType, allow_raw_pointers ())
130
+ .function (" asVariable" , &slang::wgsl::DeclReflection::asVariable, allow_raw_pointers ())
131
+ .function (" asFunction" , &slang::wgsl::DeclReflection::asFunction, allow_raw_pointers ())
132
+ .function (" asGeneric" , &slang::wgsl::DeclReflection::asGeneric, allow_raw_pointers ())
133
+ .function (" getParent" , &slang::wgsl::DeclReflection::getParent, allow_raw_pointers ());
134
+
135
+ enum_<slang::DeclReflection::Kind>(" DeclReflectionKind" )
136
+ .value (" Unsupported" , slang::DeclReflection::Kind::Unsupported)
137
+ .value (" Struct" , slang::DeclReflection::Kind::Struct)
138
+ .value (" Func" , slang::DeclReflection::Kind::Func)
139
+ .value (" Module" , slang::DeclReflection::Kind::Module)
140
+ .value (" Generic" , slang::DeclReflection::Kind::Generic)
141
+ .value (" Variable" , slang::DeclReflection::Kind::Variable)
142
+ .value (" Namespace" , slang::DeclReflection::Kind::Namespace);
143
+
144
+ enum_<slang::TypeReflection::ScalarType>(" ScalarType" )
145
+ .value (" None" , slang::TypeReflection::ScalarType::None)
146
+ .value (" Void" , slang::TypeReflection::ScalarType::Void)
147
+ .value (" Bool" , slang::TypeReflection::ScalarType::Bool)
148
+ .value (" Int32" , slang::TypeReflection::ScalarType::Int32)
149
+ .value (" UInt32" , slang::TypeReflection::ScalarType::UInt32 )
150
+ .value (" Int64" , slang::TypeReflection::ScalarType::Int64)
151
+ .value (" UInt64" , slang::TypeReflection::ScalarType::UInt64 )
152
+ .value (" Float16" , slang::TypeReflection::ScalarType::Float16)
153
+ .value (" Float32" , slang::TypeReflection::ScalarType::Float32 )
154
+ .value (" Float64" , slang::TypeReflection::ScalarType::Float64 )
155
+ .value (" Int8" , slang::TypeReflection::ScalarType::Int8)
156
+ .value (" UInt8" , slang::TypeReflection::ScalarType::UInt8 )
157
+ .value (" Int16" , slang::TypeReflection::ScalarType::Int16)
158
+ .value (" UInt16" , slang::TypeReflection::ScalarType::UInt16 );
159
+
160
+ class_<slang::wgsl::TypeReflection>(" TypeReflection" )
161
+ .function (" getScalarType" , &slang::wgsl::TypeReflection::getScalarType)
162
+ .function (" getKind" , &slang::wgsl::TypeReflection::getKind);
163
+
164
+ enum_<slang::TypeReflection::Kind>(" TypeReflectionKind" )
165
+ .value (" None" , slang::TypeReflection::Kind::None)
166
+ .value (" Struct" , slang::TypeReflection::Kind::Struct)
167
+ .value (" Array" , slang::TypeReflection::Kind::Array)
168
+ .value (" Matrix" , slang::TypeReflection::Kind::Matrix)
169
+ .value (" Vector" , slang::TypeReflection::Kind::Vector)
170
+ .value (" Scalar" , slang::TypeReflection::Kind::Scalar)
171
+ .value (" ConstantBuffer" , slang::TypeReflection::Kind::ConstantBuffer)
172
+ .value (" Resource" , slang::TypeReflection::Kind::Resource)
173
+ .value (" SamplerState" , slang::TypeReflection::Kind::SamplerState)
174
+ .value (" TextureBuffer" , slang::TypeReflection::Kind::TextureBuffer)
175
+ .value (" ShaderStorageBuffer" , slang::TypeReflection::Kind::ShaderStorageBuffer)
176
+ .value (" ParameterBlock" , slang::TypeReflection::Kind::ParameterBlock)
177
+ .value (" GenericTypeParameter" , slang::TypeReflection::Kind::GenericTypeParameter)
178
+ .value (" Interface" , slang::TypeReflection::Kind::Interface)
179
+ .value (" OutputStream" , slang::TypeReflection::Kind::OutputStream)
180
+ .value (" Specialized" , slang::TypeReflection::Kind::Specialized)
181
+ .value (" Feedback" , slang::TypeReflection::Kind::Feedback)
182
+ .value (" Pointer" , slang::TypeReflection::Kind::Pointer)
183
+ .value (" DynamicResource" , slang::TypeReflection::Kind::DynamicResource);
184
+
185
+
186
+ class_<slang::wgsl::UserAttribute>(" UserAttribute" )
187
+ .function (" getName" , &slang::wgsl::UserAttribute::getName)
188
+ .function (" getArgumentCount" , &slang::wgsl::UserAttribute::getArgumentCount)
189
+ .function (
190
+ " getArgumentType" ,
191
+ &slang::wgsl::UserAttribute::getArgumentType,
192
+ allow_raw_pointers ())
193
+ .function (
194
+ " getArgumentValueString" ,
195
+ &slang::wgsl::UserAttribute::getArgumentValueString,
196
+ allow_raw_pointers ())
197
+ .function (
198
+ " getArgumentValueFloat" ,
199
+ &slang::wgsl::UserAttribute::getArgumentValueFloat,
200
+ allow_raw_pointers ());
201
+
202
+ class_<slang::wgsl::FunctionReflection>(" FunctionReflection" )
203
+ .function (" getName" , &slang::wgsl::FunctionReflection::getName)
204
+ .function (" getUserAttributeCount" , &slang::wgsl::FunctionReflection::getUserAttributeCount)
205
+ .function (
206
+ " getUserAttributeByIndex" ,
207
+ &slang::wgsl::FunctionReflection::getUserAttributeByIndex,
208
+ allow_raw_pointers ());
209
+
56
210
class_<slang::wgsl::EntryPointReflection>(" EntryPointReflection" )
57
211
.function (
58
212
" getComputeThreadGroupSize" ,
@@ -77,6 +231,10 @@ EMSCRIPTEN_BINDINGS(slang)
77
231
.function (
78
232
" findEntryPointByName" ,
79
233
&slang::wgsl::ProgramLayout::findEntryPointByName,
234
+ allow_raw_pointers ())
235
+ .function (
236
+ " findFunctionByName" ,
237
+ &slang::wgsl::ProgramLayout::findFunctionByName,
80
238
allow_raw_pointers ());
81
239
82
240
enum_<slang::BindingType>(" BindingType" )
0 commit comments