Make router domains enumerable (#1460)
* Make router domains enumerable * Fix tests * Make routers fn backwards compatible * Add external domains fnpull/1479/head
parent
40a145d988
commit
d0f14c1b88
@ -0,0 +1,72 @@ |
||||
// SPDX-License-Identifier: MIT OR Apache-2.0 |
||||
pragma solidity >=0.6.11; |
||||
|
||||
// ============ External Imports ============ |
||||
import "@openzeppelin/contracts/utils/structs/EnumerableMap.sol"; |
||||
|
||||
// extends EnumerableMap with uint256 => bytes32 type |
||||
// modelled after https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.0/contracts/utils/structs/EnumerableMap.sol |
||||
library EnumerableMapExtended { |
||||
using EnumerableMap for EnumerableMap.Bytes32ToBytes32Map; |
||||
|
||||
struct UintToBytes32Map { |
||||
EnumerableMap.Bytes32ToBytes32Map _inner; |
||||
} |
||||
|
||||
// ============ Library Functions ============ |
||||
function keys(UintToBytes32Map storage map) |
||||
internal |
||||
view |
||||
returns (bytes32[] storage) |
||||
{ |
||||
return map._inner._keys._inner._values; |
||||
} |
||||
|
||||
function set( |
||||
UintToBytes32Map storage map, |
||||
uint256 key, |
||||
bytes32 value |
||||
) internal { |
||||
map._inner.set(bytes32(key), value); |
||||
} |
||||
|
||||
function get(UintToBytes32Map storage map, uint256 key) |
||||
internal |
||||
view |
||||
returns (bytes32) |
||||
{ |
||||
return map._inner.get(bytes32(key)); |
||||
} |
||||
|
||||
function remove(UintToBytes32Map storage map, uint256 key) |
||||
internal |
||||
returns (bool) |
||||
{ |
||||
return map._inner.remove(bytes32(key)); |
||||
} |
||||
|
||||
function contains(UintToBytes32Map storage map, uint256 key) |
||||
internal |
||||
view |
||||
returns (bool) |
||||
{ |
||||
return map._inner.contains(bytes32(key)); |
||||
} |
||||
|
||||
function length(UintToBytes32Map storage map) |
||||
internal |
||||
view |
||||
returns (uint256) |
||||
{ |
||||
return map._inner.length(); |
||||
} |
||||
|
||||
function at(UintToBytes32Map storage map, uint256 index) |
||||
internal |
||||
view |
||||
returns (uint256, bytes32) |
||||
{ |
||||
(bytes32 key, bytes32 value) = map._inner.at(index); |
||||
return (uint256(key), value); |
||||
} |
||||
} |
Loading…
Reference in new issue