AddressImpl.sol 983 B

1234567891011121314151617181920212223242526272829303132
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.7.0;
  3. import "../utils/Address.sol";
  4. contract AddressImpl {
  5. event CallReturnValue(string data);
  6. function isContract(address account) external view returns (bool) {
  7. return Address.isContract(account);
  8. }
  9. function sendValue(address payable receiver, uint256 amount) external {
  10. Address.sendValue(receiver, amount);
  11. }
  12. function functionCall(address target, bytes calldata data) external {
  13. bytes memory returnData = Address.functionCall(target, data);
  14. emit CallReturnValue(abi.decode(returnData, (string)));
  15. }
  16. function functionCallWithValue(address target, bytes calldata data, uint256 value) external payable {
  17. bytes memory returnData = Address.functionCallWithValue(target, data, value);
  18. emit CallReturnValue(abi.decode(returnData, (string)));
  19. }
  20. // sendValue's tests require the contract to hold Ether
  21. receive () external payable { }
  22. }