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