001/* This file was generated by SableCC (http://www.sablecc.org/). */
002
003package org.anarres.graphviz.parser.node;
004
005import org.anarres.graphviz.parser.analysis.*;
006
007@SuppressWarnings("nls")
008public final class APortNode extends PNode
009{
010    private PAtom _name_;
011    private PAtom _port_;
012
013    public APortNode()
014    {
015        // Constructor
016    }
017
018    public APortNode(
019        @SuppressWarnings("hiding") PAtom _name_,
020        @SuppressWarnings("hiding") PAtom _port_)
021    {
022        // Constructor
023        setName(_name_);
024
025        setPort(_port_);
026
027    }
028
029    @Override
030    public Object clone()
031    {
032        return new APortNode(
033            cloneNode(this._name_),
034            cloneNode(this._port_));
035    }
036
037    public void apply(Switch sw)
038    {
039        ((Analysis) sw).caseAPortNode(this);
040    }
041
042    public PAtom getName()
043    {
044        return this._name_;
045    }
046
047    public void setName(PAtom node)
048    {
049        if(this._name_ != null)
050        {
051            this._name_.parent(null);
052        }
053
054        if(node != null)
055        {
056            if(node.parent() != null)
057            {
058                node.parent().removeChild(node);
059            }
060
061            node.parent(this);
062        }
063
064        this._name_ = node;
065    }
066
067    public PAtom getPort()
068    {
069        return this._port_;
070    }
071
072    public void setPort(PAtom node)
073    {
074        if(this._port_ != null)
075        {
076            this._port_.parent(null);
077        }
078
079        if(node != null)
080        {
081            if(node.parent() != null)
082            {
083                node.parent().removeChild(node);
084            }
085
086            node.parent(this);
087        }
088
089        this._port_ = node;
090    }
091
092    @Override
093    public String toString()
094    {
095        return ""
096            + toString(this._name_)
097            + toString(this._port_);
098    }
099
100    @Override
101    void removeChild(@SuppressWarnings("unused") Node child)
102    {
103        // Remove child
104        if(this._name_ == child)
105        {
106            this._name_ = null;
107            return;
108        }
109
110        if(this._port_ == child)
111        {
112            this._port_ = 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._name_ == oldChild)
124        {
125            setName((PAtom) newChild);
126            return;
127        }
128
129        if(this._port_ == oldChild)
130        {
131            setPort((PAtom) newChild);
132            return;
133        }
134
135        throw new RuntimeException("Not a child.");
136    }
137}