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