diff options
author | chriseth <chris@ethereum.org> | 2017-05-19 23:55:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-19 23:55:33 +0800 |
commit | 56424bb2026ab484470b5e0e6f1ddb2ab3c7ac85 (patch) | |
tree | 4ba6d697307c932957f7fe95d3d6b80797030e00 /libsolidity/interface/ABI.h | |
parent | 20125c18ba6bd8876b24d988dd299e309fda8c83 (diff) | |
parent | bbef2cd4a8c4dd3ad0d1e16d6070a88a5f83fcc6 (diff) | |
download | dexon-solidity-56424bb2026ab484470b5e0e6f1ddb2ab3c7ac85.tar.gz dexon-solidity-56424bb2026ab484470b5e0e6f1ddb2ab3c7ac85.tar.zst dexon-solidity-56424bb2026ab484470b5e0e6f1ddb2ab3c7ac85.zip |
Merge pull request #2262 from ethereum/interface-cleanup
Cleanup the external interfaces (ABI and Natspec)
Diffstat (limited to 'libsolidity/interface/ABI.h')
-rw-r--r-- | libsolidity/interface/ABI.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/libsolidity/interface/ABI.h b/libsolidity/interface/ABI.h new file mode 100644 index 00000000..95b162a9 --- /dev/null +++ b/libsolidity/interface/ABI.h @@ -0,0 +1,56 @@ +/* + This file is part of solidity. + + solidity is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + solidity is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with solidity. If not, see <http://www.gnu.org/licenses/>. +*/ +/** + * Utilities to handle the Contract ABI (https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI) + */ + +#pragma once + +#include <string> +#include <memory> +#include <json/json.h> + +namespace dev +{ +namespace solidity +{ + +// Forward declarations +class ContractDefinition; +class Type; +using TypePointer = std::shared_ptr<Type const>; + +class ABI +{ +public: + /// Get the ABI Interface of the contract + /// @param _contractDef The contract definition + /// @return A JSONrepresentation of the contract's ABI Interface + static Json::Value generate(ContractDefinition const& _contractDef); +private: + /// @returns a json value suitable for a list of types in function input or output + /// parameters or other places. If @a _forLibrary is true, complex types are referenced + /// by name, otherwise they are anonymously expanded. + static Json::Value formatTypeList( + std::vector<std::string> const& _names, + std::vector<TypePointer> const& _types, + bool _forLibrary + ); +}; + +} +} |