1 package net.sf.yacas;
2 
3 /** subst behaviour for changing the local variables to have unique
4  * names.
5  */
6 class LocalSymbolBehaviour implements SubstBehaviourBase
7 {
LocalSymbolBehaviour(LispEnvironment aEnvironment, String[] aOriginalNames, String[] aNewNames, int aNrNames)8     public LocalSymbolBehaviour(LispEnvironment aEnvironment,
9                          String[] aOriginalNames,
10                          String[] aNewNames, int aNrNames)
11     {
12       iEnvironment = aEnvironment;
13       iOriginalNames = aOriginalNames;
14       iNewNames = aNewNames;
15       iNrNames = aNrNames;
16     }
17     @Override
Matches(LispPtr aResult, LispPtr aElement)18     public boolean Matches(LispPtr aResult, LispPtr aElement) throws Exception
19     {
20       String name = aElement.Get().String();
21       if (name == null)
22           return false;
23 
24       int i;
25       for (i=0;i<iNrNames;i++)
26       {
27         if (name == iOriginalNames[i])
28         {
29           aResult.Set(LispAtom.New(iEnvironment,iNewNames[i]));
30           return true;
31         }
32       }
33       return false;
34     }
35 
36     LispEnvironment iEnvironment;
37     String[] iOriginalNames;
38     String[] iNewNames;
39     int iNrNames;
40 }
41