aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-05-21 03:11:29 +0800
committerchriseth <c@ethdev.com>2015-05-21 03:11:29 +0800
commit44146e66743394a6553cdb77b620d43c5709c913 (patch)
treed40374e756b2ce50fbc73e91768b8f01cf57a2f5
parent2be64c702609df67903fd89c42cf632d71aad6fd (diff)
parentea85e382c99ef54b99a1015702bbf5815eb1d970 (diff)
downloaddexon-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.cpp28
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 " : "");