diff options
author | Gav Wood <i@gavwood.com> | 2015-01-09 22:19:01 +0800 |
---|---|---|
committer | Gav Wood <i@gavwood.com> | 2015-01-09 22:19:01 +0800 |
commit | 43d79cc7305524bb8503e660cfd43c121706e1ed (patch) | |
tree | f25900a00a0a1b20998ec91d5da9730b3b78deab /AST.cpp | |
parent | 875ec9d47178637bc8608204a8520c1487c064e4 (diff) | |
parent | a60d82d12ce84c87ae28e16dcd5002643f49637b (diff) | |
download | dexon-solidity-43d79cc7305524bb8503e660cfd43c121706e1ed.tar dexon-solidity-43d79cc7305524bb8503e660cfd43c121706e1ed.tar.gz dexon-solidity-43d79cc7305524bb8503e660cfd43c121706e1ed.tar.bz2 dexon-solidity-43d79cc7305524bb8503e660cfd43c121706e1ed.tar.lz dexon-solidity-43d79cc7305524bb8503e660cfd43c121706e1ed.tar.xz dexon-solidity-43d79cc7305524bb8503e660cfd43c121706e1ed.tar.zst dexon-solidity-43d79cc7305524bb8503e660cfd43c121706e1ed.zip |
Merge branch 'develop' of github.com:ethereum/cpp-ethereum into develop
Conflicts:
test/SolidityOptimizer.cpp
Diffstat (limited to 'AST.cpp')
-rw-r--r-- | AST.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -27,6 +27,8 @@ #include <libsolidity/Exceptions.h> #include <libsolidity/AST_accept.h> +#include <libdevcrypto/SHA3.h> + using namespace std; namespace dev @@ -50,18 +52,17 @@ void ContractDefinition::checkTypeRequirements() function->checkTypeRequirements(); } -vector<FunctionDefinition const*> ContractDefinition::getInterfaceFunctions() const +map<FixedHash<4>, FunctionDefinition const*> ContractDefinition::getInterfaceFunctions() const { - vector<FunctionDefinition const*> exportedFunctions; + map<FixedHash<4>, FunctionDefinition const*> exportedFunctions; for (ASTPointer<FunctionDefinition> const& f: m_definedFunctions) if (f->isPublic() && f->getName() != getName()) - exportedFunctions.push_back(f.get()); - auto compareNames = [](FunctionDefinition const* _a, FunctionDefinition const* _b) - { - return _a->getName().compare(_b->getName()) < 0; - }; + { + FixedHash<4> hash(dev::sha3(f->getCanonicalSignature())); + auto res = exportedFunctions.insert(std::make_pair(hash,f.get())); + solAssert(res.second, "Hash collision at Function Definition Hash calculation"); + } - sort(exportedFunctions.begin(), exportedFunctions.end(), compareNames); return exportedFunctions; } |