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>

前往此檔案的原始碼。

類別

class  adbc::driver::Status
 AdbcStatusCode + AdbcError 的包裝器。更多...
 
struct  adbc::driver::Status::Impl
 私有的 Status 實作細節。更多...
 
class  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 ( ERROR,
LHS,
RHS )    RAISE_RESULT_IMPL(UNWRAP_RESULT_NAME(driver_raise_result, __COUNTER__), ERROR, LHS, RHS)

在傳回 AdbcStatusCode 的函式中,用來解包 Result 的輔助工具。

◆ RAISE_RESULT_IMPL

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

◆ RAISE_STATUS

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

在傳回 AdbcStatusCode 的函式中,用來解包 Status 的輔助工具。

◆ RAISE_STATUS_IMPL

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

◆ STATUS_CTOR [1/2]

#define STATUS_CTOR ( NAME,
CODE )
Value
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 ( NAME,
CODE )
Value
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 ( NAME,
CODE,
RHS )
Value
auto&& NAME = (RHS); \
if (NAME != 0) { \
return adbc::driver::status::CODE("Call failed: ", #RHS, " = (errno ", NAME, ") ", \
std::strerror(NAME)); \
}

◆ UNWRAP_NANOARROW

#define UNWRAP_NANOARROW ( ERROR,
CODE,
RHS )
Value
UNWRAP_NANOARROW_IMPL(UNWRAP_RESULT_NAME(driver_errno_na, __COUNTER__), ERROR, CODE, \
RHS)

◆ UNWRAP_NANOARROW_IMPL

#define UNWRAP_NANOARROW_IMPL ( NAME,
ERROR,
CODE,
RHS )
Value
auto&& NAME = (RHS); \
if (NAME != 0) { \
return adbc::driver::status::CODE("nanoarrow call failed: ", #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 ( name,
lhs,
rhs )
Value
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 ( name,
rhs )
Value
auto&& name = (rhs); \
if (!(name).ok()) { \
return std::move(name); \
}