3 using SiliconStudio.Shaders.Visitor;
5 namespace SiliconStudio.Shaders.Ast.Hlsl
13 var newType = genericTemplateType.DeepClone();
15 var genericParameters = ((
IGenerics)genericTemplateType).GenericParameters;
16 var genericArguments = ((
IGenerics)newType).GenericArguments;
17 var genericInstanceParameters = genericType.Parameters;
19 var genericParameterTypes =
new TypeBase[genericParameters.Count];
20 var genericBaseParameterTypes =
new TypeBase[genericParameters.Count];
23 for (
int i = 0; i < genericInstanceParameters.Count; i++)
25 var genericInstanceParameter = genericInstanceParameters[i];
26 if (genericInstanceParameter is
TypeBase)
28 var genericInstanceParameterType = (TypeBase)genericInstanceParameter;
29 genericParameterTypes[i] = genericInstanceParameterType;
30 genericBaseParameterTypes[i] = TypeBase.GetBaseType(genericInstanceParameterType);
31 genericParameters[i] = genericParameterTypes[i];
32 genericArguments.Add(genericInstanceParameterType);
42 if (typeInferencer != null && typeInferencer.TypeInference.Declaration is
GenericDeclaration)
45 var i = genericDeclaration.Index;
46 var targeType = genericDeclaration.IsUsingBase ? genericBaseParameterTypes[i] : genericParameterTypes[i];
49 return targeType.ResolveType();
A generic declaration. This is used internally to identify a generic declaration. ...
An interface used by generic definitions and instance.
IDeclaration Declaration
Gets or sets the declaration.
static TypeBase MakeGenericInstance(this GenericType genericType, TypeBase genericTemplateType)
Base class for all generic types.
TypeInference TypeInference
Gets or sets the reference.
A tag interface for an object referencing a type.