diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-05-10 17:54:23 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2017-05-19 23:11:03 +0800 |
commit | 12328b784875bad30156a2c66912652f89fa8222 (patch) | |
tree | 629e9c5ad054dae8dd83ce862d6efaeecccf7571 /libsolidity/interface/ABI.h | |
parent | 4bf3cbb09a42131dba27b080a4917f30284959d3 (diff) | |
download | dexon-solidity-12328b784875bad30156a2c66912652f89fa8222.tar.gz dexon-solidity-12328b784875bad30156a2c66912652f89fa8222.tar.zst dexon-solidity-12328b784875bad30156a2c66912652f89fa8222.zip |
Split ABI out of InterfaceHandler
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 + ); +}; + +} +} |