Skip to content

Commit

Permalink
Tidy
Browse files Browse the repository at this point in the history
  • Loading branch information
Vectorized committed Jul 19, 2023
1 parent 148508b commit 3be530d
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 19 deletions.
26 changes: 13 additions & 13 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -658,35 +658,35 @@ MulticallableTest:testMulticallableRevertWithNothing() (gas: 10155)
MulticallableTest:testMulticallableWithNoData() (gas: 6322)
MulticallableTest:test__codesize() (gas: 9792)
OwnableRolesTest:testBytecodeSize() (gas: 350635)
OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 256, μ: 37349, ~: 40582)
OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 256, μ: 19960, ~: 12198)
OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 256, μ: 37738, ~: 40582)
OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 256, μ: 19629, ~: 12198)
OwnableRolesTest:testGrantRoles() (gas: 36122)
OwnableRolesTest:testHandoverOwnership() (gas: 32342)
OwnableRolesTest:testHandoverOwnership(address) (runs: 256, μ: 32400, ~: 32386)
OwnableRolesTest:testHandoverOwnershipAfterExpiration() (gas: 36930)
OwnableRolesTest:testHandoverOwnershipBeforeExpiration() (gas: 28667)
OwnableRolesTest:testHandoverOwnershipRevertsIfCompleteIsNotOwner() (gas: 35585)
OwnableRolesTest:testHandoverOwnershipWithCancellation() (gas: 30715)
OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 256, μ: 33539, ~: 33537)
OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 256, μ: 32399, ~: 33332)
OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 256, μ: 33335, ~: 33333)
OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 256, μ: 32195, ~: 33128)
OwnableRolesTest:testInitializeOwnerDirect() (gas: 16724)
OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 256, μ: 17452, ~: 11530)
OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 256, μ: 17368, ~: 11530)
OwnableRolesTest:testOnlyOwnerOrRolesModifier() (gas: 36582)
OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 256, μ: 54775, ~: 58495)
OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 256, μ: 52900, ~: 57912)
OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 256, μ: 55223, ~: 58382)
OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 256, μ: 54520, ~: 58495)
OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 256, μ: 53070, ~: 57912)
OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 256, μ: 55379, ~: 58382)
OwnableRolesTest:testOrdinalsFromRoles() (gas: 3610415)
OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 256, μ: 70158, ~: 37339)
OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 256, μ: 71981, ~: 36972)
OwnableRolesTest:testOwnershipHandoverValidForDefaultValue() (gas: 5825)
OwnableRolesTest:testRenounceOwnership() (gas: 12899)
OwnableRolesTest:testRolesFromOrdinals() (gas: 651259)
OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 256, μ: 78088, ~: 74221)
OwnableRolesTest:testSetOwnerDirect() (gas: 17776)
OwnableRolesTest:testSetOwnerDirect(address) (runs: 256, μ: 17901, ~: 17901)
OwnableRolesTest:testSetRolesDirect(uint256) (runs: 256, μ: 99826, ~: 99819)
OwnableRolesTest:testSetOwnerDirect(address) (runs: 256, μ: 17882, ~: 17901)
OwnableRolesTest:testSetRolesDirect(uint256) (runs: 256, μ: 99846, ~: 99819)
OwnableRolesTest:testTransferOwnership() (gas: 19657)
OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 256, μ: 13920, ~: 13095)
OwnableRolesTest:test__codesize() (gas: 23704)
OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 256, μ: 13945, ~: 13095)
OwnableRolesTest:test__codesize() (gas: 23706)
OwnableTest:testBytecodeSize() (gas: 235158)
OwnableTest:testHandoverOwnership() (gas: 32072)
OwnableTest:testHandoverOwnership(address) (runs: 256, μ: 32092, ~: 32081)
Expand Down
26 changes: 20 additions & 6 deletions src/auth/OwnableRoles.sol
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ abstract contract OwnableRoles is Ownable {

/// @dev Overwrite the roles directly without authorization guard.
function _setRoles(address user, uint256 roles) internal virtual {
// Compute the role slot.
/// @solidity memory-safe-assembly
assembly {
mstore(0x0c, _ROLE_SLOT_SEED)
mstore(0x00, user)
Expand All @@ -57,7 +57,7 @@ abstract contract OwnableRoles is Ownable {
/// If `on` is true, each set bit of `roles` will be turned on,
/// otherwise, each set bit of `roles` will be turned off.
function _updateRoles(address user, uint256 roles, bool on) internal virtual {
// Compute the role slot.
/// @solidity memory-safe-assembly
assembly {
mstore(0x0c, _ROLE_SLOT_SEED)
mstore(0x00, user)
Expand Down Expand Up @@ -232,13 +232,27 @@ abstract contract OwnableRoles is Ownable {
}

/// @dev Returns whether `user` has any of `roles`.
function hasAnyRole(address user, uint256 roles) public view virtual returns (bool) {
return rolesOf(user) & roles != 0;
function hasAnyRole(address user, uint256 roles) public view virtual returns (bool result) {
/// @solidity memory-safe-assembly
assembly {
// Compute the role slot.
mstore(0x0c, _ROLE_SLOT_SEED)
mstore(0x00, user)
// `rolesOf(user) & roles != 0`.
result := iszero(iszero(and(sload(keccak256(0x0c, 0x20)), roles)))
}
}

/// @dev Returns whether `user` has all of `roles`.
function hasAllRoles(address user, uint256 roles) public view virtual returns (bool) {
return rolesOf(user) & roles == roles;
function hasAllRoles(address user, uint256 roles) public view virtual returns (bool result) {
/// @solidity memory-safe-assembly
assembly {
// Compute the role slot.
mstore(0x0c, _ROLE_SLOT_SEED)
mstore(0x00, user)
// `rolesOf(user) & roles == roles`.
result := eq(and(sload(keccak256(0x0c, 0x20)), roles), roles)
}
}

/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
Expand Down

0 comments on commit 3be530d

Please sign in to comment.