public void PreEmitExpImpl( MidIfExp exp, Span span) { PreEmitExp(exp.Condition, span); PreEmitExp(exp.Then, span); PreEmitExp(exp.Else, span); }
private EmitValHLSL EmitExpImpl(MidIfExp exp, Span span) { var condition = EmitExp(exp.Condition, span); bool isVoid = exp.Type is MidVoidType; ITypeHLSL expType = VoidVal.Type; EmitValHLSL temp = VoidVal; if (!isVoid) { expType = EmitType(exp.Type); temp = expType.CreateVal( _shared.GenerateName("_if")); DeclareLocal(temp, span); } span.WriteLine("if ({0})", condition); span.WriteLine("{"); var thenVal = EmitExp(exp.Then, span.IndentSpan()); if (!isVoid) { Assign(temp, thenVal, span.IndentSpan()); } span.WriteLine("}"); span.WriteLine("else"); span.WriteLine("{"); var elseVal = EmitExp(exp.Else, span.IndentSpan()); if (!isVoid) { Assign(temp, elseVal, span.IndentSpan()); } span.WriteLine("}"); return temp; }
private void TransformChildrenImpl( MidIfExp exp) { exp.Condition = Transform(exp.Condition); exp.Then = Transform(exp.Then); exp.Else = Transform(exp.Else); }