Browse Source

Merge pull request #288 from frangio/refactor/math

Move SafeMath and create Math library for assorted operations
Manuel Aráoz 8 years ago
parent
commit
d5a75362ec

+ 24 - 0
contracts/math/Math.sol

@@ -0,0 +1,24 @@
+pragma solidity ^0.4.11;
+
+/**
+ * @title Math
+ * @dev Assorted math operations
+ */
+
+library Math {
+  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
+    return a >= b ? a : b;
+  }
+
+  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
+    return a < b ? a : b;
+  }
+
+  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
+    return a >= b ? a : b;
+  }
+
+  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
+    return a < b ? a : b;
+  }
+}

+ 2 - 18
contracts/SafeMath.sol → contracts/math/SafeMath.sol

@@ -2,7 +2,8 @@ pragma solidity ^0.4.11;
 
 
 /**
- * Math operations with safety checks
+ * @title SafeMath
+ * @dev Math operations with safety checks that throw on error
  */
 library SafeMath {
   function mul(uint256 a, uint256 b) internal returns (uint256) {
@@ -28,21 +29,4 @@ library SafeMath {
     assert(c >= a);
     return c;
   }
-
-  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
-    return a >= b ? a : b;
-  }
-
-  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
-    return a < b ? a : b;
-  }
-
-  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
-    return a >= b ? a : b;
-  }
-
-  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
-    return a < b ? a : b;
-  }
-
 }

+ 1 - 1
contracts/payment/PullPayment.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.11;
 
 
-import '../SafeMath.sol';
+import '../math/SafeMath.sol';
 
 
 /**

+ 1 - 1
contracts/token/BasicToken.sol

@@ -2,7 +2,7 @@ pragma solidity ^0.4.11;
 
 
 import './ERC20Basic.sol';
-import '../SafeMath.sol';
+import '../math/SafeMath.sol';
 
 
 /**

+ 3 - 2
contracts/token/VestedToken.sol

@@ -1,5 +1,6 @@
 pragma solidity ^0.4.11;
 
+import "../math/Math.sol";
 import "./StandardToken.sol";
 import "./LimitedTransferToken.sol";
 
@@ -121,7 +122,7 @@ contract VestedToken is StandardToken, LimitedTransferToken {
 
     // Return the minimum of how many vested can transfer and other value
     // in case there are other limiting transferability factors (default is balanceOf)
-    return SafeMath.min256(vestedTransferable, super.transferableTokens(holder, time));
+    return Math.min256(vestedTransferable, super.transferableTokens(holder, time));
   }
 
   /**
@@ -241,7 +242,7 @@ contract VestedToken is StandardToken, LimitedTransferToken {
     date = uint64(now);
     uint256 grantIndex = grants[holder].length;
     for (uint256 i = 0; i < grantIndex; i++) {
-      date = SafeMath.max64(grants[holder][i].vesting, date);
+      date = Math.max64(grants[holder][i].vesting, date);
     }
   }
 }

+ 1 - 1
test/helpers/SafeMathMock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.11;
 
 
-import '../../contracts/SafeMath.sol';
+import '../../contracts/math/SafeMath.sol';
 
 
 contract SafeMathMock {