aboutsummaryrefslogblamecommitdiffstats
path: root/libsolidity/interface/StandardCompiler.h
blob: dfaf88cd58241b8b195c81eabf526cd4856532ca (plain) (tree)







































                                                                                         

                                                                                              
                                                                                    
                                                                   










                                                                                                     

                                                               
                                      
                                      



  
/*
    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. Must return
    /// and must not emit exceptions.
    StandardCompiler(ReadFile::Callback const& _readFile = ReadFile::Callback())
        : m_compilerStack(_readFile), m_readFile(_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;
    ReadFile::Callback m_readFile;
};

}
}