aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/interface/CompilerStack.h
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-10-05 17:23:46 +0800
committerGitHub <noreply@github.com>2017-10-05 17:23:46 +0800
commit54cf15ac4f479a658d3c069b24df92d068ca1325 (patch)
tree7f58c16b745db3464a9f3bb1a5d50748c7c653fa /libsolidity/interface/CompilerStack.h
parent995b5525a0bd29a96950fad168ce12e6dc167528 (diff)
parentf86cd06b9755f4827467e86acd4a53603f3da84f (diff)
downloaddexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.gz
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.bz2
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.lz
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.xz
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.zst
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.zip
Merge pull request #2901 from ethereum/compiler-names
Provide optional list of contract names to CompilerStack.compile
Diffstat (limited to 'libsolidity/interface/CompilerStack.h')
-rw-r--r--libsolidity/interface/CompilerStack.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/libsolidity/interface/CompilerStack.h b/libsolidity/interface/CompilerStack.h
index f1bbae47..c567ac2c 100644
--- a/libsolidity/interface/CompilerStack.h
+++ b/libsolidity/interface/CompilerStack.h
@@ -116,6 +116,13 @@ public:
m_optimizeRuns = _runs;
}
+ /// Sets the list of requested contract names. If empty, no filtering is performed and every contract
+ /// found in the supplied sources is compiled. Names are cleared iff @a _contractNames is missing.
+ void setRequestedContractNames(std::set<std::string> const& _contractNames = std::set<std::string>{})
+ {
+ m_requestedContractNames = _contractNames;
+ }
+
/// @arg _metadataLiteralSources When true, store sources as literals in the contract metadata.
void useMetadataLiteralSources(bool _metadataLiteralSources) { m_metadataLiteralSources = _metadataLiteralSources; }
@@ -259,6 +266,9 @@ private:
/// Helper function to return path converted strings.
std::string sanitizePath(std::string const& _path) const { return boost::filesystem::path(_path).generic_string(); }
+ /// @returns true if the contract is requested to be compiled.
+ bool isRequestedContract(ContractDefinition const& _contract) const;
+
/// Compile a single contract and put the result in @a _compiledContracts.
void compileContract(
ContractDefinition const& _contract,
@@ -297,6 +307,7 @@ private:
ReadCallback::Callback m_smtQuery;
bool m_optimize = false;
unsigned m_optimizeRuns = 200;
+ std::set<std::string> m_requestedContractNames;
std::map<std::string, h160> m_libraries;
/// list of path prefix remappings, e.g. mylibrary: github.com/ethereum = /usr/local/ethereum
/// "context:prefix=target"