XPtr
typedef struct XPtr_t XPtr;
typedef struct XPtr_t XPtr;
#define X_PTR_CAST(r, T) ((r).is_error?NULL:(T)(r).ptr)
#define X_PTR_ERR(e) ((XPtr){.error=(e), .ptr=0})
#define X_PTR_GET_ERR(r) ((r).error)
#define X_PTR_GET_PTR(r) ((r).is_error?NULL:(r).ptr)
#define X_PTR_IS_ERR(r) ((r).error!=0)
#define X_PTR_IS_OK(r) ((r).error==0)
#define X_PTR_OK(p) ((XPtr){.error=0, .ptr=(p)})