示例#1
0
        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};");
        }
示例#2
0
        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};");
        }