diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-04-21 03:11:40 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-21 03:11:40 +0800 |
commit | 2ccbc088f24a8a215072cbf919d80cb503aac89f (patch) | |
tree | b3f44ad47f31ef5bde284e68e87a87cce6f146f0 /libsolidity/interface/StandardCompiler.h | |
parent | 965de29772963b640b00579fa8225bb662599ecd (diff) | |
parent | 74373ecc7ab538de03c69a7a26edb345be661355 (diff) | |
download | dexon-solidity-2ccbc088f24a8a215072cbf919d80cb503aac89f.tar dexon-solidity-2ccbc088f24a8a215072cbf919d80cb503aac89f.tar.gz dexon-solidity-2ccbc088f24a8a215072cbf919d80cb503aac89f.tar.bz2 dexon-solidity-2ccbc088f24a8a215072cbf919d80cb503aac89f.tar.lz dexon-solidity-2ccbc088f24a8a215072cbf919d80cb503aac89f.tar.xz dexon-solidity-2ccbc088f24a8a215072cbf919d80cb503aac89f.tar.zst dexon-solidity-2ccbc088f24a8a215072cbf919d80cb503aac89f.zip |
Merge pull request #1639 from ethereum/json-interface-api
Support "standardised" JSON compiler input/output
Diffstat (limited to 'libsolidity/interface/StandardCompiler.h')
-rw-r--r-- | libsolidity/interface/StandardCompiler.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/libsolidity/interface/StandardCompiler.h b/libsolidity/interface/StandardCompiler.h new file mode 100644 index 00000000..12d85aad --- /dev/null +++ b/libsolidity/interface/StandardCompiler.h @@ -0,0 +1,61 @@ +/* + 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/>. +*/ +/** + * @author Alex Beregszaszi + * @date 2016 + * Standard JSON compiler interface. + */ + +#pragma once + +#include <libsolidity/interface/CompilerStack.h> + +namespace dev +{ + +namespace solidity +{ + +/** + * Standard JSON compiler interface, which expects a JSON input and returns a JSON ouput. + * See docs/using-the-compiler#compiler-input-and-output-json-description. + */ +class StandardCompiler: boost::noncopyable +{ +public: + /// Creates a new StandardCompiler. + /// @param _readFile callback to used to read files for import statements. Should return + StandardCompiler(ReadFile::Callback const& _readFile = ReadFile::Callback()) + : m_compilerStack(_readFile) + { + } + + /// Sets all input parameters according to @a _input which conforms to the standardized input + /// format, performs compilation and returns a standardized output. + Json::Value compile(Json::Value const& _input); + /// Parses input as JSON and peforms the above processing steps, returning a serialized JSON + /// output. Parsing errors are returned as regular errors. + std::string compile(std::string const& _input); + +private: + Json::Value compileInternal(Json::Value const& _input); + + CompilerStack m_compilerStack; +}; + +} +} |