Replaced all tabs with spaces

This commit is contained in:
Denton Liu 2016-05-11 15:31:02 -04:00
parent 8bbe99ad11
commit bb62a8b3fd

View File

@ -836,56 +836,56 @@ custom types without the overhead of external function calls:
:: ::
library bigint { library bigint {
struct bigint { struct bigint {
uint[] limbs; uint[] limbs;
} }
function fromUint(uint x) internal returns (bigint r) { function fromUint(uint x) internal returns (bigint r) {
r.limbs = new uint[](1); r.limbs = new uint[](1);
r.limbs[0] = x; r.limbs[0] = x;
} }
function add(bigint _a, bigint _b) internal returns (bigint r) { function add(bigint _a, bigint _b) internal returns (bigint r) {
r.limbs = new uint[](max(_a.limbs.length, _b.limbs.length)); r.limbs = new uint[](max(_a.limbs.length, _b.limbs.length));
uint carry = 0; uint carry = 0;
for (uint i = 0; i < r.limbs.length; ++i) { for (uint i = 0; i < r.limbs.length; ++i) {
uint a = limb(_a, i); uint a = limb(_a, i);
uint b = limb(_b, i); uint b = limb(_b, i);
r.limbs[i] = a + b + carry; r.limbs[i] = a + b + carry;
if (a + b < a || (a + b == uint(-1) && carry > 0)) if (a + b < a || (a + b == uint(-1) && carry > 0))
carry = 1; carry = 1;
else else
carry = 0; carry = 0;
} }
if (carry > 0) { if (carry > 0) {
// too bad, we have to add a limb // too bad, we have to add a limb
uint[] memory newLimbs = new uint[](r.limbs.length + 1); uint[] memory newLimbs = new uint[](r.limbs.length + 1);
for (i = 0; i < r.limbs.length; ++i) for (i = 0; i < r.limbs.length; ++i)
newLimbs[i] = r.limbs[i]; newLimbs[i] = r.limbs[i];
newLimbs[i] = carry; newLimbs[i] = carry;
r.limbs = newLimbs; r.limbs = newLimbs;
} }
} }
function limb(bigint _a, uint _limb) internal returns (uint) { function limb(bigint _a, uint _limb) internal returns (uint) {
return _limb < _a.limbs.length ? _a.limbs[_limb] : 0; return _limb < _a.limbs.length ? _a.limbs[_limb] : 0;
} }
function max(uint a, uint b) private returns (uint) { function max(uint a, uint b) private returns (uint) {
return a > b ? a : b; return a > b ? a : b;
} }
} }
contract C { contract C {
using bigint for bigint.bigint; using bigint for bigint.bigint;
function f() { function f() {
var x = bigint.fromUint(7); var x = bigint.fromUint(7);
var y = bigint.fromUint(uint(-1)); var y = bigint.fromUint(uint(-1));
var z = x.add(y); var z = x.add(y);
} }
} }
As the compiler cannot know where the library will be As the compiler cannot know where the library will be
deployed at, these addresses have to be filled into the deployed at, these addresses have to be filled into the