@@ -13,9 +13,6 @@ library UserConfiguration {
13
13
uint256 internal constant BORROWING_MASK =
14
14
0x5555555555555555555555555555555555555555555555555555555555555555 ;
15
15
16
- uint256 internal constant _maxReserves = 256 ;
17
- uint256 internal constant _indexCount = _maxReserves / 128 + ((_maxReserves % 128 > 0 ) ? 1 : 0 );
18
-
19
16
/**
20
17
* @dev Sets if the user is borrowing the reserve identified by reserveIndex
21
18
* @param self The configuration object
@@ -27,11 +24,9 @@ library UserConfiguration {
27
24
uint256 reserveIndex ,
28
25
bool borrowing
29
26
) internal {
30
- require (reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
31
- uint256 index = reserveIndex / 128 ;
32
- reserveIndex = reserveIndex % 128 ;
33
- self.data[index] =
34
- (self.data[index] & ~ (1 << (reserveIndex * 2 ))) |
27
+ require (reserveIndex < 128 , Errors.UL_INVALID_INDEX);
28
+ self.data =
29
+ (self.data & ~ (1 << (reserveIndex * 2 ))) |
35
30
(uint256 (borrowing ? 1 : 0 ) << (reserveIndex * 2 ));
36
31
}
37
32
@@ -46,11 +41,9 @@ library UserConfiguration {
46
41
uint256 reserveIndex ,
47
42
bool usingAsCollateral
48
43
) internal {
49
- require (reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
50
- uint256 index = reserveIndex / 128 ;
51
- reserveIndex = reserveIndex % 128 ;
52
- self.data[index] =
53
- (self.data[index] & ~ (1 << (reserveIndex * 2 + 1 ))) |
44
+ require (reserveIndex < 128 , Errors.UL_INVALID_INDEX);
45
+ self.data =
46
+ (self.data & ~ (1 << (reserveIndex * 2 + 1 ))) |
54
47
(uint256 (usingAsCollateral ? 1 : 0 ) << (reserveIndex * 2 + 1 ));
55
48
}
56
49
@@ -64,10 +57,8 @@ library UserConfiguration {
64
57
DataTypes.UserConfigurationMap memory self ,
65
58
uint256 reserveIndex
66
59
) internal pure returns (bool ) {
67
- require (reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
68
- uint256 index = reserveIndex / 128 ;
69
- reserveIndex = reserveIndex % 128 ;
70
- return (self.data[index] >> (reserveIndex * 2 )) & 3 != 0 ;
60
+ require (reserveIndex < 128 , Errors.UL_INVALID_INDEX);
61
+ return (self.data >> (reserveIndex * 2 )) & 3 != 0 ;
71
62
}
72
63
73
64
/**
@@ -81,10 +72,8 @@ library UserConfiguration {
81
72
pure
82
73
returns (bool )
83
74
{
84
- require (reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
85
- uint256 index = reserveIndex / 128 ;
86
- reserveIndex = reserveIndex % 128 ;
87
- return (self.data[index] >> (reserveIndex * 2 )) & 1 != 0 ;
75
+ require (reserveIndex < 128 , Errors.UL_INVALID_INDEX);
76
+ return (self.data >> (reserveIndex * 2 )) & 1 != 0 ;
88
77
}
89
78
90
79
/**
@@ -98,10 +87,8 @@ library UserConfiguration {
98
87
pure
99
88
returns (bool )
100
89
{
101
- require (reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
102
- uint256 index = reserveIndex / 128 ;
103
- reserveIndex = reserveIndex % 128 ;
104
- return (self.data[index] >> (reserveIndex * 2 + 1 )) & 1 != 0 ;
90
+ require (reserveIndex < 128 , Errors.UL_INVALID_INDEX);
91
+ return (self.data >> (reserveIndex * 2 + 1 )) & 1 != 0 ;
105
92
}
106
93
107
94
/**
@@ -110,12 +97,7 @@ library UserConfiguration {
110
97
* @return True if the user has been borrowing any reserve, false otherwise
111
98
**/
112
99
function isBorrowingAny (DataTypes.UserConfigurationMap memory self ) internal pure returns (bool ) {
113
- for (uint8 i = 0 ; i < _indexCount; i++ ) {
114
- if (self.data[i] & BORROWING_MASK != 0 ) {
115
- return true ;
116
- }
117
- }
118
- return false ;
100
+ return self.data & BORROWING_MASK != 0 ;
119
101
}
120
102
121
103
/**
@@ -124,11 +106,6 @@ library UserConfiguration {
124
106
* @return True if the user has been borrowing any reserve, false otherwise
125
107
**/
126
108
function isEmpty (DataTypes.UserConfigurationMap memory self ) internal pure returns (bool ) {
127
- for (uint8 i = 0 ; i < _indexCount; i++ ) {
128
- if (self.data[i] != 0 ) {
129
- return false ;
130
- }
131
- }
132
- return true ;
109
+ return self.data == 0 ;
133
110
}
134
111
}
0 commit comments