KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lsmp > djep > groupJep > function > GMod


1 /* @author rich
2  * Created on 05-Mar-2004
3  *
4  * This code is covered by a Creative Commons
5  * Attribution, Non Commercial, Share Alike license
6  * <a HREF="http://creativecommons.org/licenses/by-nc-sa/1.0">License</a>
7  */

8 package org.lsmp.djep.groupJep.function;
9 import org.nfunk.jep.function.*;
10 import org.lsmp.djep.groupJep.*;
11 import org.lsmp.djep.groupJep.interfaces.*;
12
13 import java.util.*;
14 import org.nfunk.jep.*;
15 /**
16  * @author Rich Morris
17  * Created on 05-Mar-2004
18  */

19 public class GMod extends PostfixMathCommand {
20     private HasModI group=null;
21     /**
22      *
23      */

24     private GMod() { }
25     public GMod(GroupI group)
26     {
27         numberOfParameters = 2;
28         if(group instanceof HasModI)
29             this.group = (HasModI) group;
30     }
31
32     /**
33      * Calculates the result of applying the "+" operator to the arguments from
34      * the stack and pushes it back on the stack.
35      */

36     public void run(Stack stack) throws ParseException {
37         checkStack(stack);// check the stack
38
Object JavaDoc sum = stack.pop();
39         Object JavaDoc param;
40         param = stack.pop();
41         sum = mod(param, sum);
42         stack.push(sum);
43         return;
44     }
45
46     public Object JavaDoc mod(Object JavaDoc param1, Object JavaDoc param2) throws ParseException {
47         if(group==null) throw new ParseException("Modulus not implemented for this group.");
48         if (param1 instanceof Number JavaDoc) {
49             if (param2 instanceof Number JavaDoc) {
50                 return group.mod((Number JavaDoc)param1, (Number JavaDoc)param2);
51             }
52         }
53         
54         throw new ParseException("Invalid parameter type");
55     }
56 }
57
Popular Tags