LongValue.java revision 9f606f95f03a75961498803e24bee6799a7c0885
1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/* 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of Java bytecode. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59f606f95f03a75961498803e24bee6799a7c0885Ying Wang * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is free software; you can redistribute it and/or modify it 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * under the terms of the GNU General Public License as published by the Free 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Software Foundation; either version 2 of the License, or (at your option) 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * any later version. 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is distributed in the hope that it will be useful, but WITHOUT 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * more details. 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * You should have received a copy of the GNU General Public License along 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * with this program; if not, write to the Free Software Foundation, Inc., 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopackage proguard.evaluation.value; 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.classfile.ClassConstants; 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/** 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This class represents a partially evaluated long value. 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @author Eric Lafortune 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopublic abstract class LongValue extends Category2Value 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the specific long value, if applicable. 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public long value() 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return 0; 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Basic unary methods. 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the negated value of this LongValue. 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract LongValue negate(); 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this LongValue to an IntegerValue. 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract IntegerValue convertToInteger(); 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this LongValue to a FloatValue. 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue convertToFloat(); 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this LongValue to a DoubleValue. 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue convertToDouble(); 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Basic binary methods. 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 68b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the generalization of this LongValue and the given other 69b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue generalize(LongValue other) 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.generalize(this); 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this LongValue and the given LongValue. 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue add(LongValue other) 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.add(this); 82b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 84b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this LongValue and the given LongValue. 86b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue subtract(LongValue other) 88b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.subtractFrom(this); 90b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 92b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given LongValue and this LongValue. 94b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 95b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue subtractFrom(LongValue other) 96b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 97b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.subtract(this); 98b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 99b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 100b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 101b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this LongValue and the given LongValue. 102b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue multiply(LongValue other) 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throws ArithmeticException 105b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 106b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.multiply(this); 107b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 108b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 109b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 110b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this LongValue and the given LongValue. 111b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 112b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue divide(LongValue other) 113b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throws ArithmeticException 114b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 115b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.divideOf(this); 116b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 117b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 118b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 119b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given LongValue and this LongValue. 120b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 121b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue divideOf(LongValue other) 122b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throws ArithmeticException 123b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 124b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.divide(this); 125b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 126b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 127b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 128b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this LongValue divided by the given 129b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 130b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 131b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue remainder(LongValue other) 132b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throws ArithmeticException 133b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 134b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.remainderOf(this); 135b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 136b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 137b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 138b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given LongValue divided by this 139b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 140b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 141b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue remainderOf(LongValue other) 142b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throws ArithmeticException 143b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 144b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.remainder(this); 145b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 146b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 147b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 148b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this LongValue, shifted left by the given IntegerValue. 149b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 150b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue shiftLeft(IntegerValue other) 151b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 152b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.shiftLeftOf(this); 153b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 154b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 155b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 156b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this LongValue, shifted right by the given IntegerValue. 157b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 158b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue shiftRight(IntegerValue other) 159b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 160b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.shiftRightOf(this); 161b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 162b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 163b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 164b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this unsigned LongValue, shifted left by the given 165b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * IntegerValue. 166b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 167b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue unsignedShiftRight(IntegerValue other) 168b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 169b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.unsignedShiftRightOf(this); 170b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 171b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 172b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 173b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>and</i> of this LongValue and the given 174b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 175b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 176b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue and(LongValue other) 177b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 178b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.and(this); 179b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 180b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 181b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 182b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>or</i> of this LongValue and the given 183b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 184b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 185b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue or(LongValue other) 186b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 187b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.or(this); 188b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 189b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 190b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 191b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>xor</i> of this LongValue and the given 192b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 193b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 194b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue xor(LongValue other) 195b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 196b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.xor(this); 197b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 198b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 199b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 200b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this LongValue is 201b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given LongValue, respectively. 202b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 203b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public IntegerValue compare(LongValue other) 204b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 205b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return other.compareReverse(this); 206b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 207b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 208b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 209b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Derived binary methods. 210b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 211b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 212b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value 1, 0, or -1, if this LongValue is 213b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given LongValue, respectively. 214b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 215b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(LongValue other) 216b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 217b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare(other).negate(); 218b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 219b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 220b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 221b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Similar binary methods, but this time with more specific arguments. 222b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 223b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 224b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the generalization of this LongValue and the given other 225b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificLongValue. 226b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 227b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue generalize(SpecificLongValue other) 228b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 229b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 230b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 231b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 232b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 233b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 234b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this LongValue and the given SpecificLongValue. 235b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 236b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue add(SpecificLongValue other) 237b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 238b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 239b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 240b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 241b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 242b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this LongValue and the given SpecificLongValue. 243b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 244b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue subtract(SpecificLongValue other) 245b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 246b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 247b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 248b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 249b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 250b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given SpecificLongValue and this LongValue. 251b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 252b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue subtractFrom(SpecificLongValue other) 253b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 254b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 255b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 256b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 257b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 258b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this LongValue and the given SpecificLongValue. 259b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 260b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue multiply(SpecificLongValue other) 261b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 262b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 263b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 264b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 265b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 266b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this LongValue and the given 267b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificLongValue. 268b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 269b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue divide(SpecificLongValue other) 270b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 271b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 272b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 273b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 274b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 275b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given SpecificLongValue and this 276b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 277b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 278b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue divideOf(SpecificLongValue other) 279b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 280b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 281b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 282b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 283b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 284b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this LongValue divided by the given 285b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificLongValue. 286b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 287b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue remainder(SpecificLongValue other) 288b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 289b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 290b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 291b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 292b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 293b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given SpecificLongValue divided by this 294b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 295b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 296b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue remainderOf(SpecificLongValue other) 297b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 298b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 299b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 300b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 301b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 302b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this LongValue, shifted left by the given SpecificLongValue. 303b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 304b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue shiftLeft(SpecificLongValue other) 305b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 306b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 307b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 308b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 309b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 310b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this LongValue, shifted right by the given SpecificLongValue. 311b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 312b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue shiftRight(SpecificLongValue other) 313b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 314b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 315b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 316b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 317b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 318b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this unsigned LongValue, shifted right by the given 319b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificLongValue. 320b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 321b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue unsignedShiftRight(SpecificLongValue other) 322b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 323b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 324b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 325b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 326b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 327b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>and</i> of this LongValue and the given 328b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificLongValue. 329b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 330b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue and(SpecificLongValue other) 331b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 332b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 333b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 334b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 335b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 336b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>or</i> of this LongValue and the given 337b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificLongValue. 338b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 339b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue or(SpecificLongValue other) 340b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 341b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 342b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 343b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 344b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 345b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>xor</i> of this LongValue and the given 346b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificLongValue. 347b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 348b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue xor(SpecificLongValue other) 349b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 350b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 351b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 352b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 353b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 354b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this LongValue is 355b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given SpecificLongValue, 356b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 357b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 358b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public IntegerValue compare(SpecificLongValue other) 359b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 360b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return new ComparisonValue(this, other); 361b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 362b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 363b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 364b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Derived binary methods. 365b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 366b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 367b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value 1, 0, or -1, if this LongValue is 368b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given SpecificLongValue, 369b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 370b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 371b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(SpecificLongValue other) 372b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 373b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare(other).negate(); 374b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 375b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 376b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 377b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Similar binary methods, but this time with particular arguments. 378b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 379b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 380b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the generalization of this LongValue and the given other 381b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularLongValue. 382b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 383b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue generalize(ParticularLongValue other) 384b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 385b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return generalize((SpecificLongValue)other); 386b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 387b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 388b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 389b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 390b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this LongValue and the given ParticularLongValue. 391b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 392b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue add(ParticularLongValue other) 393b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 394b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return add((SpecificLongValue)other); 395b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 396b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 397b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 398b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this LongValue and the given ParticularLongValue. 399b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 400b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue subtract(ParticularLongValue other) 401b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 402b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtract((SpecificLongValue)other); 403b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 404b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 405b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 406b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given ParticularLongValue and this LongValue. 407b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 408b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue subtractFrom(ParticularLongValue other) 409b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 410b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtractFrom((SpecificLongValue)other); 411b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 412b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 413b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 414b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this LongValue and the given ParticularLongValue. 415b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 416b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue multiply(ParticularLongValue other) 417b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 418b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return multiply((SpecificLongValue)other); 419b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 420b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 421b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 422b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this LongValue and the given 423b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularLongValue. 424b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 425b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue divide(ParticularLongValue other) 426b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 427b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divide((SpecificLongValue)other); 428b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 429b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 430b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 431b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given ParticularLongValue and this 432b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 433b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 434b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue divideOf(ParticularLongValue other) 435b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 436b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divideOf((SpecificLongValue)other); 437b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 438b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 439b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 440b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this LongValue divided by the given 441b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularLongValue. 442b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 443b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue remainder(ParticularLongValue other) 444b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 445b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainder((SpecificLongValue)other); 446b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 447b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 448b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 449b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given ParticularLongValue divided by this 450b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * LongValue. 451b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 452b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue remainderOf(ParticularLongValue other) 453b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 454b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainderOf((SpecificLongValue)other); 455b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 456b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 457b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 458b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this LongValue, shifted left by the given ParticularIntegerValue. 459b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 460b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue shiftLeft(ParticularIntegerValue other) 461b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 462b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return shiftLeft((SpecificIntegerValue)other); 463b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 464b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 465b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 466b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this LongValue, shifted right by the given ParticularIntegerValue. 467b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 468b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue shiftRight(ParticularIntegerValue other) 469b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 470b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return shiftRight((SpecificIntegerValue)other); 471b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 472b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 473b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 474b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns this unsigned LongValue, shifted right by the given 475b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularIntegerValue. 476b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 477b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue unsignedShiftRight(ParticularIntegerValue other) 478b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 479b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return unsignedShiftRight((SpecificIntegerValue)other); 480b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 481b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 482b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 483b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>and</i> of this LongValue and the given 484b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularLongValue. 485b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 486b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue and(ParticularLongValue other) 487b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 488b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return and((SpecificLongValue)other); 489b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 490b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 491b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 492b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>or</i> of this LongValue and the given 493b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularLongValue. 494b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 495b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue or(ParticularLongValue other) 496b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 497b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return or((SpecificLongValue)other); 498b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 499b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 500b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 501b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the logical <i>xor</i> of this LongValue and the given 502b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularLongValue. 503b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 504b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public LongValue xor(ParticularLongValue other) 505b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 506b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return xor((SpecificLongValue)other); 507b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 508b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 509b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 510b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this LongValue is 511b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given ParticularLongValue, 512b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 513b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 514b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public IntegerValue compare(ParticularLongValue other) 515b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 516b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare((SpecificLongValue)other); 517b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 518b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 519b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 520b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Derived binary methods. 521b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 522b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 523b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value 1, 0, or -1, if this LongValue is 524b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given ParticularLongValue, 525b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 526b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 527b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(ParticularLongValue other) 528b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 529b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare(other).negate(); 530b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 531b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 532b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 533b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Implementations for Value. 534b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 535b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final LongValue longValue() 536b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 537b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 538b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 539b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 540b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final Value generalize(Value other) 541b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 542b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this.generalize(other.longValue()); 543b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 544b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 545b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final int computationalType() 546b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 547b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return TYPE_LONG; 548b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 549b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 550b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final String internalType() 551b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 552b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return String.valueOf(ClassConstants.INTERNAL_TYPE_INT); 553b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 554b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 555