diff --git a/libsolc/libsolc.cpp b/libsolc/libsolc.cpp index 26ce98ce9..6931ed081 100644 --- a/libsolc/libsolc.cpp +++ b/libsolc/libsolc.cpp @@ -270,46 +270,46 @@ static string s_outputBuffer; extern "C" { -extern char const* license() +extern char const* license() noexcept { static string fullLicenseText = otherLicenses + licenseText; return fullLicenseText.c_str(); } -extern char const* version() +extern char const* version() noexcept { return VersionString.c_str(); } -extern char const* compileJSON(char const* _input, bool _optimize) +extern char const* compileJSON(char const* _input, bool _optimize) noexcept { s_outputBuffer = compileSingle(_input, _optimize); return s_outputBuffer.c_str(); } -extern char const* compileJSONMulti(char const* _input, bool _optimize) +extern char const* compileJSONMulti(char const* _input, bool _optimize) noexcept { s_outputBuffer = compileMulti(_input, _optimize); return s_outputBuffer.c_str(); } -extern char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback) +extern char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback) noexcept { s_outputBuffer = compileMulti(_input, _optimize, _readCallback); return s_outputBuffer.c_str(); } -extern char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback) +extern char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback) noexcept { s_outputBuffer = compileStandardInternal(_input, _readCallback); return s_outputBuffer.c_str(); } -extern char const* solidity_license() +extern char const* solidity_license() noexcept { /// todo: make this the default or an alias return license(); } -extern char const* solidity_version() +extern char const* solidity_version() noexcept { /// todo: make this the default or an alias return version(); } -extern char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback) +extern char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback) noexcept { /// todo: make this the default or an alias return compileStandard(_input, _readCallback); diff --git a/libsolc/libsolc.h b/libsolc/libsolc.h index 2cc004d4a..e959b758c 100644 --- a/libsolc/libsolc.h +++ b/libsolc/libsolc.h @@ -22,6 +22,12 @@ #include +#ifdef __cplusplus +#define SOLC_NOEXCEPT noexcept +#else +#define SOLC_NOEXCEPT +#endif + #ifdef __cplusplus extern "C" { #endif @@ -30,16 +36,16 @@ extern "C" { /// heap-allocated and are free'd by the caller. typedef void (*CStyleReadFileCallback)(char const* _path, char** o_contents, char** o_error); -char const* license(); -char const* version(); -char const* compileJSON(char const* _input, bool _optimize); -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* license() SOLC_NOEXCEPT; +char const* version() SOLC_NOEXCEPT; +char const* compileJSON(char const* _input, bool _optimize) SOLC_NOEXCEPT; +char const* compileJSONMulti(char const* _input, bool _optimize) SOLC_NOEXCEPT; +char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT; +char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT; -char const* solidity_license(); -char const* solidity_version(); -char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback); +char const* solidity_license() SOLC_NOEXCEPT; +char const* solidity_version() SOLC_NOEXCEPT; +char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT; #ifdef __cplusplus } diff --git a/libsolidity/interface/StandardCompiler.cpp b/libsolidity/interface/StandardCompiler.cpp index 8339780f6..58b841634 100644 --- a/libsolidity/interface/StandardCompiler.cpp +++ b/libsolidity/interface/StandardCompiler.cpp @@ -567,7 +567,7 @@ Json::Value StandardCompiler::compileInternal(Json::Value const& _input) return output; } -Json::Value StandardCompiler::compile(Json::Value const& _input) +Json::Value StandardCompiler::compile(Json::Value const& _input) noexcept { try { @@ -591,7 +591,7 @@ Json::Value StandardCompiler::compile(Json::Value const& _input) } } -string StandardCompiler::compile(string const& _input) +string StandardCompiler::compile(string const& _input) noexcept { Json::Value input; string errors; diff --git a/libsolidity/interface/StandardCompiler.h b/libsolidity/interface/StandardCompiler.h index 2772394ad..fc9c3a594 100644 --- a/libsolidity/interface/StandardCompiler.h +++ b/libsolidity/interface/StandardCompiler.h @@ -47,10 +47,10 @@ public: /// 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); + Json::Value compile(Json::Value const& _input) noexcept; /// 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); + std::string compile(std::string const& _input) noexcept; private: Json::Value compileInternal(Json::Value const& _input);