public void DeclareAndInitLocalImpl( TupleValHLSL local, EmitValHLSL init, Span span) { int fieldCount = local.GetFieldCount(); var aggType = local.AggType; for (int ii = 0; ii < fieldCount; ++ii) { var fieldInit = GetField( init, aggType.GetFieldType(ii), aggType.GetFieldName(ii), ii, span); DeclareAndInitLocal( local.GetFieldVal(ii), fieldInit, span); } }
public IEnumerable<string> DeclareBaseImpl( TupleValHLSL val, string prefix, string semantic, string suffix) { int fieldCount = val.GetFieldCount(); for (int ff = 0; ff < fieldCount; ++ff) { var decls = DeclareBase( val.GetFieldVal(ff), prefix, semantic == null ? null : semantic + val.AggType.GetFieldName(ff), suffix).Eager(); foreach (var d in decls) yield return d; } }
private EmitValHLSL GetFieldImpl( TupleValHLSL objVal, EmitTypeHLSL fieldType, string fieldName, int fieldIndex, Span span) { return objVal.GetFieldVal(fieldIndex); }
public void DeclareAndInitLocalImpl( TupleValHLSL local, TupleValHLSL init, Span span) { int fieldCount = local.GetFieldCount(); if (fieldCount != init.GetFieldCount()) { Diagnostics.Add( Severity.Error, new SourceRange(), "Mismatch between initializer and variable in HLSL emit!"); return; } for (int ii = 0; ii < fieldCount; ++ii) { DeclareAndInitLocal( local.GetFieldVal(ii), init.GetFieldVal(ii), span); } }
private void DeclareLocalImpl( TupleValHLSL val, Span span) { int fieldCount = val.GetFieldCount(); for (int ii = 0; ii < fieldCount; ++ii) { DeclareLocal( val.GetFieldVal(ii), span); } }
private void AssignImpl( SimpleValHLSL dest, TupleValHLSL src, Span span) { int fieldCount = src.GetFieldCount(); var aggType = src.AggType; for (int ii = 0; ii < fieldCount; ++ii) { var destField = GetField( dest, aggType.GetFieldType(ii), aggType.GetFieldName(ii), ii, span); Assign( destField, src.GetFieldVal(ii), span); } }
private void AssignImpl( TupleValHLSL dest, TupleValHLSL src, Span span) { int fieldCount = src.GetFieldCount(); for (int ii = 0; ii < fieldCount; ++ii) { Assign( dest.GetFieldVal(ii), src.GetFieldVal(ii), span); } }
private void AddArgsImpl( TupleValHLSL val, ref bool first, Span span) { int fieldCount = val.GetFieldCount(); for (int ii = 0; ii < fieldCount; ++ii) { AddArgs( val.GetFieldVal(ii), ref first, span); } }
public EmitValHLSL GetElemImpl( TupleValHLSL obj, EmitValHLSL idx) { int fieldCount = obj.GetFieldCount(); EmitValHLSL[] fieldVals = new EmitValHLSL[fieldCount]; TupleTypeHLSL resultType = new TupleTypeHLSL("temp"); for (int ff = 0; ff < fieldCount; ++ff) { fieldVals[ff] = GetElem( obj.GetFieldVal(ff), idx); resultType.AddField( obj.AggType.GetFieldName(ff), fieldVals[ff].Type); } return new TupleValHLSL( resultType, fieldVals); }