diff --git a/contracts/HitchensUnorderedAddressSet.sol b/contracts/HitchensUnorderedAddressSet.sol index 7408c9e..bf73670 100644 --- a/contracts/HitchensUnorderedAddressSet.sol +++ b/contracts/HitchensUnorderedAddressSet.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.6.0; +pragma solidity ^0.8.4; /* Hitchens UnorderedAddressSet v0.93 @@ -31,7 +31,11 @@ SOFTWARE. THIS SOFTWARE IS NOT TESTED OR AUDITED. DO NOT USE FOR PRODUCTION. */ -library HitchensUnorderedAddressSetLib { +library HitchensUnorderedAddressSetLib { + + error UnorderedKeySet100AddressCannotBe0x0(); + error UnorderedAddressSet101AddressAlreadyExistsInSet(); + error UnorderedKeySet102AddressDoesNotExistInSet(); struct Set { mapping(address => uint) keyPointers; @@ -39,14 +43,20 @@ library HitchensUnorderedAddressSetLib { } function insert(Set storage self, address key) internal { - require(key != address(0), "UnorderedKeySet(100) - Key cannot be 0x0"); - require(!exists(self, key), "UnorderedAddressSet(101) - Address (key) already exists in the set."); + if(key == address(0)) { + revert UnorderedKeySet100AddressCannotBe0x0(); + } + if(exists(self, key)) { + revert UnorderedAddressSet101AddressAlreadyExistsInSet(); + } self.keyList.push(key); self.keyPointers[key] = self.keyList.length - 1; } function remove(Set storage self, address key) internal { - require(exists(self, key), "UnorderedKeySet(102) - Address (key) does not exist in the set."); + if(!exists(self, key)) { + revert UnorderedKeySet102AddressDoesNotExistInSet(); + } address keyToMove = self.keyList[count(self)-1]; uint rowToReplace = self.keyPointers[key]; self.keyPointers[keyToMove] = rowToReplace; @@ -67,5 +77,4 @@ library HitchensUnorderedAddressSetLib { function keyAtIndex(Set storage self, uint index) internal view returns(address) { return self.keyList[index]; } -} - +} \ No newline at end of file diff --git a/contracts/HitchensUnorderedKeySet.sol b/contracts/HitchensUnorderedKeySet.sol index 05b8fb8..7814da2 100644 --- a/contracts/HitchensUnorderedKeySet.sol +++ b/contracts/HitchensUnorderedKeySet.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.6.0; +pragma solidity ^0.8.4; /* Hitchens UnorderedKeySet v0.93 @@ -33,20 +33,30 @@ THIS SOFTWARE IS NOT TESTED OR AUDITED. DO NOT USE FOR PRODUCTION. library HitchensUnorderedKeySetLib { + error UnorderedKeySet100KeyCannotBe0x0(); + error UnorderedKeySet101KeyAlreadyExistsInSet(); + error UnorderedKeySet102KeyDoesNotExistInSet(); + struct Set { mapping(bytes32 => uint) keyPointers; bytes32[] keyList; } function insert(Set storage self, bytes32 key) internal { - require(key != 0x0, "UnorderedKeySet(100) - Key cannot be 0x0"); - require(!exists(self, key), "UnorderedKeySet(101) - Key already exists in the set."); + if(key == 0x0) { + revert UnorderedKeySet100KeyCannotBe0x0(); + } + if(exists(self, key)) { + revert UnorderedKeySet101KeyAlreadyExistsInSet(); + } self.keyList.push(key); self.keyPointers[key] = self.keyList.length - 1; } function remove(Set storage self, bytes32 key) internal { - require(exists(self, key), "UnorderedKeySet(102) - Key does not exist in the set."); + if(!exists(self, key)) { + revert UnorderedKeySet102KeyDoesNotExistInSet(); + } bytes32 keyToMove = self.keyList[count(self)-1]; uint rowToReplace = self.keyPointers[key]; self.keyPointers[keyToMove] = rowToReplace; @@ -101,4 +111,8 @@ contract HitchensUnorderedKeySet { function keyAtIndex(uint index) public view returns(bytes32) { return set.keyAtIndex(index); } -} + + function stringToBytes(string memory _string) external pure returns (bytes32) { + return keccak256(abi.encode(_string)); + } +} \ No newline at end of file