//===-- Status.h ------------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_UTILITY_STATUS_H #define LLDB_UTILITY_STATUS_H #include "lldb/lldb-defines.h" #include "lldb/lldb-enumerations.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Error.h" #include "llvm/Support/FormatVariadic.h" #include <cstdarg> #include <cstdint> #include <string> #include <system_error> #include <type_traits> namespace llvm { class raw_ostream; } namespace lldb_private { /// \class Status Status.h "lldb/Utility/Status.h" An error handling class. /// /// This class is designed to be able to hold any error code that can be /// encountered on a given platform. The errors are stored as a value of type /// Status::ValueType. This value should be large enough to hold any and all /// errors that the class supports. Each error has an associated type that is /// of type lldb::ErrorType. New types can be added to support new error /// types, and architecture specific types can be enabled. In the future we /// may wish to switch to a registration mechanism where new error types can /// be registered at runtime instead of a hard coded scheme. /// /// All errors in this class also know how to generate a string representation /// of themselves for printing results and error codes. The string value will /// be fetched on demand and its string value will be cached until the error /// is cleared of the value of the error changes. class Status { … }; } // namespace lldb_private namespace llvm { template <> struct format_provider<lldb_private::Status> { … }; } // namespace llvm #define LLDB_ERRORF(status, fmt, ...) … #endif // LLDB_UTILITY_STATUS_H