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 AAttribute extends PAttribute
009{
010    private PAtom _key_;
011    private PAtom _value_;
012
013    public AAttribute()
014    {
015        // Constructor
016    }
017
018    public AAttribute(
019        @SuppressWarnings("hiding") PAtom _key_,
020        @SuppressWarnings("hiding") PAtom _value_)
021    {
022        // Constructor
023        setKey(_key_);
024
025        setValue(_value_);
026
027    }
028
029    @Override
030    public Object clone()
031    {
032        return new AAttribute(
033            cloneNode(this._key_),
034            cloneNode(this._value_));
035    }
036
037    public void apply(Switch sw)
038    {
039        ((Analysis) sw).caseAAttribute(this);
040    }
041
042    public PAtom getKey()
043    {
044        return this._key_;
045    }
046
047    public void setKey(PAtom node)
048    {
049        if(this._key_ != null)
050        {
051            this._key_.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._key_ = node;
065    }
066
067    public PAtom getValue()
068    {
069        return this._value_;
070    }
071
072    public void setValue(PAtom node)
073    {
074        if(this._value_ != null)
075        {
076            this._value_.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._value_ = node;
090    }
091
092    @Override
093    public String toString()
094    {
095        return ""
096            + toString(this._key_)
097            + toString(this._value_);
098    }
099
100    @Override
101    void removeChild(@SuppressWarnings("unused") Node child)
102    {
103        // Remove child
104        if(this._key_ == child)
105        {
106            this._key_ = null;
107            return;
108        }
109
110        if(this._value_ == child)
111        {
112            this._value_ = 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._key_ == oldChild)
124        {
125            setKey((PAtom) newChild);
126            return;
127        }
128
129        if(this._value_ == oldChild)
130        {
131            setValue((PAtom) newChild);
132            return;
133        }
134
135        throw new RuntimeException("Not a child.");
136    }
137}