aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/Version.cpp
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-10-06 20:13:07 +0800
committerchriseth <c@ethdev.com>2015-10-06 20:20:06 +0800
commit99351aebe0c9ebbb06e34c18ecc19bc0c87d9d54 (patch)
treefd0c7d5797454be93d4c767142ed6042ebf4d00f /libsolidity/Version.cpp
parent44e42bf52e481f4f653a669291812b4d31f06022 (diff)
downloaddexon-solidity-99351aebe0c9ebbb06e34c18ecc19bc0c87d9d54.tar
dexon-solidity-99351aebe0c9ebbb06e34c18ecc19bc0c87d9d54.tar.gz
dexon-solidity-99351aebe0c9ebbb06e34c18ecc19bc0c87d9d54.tar.bz2
dexon-solidity-99351aebe0c9ebbb06e34c18ecc19bc0c87d9d54.tar.lz
dexon-solidity-99351aebe0c9ebbb06e34c18ecc19bc0c87d9d54.tar.xz
dexon-solidity-99351aebe0c9ebbb06e34c18ecc19bc0c87d9d54.tar.zst
dexon-solidity-99351aebe0c9ebbb06e34c18ecc19bc0c87d9d54.zip
Compiler version stamp.
Diffstat (limited to 'libsolidity/Version.cpp')
-rw-r--r--libsolidity/Version.cpp36
1 files changed, 34 insertions, 2 deletions
diff --git a/libsolidity/Version.cpp b/libsolidity/Version.cpp
index c6b5c509..09a6d84b 100644
--- a/libsolidity/Version.cpp
+++ b/libsolidity/Version.cpp
@@ -22,16 +22,19 @@
#include <libsolidity/Version.h>
#include <string>
+#include <libdevcore/CommonData.h>
+#include <libdevcore/Common.h>
#include <libevmasm/Version.h>
+#include <libsolidity/Utils.h>
#include <solidity/BuildInfo.h>
-#include <libdevcore/Common.h>
using namespace dev;
using namespace dev::solidity;
using namespace std;
char const* dev::solidity::VersionNumber = ETH_PROJECT_VERSION;
-extern string const dev::solidity::VersionString =
+
+string const dev::solidity::VersionString =
string(dev::solidity::VersionNumber) +
"-" +
string(DEV_QUOTED(ETH_COMMIT_HASH)).substr(0, 8) +
@@ -39,3 +42,32 @@ extern string const dev::solidity::VersionString =
"/" DEV_QUOTED(ETH_BUILD_TYPE) "-" DEV_QUOTED(ETH_BUILD_PLATFORM)
" linked to libethereum-" + eth::VersionStringLibEvmAsm;
+
+bytes dev::solidity::binaryVersion()
+{
+ bytes ret{0};
+ size_t i = 0;
+ auto parseDecimal = [&]()
+ {
+ size_t ret = 0;
+ solAssert('0' <= VersionString[i] && VersionString[i] <= '9', "");
+ for (; i < VersionString.size() && '0' <= VersionString[i] && VersionString[i] <= '9'; ++i)
+ ret = ret * 10 + (VersionString[i] - '0');
+ return ret;
+ };
+ ret.push_back(byte(parseDecimal()));
+ solAssert(i < VersionString.size() && VersionString[i] == '.', "");
+ ++i;
+ ret.push_back(byte(parseDecimal()));
+ solAssert(i < VersionString.size() && VersionString[i] == '.', "");
+ ++i;
+ ret.push_back(byte(parseDecimal()));
+ solAssert(i < VersionString.size() && VersionString[i] == '-', "");
+ ++i;
+ solAssert(i + 7 < VersionString.size(), "");
+ ret += fromHex(VersionString.substr(i, 8));
+ solAssert(ret.size() == 1 + 3 + 4, "");
+
+ return ret;
+}
+