From f3a0a6a463f71e6e70bc2f1bfad5689cfe64c6a5 Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Tue, 25 Sep 2018 17:51:28 -0300 Subject: [PATCH] convert ERC721Full, ERC721Enumerable, ERC721Metadata to initializers --- contracts/mocks/ERC721FullMock.sol | 10 ++++++---- contracts/token/ERC721/ERC721Enumerable.sol | 8 ++++++-- contracts/token/ERC721/ERC721Full.sol | 9 +++++++-- contracts/token/ERC721/ERC721Metadata.sol | 8 ++++++-- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/contracts/mocks/ERC721FullMock.sol b/contracts/mocks/ERC721FullMock.sol index e3f79b08f..d6ae649e5 100644 --- a/contracts/mocks/ERC721FullMock.sol +++ b/contracts/mocks/ERC721FullMock.sol @@ -1,5 +1,6 @@ pragma solidity ^0.4.24; +import "../Initializable.sol"; import "../token/ERC721/ERC721Full.sol"; import "../token/ERC721/ERC721Mintable.sol"; import "../token/ERC721/ERC721Burnable.sol"; @@ -10,11 +11,12 @@ import "../token/ERC721/ERC721Burnable.sol"; * This mock just provides a public mint and burn functions for testing purposes, * and a public setter for metadata URI */ -contract ERC721FullMock is ERC721Full, ERC721Mintable, ERC721Burnable { +contract ERC721FullMock is Initializable, ERC721Full, ERC721Mintable, ERC721Burnable { constructor(string name, string symbol) public - ERC721Mintable() - ERC721Full(name, symbol) - {} + { + ERC721Full.initialize(name, symbol); + ERC721Mintable.initialize(); + } function exists(uint256 tokenId) public view returns (bool) { return _exists(tokenId); diff --git a/contracts/token/ERC721/ERC721Enumerable.sol b/contracts/token/ERC721/ERC721Enumerable.sol index a4cceed20..429b785c5 100644 --- a/contracts/token/ERC721/ERC721Enumerable.sol +++ b/contracts/token/ERC721/ERC721Enumerable.sol @@ -1,11 +1,12 @@ pragma solidity ^0.4.24; +import "../../Initializable.sol"; import "./IERC721Enumerable.sol"; import "./ERC721.sol"; import "../../introspection/ERC165.sol"; -contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable { +contract ERC721Enumerable is Initializable, ERC165, ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => uint256[]) private _ownedTokens; @@ -29,7 +30,10 @@ contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable { /** * @dev Constructor function */ - constructor() public { + function initialize() public initializer { + ERC165.initialize(); + ERC721.initialize(); + // register the supported interface to conform to ERC721 via ERC165 _registerInterface(_InterfaceId_ERC721Enumerable); } diff --git a/contracts/token/ERC721/ERC721Full.sol b/contracts/token/ERC721/ERC721Full.sol index 6492a8ca1..8fdce51e9 100644 --- a/contracts/token/ERC721/ERC721Full.sol +++ b/contracts/token/ERC721/ERC721Full.sol @@ -1,5 +1,6 @@ pragma solidity ^0.4.24; +import "../../Initializable.sol"; import "./ERC721.sol"; import "./ERC721Enumerable.sol"; import "./ERC721Metadata.sol"; @@ -11,9 +12,13 @@ import "./ERC721Metadata.sol"; * Moreover, it includes approve all functionality using operator terminology * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md */ -contract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata { - constructor(string name, string symbol) ERC721Metadata(name, symbol) +contract ERC721Full is Initializable, ERC721, ERC721Enumerable, ERC721Metadata { + function initialize(string name, string symbol) public + initializer { + ERC721.initialize(); + ERC721Enumerable.initialize(); + ERC721Metadata.initialize(name, symbol); } } diff --git a/contracts/token/ERC721/ERC721Metadata.sol b/contracts/token/ERC721/ERC721Metadata.sol index b4f1da3ab..a1a9fd1ef 100644 --- a/contracts/token/ERC721/ERC721Metadata.sol +++ b/contracts/token/ERC721/ERC721Metadata.sol @@ -1,11 +1,12 @@ pragma solidity ^0.4.24; +import "../../Initializable.sol"; import "./ERC721.sol"; import "./IERC721Metadata.sol"; import "../../introspection/ERC165.sol"; -contract ERC721Metadata is ERC165, ERC721, IERC721Metadata { +contract ERC721Metadata is Initializable, ERC165, ERC721, IERC721Metadata { // Token name string internal _name; @@ -26,7 +27,10 @@ contract ERC721Metadata is ERC165, ERC721, IERC721Metadata { /** * @dev Constructor function */ - constructor(string name, string symbol) public { + function initialize(string name, string symbol) public initializer { + ERC165.initialize(); + ERC721.initialize(); + _name = name; _symbol = symbol;