diff --git a/IStateHolder.sol b/IStateHolder.sol index 8b4b4f3..1b4cd7c 100644 --- a/IStateHolder.sol +++ b/IStateHolder.sol @@ -6,8 +6,8 @@ interface IStateHolder { function getProxy() external view returns (address); function setProxy() external; - function getState(uint256 i) external view returns (string memory name, string memory dataType, bytes memory value); - function getInfo(string calldata varName) external view returns (string memory dataType, bytes memory value, uint256 position); + function toJSON() external view returns(string memory); + function toJSON(uint256 start, uint256 l) external view returns(string memory); function getStateSize() external view returns (uint256); function exists(string calldata varName) external view returns(bool); function getDataType(string calldata varName) external view returns(string memory dataType); diff --git a/MVDFunctionalitiesManager.sol b/MVDFunctionalitiesManager.sol index ad0a621..4648578 100644 --- a/MVDFunctionalitiesManager.sol +++ b/MVDFunctionalitiesManager.sol @@ -24,7 +24,7 @@ contract MVDFunctionalitiesManager is IMVDFunctionalitiesManager, CommonUtilitie uint256 getMinimumBlockNumberSourceLocationId, address getMinimumBlockNumberFunctionalityAddress, uint256 getEmergencyMinimumBlockNumberSourceLocationId, address getEmergencyMinimumBlockNumberFunctionalityAddress, uint256 getEmergencySurveyStakingSourceLocationId, address getEmergencySurveyStakingFunctionalityAddress, - uint256 checkVoteResultSourceLocationId, address checkVoteResultFunctionalityAddress) public override { + uint256 checkVoteResultSourceLocationId, address checkVoteResultFunctionalityAddress) public { if(getMinimumBlockNumberFunctionalityAddress == address(0)) { return; } diff --git a/MVDFunctionalityModelsManager.sol b/MVDFunctionalityModelsManager.sol index bfc853e..6da874b 100644 --- a/MVDFunctionalityModelsManager.sol +++ b/MVDFunctionalityModelsManager.sol @@ -7,7 +7,7 @@ contract MVDFunctionalityModelsManager is IMVDFunctionalityModelsManager { mapping(string => Functionality) private _wellKnownFunctionalityModels; - constructor() public override { + constructor() public { init(); } diff --git a/MVDFunctionalityProposal.sol b/MVDFunctionalityProposal.sol index 2112871..881a8b3 100644 --- a/MVDFunctionalityProposal.sol +++ b/MVDFunctionalityProposal.sol @@ -34,7 +34,7 @@ contract MVDFunctionalityProposal is IMVDFunctionalityProposal, CommonUtilities uint256 private _totalRefuse; constructor(string memory codeName, address location, string memory methodSignature, string memory returnAbiParametersArray, - string memory replaces, address proxy) public override { + string memory replaces, address proxy) public { init(codeName, location, methodSignature, returnAbiParametersArray, replaces, proxy); } diff --git a/MVDProxy.sol b/MVDProxy.sol index 9f18121..3ac563d 100644 --- a/MVDProxy.sol +++ b/MVDProxy.sol @@ -20,7 +20,7 @@ contract MVDProxy is IMVDProxy { address[] private _delegates; - constructor(address votingTokenAddress, address stateHolderAddress, address functionalityModelsManagerAddress, address functionalityProposalManagerAddress, address functionalitiesManagerAddress) public override { + constructor(address votingTokenAddress, address stateHolderAddress, address functionalityModelsManagerAddress, address functionalityProposalManagerAddress, address functionalitiesManagerAddress) public { if(votingTokenAddress == address(0)) { return; } diff --git a/StateHolder.sol b/StateHolder.sol index c7ce354..da796fa 100644 --- a/StateHolder.sol +++ b/StateHolder.sol @@ -27,7 +27,7 @@ contract StateHolder is IStateHolder, CommonUtilities { address private _proxy; uint256 private _stateSize; - constructor() public override { + constructor() public { init(); } @@ -36,23 +36,19 @@ contract StateHolder is IStateHolder, CommonUtilities { _state.push(Var("", DataType.BYTES, "", 0, false)); } - function getState(uint256 i) public override view returns (string memory, string memory, bytes memory) { - uint256 position = 0; - for(uint256 z = 1; z < _state.length; z++) { - Var memory v = _state[z]; - if(v.active && position++ == i) { - return (v.name, toString(v.dataType), v.value); - } - } + function toJSON() public override view returns(string memory) { + return toJSON(0, _state.length - 1); } - function getInfo(string memory varName) public override view returns (string memory dataType, bytes memory value, uint256 position) { - Var memory v = _state[_index[varName]]; - if(v.active) { - dataType = toString(v.dataType); - value = v.value; - position = v.position - 1; + function toJSON(uint256 start, uint256 l) public override view returns(string memory json) { + uint256 length = start + 1 + l; + json = "["; + for(uint256 i = start; i < length; i++) { + json = !_state[i].active ? json : string(abi.encodePacked(json, '{"name":"', _state[i].name, '","type":"', toString(_state[i].dataType), '"}', i == length - (_state[i].active ? 1 : 0) ? "" : ",")); + length += _state[i].active ? 0 : 1; + length = length > _state.length ? _state.length : length; } + json = string(abi.encodePacked(json, ']')); } function getStateSize() public override view returns (uint256) { diff --git a/VotingToken.sol b/VotingToken.sol index 1a619c3..4426740 100644 --- a/VotingToken.sol +++ b/VotingToken.sol @@ -16,7 +16,7 @@ contract VotingToken is IERC20, IVotingToken { string private _name; string private _symbol; - constructor(string memory name, string memory symbol, uint256 decimals, uint256 totalSupply) public override { + constructor(string memory name, string memory symbol, uint256 decimals, uint256 totalSupply) public { if(totalSupply == 0) { return; }