diff options
author | chriseth <c@ethdev.com> | 2015-05-21 03:11:29 +0800 |
---|---|---|
committer | chriseth <c@ethdev.com> | 2015-05-21 03:11:29 +0800 |
commit | 44146e66743394a6553cdb77b620d43c5709c913 (patch) | |
tree | d40374e756b2ce50fbc73e91768b8f01cf57a2f5 | |
parent | 2be64c702609df67903fd89c42cf632d71aad6fd (diff) | |
parent | ea85e382c99ef54b99a1015702bbf5815eb1d970 (diff) | |
download | dexon-solidity-44146e66743394a6553cdb77b620d43c5709c913.tar dexon-solidity-44146e66743394a6553cdb77b620d43c5709c913.tar.gz dexon-solidity-44146e66743394a6553cdb77b620d43c5709c913.tar.bz2 dexon-solidity-44146e66743394a6553cdb77b620d43c5709c913.tar.lz dexon-solidity-44146e66743394a6553cdb77b620d43c5709c913.tar.xz dexon-solidity-44146e66743394a6553cdb77b620d43c5709c913.tar.zst dexon-solidity-44146e66743394a6553cdb77b620d43c5709c913.zip |
Merge pull request #1979 from LianaHus/sol_constructorForSolAbi
Added constructor as part of Solidity ABI
-rw-r--r-- | InterfaceHandler.cpp | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/InterfaceHandler.cpp b/InterfaceHandler.cpp index 85026ac1..9a2acd5b 100644 --- a/InterfaceHandler.cpp +++ b/InterfaceHandler.cpp @@ -107,17 +107,27 @@ std::unique_ptr<std::string> InterfaceHandler::getABIInterface(ContractDefinitio unique_ptr<string> InterfaceHandler::getABISolidityInterface(ContractDefinition const& _contractDef) { string ret = "contract " + _contractDef.getName() + "{"; + + auto populateParameters = [](vector<string> const& _paramNames, vector<string> const& _paramTypes) + { + string r = ""; + solAssert(_paramNames.size() == _paramTypes.size(), "Names and types vector size does not match"); + for (unsigned i = 0; i < _paramNames.size(); ++i) + r += (r.size() ? "," : "(") + _paramTypes[i] + " " + _paramNames[i]; + return r.size() ? r + ")" : "()"; + }; + if (_contractDef.getConstructor()) + { + auto externalFunction = FunctionType(*_contractDef.getConstructor()).externalFunctionType(); + solAssert(!!externalFunction, ""); + ret += + "function " + + _contractDef.getName() + + populateParameters(externalFunction->getParameterNames(), externalFunction->getParameterTypeNames()) + + ";"; + } for (auto const& it: _contractDef.getInterfaceFunctions()) { - auto populateParameters = [](vector<string> const& _paramNames, - vector<string> const& _paramTypes) - { - string r = ""; - solAssert(_paramNames.size() == _paramTypes.size(), "Names and types vector size does not match"); - for (unsigned i = 0; i < _paramNames.size(); ++i) - r += (r.size() ? "," : "(") + _paramTypes[i] + " " + _paramNames[i]; - return r.size() ? r + ")" : "()"; - }; ret += "function " + it.second->getDeclaration().getName() + populateParameters(it.second->getParameterNames(), it.second->getParameterTypeNames()) + (it.second->isConstant() ? "constant " : ""); |