ADBC
Arrow 数据库连接
加载中...
搜索中...
无匹配项
status.h 文件参考
#include <cassert>
#include <cstring>
#include <memory>
#include <sstream>
#include <string>
#include <utility>
#include <variant>
#include <vector>
#include <arrow-adbc/adbc.h>

跳转到该文件的源代码。

类  adbc::driver::Status
 AdbcStatusCode 和 AdbcError 的包装器。 更多...
 
结构体  adbc::driver::Status::Impl
 私有 Status 实现细节。 更多...
 
类  adbc::driver::Result< T >
 一个值或错误的包装器。 更多...
 

#define STATUS_CTOR(NAME, CODE)
 
#define RAISE_RESULT_IMPL(NAME, ERROR, LHS, RHS)
 
#define RAISE_STATUS_IMPL(NAME, ERROR, RHS)
 
#define UNWRAP_RESULT_IMPL(name, lhs, rhs)
 
#define UNWRAP_STATUS_IMPL(name, rhs)
 
#define DRIVER_CONCAT(x, y)   x##y
 
#define UNWRAP_RESULT_NAME(x, y)   DRIVER_CONCAT(x, y)
 
#define RAISE_RESULT(ERROR, LHS, RHS)    RAISE_RESULT_IMPL(UNWRAP_RESULT_NAME(driver_raise_result, __COUNTER__), ERROR, LHS, RHS)
 用于在返回 AdbcStatusCode 的函数中解包 Result 的辅助函数。
 
#define RAISE_STATUS(ERROR, RHS)    RAISE_STATUS_IMPL(UNWRAP_RESULT_NAME(driver_raise_status, __COUNTER__), ERROR, RHS)
 用于在返回 AdbcStatusCode 的函数中解包 Status 的辅助函数。
 
#define UNWRAP_RESULT(lhs, rhs)    UNWRAP_RESULT_IMPL(UNWRAP_RESULT_NAME(driver_unwrap_result, __COUNTER__), lhs, rhs)
 用于在返回 Result/Status 的函数中解包 Result 的辅助函数。
 
#define UNWRAP_STATUS(rhs)    UNWRAP_STATUS_IMPL(UNWRAP_RESULT_NAME(driver_unwrap_status, __COUNTER__), rhs)
 用于在返回 Result/Status 的函数中解包 Status 的辅助函数。
 
#define STATUS_CTOR(NAME, CODE)
 
#define UNWRAP_ERRNO_IMPL(NAME, CODE, RHS)
 
#define UNWRAP_ERRNO(CODE, RHS)    UNWRAP_ERRNO_IMPL(UNWRAP_RESULT_NAME(driver_errno, __COUNTER__), CODE, RHS)
 
#define UNWRAP_NANOARROW_IMPL(NAME, ERROR, CODE, RHS)
 
#define UNWRAP_NANOARROW(ERROR, CODE, RHS)
 

函数

driver::Status adbc::driver::status::Ok ()
 

宏定义文档

◆ RAISE_RESULT

#define RAISE_RESULT ( 错误,
LHS,
RHS )    RAISE_RESULT_IMPL(UNWRAP_RESULT_NAME(driver_raise_result, __COUNTER__), ERROR, LHS, RHS)

用于在返回 AdbcStatusCode 的函数中解包 Result 的辅助函数。

◆ RAISE_RESULT_IMPL

#define RAISE_RESULT_IMPL ( 名称,
错误,
LHS,
RHS )
auto&& NAME = (RHS); \
if (!(NAME).has_value()) { \
return (NAME).status().ToAdbc(ERROR); \
} \
LHS = std::move((NAME).value());

◆ RAISE_STATUS

#define RAISE_STATUS ( 错误,
RHS )    RAISE_STATUS_IMPL(UNWRAP_RESULT_NAME(driver_raise_status, __COUNTER__), ERROR, RHS)

用于在返回 AdbcStatusCode 的函数中解包 Status 的辅助函数。

◆ RAISE_STATUS_IMPL

#define RAISE_STATUS_IMPL ( 名称,
错误,
RHS )
auto&& NAME = (RHS); \
if (!(NAME).ok()) { \
return (NAME).ToAdbc(ERROR); \
}

◆ STATUS_CTOR [1/2]

#define STATUS_CTOR ( 名称,
CODE )
template <typename... Args> \
static Status NAME(Args&&... args) { \
std::stringstream ss; \
([&] { ss << args; }(), ...); \
return Status(ADBC_STATUS_##CODE, ss.str()); \
}

◆ STATUS_CTOR [2/2]

#define STATUS_CTOR ( 名称,
CODE )
template <typename... Args> \
static Status NAME(Args&&... args) { \
std::stringstream ss; \
([&] { ss << args; }(), ...); \
return Status(ADBC_STATUS_##CODE, ss.str()); \
}

◆ UNWRAP_ERRNO_IMPL

#define UNWRAP_ERRNO_IMPL ( 名称,
代码,
RHS )
auto&& NAME = (RHS); \
if (NAME != 0) { \
return adbc::driver::status::CODE("调用失败:", #RHS, " = (错误码 ", NAME, ") ", \
std::strerror(NAME)); \
}

◆ UNWRAP_NANOARROW

#define UNWRAP_NANOARROW ( 错误,
代码,
RHS )
UNWRAP_NANOARROW_IMPL(UNWRAP_RESULT_NAME(driver_errno_na, __COUNTER__), ERROR, CODE, \
RHS)

◆ UNWRAP_NANOARROW_IMPL

#define UNWRAP_NANOARROW_IMPL ( 名称,
错误,
代码,
RHS )
auto&& NAME = (RHS); \
if (NAME != 0) { \
return adbc::driver::status::CODE("nanoarrow 调用失败:", #RHS, " = (", NAME, \
") ", std::strerror(NAME), ". ", (ERROR).message); \
}

◆ UNWRAP_RESULT

#define UNWRAP_RESULT ( lhs,
rhs )    UNWRAP_RESULT_IMPL(UNWRAP_RESULT_NAME(driver_unwrap_result, __COUNTER__), lhs, rhs)

用于在返回 Result/Status 的函数中解包 Result 的辅助函数。

◆ UNWRAP_RESULT_IMPL

#define UNWRAP_RESULT_IMPL ( 名称,
lhs,
rhs )
auto&& name = (rhs); \
if (!(name).has_value()) { \
return std::move(name).status(); \
} \
lhs = std::move((name).value());

◆ UNWRAP_STATUS

#define UNWRAP_STATUS ( rhs)     UNWRAP_STATUS_IMPL(UNWRAP_RESULT_NAME(driver_unwrap_status, __COUNTER__), rhs)

用于在返回 Result/Status 的函数中解包 Status 的辅助函数。

◆ UNWRAP_STATUS_IMPL

#define UNWRAP_STATUS_IMPL ( 名称,
rhs )
auto&& name = (rhs); \
if (!(name).ok()) { \
return std::move(name); \
}