View Javadoc

1   /*
2    * Created on Mar 5, 2004
3    *
4    */
5   package org.codehaus.groovy.runtime;
6   
7   /***
8    * Integer NumberMath operations
9    * 
10   * @author Steve Goetze
11   */
12  public class IntegerMath extends NumberMath {
13  
14  	protected static IntegerMath instance = new IntegerMath();
15  
16  	private IntegerMath() {}
17  					
18  	protected Number absImpl(Number number) {
19  		return new Integer(Math.abs(number.intValue()));
20  	}
21  	
22  	protected Number addImpl(Number left, Number right) {
23  		return new Integer(left.intValue() + right.intValue());
24  	}
25  
26  	protected Number subtractImpl(Number left, Number right) {
27  		return new Integer(left.intValue() - right.intValue());
28  	}
29  
30  	protected Number multiplyImpl(Number left, Number right) {
31  		return new Integer(left.intValue() * right.intValue());
32  	}
33  
34  	protected Number divideImpl(Number left, Number right) {
35  		return BigDecimalMath.instance.divideImpl(left, right);
36  	}
37  	
38  	protected int compareToImpl(Number left, Number right) {
39  		int leftVal = left.intValue();
40  		int rightVal = right.intValue();
41  		return (leftVal<rightVal ? -1 : (leftVal==rightVal ? 0 : 1));
42  	}
43  
44      protected Number orImpl(Number left, Number right) {
45          return new Integer(left.intValue() | right.intValue());
46      }
47  
48      protected Number andImpl(Number left, Number right) {
49          return new Integer(left.intValue() & right.intValue());
50      }
51  
52      protected Number xorImpl(Number left, Number right) {
53          return new Integer(left.intValue() ^ right.intValue());
54      }
55  
56      protected Number intdivImpl(Number left, Number right) {
57          return new Integer(left.intValue() / right.intValue());
58      }
59  	
60      protected Number modImpl(Number left, Number right) {
61          return new Integer(left.intValue() % right.intValue());
62      }
63  
64      protected Number negateImpl(Number left) {
65          return new Integer(-left.intValue());
66      }
67  
68      protected Number bitNegateImpl(Number left) {
69          return new Integer(~left.intValue());
70      }
71  
72      protected Number leftShiftImpl(Number left, Number right) {
73          return new Integer(left.intValue() << right.intValue());
74      }
75  
76      protected Number rightShiftImpl(Number left, Number right) {
77          return new Integer(left.intValue() >> right.intValue());
78      }
79  
80      protected Number rightShiftUnsignedImpl(Number left, Number right) {
81          return new Integer(left.intValue() >>> right.intValue());
82      }
83  }