com.higgschain.trust.evmcontract.util.BIUtil Maven / Gradle / Ivy
/*
* Copyright (c) [2016] [ ]
* This file is part of the ethereumJ library.
*
* The ethereumJ library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The ethereumJ library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the ethereumJ library. If not, see .
*/
package com.higgschain.trust.evmcontract.util;
import com.higgschain.trust.evmcontract.core.Repository;
import java.math.BigInteger;
/**
* The type Bi util.
*/
public class BIUtil {
/**
* Is zero boolean.
*
* @param value - not null
* @return true - if the param is zero
*/
public static boolean isZero(BigInteger value) {
return value.compareTo(BigInteger.ZERO) == 0;
}
/**
* Is equal boolean.
*
* @param valueA - not null
* @param valueB - not null
* @return true - if the valueA is equal to valueB is zero
*/
public static boolean isEqual(BigInteger valueA, BigInteger valueB) {
return valueA.compareTo(valueB) == 0;
}
/**
* Is not equal boolean.
*
* @param valueA - not null
* @param valueB - not null
* @return true - if the valueA is not equal to valueB is zero
*/
public static boolean isNotEqual(BigInteger valueA, BigInteger valueB) {
return !isEqual(valueA, valueB);
}
/**
* Is less than boolean.
*
* @param valueA - not null
* @param valueB - not null
* @return true - if the valueA is less than valueB is zero
*/
public static boolean isLessThan(BigInteger valueA, BigInteger valueB) {
return valueA.compareTo(valueB) < 0;
}
/**
* Is more than boolean.
*
* @param valueA - not null
* @param valueB - not null
* @return true - if the valueA is more than valueB is zero
*/
public static boolean isMoreThan(BigInteger valueA, BigInteger valueB) {
return valueA.compareTo(valueB) > 0;
}
/**
* Sum big integer.
*
* @param valueA - not null
* @param valueB - not null
* @return sum - valueA + valueB
*/
public static BigInteger sum(BigInteger valueA, BigInteger valueB) {
return valueA.add(valueB);
}
/**
* To bi big integer.
*
* @param data = not null
* @return new positive BigInteger
*/
public static BigInteger toBI(byte[] data) {
return new BigInteger(1, data);
}
/**
* To bi big integer.
*
* @param data = not null
* @return new positive BigInteger
*/
public static BigInteger toBI(long data) {
return BigInteger.valueOf(data);
}
/**
* Is positive boolean.
*
* @param value the value
* @return the boolean
*/
public static boolean isPositive(BigInteger value) {
return value.signum() > 0;
}
/**
* Is covers boolean.
*
* @param covers the covers
* @param value the value
* @return the boolean
*/
public static boolean isCovers(BigInteger covers, BigInteger value) {
return !isNotCovers(covers, value);
}
/**
* Is not covers boolean.
*
* @param covers the covers
* @param value the value
* @return the boolean
*/
public static boolean isNotCovers(BigInteger covers, BigInteger value) {
return covers.compareTo(value) < 0;
}
/**
* Transfer.
*
* @param repository the repository
* @param fromAddr the from addr
* @param toAddr the to addr
* @param value the value
*/
public static void transfer(Repository repository, byte[] fromAddr, byte[] toAddr, BigInteger value) {
repository.addBalance(fromAddr, value.negate());
repository.addBalance(toAddr, value);
}
/**
* Exit long boolean.
*
* @param value the value
* @return the boolean
*/
public static boolean exitLong(BigInteger value) {
return (value.compareTo(new BigInteger(Long.MAX_VALUE + ""))) > -1;
}
/**
* Is in 20 percent range boolean.
*
* @param first the first
* @param second the second
* @return the boolean
*/
public static boolean isIn20PercentRange(BigInteger first, BigInteger second) {
BigInteger five = BigInteger.valueOf(5);
BigInteger limit = first.add(first.divide(five));
return !isMoreThan(second, limit);
}
/**
* Max big integer.
*
* @param first the first
* @param second the second
* @return the big integer
*/
public static BigInteger max(BigInteger first, BigInteger second) {
return first.compareTo(second) < 0 ? second : first;
}
/**
* Returns a result of safe addition of two {@code int} values
* {@code Integer.MAX_VALUE} is returned if overflow occurs
*
* @param a the a
* @param b the b
* @return the int
*/
public static int addSafely(int a, int b) {
long res = (long) a + (long) b;
return res > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) res;
}
}