aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2018-06-20 07:34:54 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2018-06-30 01:30:37 +0800
commit328554a4f91bbd77fc9a901e0bde66eb16d988ea (patch)
tree1d6365c17cc0ede81bb951e330ba08c1ca31aed3
parent7d525620d88d3539b5c0f85ee2c5ba49506e30bc (diff)
downloaddexon-solidity-328554a4f91bbd77fc9a901e0bde66eb16d988ea.tar
dexon-solidity-328554a4f91bbd77fc9a901e0bde66eb16d988ea.tar.gz
dexon-solidity-328554a4f91bbd77fc9a901e0bde66eb16d988ea.tar.bz2
dexon-solidity-328554a4f91bbd77fc9a901e0bde66eb16d988ea.tar.lz
dexon-solidity-328554a4f91bbd77fc9a901e0bde66eb16d988ea.tar.xz
dexon-solidity-328554a4f91bbd77fc9a901e0bde66eb16d988ea.tar.zst
dexon-solidity-328554a4f91bbd77fc9a901e0bde66eb16d988ea.zip
Add new libsolc entry points (solidity_license/version/compile)
-rw-r--r--Changelog.md1
-rw-r--r--libsolc/CMakeLists.txt2
-rw-r--r--libsolc/libsolc.cpp15
-rw-r--r--libsolc/libsolc.h4
-rw-r--r--test/libsolidity/LibSolc.cpp20
5 files changed, 41 insertions, 1 deletions
diff --git a/Changelog.md b/Changelog.md
index b1f742bf..97020ae6 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -37,6 +37,7 @@ Language Features:
* General: Scoping rules now follow the C99-style.
Compiler Features:
+ * C API (``libsolc``): Export the ``solidity_license``, ``solidity_version`` and ``solidity_compile`` methods.
* Type Checker: Show named argument in case of error.
Bugfixes:
diff --git a/libsolc/CMakeLists.txt b/libsolc/CMakeLists.txt
index e67583dd..63fc1a83 100644
--- a/libsolc/CMakeLists.txt
+++ b/libsolc/CMakeLists.txt
@@ -1,5 +1,5 @@
if (EMSCRIPTEN)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s EXPORTED_FUNCTIONS='[\"_compileJSON\",\"_license\",\"_version\",\"_compileJSONMulti\",\"_compileJSONCallback\",\"_compileStandard\"]' -s RESERVED_FUNCTION_POINTERS=20")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s EXPORTED_FUNCTIONS='[\"_solidity_license\",\"_solidity_version\",\"_solidity_compile\",\"_license\",\"_version\",\"_compileJSON\",\"_compileJSONMulti\",\"_compileJSONCallback\",\"_compileStandard\"]' -s RESERVED_FUNCTION_POINTERS=20")
add_executable(soljson libsolc.cpp)
target_link_libraries(soljson PRIVATE solidity)
else()
diff --git a/libsolc/libsolc.cpp b/libsolc/libsolc.cpp
index 6c587e23..26ce98ce 100644
--- a/libsolc/libsolc.cpp
+++ b/libsolc/libsolc.cpp
@@ -299,4 +299,19 @@ extern char const* compileStandard(char const* _input, CStyleReadFileCallback _r
s_outputBuffer = compileStandardInternal(_input, _readCallback);
return s_outputBuffer.c_str();
}
+extern char const* solidity_license()
+{
+ /// todo: make this the default or an alias
+ return license();
+}
+extern char const* solidity_version()
+{
+ /// todo: make this the default or an alias
+ return version();
+}
+extern char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback)
+{
+ /// todo: make this the default or an alias
+ return compileStandard(_input, _readCallback);
+}
}
diff --git a/libsolc/libsolc.h b/libsolc/libsolc.h
index c392ce93..2cc004d4 100644
--- a/libsolc/libsolc.h
+++ b/libsolc/libsolc.h
@@ -37,6 +37,10 @@ char const* compileJSONMulti(char const* _input, bool _optimize);
char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback);
char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback);
+char const* solidity_license();
+char const* solidity_version();
+char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback);
+
#ifdef __cplusplus
}
#endif
diff --git a/test/libsolidity/LibSolc.cpp b/test/libsolidity/LibSolc.cpp
index f42d374f..9d5ffa27 100644
--- a/test/libsolidity/LibSolc.cpp
+++ b/test/libsolidity/LibSolc.cpp
@@ -201,6 +201,26 @@ BOOST_AUTO_TEST_CASE(standard_compilation)
BOOST_CHECK(result.isMember("contracts"));
}
+BOOST_AUTO_TEST_CASE(new_api)
+{
+ char const* input = R"(
+ {
+ "language": "Solidity",
+ "sources": {
+ "fileA": {
+ "content": "contract A { }"
+ }
+ }
+ }
+ )";
+ BOOST_CHECK_EQUAL(string(version()), string(solidity_version()));
+ BOOST_CHECK_EQUAL(string(license()), string(solidity_license()));
+ BOOST_CHECK_EQUAL(
+ string(compileStandard(input, nullptr)),
+ string(solidity_compile(input, nullptr))
+ );
+}
+
BOOST_AUTO_TEST_SUITE_END()
}