public void Compile(CodeBuilder builder) { string varName = builder.PortToVariableName(GetOutputPort("")); var constVal = builder.Constant(value); string type = builder.HoistNamespace(typeof(T)); string constKeyword = constVal.isConstant ? "const " : ""; // If we're declaring something that can be optimized for future operations, track it. if (constVal.isConstant) { builder.AddConstToScope(varName); } builder.AppendLine($"{constKeyword}{type} {varName} = {constVal};"); }
public void Compile(CodeBuilder builder) { var aVar = builder.PortToValue(GetInputPort("A"), a); var bVar = builder.PortToValue(GetInputPort("B"), b); string varName = builder.PortToVariableName(GetOutputPort("")); string constKeyword = (aVar.isConst && bVar.isConst) ? "const " : ""; string returnType = builder.HoistNamespace(typeof(R)); string operation = CompileOperation(aVar.value, bVar.value); // If the operation executes on two constants, also make the operation constant. if (aVar.isConst && bVar.isConst) { builder.AddConstToScope(varName); } builder.AppendLine($"{constKeyword}{returnType} {varName} = {operation};"); }