/* Generated By:JJTree: Do not edit this line. SimpleNode.java */

package org.onemind.jxp.parser;

public class SimpleNode implements Node
{
    protected Node parent;
    protected Node[] children;
    protected int id;
    protected JxpParser parser;

    //customized code
    int _dim;
    int _line, _col;
    protected Object _data;

    public SimpleNode(int i)
    {
        id = i;
    }

    public SimpleNode(JxpParser p, int i)
    {
        this(i);
        parser = p;
    }

    public void jjtOpen()
    {
    }

    public void jjtClose()
    {
    }

    public void jjtSetParent(Node n)
    {
        parent = n;
    }
    public Node jjtGetParent()
    {
        return parent;
    }

    public void jjtAddChild(Node n, int i)
    {
        if (children == null)
        {
            children = new Node[i + 1];
        } else if (i >= children.length)
        {
            Node c[] = new Node[i + 1];
            System.arraycopy(children, 0, c, 0, children.length);
            children = c;
        }
        children[i] = n;
    }

    public Node jjtGetChild(int i)
    {
        return children[i];
    }

    public int jjtGetNumChildren()
    {
        return (children == null) ? 0 : children.length;
    }

    /** Accept the visitor. **/
    public Object jjtAccept(JxpParserVisitor visitor, Object data) throws Exception
    {
        return visitor.visit(this, data);
    }

    /** Accept the visitor. **/
    public Object childrenAccept(JxpParserVisitor visitor, Object data) throws Exception
    {
        if (children != null)
        {
            for (int i = 0; i < children.length; ++i)
            {
                children[i].jjtAccept(visitor, data);
            }
        }
        return data;
    }

    /* You can override these two methods in subclasses of SimpleNode to
       customize the way the node appears when the tree is dumped.  If
       your output uses more than one line you should override
       toString(String), otherwise overriding toString() is probably all
       you need to do. */

    public String toString()
    {
        StringBuffer sb = new StringBuffer(JxpParserTreeConstants.jjtNodeName[id]);
        if (_data != null)
        {
            sb.append(": " + _data);
        }
        return sb.toString();
    }
    public String toString(String prefix)
    {
        return prefix + toString();
    }

    /* Override this method if you want to customize how the node dumps
       out its children. */

    public void dump(String prefix)
    {
        System.out.println(toString(prefix) + " - (" + _line + ", " + _col + ")");        
        if (children != null)
        {
            for (int i = 0; i < children.length; ++i)
            {
                SimpleNode n = (SimpleNode) children[i];
                if (n != null)
                {
                    n.dump(prefix + " ");
                }
            }
        }
    }
    /**
     * @return
     */
    public int getCol()
    {
        return _col;
    }

    /**
     * @return
     */
    public Object getData()
    {
        return _data;
    }

    /**
     * @return
     */
    public int getLine()
    {
        return _line;
    }

    /**
     * @param i
     */
    public void setCol(int i)
    {
        _col = i;
    }

    /**
     * @param object
     */
    public void setData(Object object)
    {
        _data = object;
    }

    /**
     * @param i
     */
    public void setLine(int i)
    {
        _line = i;
    }

}
