pragma solidity ^0.7.0; contract SimpleStore { struct VaultRegistry { IERC20[] tokens; uint block; uint256 index; } mapping (address => VaultRegistry) private _vaultInfo; address[] private _vaultIndex; function getVaultsForToken(IERC20 _token) public view returns (address[] memory) { uint256 curResults = 0; uint256 numResults = 0; for (uint256 vid = 0; vid < _vaultIndex.length; vid++) { for (uint t = 0; t < _vaultInfo[_vaultIndex[vid]].tokens.length; t++) { if (_vaultInfo[_vaultIndex[vid]].tokens[t] == _token) { numResults++; } } } address[] memory vaultResults = new address[](numResults); for (uint256 vid = 0; vid < _vaultIndex.length; vid++) { for (uint t = 0; t < _vaultInfo[_vaultIndex[vid]].tokens.length; t++) { if (_vaultInfo[_vaultIndex[vid]].tokens[t] == _token) { vaultResults[curResults++] = _vaultIndex[vid]; } } } return vaultResults; } }
0.7.0