001    package org.jaga.reproduction.booleanFormulas.nodes;
002    
003    
004    /**
005     * TODO: Complete these comments.
006     *
007     * <p><u>Project:</u> JAGA - Java API for Genetic Algorithms.</p>
008     *
009     * <p><u>Company:</u> University College London and JAGA.Org
010     *    (<a href="http://www.jaga.org" target="_blank">http://www.jaga.org</a>).
011     * </p>
012     *
013     * <p><u>Copyright:</u> (c) 2004 by G. Paperin.<br/>
014     *    This program is free software; you can redistribute it and/or modify
015     *    it under the terms of the GNU General Public License as published by
016     *    the Free Software Foundation, ONLY if you include a note of the original
017     *    author(s) in any redistributed/modified copy.<br/>
018     *    This program is distributed in the hope that it will be useful,
019     *    but WITHOUT ANY WARRANTY; without even the implied warranty of
020     *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
021     *    GNU General Public License for more details.<br/>
022     *    You should have received a copy of the GNU General Public License
023     *    along with this program; if not, write to the Free Software
024     *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
025     *    or see http://www.gnu.org/licenses/gpl.html</p>
026     *
027     * @author Greg Paperin (greg@jaga.org)
028     *
029     * @version JAGA public release 1.0 beta
030     */
031    
032    public class IFNode extends TertiaryOperatorNode {
033    
034            public IFNode() {}
035    
036            public boolean evaluate(boolean [] parameters) {
037                    BooleanFormulaTreeNode x = getChild(0);
038                    BooleanFormulaTreeNode y = getChild(1);
039                    BooleanFormulaTreeNode z = getChild(2);
040                    if (x.evaluate(parameters))
041                            return y.evaluate(parameters);
042                    else
043                            return z.evaluate(parameters);
044            }
045    
046            public String getOperatorName() {
047                    return "IF";
048            }
049    
050            public StringBuffer toStringBuffer(boolean infix) {
051                    String name = getOperatorName();
052                    if (infix) {
053                            StringBuffer s = new StringBuffer(name);
054                            s.append(" (");
055                            s.append(getChild(0).toStringBuffer(infix));
056                            s.append(") THEN (");
057                            s.append(getChild(1).toStringBuffer(infix));
058                            s.append(") ELSE (");
059                            s.append(getChild(2).toStringBuffer(infix));
060                            s.append(")");
061                            return s;
062                    } else {  // must be prefix
063                            StringBuffer s = new StringBuffer(name);
064                            s.append("(");
065                            s.append(getChild(0).toStringBuffer(infix));
066                            s.append(", ");
067                            s.append(getChild(1).toStringBuffer(infix));
068                            s.append(", ");
069                            s.append(getChild(2).toStringBuffer(infix));
070                            s.append(")");
071                            return s;
072                    }
073            }
074    
075    }