Пример #1
0
        /// <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(")");
                }
            }
        }
Пример #2
0
        /// <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(")");
                }
            }
        }