Skip to main content

StorageSlot

Git Source

*Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a value member that can be used to read or write. Example usage to set ERC1967 implementation slot:

contract ERC1967 {
bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
function _getImplementation() internal view returns (address) {
return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
}
function _setImplementation(address newImplementation) internal {
require(newImplementation.code.length > 0);
StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
}
}
```*


## Functions
### getAddressSlot

*Returns an `AddressSlot` with member `value` located at `slot`.*


```solidity
function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r);

getBooleanSlot

Returns an BooleanSlot with member value located at slot.

function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r);

getBytes32Slot

Returns an Bytes32Slot with member value located at slot.

function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r);

getUint256Slot

Returns an Uint256Slot with member value located at slot.

function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r);

getStringSlot

Returns an StringSlot with member value located at slot.

function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r);

getStringSlot

Returns an StringSlot representation of the string storage pointer store.

function getStringSlot(string storage store) internal pure returns (StringSlot storage r);

getBytesSlot

Returns an BytesSlot with member value located at slot.

function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r);

getBytesSlot

Returns an BytesSlot representation of the bytes storage pointer store.

function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r);

Structs

AddressSlot

struct AddressSlot {
address value;
}

BooleanSlot

struct BooleanSlot {
bool value;
}

Bytes32Slot

struct Bytes32Slot {
bytes32 value;
}

Uint256Slot

struct Uint256Slot {
uint256 value;
}

StringSlot

struct StringSlot {
string value;
}

BytesSlot

struct BytesSlot {
bytes value;
}