/// <summary> /// Emits the gate into a code writer. /// </summary> /// <param name="writer"></param> public virtual void Emit(ICodeGateEvaluator writer) { if (Type.IsFixed()) { writer.Append(this.ToString()); return; } Debug.Assert(Type.IsLogical()); var first = true; foreach (var i in this.GetInputs()) { if (first) { first = false; } else { writer.EmitBinaryOperator(Type); } var brackets = i.Type.IsLogical() && Type != i.Type; if (brackets) { writer.Append("("); } i.Emit(writer); if (brackets) { writer.Append(")"); } } }
/// <summary> /// Emits the gate into a code writer. /// </summary> /// <param name="writer"></param> public virtual void Emit(ICodeGateEvaluator writer) { if(Type.IsFixed()) { writer.Append(this.ToString()); return; } Debug.Assert(Type.IsLogical()); var first = true; foreach(var i in this.GetInputs()) { if(first) { first = false; } else { writer.EmitBinaryOperator(Type); } var brackets = i.Type.IsLogical() && Type != i.Type; if(brackets) { writer.Append("("); } i.Emit(writer); if (brackets) { writer.Append(")"); } } }