Introduce setSources in CompilerStack

This commit is contained in:
Alex Beregszaszi 2019-03-20 17:57:40 +00:00
parent dce27bb452
commit 66a977d999
2 changed files with 14 additions and 0 deletions

View File

@ -169,6 +169,17 @@ bool CompilerStack::addSource(string const& _name, string const& _content)
return existed;
}
void CompilerStack::setSources(StringMap const& _sources)
{
if (m_stackState == SourcesSet)
BOOST_THROW_EXCEPTION(CompilerError() << errinfo_comment("Cannot change sources once set."));
if (m_stackState != Empty)
BOOST_THROW_EXCEPTION(CompilerError() << errinfo_comment("Must set sources before parsing."));
for (auto const& source: _sources)
m_sources[source.first].scanner = make_shared<Scanner>(CharStream(/*content*/source.second, /*name*/source.first));
m_stackState = SourcesSet;
}
bool CompilerStack::parse()
{
if (m_stackState != SourcesSet)

View File

@ -152,6 +152,9 @@ public:
/// @returns true if a source object by the name already existed and was replaced.
bool addSource(std::string const& _name, std::string const& _content);
/// Sets the sources. Must be set before parsing.
void setSources(StringMap const& _sources);
/// Adds a response to an SMTLib2 query (identified by the hash of the query input).
/// Must be set before parsing.
void addSMTLib2Response(h256 const& _hash, std::string const& _response);