EnumerableSet
Title: EnumerableSet
Author: Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol)
Generic enumerable sets with O(1) add, remove, contains, length, at. Backed by an array plus a 1-based index map (swap-and-pop on removal).
Storage layout, error semantics, and method names match OpenZeppelin's
utils/structs/EnumerableSet.sol. No own ERC-7201 slot — Set is held
inline in the consumer's storage.
Functions
_add
function _add(Set storage set, bytes32 value) private returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Set | |
| value | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
_remove
function _remove(Set storage set, bytes32 value) private returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Set | |
| value | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
_contains
function _contains(Set storage set, bytes32 value) private view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Set | |
| value | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
_length
function _length(Set storage set) private view returns (uint256);Parameters
| Name | Type | Description |
|---|---|---|
| set | Set |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | uint256 |
_at
function _at(Set storage set, uint256 index) private view returns (bytes32);Parameters
| Name | Type | Description |
|---|---|---|
| set | Set | |
| index | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bytes32 |
_values
function _values(Set storage set) private view returns (bytes32[] memory);Parameters
| Name | Type | Description |
|---|---|---|
| set | Set |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bytes32[] |
add
function add(Bytes32Set storage set, bytes32 value) internal returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes32Set | |
| value | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
remove
function remove(Bytes32Set storage set, bytes32 value) internal returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes32Set | |
| value | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
contains
function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes32Set | |
| value | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
length
function length(Bytes32Set storage set) internal view returns (uint256);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes32Set |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | uint256 |
at
function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes32Set | |
| index | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bytes32 |
values
function values(Bytes32Set storage set) internal view returns (bytes32[] memory);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes32Set |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bytes32[] |
add
function add(AddressSet storage set, address value) internal returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | AddressSet | |
| value | address |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
remove
function remove(AddressSet storage set, address value) internal returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | AddressSet | |
| value | address |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
contains
function contains(AddressSet storage set, address value) internal view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | AddressSet | |
| value | address |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
length
function length(AddressSet storage set) internal view returns (uint256);Parameters
| Name | Type | Description |
|---|---|---|
| set | AddressSet |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | uint256 |
at
function at(AddressSet storage set, uint256 index) internal view returns (address);Parameters
| Name | Type | Description |
|---|---|---|
| set | AddressSet | |
| index | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | address |
values
function values(AddressSet storage set) internal view returns (address[] memory result);Parameters
| Name | Type | Description |
|---|---|---|
| set | AddressSet |
Returns
| Name | Type | Description |
|---|---|---|
| result | address[] |
add
function add(UintSet storage set, uint256 value) internal returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | UintSet | |
| value | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
remove
function remove(UintSet storage set, uint256 value) internal returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | UintSet | |
| value | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
contains
function contains(UintSet storage set, uint256 value) internal view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | UintSet | |
| value | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
length
function length(UintSet storage set) internal view returns (uint256);Parameters
| Name | Type | Description |
|---|---|---|
| set | UintSet |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | uint256 |
at
function at(UintSet storage set, uint256 index) internal view returns (uint256);Parameters
| Name | Type | Description |
|---|---|---|
| set | UintSet | |
| index | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | uint256 |
values
function values(UintSet storage set) internal view returns (uint256[] memory result);Parameters
| Name | Type | Description |
|---|---|---|
| set | UintSet |
Returns
| Name | Type | Description |
|---|---|---|
| result | uint256[] |
add
function add(Bytes4Set storage set, bytes4 value) internal returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes4Set | |
| value | bytes4 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
remove
function remove(Bytes4Set storage set, bytes4 value) internal returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes4Set | |
| value | bytes4 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
contains
function contains(Bytes4Set storage set, bytes4 value) internal view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes4Set | |
| value | bytes4 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
length
function length(Bytes4Set storage set) internal view returns (uint256);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes4Set |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | uint256 |
at
function at(Bytes4Set storage set, uint256 index) internal view returns (bytes4);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes4Set | |
| index | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bytes4 |
values
function values(Bytes4Set storage set) internal view returns (bytes4[] memory result);Parameters
| Name | Type | Description |
|---|---|---|
| set | Bytes4Set |
Returns
| Name | Type | Description |
|---|---|---|
| result | bytes4[] |
Structs
Set
struct Set {
bytes32[] _values;
mapping(bytes32 value => uint256 position) _positions; // 1-based; 0 = absent
}Properties
| Name | Type | Description |
|---|---|---|
| _values | bytes32[] | |
| _positions | mapping(bytes32 value => uint256 position) |
AddressSet
struct AddressSet {
Set _inner;
}Properties
| Name | Type | Description |
|---|---|---|
| _inner | Set |
Bytes32Set
struct Bytes32Set {
Set _inner;
}Properties
| Name | Type | Description |
|---|---|---|
| _inner | Set |
UintSet
struct UintSet {
Set _inner;
}Properties
| Name | Type | Description |
|---|---|---|
| _inner | Set |
Bytes4Set
struct Bytes4Set {
bytes4[] _values;
mapping(bytes4 value => uint256 position) _positions;
}Properties
| Name | Type | Description |
|---|---|---|
| _values | bytes4[] | |
| _positions | mapping(bytes4 value => uint256 position) |