From e7931ade613c6a6fedba75d851042b69b72f52f0 Mon Sep 17 00:00:00 2001 From: Liana Husikyan Date: Tue, 19 May 2015 15:24:33 +0200 Subject: [PATCH 1/3] added constructor to solidiy abi --- InterfaceHandler.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/InterfaceHandler.cpp b/InterfaceHandler.cpp index 85026ac12..9817455b9 100644 --- a/InterfaceHandler.cpp +++ b/InterfaceHandler.cpp @@ -107,17 +107,25 @@ std::unique_ptr InterfaceHandler::getABIInterface(ContractDefinitio unique_ptr InterfaceHandler::getABISolidityInterface(ContractDefinition const& _contractDef) { string ret = "contract " + _contractDef.getName() + "{"; + + auto populateParameters = [](vector const& _paramNames, + vector 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 const& _paramNames, - vector 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 " : ""); From ec136e7bb0665cea2900101dc9971ab75d6a293c Mon Sep 17 00:00:00 2001 From: Liana Husikyan Date: Tue, 19 May 2015 15:33:08 +0200 Subject: [PATCH 2/3] added ';' --- InterfaceHandler.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/InterfaceHandler.cpp b/InterfaceHandler.cpp index 9817455b9..9124d210f 100644 --- a/InterfaceHandler.cpp +++ b/InterfaceHandler.cpp @@ -121,8 +121,11 @@ unique_ptr InterfaceHandler::getABISolidityInterface(ContractDefinition { auto externalFunction = FunctionType(*_contractDef.getConstructor()).externalFunctionType(); solAssert(!!externalFunction, ""); - ret += "function " + _contractDef.getName() + - populateParameters(externalFunction->getParameterNames(), externalFunction->getParameterTypeNames()); + ret += + "function " + + _contractDef.getName() + + populateParameters(externalFunction->getParameterNames(), externalFunction->getParameterTypeNames()) + + ";"; } for (auto const& it: _contractDef.getInterfaceFunctions()) { From ea85e382c99ef54b99a1015702bbf5815eb1d970 Mon Sep 17 00:00:00 2001 From: Liana Husikyan Date: Wed, 20 May 2015 18:37:09 +0200 Subject: [PATCH 3/3] Update InterfaceHandler.cpp --- InterfaceHandler.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/InterfaceHandler.cpp b/InterfaceHandler.cpp index 9124d210f..9a2acd5ba 100644 --- a/InterfaceHandler.cpp +++ b/InterfaceHandler.cpp @@ -108,8 +108,7 @@ unique_ptr InterfaceHandler::getABISolidityInterface(ContractDefinition { string ret = "contract " + _contractDef.getName() + "{"; - auto populateParameters = [](vector const& _paramNames, - vector const& _paramTypes) + auto populateParameters = [](vector const& _paramNames, vector const& _paramTypes) { string r = ""; solAssert(_paramNames.size() == _paramTypes.size(), "Names and types vector size does not match");