aboutsummaryrefslogtreecommitdiffstats
path: root/CompilerStack.h
diff options
context:
space:
mode:
Diffstat (limited to 'CompilerStack.h')
-rw-r--r--CompilerStack.h26
1 files changed, 22 insertions, 4 deletions
diff --git a/CompilerStack.h b/CompilerStack.h
index a5b8ec41..34178841 100644
--- a/CompilerStack.h
+++ b/CompilerStack.h
@@ -33,10 +33,18 @@ namespace solidity {
// forward declarations
class Scanner;
+class ContractDefinition;
class SourceUnit;
class Compiler;
class GlobalContext;
-class ContractDefinition;
+class InterfaceHandler;
+
+enum DocumentationType: unsigned short
+{
+ NATSPEC_USER = 1,
+ NATSPEC_DEV,
+ ABI_INTERFACE
+};
/**
* Easy to use and self-contained Solidity compiler with as few header dependencies as possible.
@@ -47,6 +55,7 @@ class CompilerStack: boost::noncopyable
{
public:
CompilerStack(): m_parseSuccessful(false) {}
+
/// Adds a source object (e.g. file) to the parser. After this, parse has to be called again.
void addSource(std::string const& _name, std::string const& _content);
void setSource(std::string const& _sourceCode);
@@ -71,6 +80,11 @@ public:
/// Returns a string representing the contract interface in JSON.
/// Prerequisite: Successful call to parse or compile.
std::string const& getInterface(std::string const& _contractName = "");
+ /// Returns a string representing the contract's documentation in JSON.
+ /// Prerequisite: Successful call to parse or compile.
+ /// @param type The type of the documentation to get.
+ /// Can be one of 3 types defined at @c DocumentationType
+ std::string const& getJsonDocumentation(std::string const& _contractName, enum DocumentationType _type);
/// Returns the previously used scanner, useful for counting lines during error reporting.
Scanner const& getScanner(std::string const& _sourceName = "");
@@ -94,10 +108,15 @@ private:
struct Contract
{
- ContractDefinition const* contract;
- std::string interface;
+ ContractDefinition* contract;
std::shared_ptr<Compiler> compiler;
bytes bytecode;
+ std::shared_ptr<InterfaceHandler> interfaceHandler;
+ std::unique_ptr<std::string> interface;
+ std::unique_ptr<std::string> userDocumentation;
+ std::unique_ptr<std::string> devDocumentation;
+
+ Contract();
};
void reset(bool _keepSources = false);
@@ -109,7 +128,6 @@ private:
bool m_parseSuccessful;
std::map<std::string, Source> m_sources;
std::shared_ptr<GlobalContext> m_globalContext;
- std::shared_ptr<Compiler> m_compiler;
std::vector<Source const*> m_sourceOrder;
std::map<std::string, Contract> m_contracts;
};