Deluge Firmware 1.3.0
Build date: 2025.04.16
Loading...
Searching...
No Matches
try.h
1#pragma once
2#include <utility>
3
4#define D_TRY(expr) \
5 ({ \
6 auto result = (expr); \
7 if (!result.has_value()) [[unlikely]] { \
8 return std::unexpected(result.error()); \
9 } \
10 result.value(); \
11 })
12
13#define D_TRY_CATCH(expr, error_var, block) \
14 ({ \
15 auto result = (expr); \
16 if (!result.has_value()) [[unlikely]] { \
17 auto error_var = result.error(); \
18 block \
19 } \
20 result.value(); \
21 })
22
23#define D_TRY_MOVE(expr) \
24 ({ \
25 auto result = (expr); \
26 if (!result.has_value()) [[unlikely]] { \
27 return std::unexpected(result.error()); \
28 } \
29 std::move(result.value()); \
30 })
31
32#define D_TRY_CATCH_MOVE(expr, error_var, block) \
33 ({ \
34 auto result = (expr); \
35 if (!result.has_value()) [[unlikely]] { \
36 auto error_var = result.error(); \
37 block \
38 } \
39 std::move(result.value()); \
40 })