private ITypeHLSL MakePseudoArrayElemTypeImpl( TupleTypeHLSL type, EmitValHLSL count ) { int fieldCount = type.GetFieldCount(); TupleTypeHLSL result = new TupleTypeHLSL(type.Name); for (int ff = 0; ff < fieldCount; ++ff) { result.AddField( type.GetFieldName(ff), MakePseudoArrayElemType( type.GetFieldType(ff), count)); } return result; }
/* private EmitValHLSL GetFieldImpl( SimpleValHLSL objVal, IArrayTypeHLSL fieldRep, string fieldName, int fieldIndex, Span span) { return new ArrayValHLSL( string.Format("({0}).{1}", objVal, fieldName), fieldRep); } */ private EmitValHLSL GetFieldImpl( SimpleValHLSL objVal, TupleTypeHLSL fieldRep, string fieldName, int fieldIndex, Span span) { List<EmitValHLSL> fieldFieldVals = new List<EmitValHLSL>(); int fieldFieldCount = fieldRep.GetFieldCount(); for (int ff = 0; ff < fieldFieldCount; ++ff) { var fieldFieldVal = GetField( objVal, fieldRep.GetFieldType(ff), fieldName + fieldRep.GetFieldName(ff), -1, span); fieldFieldVals.Add(fieldFieldVal); } return new TupleValHLSL( fieldRep, fieldFieldVals); }