001    // Java tool interface class DebugToolTool
002    // This file is generated automatically, please do not edit!
003    // generation time: Jun 10, 2004 3:05:13 PM
004    
005    package nl.cwi.sen1.tide.tool.support;
006    
007    import java.util.HashMap;
008    import java.util.List;
009    import java.util.Map;
010    
011    import toolbus.SwingTool;
012    import aterm.ATerm;
013    import aterm.ATermAppl;
014    import aterm.ATermFactory;
015    import aterm.ATermList;
016    
017    abstract public class DebugToolTool
018      extends SwingTool
019      implements DebugToolTif
020    {
021      // This table will hold the complete input signature
022      private Map<ATerm, Boolean> sigTable = new HashMap<ATerm, Boolean>();
023    
024      //{{{  Patterns that are used to match against incoming terms
025    
026      private ATerm PprocessDestroyed0;
027      private ATerm PadapterDisconnected0;
028      private ATerm Pevent0;
029      private ATerm PprocessCreated0;
030      private ATerm PadapterConnected0;
031      private ATerm PrecAckEvent0;
032      private ATerm PrecTerminate0;
033    
034      //}}}
035    
036      //{{{  protected DebugToolTool(ATermFactory factory)
037    
038      // Mimic the constructor from the AbstractTool class
039      protected DebugToolTool(ATermFactory factory)
040      {
041        super(factory);
042        initSigTable();
043        initPatterns();
044      }
045    
046      //}}}
047    
048      //{{{  private void initSigTable()
049    
050      // This method initializes the table with input signatures
051      private void initSigTable()
052      {
053        sigTable.put(factory.parse("rec-terminate(<tide-control>,<term>)"), new Boolean(true));
054        sigTable.put(factory.parse("rec-ack-event(<debug-tool>,<term>)"), new Boolean(true));
055        sigTable.put(factory.parse("rec-do(<debug-tool>,adapter-connected(<debug-adapter>))"), new Boolean(true));
056        sigTable.put(factory.parse("rec-do(<debug-tool>,adapter-disconnected(<debug-adapter>))"), new Boolean(true));
057        sigTable.put(factory.parse("rec-do(<debug-tool>,process-created(<proc(<debug-adapter>,<int>)>,<str>))"), new Boolean(true));
058        sigTable.put(factory.parse("rec-do(<debug-tool>,process-destroyed(<proc(<debug-adapter>,<int>)>))"), new Boolean(true));
059        sigTable.put(factory.parse("rec-do(<debug-tool>,event(<proc(<debug-adapter>,<int>)>,<int>,<term>))"), new Boolean(true));
060        sigTable.put(factory.parse("rec-terminate(<debug-tool>,<term>)"), new Boolean(true));
061        sigTable.put(factory.parse("rec-eval(<debug-adapter>,evaluate(<int>,<term>))"), new Boolean(true));
062        sigTable.put(factory.parse("rec-eval(<debug-adapter>,create-rule(<int>,<term>,<term>,<term>,<term>,<term>))"), new Boolean(true));
063        sigTable.put(factory.parse("rec-eval(<debug-adapter>,enable-rule(<int>,<int>))"), new Boolean(true));
064        sigTable.put(factory.parse("rec-eval(<debug-adapter>,disable-rule(<int>,<int>))"), new Boolean(true));
065        sigTable.put(factory.parse("rec-eval(<debug-adapter>,modify-rule(<int>,<int>,<term>,<term>,<term>,<term>))"), new Boolean(true));
066        sigTable.put(factory.parse("rec-eval(<debug-adapter>,delete-rule(<int>,<int>))"), new Boolean(true));
067        sigTable.put(factory.parse("rec-ack-event(<debug-adapter>,<term>)"), new Boolean(true));
068        sigTable.put(factory.parse("rec-terminate(<debug-adapter>,<term>)"), new Boolean(true));
069      }
070    
071      //}}}
072      //{{{  private void initPatterns()
073    
074      // Initialize the patterns that are used to match against incoming terms
075      private void initPatterns()
076      {
077        PprocessDestroyed0 = factory.parse("rec-do(process-destroyed(<term>))");
078        PadapterDisconnected0 = factory.parse("rec-do(adapter-disconnected(<term>))");
079        Pevent0 = factory.parse("rec-do(event(<term>,<int>,<term>))");
080        PprocessCreated0 = factory.parse("rec-do(process-created(<term>,<str>))");
081        PadapterConnected0 = factory.parse("rec-do(adapter-connected(<term>))");
082        PrecAckEvent0 = factory.parse("rec-ack-event(<term>)");
083        PrecTerminate0 = factory.parse("rec-terminate(<term>)");
084      }
085    
086      //}}}
087    
088      //{{{  public ATerm handler(ATerm term)
089    
090      // The generic handler calls the specific handlers
091      public ATerm handler(ATerm term)
092      {
093        List<?> result;
094    
095        result = term.match(PprocessDestroyed0);
096        if (result != null) {
097          processDestroyed((ATerm)result.get(0));
098          return null;
099        }
100        result = term.match(PadapterDisconnected0);
101        if (result != null) {
102          adapterDisconnected((ATerm)result.get(0));
103          return null;
104        }
105        result = term.match(Pevent0);
106        if (result != null) {
107          event((ATerm)result.get(0), ((Integer)result.get(1)).intValue(), (ATerm)result.get(2));
108          return null;
109        }
110        result = term.match(PprocessCreated0);
111        if (result != null) {
112          processCreated((ATerm)result.get(0), (String)result.get(1));
113          return null;
114        }
115        result = term.match(PadapterConnected0);
116        if (result != null) {
117          adapterConnected((ATerm)result.get(0));
118          return null;
119        }
120        result = term.match(PrecAckEvent0);
121        if (result != null) {
122          recAckEvent((ATerm)result.get(0));
123          return null;
124        }
125        result = term.match(PrecTerminate0);
126        if (result != null) {
127          recTerminate((ATerm)result.get(0));
128          return null;
129        }
130    
131          notInInputSignature(term);
132        return null;
133      }
134    
135      //}}}
136      //{{{  public void checkInputSignature(ATermList sigs)
137    
138      // Check the input signature
139      public void checkInputSignature(ATermList sigs)
140      {
141        while(!sigs.isEmpty()) {
142          ATermAppl sig = (ATermAppl)sigs.getFirst();
143          sigs = sigs.getNext();
144          if (!sigTable.containsKey(sig)) {
145            // Sorry, but the term is not in the input signature!
146            notInInputSignature(sig);
147          }
148        }
149      }
150    
151      //}}}
152      //{{{  void notInInputSignature(ATerm t)
153    
154      // This function is called when an input term
155      // was not in the input signature.
156      void notInInputSignature(ATerm t)
157      {
158        throw new RuntimeException("term not in input signature: "+t);
159      }
160    
161      //}}}
162    }