001    // Java tool interface class TideControlTool
002    // This file is generated automatically, please do not edit!
003    // generation time: Feb 20, 2007 2:36:36 PM
004    
005    package nl.cwi.sen1.tide;
006    
007    import java.util.HashSet;
008    import java.util.List;
009    import java.util.Set;
010    
011    import toolbus.AbstractTool;
012    
013    import aterm.ATerm;
014    import aterm.ATermAppl;
015    import aterm.ATermFactory;
016    import aterm.ATermList;
017    
018    abstract public class TideControlTool
019      extends AbstractTool
020      implements TideControlTif
021    {
022      // This table will hold the complete input signature
023      private Set<ATerm> sigTable = new HashSet<ATerm>();
024    
025      // Patterns that are used to match against incoming terms
026      private ATerm PrecTerminate0;
027    
028      // Mimic the constructor from the AbstractTool class
029      protected TideControlTool(ATermFactory factory)
030      {
031        super(factory);
032        initSigTable();
033        initPatterns();
034      }
035    
036      // This method initializes the table with input signatures
037      private void initSigTable()
038      {
039        sigTable.add(factory.parse("rec-terminate(<tide-control>,<term>)"));
040        sigTable.add(factory.parse("rec-ack-event(<debug-tool>,<term>)"));
041        sigTable.add(factory.parse("rec-do(<debug-tool>,adapter-connected(<debug-adapter>))"));
042        sigTable.add(factory.parse("rec-do(<debug-tool>,adapter-disconnected(<debug-adapter>))"));
043        sigTable.add(factory.parse("rec-do(<debug-tool>,process-created(<proc(<debug-adapter>,<int>)>,<str>))"));
044        sigTable.add(factory.parse("rec-do(<debug-tool>,process-destroyed(<proc(<debug-adapter>,<int>)>))"));
045        sigTable.add(factory.parse("rec-do(<debug-tool>,event(<proc(<debug-adapter>,<int>)>,<int>,<term>))"));
046        sigTable.add(factory.parse("rec-terminate(<debug-tool>,<term>)"));
047        sigTable.add(factory.parse("rec-eval(<debug-adapter>,evaluate(<int>,<term>))"));
048        sigTable.add(factory.parse("rec-eval(<debug-adapter>,create-rule(<int>,<term>,<term>,<term>,<term>,<term>))"));
049        sigTable.add(factory.parse("rec-eval(<debug-adapter>,enable-rule(<int>,<int>))"));
050        sigTable.add(factory.parse("rec-eval(<debug-adapter>,disable-rule(<int>,<int>))"));
051        sigTable.add(factory.parse("rec-eval(<debug-adapter>,modify-rule(<int>,<int>,<term>,<term>,<term>,<term>))"));
052        sigTable.add(factory.parse("rec-eval(<debug-adapter>,delete-rule(<int>,<int>))"));
053        sigTable.add(factory.parse("rec-ack-event(<debug-adapter>,<term>)"));
054        sigTable.add(factory.parse("rec-terminate(<debug-adapter>,<term>)"));
055      }
056    
057      // Initialize the patterns that are used to match against incoming terms
058      private void initPatterns()
059      {
060        PrecTerminate0 = factory.parse("rec-terminate(<term>)");
061      }
062    
063      // The generic handler calls the specific handlers
064      public ATerm handler(ATerm term)
065      {
066        List<?> result;
067    
068        result = term.match(PrecTerminate0);
069        if (result != null) {
070          recTerminate((ATerm)result.get(0));
071          return null;
072        }
073    
074        notInInputSignature(term);
075        return null;
076      }
077    
078      // Check the input signature
079      public void checkInputSignature(ATermList sigs)
080      {
081        while(!sigs.isEmpty()) {
082          ATermAppl sig = (ATermAppl)sigs.getFirst();
083          sigs = sigs.getNext();
084          if (!sigTable.contains(sig)) {
085            // Sorry, but the term is not in the input signature!
086            notInInputSignature(sig);
087          }
088        }
089      }
090    
091      // This function is called when an input term
092      // was not in the input signature.
093      void notInInputSignature(ATerm t)
094      {
095        throw new RuntimeException("term not in input signature: " + t);
096      }
097    }