Extend Checkpoints with new sizes and lookup mechanisms (#3589)
This commit is contained in:
76
scripts/generate/templates/CheckpointsMock.js
Executable file
76
scripts/generate/templates/CheckpointsMock.js
Executable file
@ -0,0 +1,76 @@
|
||||
const format = require('../format-lines');
|
||||
|
||||
const VALUE_SIZES = [ 224, 160 ];
|
||||
|
||||
const header = `\
|
||||
pragma solidity ^0.8.0;
|
||||
|
||||
import "../utils/Checkpoints.sol";
|
||||
`;
|
||||
|
||||
const legacy = () => `\
|
||||
contract CheckpointsMock {
|
||||
using Checkpoints for Checkpoints.History;
|
||||
|
||||
Checkpoints.History private _totalCheckpoints;
|
||||
|
||||
function latest() public view returns (uint256) {
|
||||
return _totalCheckpoints.latest();
|
||||
}
|
||||
|
||||
function push(uint256 value) public returns (uint256, uint256) {
|
||||
return _totalCheckpoints.push(value);
|
||||
}
|
||||
|
||||
function getAtBlock(uint256 blockNumber) public view returns (uint256) {
|
||||
return _totalCheckpoints.getAtBlock(blockNumber);
|
||||
}
|
||||
|
||||
function getAtRecentBlock(uint256 blockNumber) public view returns (uint256) {
|
||||
return _totalCheckpoints.getAtRecentBlock(blockNumber);
|
||||
}
|
||||
|
||||
function length() public view returns (uint256) {
|
||||
return _totalCheckpoints._checkpoints.length;
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const checkpoint = length => `\
|
||||
contract Checkpoints${length}Mock {
|
||||
using Checkpoints for Checkpoints.Trace${length};
|
||||
|
||||
Checkpoints.Trace${length} private _totalCheckpoints;
|
||||
|
||||
function latest() public view returns (uint${length}) {
|
||||
return _totalCheckpoints.latest();
|
||||
}
|
||||
|
||||
function push(uint${256 - length} key, uint${length} value) public returns (uint${length}, uint${length}) {
|
||||
return _totalCheckpoints.push(key, value);
|
||||
}
|
||||
|
||||
function lowerLookup(uint${256 - length} key) public view returns (uint${length}) {
|
||||
return _totalCheckpoints.lowerLookup(key);
|
||||
}
|
||||
|
||||
function upperLookup(uint${256 - length} key) public view returns (uint${length}) {
|
||||
return _totalCheckpoints.upperLookup(key);
|
||||
}
|
||||
|
||||
function upperLookupRecent(uint${256 - length} key) public view returns (uint224) {
|
||||
return _totalCheckpoints.upperLookupRecent(key);
|
||||
}
|
||||
|
||||
function length() public view returns (uint256) {
|
||||
return _totalCheckpoints._checkpoints.length;
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
// GENERATE
|
||||
module.exports = format(
|
||||
header,
|
||||
legacy(),
|
||||
...VALUE_SIZES.map(checkpoint),
|
||||
);
|
||||
Reference in New Issue
Block a user