Home | History | Annotate | Download | only in node
      1 /* This file was generated by SableCC (http://www.sablecc.org/). */
      2 
      3 package com.google.clearsilver.jsilver.syntax.node;
      4 
      5 import java.util.*;
      6 import com.google.clearsilver.jsilver.syntax.analysis.*;
      7 
      8 @SuppressWarnings("nls")
      9 public final class ACallCommand extends PCommand
     10 {
     11     private PPosition _position_;
     12     private final LinkedList<TWord> _macro_ = new LinkedList<TWord>();
     13     private final LinkedList<PExpression> _arguments_ = new LinkedList<PExpression>();
     14 
     15     public ACallCommand()
     16     {
     17         // Constructor
     18     }
     19 
     20     public ACallCommand(
     21         @SuppressWarnings("hiding") PPosition _position_,
     22         @SuppressWarnings("hiding") List<TWord> _macro_,
     23         @SuppressWarnings("hiding") List<PExpression> _arguments_)
     24     {
     25         // Constructor
     26         setPosition(_position_);
     27 
     28         setMacro(_macro_);
     29 
     30         setArguments(_arguments_);
     31 
     32     }
     33 
     34     @Override
     35     public Object clone()
     36     {
     37         return new ACallCommand(
     38             cloneNode(this._position_),
     39             cloneList(this._macro_),
     40             cloneList(this._arguments_));
     41     }
     42 
     43     public void apply(Switch sw)
     44     {
     45         ((Analysis) sw).caseACallCommand(this);
     46     }
     47 
     48     public PPosition getPosition()
     49     {
     50         return this._position_;
     51     }
     52 
     53     public void setPosition(PPosition node)
     54     {
     55         if(this._position_ != null)
     56         {
     57             this._position_.parent(null);
     58         }
     59 
     60         if(node != null)
     61         {
     62             if(node.parent() != null)
     63             {
     64                 node.parent().removeChild(node);
     65             }
     66 
     67             node.parent(this);
     68         }
     69 
     70         this._position_ = node;
     71     }
     72 
     73     public LinkedList<TWord> getMacro()
     74     {
     75         return this._macro_;
     76     }
     77 
     78     public void setMacro(List<TWord> list)
     79     {
     80         this._macro_.clear();
     81         this._macro_.addAll(list);
     82         for(TWord e : list)
     83         {
     84             if(e.parent() != null)
     85             {
     86                 e.parent().removeChild(e);
     87             }
     88 
     89             e.parent(this);
     90         }
     91     }
     92 
     93     public LinkedList<PExpression> getArguments()
     94     {
     95         return this._arguments_;
     96     }
     97 
     98     public void setArguments(List<PExpression> list)
     99     {
    100         this._arguments_.clear();
    101         this._arguments_.addAll(list);
    102         for(PExpression e : list)
    103         {
    104             if(e.parent() != null)
    105             {
    106                 e.parent().removeChild(e);
    107             }
    108 
    109             e.parent(this);
    110         }
    111     }
    112 
    113     @Override
    114     public String toString()
    115     {
    116         return ""
    117             + toString(this._position_)
    118             + toString(this._macro_)
    119             + toString(this._arguments_);
    120     }
    121 
    122     @Override
    123     void removeChild(@SuppressWarnings("unused") Node child)
    124     {
    125         // Remove child
    126         if(this._position_ == child)
    127         {
    128             this._position_ = null;
    129             return;
    130         }
    131 
    132         if(this._macro_.remove(child))
    133         {
    134             return;
    135         }
    136 
    137         if(this._arguments_.remove(child))
    138         {
    139             return;
    140         }
    141 
    142         throw new RuntimeException("Not a child.");
    143     }
    144 
    145     @Override
    146     void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
    147     {
    148         // Replace child
    149         if(this._position_ == oldChild)
    150         {
    151             setPosition((PPosition) newChild);
    152             return;
    153         }
    154 
    155         for(ListIterator<TWord> i = this._macro_.listIterator(); i.hasNext();)
    156         {
    157             if(i.next() == oldChild)
    158             {
    159                 if(newChild != null)
    160                 {
    161                     i.set((TWord) newChild);
    162                     newChild.parent(this);
    163                     oldChild.parent(null);
    164                     return;
    165                 }
    166 
    167                 i.remove();
    168                 oldChild.parent(null);
    169                 return;
    170             }
    171         }
    172 
    173         for(ListIterator<PExpression> i = this._arguments_.listIterator(); i.hasNext();)
    174         {
    175             if(i.next() == oldChild)
    176             {
    177                 if(newChild != null)
    178                 {
    179                     i.set((PExpression) newChild);
    180                     newChild.parent(this);
    181                     oldChild.parent(null);
    182                     return;
    183                 }
    184 
    185                 i.remove();
    186                 oldChild.parent(null);
    187                 return;
    188             }
    189         }
    190 
    191         throw new RuntimeException("Not a child.");
    192     }
    193 }
    194