156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson/* This file was generated by SableCC (http://www.sablecc.org/). */
256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonpackage com.google.clearsilver.jsilver.syntax.node;
456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonimport com.google.clearsilver.jsilver.syntax.analysis.*;
656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson@SuppressWarnings("nls")
856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonpublic final class ADescendVariable extends PVariable
956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson{
1056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    private PVariable _parent_;
1156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    private PVariable _child_;
1256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
1356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public ADescendVariable()
1456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
1556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        // Constructor
1656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
1756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
1856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public ADescendVariable(
1956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        @SuppressWarnings("hiding") PVariable _parent_,
2056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        @SuppressWarnings("hiding") PVariable _child_)
2156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
2256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        // Constructor
2356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        setParent(_parent_);
2456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
2556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        setChild(_child_);
2656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
2756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
2856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
2956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    @Override
3056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public Object clone()
3156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
3256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        return new ADescendVariable(
3356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            cloneNode(this._parent_),
3456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            cloneNode(this._child_));
3556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
3656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
3756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public void apply(Switch sw)
3856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
3956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        ((Analysis) sw).caseADescendVariable(this);
4056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
4156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
4256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public PVariable getParent()
4356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
4456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        return this._parent_;
4556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
4656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
4756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public void setParent(PVariable node)
4856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
4956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        if(this._parent_ != null)
5056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        {
5156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            this._parent_.parent(null);
5256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        }
5356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
5456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        if(node != null)
5556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        {
5656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            if(node.parent() != null)
5756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            {
5856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson                node.parent().removeChild(node);
5956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            }
6056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
6156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            node.parent(this);
6256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        }
6356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
6456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        this._parent_ = node;
6556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
6656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
6756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public PVariable getChild()
6856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
6956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        return this._child_;
7056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
7156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
7256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public void setChild(PVariable node)
7356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
7456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        if(this._child_ != null)
7556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        {
7656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            this._child_.parent(null);
7756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        }
7856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
7956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        if(node != null)
8056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        {
8156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            if(node.parent() != null)
8256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            {
8356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson                node.parent().removeChild(node);
8456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            }
8556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
8656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            node.parent(this);
8756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        }
8856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
8956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        this._child_ = node;
9056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
9156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
9256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    @Override
9356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    public String toString()
9456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
9556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        return ""
9656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            + toString(this._parent_)
9756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            + toString(this._child_);
9856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
9956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
10056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    @Override
10156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    void removeChild(@SuppressWarnings("unused") Node child)
10256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
10356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        // Remove child
10456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        if(this._parent_ == child)
10556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        {
10656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            this._parent_ = null;
10756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            return;
10856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        }
10956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
11056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        if(this._child_ == child)
11156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        {
11256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            this._child_ = null;
11356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            return;
11456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        }
11556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
11656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        throw new RuntimeException("Not a child.");
11756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
11856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
11956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    @Override
12056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
12156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    {
12256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        // Replace child
12356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        if(this._parent_ == oldChild)
12456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        {
12556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            setParent((PVariable) newChild);
12656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            return;
12756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        }
12856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
12956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        if(this._child_ == oldChild)
13056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        {
13156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            setChild((PVariable) newChild);
13256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson            return;
13356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        }
13456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson
13556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson        throw new RuntimeException("Not a child.");
13656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson    }
13756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson}
138