|
LLVM
3.7.0
|
Represents either an error or a value T. More...
#include <ErrorOr.h>
Public Types | |
| typedef std::conditional < isRef, wrap, T >::type | storage_type |
Public Member Functions | |
| template<class E > | |
| ErrorOr (E ErrorCode, typename std::enable_if< std::is_error_code_enum< E >::value||std::is_error_condition_enum< E >::value, void * >::type=0) | |
| ErrorOr (std::error_code EC) | |
| ErrorOr (T Val) | |
| ErrorOr (const ErrorOr &Other) | |
| template<class OtherT > | |
| ErrorOr (const ErrorOr< OtherT > &Other, typename std::enable_if< std::is_convertible< OtherT, T >::value >::type *=nullptr) | |
| template<class OtherT > | |
| ErrorOr (const ErrorOr< OtherT > &Other, typename std::enable_if< !std::is_convertible< OtherT, const T & >::value >::type *=nullptr) | |
| ErrorOr (ErrorOr &&Other) | |
| template<class OtherT > | |
| ErrorOr (ErrorOr< OtherT > &&Other, typename std::enable_if< std::is_convertible< OtherT, T >::value >::type *=nullptr) | |
| template<class OtherT > | |
| ErrorOr (ErrorOr< OtherT > &&Other, typename std::enable_if<!std::is_convertible< OtherT, T >::value >::type *=nullptr) | |
| ErrorOr & | operator= (const ErrorOr &Other) |
| ErrorOr & | operator= (ErrorOr &&Other) |
| ~ErrorOr () | |
| operator bool () const | |
| Return false if there is an error. More... | |
| reference | get () |
| const_reference | get () const |
| std::error_code | getError () const |
| pointer | operator-> () |
| reference | operator* () |
Friends | |
| template<class OtherT > | |
| class | ErrorOr |
Represents either an error or a value T.
ErrorOr<T> is a pointer-like class that represents the result of an operation. The result is either an error, or a value of type T. This is designed to emulate the usage of returning a pointer where nullptr indicates failure. However instead of just knowing that the operation failed, we also have an error_code and optional user data that describes why it failed.
It is used like the following.
Implicit conversion to bool returns true if there is a usable value. The unary * and -> operators provide pointer like access to the value. Accessing the value when there is an error has undefined behavior.
When T is a reference type the behaivor is slightly different. The reference is held in a std::reference_wrapper<std::remove_reference<T>::type>, and there is special handling to make operator -> work as if T was not a reference.
T cannot be a rvalue reference.
| typedef std::conditional<isRef, wrap, T>::type llvm::ErrorOr< T >::storage_type |
|
inline |
Definition at line 97 of file ErrorOr.h.
References llvm::make_error_code().
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineexplicit |
|
inline |
|
inline |
Definition at line 175 of file ErrorOr.h.
Referenced by llvm::object::Archive::Archive(), llvm::SpecialCaseList::create(), llvm::object::IRObjectFile::create(), llvm::object::createBinary(), llvm::LTOModule::createFromFile(), llvm::LTOModule::createFromOpenFileSlice(), llvm::object::ObjectFile::createObjectFile(), llvm::object::SymbolicFile::createSymbolicFile(), llvm::DiffFilesWithTolerance(), ExpandResponseFile(), llvm::object::IRObjectFile::findBitcodeInMemBuffer(), llvm::object::Archive::findSym(), llvm::MCJIT::findSymbol(), llvm::MCJIT::generateCodeForModule(), llvm::object::Archive::Child::getAsBinary(), llvm::getBitcodeTargetTriple(), llvm::getLazyIRFileModule(), getLazyIRModule(), llvm::object::Archive::Child::getMemoryBufferRef(), llvm::LTOModule::isBitcodeFile(), LLVMCreateMemoryBufferWithContentsOfFile(), LLVMCreateMemoryBufferWithSTDIN(), LLVMCreateObjectFile(), LLVMGetBitcodeModuleInContext(), LLVMParseBitcodeInContext(), llvm::parseAssemblyFile(), llvm::parseIR(), llvm::parseIRFile(), setupMemoryBuffer(), llvm::writeArchive(), and writeSymbolTable().
|
inline |
|
inline |
Definition at line 178 of file ErrorOr.h.
Referenced by llvm::object::Archive::Archive(), llvm::LTOCodeGenerator::compileOptimized(), llvm::SpecialCaseList::create(), llvm::object::IRObjectFile::create(), llvm::object::createBinary(), llvm::LTOModule::createFromFile(), llvm::LTOModule::createFromOpenFileSlice(), llvm::object::ObjectFile::createObjectFile(), llvm::DiffFilesWithTolerance(), llvm::DWARFContextInMemory::DWARFContextInMemory(), llvm::object::ELFFile< ELFT >::ELFFile(), llvm::RuntimeDyldImpl::emitCommonSymbols(), llvm::object::IRObjectFile::findBitcodeInMemBuffer(), llvm::object::Archive::findSym(), llvm::MCJIT::findSymbol(), llvm::object::Archive::Child::getAsBinary(), llvm::object::COFFObjectFile::getAuxSymbol(), llvm::object::Archive::Child::getBuffer(), llvm::object::ELFFile< ELFT >::getEntry(), llvm::getLazyIRFileModule(), getLazyIRModule(), llvm::object::Archive::Child::getMemoryBufferRef(), llvm::getOffset(), llvm::object::ELFObjectFile< ELFT >::getRelocatedSection(), llvm::object::ELFFile< ELFT >::getRelocationSymbol(), llvm::RuntimeDyldMachO::getRelocationValueRef(), llvm::object::ELFObjectFile< ELFT >::getSectionName(), llvm::object::ELFObjectFile< ELFT >::getSymbolAddress(), llvm::object::ELFObjectFile< ELFT >::getSymbolSection(), llvm::object::ELFFile< ELFT >::getSymbolVersion(), LLVMCreateMemoryBufferWithContentsOfFile(), LLVMCreateMemoryBufferWithSTDIN(), LLVMGetBitcodeModuleInContext(), LLVMGetSymbolAddress(), LLVMGetSymbolName(), LLVMParseBitcodeInContext(), llvm::RuntimeDyldImpl::loadObjectImpl(), llvm::SymbolRewriter::RewriteMapParser::parse(), llvm::parseAssemblyFile(), parseBitcodeFileImpl(), llvm::parseIR(), llvm::parseIRFile(), llvm::RuntimeDyldMachO::populateIndirectSymbolPointersSection(), llvm::object::ObjectFile::printSymbolName(), llvm::RuntimeDyldCOFFX86_64::processRelocationRef(), llvm::RuntimeDyldELF::processRelocationRef(), llvm::object::ELFObjectFile< ELFT >::section_rel_begin(), setupMemoryBuffer(), llvm::TableGenMain(), and llvm::writeArchive().
|
inlineexplicit |
|
inline |
|
inline |
|
inline |
| AlignedCharArrayUnion<std::error_code> llvm::ErrorOr< T >::ErrorStorage |
| AlignedCharArrayUnion<storage_type> llvm::ErrorOr< T >::TStorage |
1.8.6