forked from DecentralizedClimateFoundation/DCIPs
103 lines
2.6 KiB
Solidity
103 lines
2.6 KiB
Solidity
// SPDX-License-Identifier: CC0-1.0
|
|
pragma solidity ^0.8.7;
|
|
import "./interfaces/IEIP6366Meta.sol";
|
|
import "./interfaces/IEIP6366Error.sol";
|
|
|
|
/**
|
|
* @dev Implement the metadata of EIP-6366
|
|
*/
|
|
contract EIP6366Meta is IEIP6366Meta {
|
|
/**
|
|
* @dev Name of permission token
|
|
*/
|
|
string private tname;
|
|
|
|
/**
|
|
* @dev Symbol of permission token
|
|
*/
|
|
string private tsymbol;
|
|
|
|
/**
|
|
* @dev Mapping permission value to permission's name
|
|
*/
|
|
mapping(uint256 => string) private permissionNames;
|
|
|
|
/**
|
|
* @dev Mapping permission value to permission's description
|
|
*/
|
|
mapping(uint256 => string) private permissionDescriptions;
|
|
|
|
/**
|
|
* @dev Constructor of permission token
|
|
*/
|
|
constructor(string memory _name, string memory _symbol) {
|
|
tname = _name;
|
|
tsymbol = _symbol;
|
|
}
|
|
|
|
/**
|
|
* Get the name of permission token
|
|
*/
|
|
function name() external view virtual override returns (string memory) {
|
|
return tname;
|
|
}
|
|
|
|
/**
|
|
* Get symbol of permission token
|
|
*/
|
|
function symbol() external view virtual override returns (string memory) {
|
|
return tsymbol;
|
|
}
|
|
|
|
/**
|
|
* @dev Get permission's description by value
|
|
* @param _permission Value of the permission
|
|
*/
|
|
function getDescription(
|
|
uint256 _permission
|
|
)
|
|
external
|
|
view
|
|
virtual
|
|
override
|
|
returns (PermissionDescription memory description)
|
|
{
|
|
return _getDescription(_permission);
|
|
}
|
|
|
|
/**
|
|
* @dev Set the description of given permission
|
|
* @param _permission Value of the permission
|
|
* @param _name Name of the permission
|
|
* @param _description Description of the permission
|
|
*/
|
|
function setDescription(
|
|
uint256 _permission,
|
|
string memory _name,
|
|
string memory _description
|
|
) external virtual override returns (bool) {
|
|
// This method is empty, you should override this in your implement
|
|
}
|
|
|
|
function _getDescription(
|
|
uint256 _permission
|
|
) internal view returns (PermissionDescription memory description) {
|
|
return
|
|
PermissionDescription({
|
|
permission: _permission,
|
|
name: permissionNames[_permission],
|
|
description: permissionDescriptions[_permission]
|
|
});
|
|
}
|
|
|
|
function _setDescription(
|
|
uint256 _permission,
|
|
string memory _name,
|
|
string memory _description
|
|
) internal returns (bool success) {
|
|
permissionNames[_permission] = _name;
|
|
permissionDescriptions[_permission] = _description;
|
|
return true;
|
|
}
|
|
}
|