Helpers ​
Constants ​
SESSION_BITS ​
solidity
uint256 private constant SESSION_BITS = 60CURRENT_INDEX_BITS ​
solidity
uint256 private constant CURRENT_INDEX_BITS = 8SESSIONS_PER_WORD ​
solidity
uint256 private constant SESSIONS_PER_WORD = 4BITS_DURATION_MINUTES ​
solidity
uint256 private constant BITS_DURATION_MINUTES = 32BITS_EXTENDED_DURATION_MINUTES ​
solidity
uint256 private constant BITS_EXTENDED_DURATION_MINUTES = 45BITS_SESSION_TYPE ​
solidity
uint256 private constant BITS_SESSION_TYPE = 58MASK_CURRENT_INDEX ​
solidity
uint256 private constant MASK_CURRENT_INDEX = (1 << CURRENT_INDEX_BITS) - 1MASK_DURATION ​
solidity
uint256 private constant MASK_DURATION = (1 << DURATION_BITS) - 1MASK_SESSION ​
solidity
uint256 private constant MASK_SESSION = (1 << SESSION_BITS) - 1Functions ​
_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_);