enum Compiler::ErrorCode Compiler::compile(Script &pScript, OutputFile &pResult, llvm::raw_ostream *IRStream) { // Check the state of the specified output file. if (pResult.hasError()) { return kErrInvalidOutputFileState; } // Open the output file decorated in llvm::raw_ostream. llvm::raw_pwrite_stream *out = pResult.dup(); if (out == nullptr) { return kErrPrepareOutput; } // Delegate the request. enum Compiler::ErrorCode err = compile(pScript, *out, IRStream); // Close the output before return. delete out; return err; }
DisassembleResult Disassemble(OutputFile &pOutput, const char *pTriple, const char *pFuncName, const uint8_t *pFunc, size_t FuncSize) { // Check the state of the specified output file. if (pOutput.hasError()) { return kDisassembleInvalidOutput; } // Open the output file decorated in llvm::raw_ostream. llvm::raw_ostream *output = pOutput.dup(); if (output == NULL) { return kDisassembleFailedPrepareOutput; } // Delegate the request. DisassembleResult result = Disassemble(*output, pTriple, pFuncName, pFunc, FuncSize); // Close the output before return. delete output; return result; }