001/* This file was generated by SableCC (http://www.sablecc.org/). */
002
003package org.anarres.graphviz.parser.node;
004
005import java.util.*;
006
007@SuppressWarnings("nls")
008public abstract class Node implements Switchable, Cloneable
009{
010    private Node parent;
011
012    @Override
013    public abstract Object clone();
014
015    public Node parent()
016    {
017        return this.parent;
018    }
019
020    void parent(@SuppressWarnings("hiding") Node parent)
021    {
022        this.parent = parent;
023    }
024
025    abstract void removeChild(Node child);
026    abstract void replaceChild(Node oldChild, Node newChild);
027
028    public void replaceBy(Node node)
029    {
030        this.parent.replaceChild(this, node);
031    }
032
033    protected String toString(Node node)
034    {
035        if(node != null)
036        {
037            return node.toString();
038        }
039
040        return "";
041    }
042
043    protected String toString(List list)
044    {
045        StringBuffer s = new StringBuffer();
046
047        for(Iterator i = list.iterator(); i.hasNext();)
048        {
049            s.append(i.next());
050        }
051
052        return s.toString();
053    }
054
055    @SuppressWarnings("unchecked")
056    protected <T extends Node> T cloneNode(T node)
057    {
058        if(node != null)
059        {
060            return (T) node.clone();
061        }
062
063        return null;
064    }
065
066    protected <T> List<T> cloneList(List<T> list)
067    {
068        List<T> clone = new LinkedList<T>();
069
070        for(T n : list)
071        {
072            clone.add(n);
073        }
074
075        return clone;
076    }
077}