Skip to content

Helpers ​

Git Source

Inherits:Structs, Variables

Constants ​

SESSION_BITS ​

solidity
uint256 private constant SESSION_BITS = 60

CURRENT_INDEX_BITS ​

solidity
uint256 private constant CURRENT_INDEX_BITS = 8

SESSIONS_PER_WORD ​

solidity
uint256 private constant SESSIONS_PER_WORD = 4

BITS_DURATION_MINUTES ​

solidity
uint256 private constant BITS_DURATION_MINUTES = 32

BITS_EXTENDED_DURATION_MINUTES ​

solidity
uint256 private constant BITS_EXTENDED_DURATION_MINUTES = 45

BITS_SESSION_TYPE ​

solidity
uint256 private constant BITS_SESSION_TYPE = 58

MASK_CURRENT_INDEX ​

solidity
uint256 private constant MASK_CURRENT_INDEX = (1 << CURRENT_INDEX_BITS) - 1

MASK_DURATION ​

solidity
uint256 private constant MASK_DURATION = (1 << DURATION_BITS) - 1

MASK_SESSION ​

solidity
uint256 private constant MASK_SESSION = (1 << SESSION_BITS) - 1

Functions ​

_packSession ​

Packs a session into 60 bits.

solidity
function _packSession(Session calldata s_) internal pure returns (uint256 packed_);

_unpackSession ​

Unpacks a 60-bit session word.

solidity
function _unpackSession(uint256 packed_) internal pure returns (Session memory s_);

_currentIndex ​

Reads currentIndex from _sessionData0.

solidity
function _currentIndex(uint256 data0_) internal pure returns (uint256);

_setCurrentIndex ​

Writes currentIndex into _sessionData0.

solidity
function _setCurrentIndex(uint256 data0_, uint256 index_) internal pure returns (uint256);

_loadSession ​

Loads session at index_ from the two packed words.

solidity
function _loadSession(uint256 data0_, uint256 data1_, uint256 index_) internal pure returns (Session memory);

_isStoredSession ​

Whether s_ is identical to a stored session (unused zero slots never match a validated entry).

solidity
function _isStoredSession(uint256 data0_, uint256 data1_, Session calldata s_) internal pure returns (bool);

_getSession ​

Like _loadSession, but sloads _sessionData1 only when index_ >= 4.

solidity
function _getSession(uint256 data0_, uint256 data1_, bool data1Loaded_, uint256 index_)
    internal
    view
    returns (uint256, bool, Session memory);

_storeSessions ​

Packs sessions into _sessionData0 / _sessionData1 (index bits cleared).

solidity
function _storeSessions(Session[] calldata sessions_) internal pure returns (uint256 data0_, uint256 data1_);