1/* This file was generated by SableCC (http://www.sablecc.org/). */
2
3package com.google.clearsilver.jsilver.syntax.node;
4
5import com.google.clearsilver.jsilver.syntax.analysis.*;
6
7@SuppressWarnings("nls")
8public final class ADescendVariable extends PVariable
9{
10    private PVariable _parent_;
11    private PVariable _child_;
12
13    public ADescendVariable()
14    {
15        // Constructor
16    }
17
18    public ADescendVariable(
19        @SuppressWarnings("hiding") PVariable _parent_,
20        @SuppressWarnings("hiding") PVariable _child_)
21    {
22        // Constructor
23        setParent(_parent_);
24
25        setChild(_child_);
26
27    }
28
29    @Override
30    public Object clone()
31    {
32        return new ADescendVariable(
33            cloneNode(this._parent_),
34            cloneNode(this._child_));
35    }
36
37    public void apply(Switch sw)
38    {
39        ((Analysis) sw).caseADescendVariable(this);
40    }
41
42    public PVariable getParent()
43    {
44        return this._parent_;
45    }
46
47    public void setParent(PVariable node)
48    {
49        if(this._parent_ != null)
50        {
51            this._parent_.parent(null);
52        }
53
54        if(node != null)
55        {
56            if(node.parent() != null)
57            {
58                node.parent().removeChild(node);
59            }
60
61            node.parent(this);
62        }
63
64        this._parent_ = node;
65    }
66
67    public PVariable getChild()
68    {
69        return this._child_;
70    }
71
72    public void setChild(PVariable node)
73    {
74        if(this._child_ != null)
75        {
76            this._child_.parent(null);
77        }
78
79        if(node != null)
80        {
81            if(node.parent() != null)
82            {
83                node.parent().removeChild(node);
84            }
85
86            node.parent(this);
87        }
88
89        this._child_ = node;
90    }
91
92    @Override
93    public String toString()
94    {
95        return ""
96            + toString(this._parent_)
97            + toString(this._child_);
98    }
99
100    @Override
101    void removeChild(@SuppressWarnings("unused") Node child)
102    {
103        // Remove child
104        if(this._parent_ == child)
105        {
106            this._parent_ = null;
107            return;
108        }
109
110        if(this._child_ == child)
111        {
112            this._child_ = null;
113            return;
114        }
115
116        throw new RuntimeException("Not a child.");
117    }
118
119    @Override
120    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
121    {
122        // Replace child
123        if(this._parent_ == oldChild)
124        {
125            setParent((PVariable) newChild);
126            return;
127        }
128
129        if(this._child_ == oldChild)
130        {
131            setChild((PVariable) newChild);
132            return;
133        }
134
135        throw new RuntimeException("Not a child.");
136    }
137}
138