diff options
author | chriseth <chris@ethereum.org> | 2017-08-25 20:53:30 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-25 20:53:30 +0800 |
commit | 1437521df0136fc3654dd74c816d724c50a125ee (patch) | |
tree | fdd9513da8f92efcfc0ecddde7bc4e457b7712b9 | |
parent | a20dd964ef134fc292eaad995d8833ff6700df9f (diff) | |
parent | bfc7d71f518bf2ad19bb906d62815fee34bed966 (diff) | |
download | dexon-solidity-1437521df0136fc3654dd74c816d724c50a125ee.tar.gz dexon-solidity-1437521df0136fc3654dd74c816d724c50a125ee.tar.zst dexon-solidity-1437521df0136fc3654dd74c816d724c50a125ee.zip |
Merge pull request #2807 from ethereum/removeABIh
Cleanup: Remove ABI.h
-rw-r--r-- | libdevcore/ABI.h | 100 | ||||
-rw-r--r-- | test/ExecutionFramework.h | 36 | ||||
-rw-r--r-- | test/contracts/AuctionRegistrar.cpp | 1 |
3 files changed, 18 insertions, 119 deletions
diff --git a/libdevcore/ABI.h b/libdevcore/ABI.h deleted file mode 100644 index 8b9e5c98..00000000 --- a/libdevcore/ABI.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - 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/>. -*/ -/** @file ABI.h - * @author Gav Wood <i@gavwood.com> - * @date 2014 - */ - -#pragma once - -#include <libdevcore/Common.h> -#include <libdevcore/FixedHash.h> -#include <libdevcore/CommonData.h> -#include <libdevcore/SHA3.h> - -namespace dev -{ -namespace eth -{ - -inline string32 toString32(std::string const& _s) -{ - string32 ret; - for (unsigned i = 0; i < 32; ++i) - ret[i] = i < _s.size() ? _s[i] : 0; - return ret; -} - -template <class T> struct ABISerialiser {}; -template <unsigned N> struct ABISerialiser<FixedHash<N>> { static bytes serialise(FixedHash<N> const& _t) { static_assert(N <= 32, "Cannot serialise hash > 32 bytes."); static_assert(N > 0, "Cannot serialise zero-length hash."); return bytes(32 - N, 0) + _t.asBytes(); } }; -template <> struct ABISerialiser<u256> { static bytes serialise(u256 const& _t) { return h256(_t).asBytes(); } }; -template <> struct ABISerialiser<u160> { static bytes serialise(u160 const& _t) { return bytes(12, 0) + h160(_t).asBytes(); } }; -template <> struct ABISerialiser<string32> { static bytes serialise(string32 const& _t) { bytes ret; bytesConstRef((byte const*)_t.data(), 32).populate(bytesRef(&ret)); return ret; } }; -template <> struct ABISerialiser<std::string> -{ - static bytes serialise(std::string const& _t) - { - bytes ret = h256(u256(32)).asBytes() + h256(u256(_t.size())).asBytes(); - ret.resize(ret.size() + (_t.size() + 31) / 32 * 32); - bytesConstRef(&_t).populate(bytesRef(&ret).cropped(64)); - return ret; - } -}; - -inline bytes abiInAux() { return {}; } -template <class T, class ... U> bytes abiInAux(T const& _t, U const& ... _u) -{ - return ABISerialiser<T>::serialise(_t) + abiInAux(_u ...); -} - -template <class ... T> bytes abiIn(std::string _id, T const& ... _t) -{ - return keccak256(_id).ref().cropped(0, 4).toBytes() + abiInAux(_t ...); -} - -template <class T> struct ABIDeserialiser {}; -template <unsigned N> struct ABIDeserialiser<FixedHash<N>> { static FixedHash<N> deserialise(bytesConstRef& io_t) { static_assert(N <= 32, "Parameter sizes must be at most 32 bytes."); FixedHash<N> ret; io_t.cropped(32 - N, N).populate(ret.ref()); io_t = io_t.cropped(32); return ret; } }; -template <> struct ABIDeserialiser<u256> { static u256 deserialise(bytesConstRef& io_t) { u256 ret = fromBigEndian<u256>(io_t.cropped(0, 32)); io_t = io_t.cropped(32); return ret; } }; -template <> struct ABIDeserialiser<u160> { static u160 deserialise(bytesConstRef& io_t) { u160 ret = fromBigEndian<u160>(io_t.cropped(12, 20)); io_t = io_t.cropped(32); return ret; } }; -template <> struct ABIDeserialiser<string32> { static string32 deserialise(bytesConstRef& io_t) { string32 ret; io_t.cropped(0, 32).populate(bytesRef((byte*)ret.data(), 32)); io_t = io_t.cropped(32); return ret; } }; -template <> struct ABIDeserialiser<std::string> -{ - static std::string deserialise(bytesConstRef& io_t) - { - unsigned o = (uint16_t)u256(h256(io_t.cropped(0, 32))); - unsigned s = (uint16_t)u256(h256(io_t.cropped(o, 32))); - std::string ret; - ret.resize(s); - io_t.cropped(o + 32, s).populate(bytesRef((byte*)ret.data(), s)); - io_t = io_t.cropped(32); - return ret; - } -}; - -template <class T> T abiOut(bytes const& _data) -{ - bytesConstRef o(&_data); - return ABIDeserialiser<T>::deserialise(o); -} - -template <class T> T abiOut(bytesConstRef& _data) -{ - return ABIDeserialiser<T>::deserialise(_data); -} - -} -} diff --git a/test/ExecutionFramework.h b/test/ExecutionFramework.h index 76d0fd8c..ba385dee 100644 --- a/test/ExecutionFramework.h +++ b/test/ExecutionFramework.h @@ -22,13 +22,13 @@ #pragma once -#include <functional> - -#include "TestHelper.h" -#include "RPCSession.h" +#include <test/TestHelper.h> +#include <test/RPCSession.h> -#include <libdevcore/ABI.h> #include <libdevcore/FixedHash.h> +#include <libdevcore/SHA3.h> + +#include <functional> namespace dev { @@ -40,11 +40,11 @@ namespace test using Address = h160; // The various denominations; here for ease of use where needed within code. - static const u256 ether = exp10<18>(); - static const u256 finney = exp10<15>(); - static const u256 szabo = exp10<12>(); - static const u256 shannon = exp10<9>(); - static const u256 wei = exp10<0>(); + static const u256 wei = 1; + static const u256 shannon = u256("1000000000"); + static const u256 szabo = shannon * 1000; + static const u256 finney = szabo * 1000; + static const u256 ether = finney * 1000; class ExecutionFramework { @@ -217,25 +217,25 @@ public: bytes const& ret = call(_name + "(string)", u256(0x20), _arg.length(), _arg); BOOST_REQUIRE(ret.size() == 0x20); BOOST_CHECK(std::count(ret.begin(), ret.begin() + 12, 0) == 12); - return eth::abiOut<u160>(ret); + return u160(u256(h256(ret))); } std::string callAddressReturnsString(std::string const& _name, u160 const& _arg) { - bytesConstRef ret = ref(call(_name + "(address)", _arg)); - BOOST_REQUIRE(ret.size() >= 0x20); - u256 offset = eth::abiOut<u256>(ret); + bytesConstRef const ret(&call(_name + "(address)", _arg)); + BOOST_REQUIRE(ret.size() >= 0x40); + u256 offset(h256(ret.cropped(0, 0x20))); BOOST_REQUIRE_EQUAL(offset, 0x20); - u256 len = eth::abiOut<u256>(ret); - BOOST_REQUIRE_EQUAL(ret.size(), ((len + 0x1f) / 0x20) * 0x20); - return ret.cropped(0, size_t(len)).toString(); + u256 len(h256(ret.cropped(0x20, 0x20))); + BOOST_REQUIRE_EQUAL(ret.size(), 0x40 + ((len + 0x1f) / 0x20) * 0x20); + return ret.cropped(0x40, size_t(len)).toString(); } h256 callStringReturnsBytes32(std::string const& _name, std::string const& _arg) { bytes const& ret = call(_name + "(string)", u256(0x20), _arg.length(), _arg); BOOST_REQUIRE(ret.size() == 0x20); - return eth::abiOut<h256>(ret); + return h256(ret); } private: diff --git a/test/contracts/AuctionRegistrar.cpp b/test/contracts/AuctionRegistrar.cpp index 773b14b9..d56edc56 100644 --- a/test/contracts/AuctionRegistrar.cpp +++ b/test/contracts/AuctionRegistrar.cpp @@ -23,7 +23,6 @@ #include <string> #include <tuple> #include <boost/test/unit_test.hpp> -#include <libdevcore/ABI.h> #include <test/libsolidity/SolidityExecutionFramework.h> using namespace std; |