Counter.sol 873 B

123456789101112131415161718192021222324
  1. pragma solidity ^0.5.0;
  2. /**
  3. * @title Counter
  4. * @author Matt Condon (@shrugs)
  5. * @dev Provides an incrementing uint256 id acquired by the `Counter#next` getter.
  6. * Use this for issuing ERC721 ids or keeping track of request ids, anything you want, really.
  7. *
  8. * Include with `using Counter for Counter.Counter;`
  9. * @notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity.
  10. * Does not protect from overflows, but if you have 2^256 ids, you have other problems.
  11. * (But actually, it's generally impossible to increment a counter this many times, energy wise
  12. * so it's not something you have to worry about.)
  13. */
  14. library Counter {
  15. struct Counter {
  16. uint256 current; // default: 0
  17. }
  18. function next(Counter storage index) internal returns (uint256) {
  19. index.current += 1;
  20. return index.current;
  21. }
  22. }