# litert::ErrorStatusBuilder


`#include <litert_macros.h>`

A helper class for building and handling error statuses.

## Summary

This class can be implicitly converted to either a `LiteRtStatus` or a `https://developers.google.com/edge/api/litert/c/classlitert/1-1-expected#classlitert_1_1_expected` holding an error. This allows it to be used with the `LITERT_RETURN_IF_ERROR` and `LITERT_ASSIGN_OR_RETURN` macros.

When a C++ error with a message is converted to a `LiteRtStatus`, the message is logged (as an error by default). The log level can be customized with the `Log*()` methods.

The error message can be extended with additional information using the `<<` operator.

| ### Constructors and Destructors ||
|---|---|
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1ab03222784dfca1135f50a13ee2ace6a0(T && error, litert::SourceLocation loc)` ||
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1ab9606af5ecee26e762884532f3482c23(https://developers.google.com/edge/api/litert/c/classlitert/1-1-error#classlitert_1_1_error error, litert::SourceLocation loc)` ||

| ### Public static functions ||
|---|---|
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a6e1b4732a66b98b2e25d0798747146e3(T && value)` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error#classlitert_1_1_error` |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a71bf23fa23bf90b65d182431f90dcab8(https://developers.google.com/edge/api/litert/c/classlitert/1-1-expected#classlitert_1_1_expected< T > & e)` | `T &&` |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a7d9deb724806f5e024abdf61e008ebdb(https://developers.google.com/edge/api/litert/c/classlitert/1-1-expected#classlitert_1_1_expected< T & > & e)` | `T &` |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a95177f7eb5118575354f3e63dc27c616(absl::StatusOr< T > & e)` | `T &&` |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1aff241ba5c17632fb35c10c3f8ee240fd(absl::StatusOr< T & > & e)` | `T &` |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a6423aab3d609a611668e54c49fa24490(litert::SourceLocation loc)` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder` |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1aed35de35ffa4629b1cbf2726d1a8dcfb(T && value)` | `constexpr bool` |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a1f9dfb6e92de783a070353f285f7a454(litert::SourceLocation loc)` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder` |

| ### Public functions ||
|---|---|
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a40fababa30f748a8a12f5c9bff7e09ac(LiteRtLogSeverity log_level) noexcept` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder &` Sets the log level used when converting to a `LiteRtStatus`. |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1abb69735913194d82475e08cce8934300() noexcept` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder &` Sets the log level to `error` for conversion to a `LiteRtStatus`. |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1aa540ad26960cff33d5555f4a16a094ab() noexcept` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder &` Sets the log level to `info` for conversion to a `LiteRtStatus`. |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1ace5f1d3805cc5aa800c15ead379e2716() noexcept` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder &` Sets the log level to `verbose` for conversion to a `LiteRtStatus`. |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a06796cb80efbdb9d2f170e64173e4acb() noexcept` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder &` Sets the log level to `warning` for conversion to a `LiteRtStatus`. |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1abd9879bd3e59090df7e0f276e7915953() noexcept` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder &` Prevents logging any message when converting to a `LiteRtStatus`. |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1afb399dc24ed1e5506c56063bd7e3f872() const noexcept` | `void` |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1aa72a0019f00c23c197c6b3235d9d5a86() const noexcept` |   |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1ad662fdfff255382795ac72fd6de034d0() const noexcept` |   |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a2608197dd94888495f2f43d598b94a74() const noexcept` |   |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1a4ebe352637759abc469eed8603ef3a9e() const noexcept` |   |
| `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder_1afa66668b5539e483b198de432cfb4640(T && val)` | `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error-status-builder#classlitert_1_1_error_status_builder &` Appends data to the error message. |

| ### Structs ||
|---|---|
| [litert::ErrorStatusBuilder::ErrorConversion](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion) | Specializes this class with an implicit conversion to `https://developers.google.com/edge/api/litert/c/classlitert/1-1-error#classlitert_1_1_error` and an `IsError()` member. |
| [litert::ErrorStatusBuilder::ErrorConversion\< LiteRtStatus \>](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion-3-01-lite-rt-status-01-4) |   |
| [litert::ErrorStatusBuilder::ErrorConversion\< T \* \>](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion-3-01-t-01-5-01-4) |   |
| [litert::ErrorStatusBuilder::ErrorConversion\< T, std::enable_if_t\< std::is_arithmetic_v\< T \> \> \>](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion-3-01-t-00-01std-1-1enable-if-t-3-017f1450c7c36d7876ec7841d67ad5980f) |   |
| [litert::ErrorStatusBuilder::ErrorConversion\< absl::Status \>](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion-3-01absl-1-1-status-01-4) |   |
| [litert::ErrorStatusBuilder::ErrorConversion\< absl::StatusOr\< T \> \>](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion-3-01absl-1-1-status-or-3-01-t-01-4-01-4) |   |
| [litert::ErrorStatusBuilder::ErrorConversion\< bool \>](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion-3-01bool-01-4) |   |
| [litert::ErrorStatusBuilder::ErrorConversion\< litert::Expected\< T \> \>](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion-3-01litert-1-1-expected-3-01-t-01-4-01-4) |   |
| [litert::ErrorStatusBuilder::ErrorConversion\< litert::Unexpected \>](https://developers.google.com/edge/api/litert/c/structlitert/1-1-error-status-builder-1-1-error-conversion-3-01litert-1-1-unexpected-01-4) |   |

## Public static functions

### AsError

```
litert::Error AsError(
  T && value
)
```

### ForwardWrappedValue

```
T && ForwardWrappedValue(
  Expected< T > & e
)
```

### ForwardWrappedValue

```
T & ForwardWrappedValue(
  Expected< T & > & e
)
```

### ForwardWrappedValue

```
T && ForwardWrappedValue(
  absl::StatusOr< T > & e
)
```

### ForwardWrappedValue

```
T & ForwardWrappedValue(
  absl::StatusOr< T & > & e
)
```

### InvalidArgument

```
ErrorStatusBuilder InvalidArgument(
  litert::SourceLocation loc
)
```

### IsError

```
constexpr bool IsError(
  T && value
)
```

### WrongVersion

```
ErrorStatusBuilder WrongVersion(
  litert::SourceLocation loc
)
```

## Public functions

### ErrorStatusBuilder

```
 ErrorStatusBuilder(
  T && error,
  litert::SourceLocation loc
)
```

### ErrorStatusBuilder

```
 ErrorStatusBuilder(
  litert::Error error,
  litert::SourceLocation loc
)
```

### Log

```
ErrorStatusBuilder & Log(
  LiteRtLogSeverity log_level
) noexcept
```
Sets the log level used when converting to a `LiteRtStatus`.

### LogError

```
ErrorStatusBuilder & LogError() noexcept
```
Sets the log level to `error` for conversion to a `LiteRtStatus`.

### LogInfo

```
ErrorStatusBuilder & LogInfo() noexcept
```
Sets the log level to `info` for conversion to a `LiteRtStatus`.

### LogVerbose

```
ErrorStatusBuilder & LogVerbose() noexcept
```
Sets the log level to `verbose` for conversion to a `LiteRtStatus`.

### LogWarning

```
ErrorStatusBuilder & LogWarning() noexcept
```
Sets the log level to `warning` for conversion to a `LiteRtStatus`.

### NoLog

```
ErrorStatusBuilder & NoLog() noexcept
```
Prevents logging any message when converting to a `LiteRtStatus`.

### PrintLog

```
void PrintLog() const noexcept
```

### operator LiteRtStatus

```
 operator LiteRtStatus() const noexcept
```

> [!NOTE]
> **Note:** This conversion logs the error message if one is present, unless `NDEBUG` is defined (typically in optimized builds).

<br />

### operator absl::Status

```
 operator absl::Status() const noexcept
```

### operator absl::StatusOr\< T \>

```
 operator absl::StatusOr< T >() const noexcept
```

### operator litert::Expected\< T \>

```
 operator litert::Expected< T >() const noexcept
```

### operator\<\<

```
ErrorStatusBuilder & operator<<(
  T && val
)
```
Appends data to the error message.