#[cfg(doc)]
use super::*;
#[cfg(feature = "macos_13_0_0")]
use crate::es_mute_inverted_return_t;
macro_rules! result_types {
(
$(#[$enum_doc:meta])+
enum $rust_name:ident =
$c_name:ident with
$success_c_variant:ident;
$($(#[$variant_meta: meta])? $rust_variant:ident is $c_variant:ident),+ $(,)?
) => {
$(#[$enum_doc] )+
#[doc = ""]
#[doc = "Usually constructed using "]
#[doc = ::std::concat!("[`", ::std::stringify!($c_name), "::ok()`].")]
#[derive(::std::fmt::Debug, ::std::clone::Clone, ::std::marker::Copy, ::std::cmp::PartialEq, ::std::cmp::Eq, ::std::hash::Hash)]
pub enum $rust_name {
$(
#[doc = ::std::concat!(
"See [`", ::std::stringify!($c_variant), "`]",
"[", ::std::stringify!($c_name), "::", ::std::stringify!($c_variant), "]"
)]
$(#[$variant_meta])?
$rust_variant,
)+
Unknown($crate::$c_name),
ApiUnavailable,
}
impl ::std::fmt::Display for $crate::$rust_name {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
match self {
$( $(#[$variant_meta])? Self::$rust_variant => ::std::write!(f, ::std::stringify!($c_variant)), )+
Self::Unknown(err) => ::std::write!(f, ::std::concat!(::std::stringify!($c_name), "({:#X})"), err.0),
Self::ApiUnavailable => ::std::write!(f, "API is unavailable in this version of macOS"),
}
}
}
impl ::std::error::Error for $crate::$rust_name {}
impl $crate::$c_name {
#[doc = "Converts an instance of [`"]
#[doc = ::std::stringify!($c_name)]
#[doc = "`] to a [`Result`]`<(), `[`"]
#[doc = ::std::stringify!($rust_name)]
#[doc = "`]`>`"]
pub fn ok(self) -> ::std::result::Result<(), $crate::$rust_name> {
let err = match self {
Self::$success_c_variant => return ::std::result::Result::Ok(()),
$( $(#[$variant_meta])? Self::$c_variant => $crate::$rust_name::$rust_variant, )+
err => $crate::$rust_name::Unknown(err),
};
::std::result::Result::Err(err)
}
}
};
}
result_types!(
#[doc(alias = "es_return_t")]
enum ReturnError = es_return_t with ES_RETURN_SUCCESS;
Error is ES_RETURN_ERROR,
);
result_types!(
#[doc(alias = "es_respond_result_t")]
enum RespondError = es_respond_result_t with ES_RESPOND_RESULT_SUCCESS;
InvalidArgument is ES_RESPOND_RESULT_ERR_INVALID_ARGUMENT,
Internal is ES_RESPOND_RESULT_ERR_INTERNAL,
MessageNotFound is ES_RESPOND_RESULT_NOT_FOUND,
DuplicateResponse is ES_RESPOND_RESULT_ERR_DUPLICATE_RESPONSE,
EventType is ES_RESPOND_RESULT_ERR_EVENT_TYPE,
);
result_types!(
#[doc(alias = "es_clear_cache_result_t")]
enum ClearCacheError = es_clear_cache_result_t with ES_CLEAR_CACHE_RESULT_SUCCESS;
Internal is ES_CLEAR_CACHE_RESULT_ERR_INTERNAL,
Throttle is ES_CLEAR_CACHE_RESULT_ERR_THROTTLE,
);
result_types!(
#[doc(alias = "es_new_client_result_t")]
enum NewClientError = es_new_client_result_t with ES_NEW_CLIENT_RESULT_SUCCESS;
InvalidArgument is ES_NEW_CLIENT_RESULT_ERR_INVALID_ARGUMENT,
Internal is ES_NEW_CLIENT_RESULT_ERR_INTERNAL,
NotEntitled is ES_NEW_CLIENT_RESULT_ERR_NOT_ENTITLED,
NotPermitted is ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED,
NotPrivileged is ES_NEW_CLIENT_RESULT_ERR_NOT_PRIVILEGED,
#[cfg(feature = "macos_10_15_1")]
TooManyClients is ES_NEW_CLIENT_RESULT_ERR_TOO_MANY_CLIENTS,
);
#[cfg(feature = "macos_13_0_0")]
result_types!(
#[doc(alias = "es_openssh_login_result_type_t")]
enum OpensshLoginError = es_openssh_login_result_type_t with ES_OPENSSH_AUTH_SUCCESS;
LoginExceedMaxTries is ES_OPENSSH_LOGIN_EXCEED_MAXTRIES,
LoginRootDenied is ES_OPENSSH_LOGIN_ROOT_DENIED,
AuthNone is ES_OPENSSH_AUTH_FAIL_NONE,
AuthPassword is ES_OPENSSH_AUTH_FAIL_PASSWD,
AuthKbdint is ES_OPENSSH_AUTH_FAIL_KBDINT,
AuthPubkey is ES_OPENSSH_AUTH_FAIL_PUBKEY,
AuthHostBased is ES_OPENSSH_AUTH_FAIL_HOSTBASED,
AuthGssapi is ES_OPENSSH_AUTH_FAIL_GSSAPI,
InvalidUser is ES_OPENSSH_INVALID_USER,
);
#[doc(alias = "es_mute_inverted_return_t")]
#[cfg(feature = "macos_13_0_0")]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum MuteInvertedType {
Normal,
Inverted,
}
#[doc(alias = "es_mute_inverted_return_t")]
#[cfg(feature = "macos_13_0_0")]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum MuteTypeError {
Error,
Unknown(es_mute_inverted_return_t),
ApiUnavailable,
}
#[cfg(feature = "macos_13_0_0")]
impl ::std::fmt::Display for MuteTypeError {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
match self {
Self::Error => ::std::write!(f, "ES_MUTE_INVERTED_ERROR"),
Self::Unknown(err) => ::std::write!(f, "es_mute_inverted_return_t({:#X})", err.0),
Self::ApiUnavailable => ::std::write!(f, "API is unavailable in this version of macOS"),
}
}
}
#[cfg(feature = "macos_13_0_0")]
impl ::std::error::Error for MuteTypeError {}
#[cfg(feature = "macos_13_0_0")]
impl es_mute_inverted_return_t {
pub fn ok(self) -> Result<MuteInvertedType, MuteTypeError> {
match self {
Self::ES_MUTE_INVERTED => Ok(MuteInvertedType::Inverted),
Self::ES_MUTE_NOT_INVERTED => Ok(MuteInvertedType::Normal),
Self::ES_MUTE_INVERTED_ERROR => Err(MuteTypeError::Error),
err => Err(MuteTypeError::Unknown(err)),
}
}
}