|
|
|
@ -56,6 +56,9 @@ library Arrays { |
|
|
|
|
*/ |
|
|
|
|
function unsafeAccess(address[] storage arr, uint256 pos) internal pure returns (StorageSlot.AddressSlot storage) { |
|
|
|
|
bytes32 slot; |
|
|
|
|
// We use assembly to calculate the storage slot of the element at index `pos` of the dynamic array `arr` |
|
|
|
|
// following https://docs.soliditylang.org/en/v0.8.17/internals/layout_in_storage.html#mappings-and-dynamic-arrays. |
|
|
|
|
|
|
|
|
|
/// @solidity memory-safe-assembly |
|
|
|
|
assembly { |
|
|
|
|
mstore(0, arr.slot) |
|
|
|
@ -71,6 +74,9 @@ library Arrays { |
|
|
|
|
*/ |
|
|
|
|
function unsafeAccess(bytes32[] storage arr, uint256 pos) internal pure returns (StorageSlot.Bytes32Slot storage) { |
|
|
|
|
bytes32 slot; |
|
|
|
|
// We use assembly to calculate the storage slot of the element at index `pos` of the dynamic array `arr` |
|
|
|
|
// following https://docs.soliditylang.org/en/v0.8.17/internals/layout_in_storage.html#mappings-and-dynamic-arrays. |
|
|
|
|
|
|
|
|
|
/// @solidity memory-safe-assembly |
|
|
|
|
assembly { |
|
|
|
|
mstore(0, arr.slot) |
|
|
|
@ -86,6 +92,9 @@ library Arrays { |
|
|
|
|
*/ |
|
|
|
|
function unsafeAccess(uint256[] storage arr, uint256 pos) internal pure returns (StorageSlot.Uint256Slot storage) { |
|
|
|
|
bytes32 slot; |
|
|
|
|
// We use assembly to calculate the storage slot of the element at index `pos` of the dynamic array `arr` |
|
|
|
|
// following https://docs.soliditylang.org/en/v0.8.17/internals/layout_in_storage.html#mappings-and-dynamic-arrays. |
|
|
|
|
|
|
|
|
|
/// @solidity memory-safe-assembly |
|
|
|
|
assembly { |
|
|
|
|
mstore(0, arr.slot) |
|
|
|
|