#![allow(unused_macros)]

macro_rules! cfg_resource_drivers {
    ($($item:item)*) => {
        $(
            #[cfg(any(feature = "io-driver", feature = "time"))]
            $item
        )*
    }
}

macro_rules! cfg_blocking {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "blocking")]
            #[cfg_attr(docsrs, doc(cfg(feature = "blocking")))]
            $item
        )*
    }
}

/// Enables blocking API internals
macro_rules! cfg_blocking_impl {
    ($($item:item)*) => {
        $(
            #[cfg(any(
                    feature = "blocking",
                    feature = "fs",
                    feature = "dns",
                    feature = "io-std",
                    feature = "rt-threaded",
                    ))]
            $item
        )*
    }
}

/// Enables blocking API internals
macro_rules! cfg_blocking_impl_or_task {
    ($($item:item)*) => {
        $(
            #[cfg(any(
                    feature = "blocking",
                    feature = "fs",
                    feature = "dns",
                    feature = "io-std",
                    feature = "rt-threaded",
                    feature = "task",
                    ))]
            $item
        )*
    }
}

/// Enables enter::block_on
macro_rules! cfg_block_on {
    ($($item:item)*) => {
        $(
            #[cfg(any(
                    feature = "blocking",
                    feature = "fs",
                    feature = "dns",
                    feature = "io-std",
                    feature = "rt-core",
                    ))]
            $item
        )*
    }
}

/// Enables blocking API internals
macro_rules! cfg_not_blocking_impl {
    ($($item:item)*) => {
        $(
            #[cfg(not(any(
                        feature = "blocking",
                        feature = "fs",
                        feature = "dns",
                        feature = "io-std",
                        feature = "rt-threaded",
                        )))]
            $item
        )*
    }
}

/// Enables internal `AtomicWaker` impl
macro_rules! cfg_atomic_waker_impl {
    ($($item:item)*) => {
        $(
            #[cfg(any(
                feature = "io-driver",
                feature = "time",
                all(feature = "rt-core", feature = "rt-util")
            ))]
            #[cfg(not(loom))]
            $item
        )*
    }
}

macro_rules! cfg_dns {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "dns")]
            #[cfg_attr(docsrs, doc(cfg(feature = "dns")))]
            $item
        )*
    }
}

macro_rules! cfg_fs {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "fs")]
            #[cfg_attr(docsrs, doc(cfg(feature = "fs")))]
            $item
        )*
    }
}

macro_rules! cfg_io_blocking {
    ($($item:item)*) => {
        $( #[cfg(any(feature = "io-std", feature = "fs"))] $item )*
    }
}

macro_rules! cfg_io_driver {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "io-driver")]
            #[cfg_attr(docsrs, doc(cfg(feature = "io-driver")))]
            $item
        )*
    }
}

macro_rules! cfg_not_io_driver {
    ($($item:item)*) => {
        $(
            #[cfg(not(feature = "io-driver"))]
            $item
        )*
    }
}

macro_rules! cfg_io_std {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "io-std")]
            #[cfg_attr(docsrs, doc(cfg(feature = "io-std")))]
            $item
        )*
    }
}

macro_rules! cfg_io_util {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "io-util")]
            #[cfg_attr(docsrs, doc(cfg(feature = "io-util")))]
            $item
        )*
    }
}

macro_rules! cfg_not_io_util {
    ($($item:item)*) => {
        $( #[cfg(not(feature = "io-util"))] $item )*
    }
}

macro_rules! cfg_loom {
    ($($item:item)*) => {
        $( #[cfg(loom)] $item )*
    }
}

macro_rules! cfg_not_loom {
    ($($item:item)*) => {
        $( #[cfg(not(loom))] $item )*
    }
}

macro_rules! cfg_macros {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "macros")]
            #[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
            #[doc(inline)]
            $item
        )*
    }
}

macro_rules! cfg_process {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "process")]
            #[cfg_attr(docsrs, doc(cfg(feature = "process")))]
            #[cfg(not(loom))]
            $item
        )*
    }
}

macro_rules! cfg_signal {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "signal")]
            #[cfg_attr(docsrs, doc(cfg(feature = "signal")))]
            #[cfg(not(loom))]
            $item
        )*
    }
}

macro_rules! cfg_stream {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "stream")]
            #[cfg_attr(docsrs, doc(cfg(feature = "stream")))]
            $item
        )*
    }
}

macro_rules! cfg_sync {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "sync")]
            #[cfg_attr(docsrs, doc(cfg(feature = "sync")))]
            $item
        )*
    }
}

macro_rules! cfg_not_sync {
    ($($item:item)*) => {
        $( #[cfg(not(feature = "sync"))] $item )*
    }
}

macro_rules! cfg_rt_core {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "rt-core")]
            $item
        )*
    }
}

macro_rules! doc_rt_core {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "rt-core")]
            #[cfg_attr(docsrs, doc(cfg(feature = "rt-core")))]
            $item
        )*
    }
}

macro_rules! cfg_not_rt_core {
    ($($item:item)*) => {
        $( #[cfg(not(feature = "rt-core"))] $item )*
    }
}

macro_rules! cfg_rt_threaded {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "rt-threaded")]
            #[cfg_attr(docsrs, doc(cfg(feature = "rt-threaded")))]
            $item
        )*
    }
}

macro_rules! cfg_rt_util {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "rt-util")]
            #[cfg_attr(docsrs, doc(cfg(feature = "rt-util")))]
            $item
        )*
    }
}

macro_rules! cfg_not_rt_threaded {
    ($($item:item)*) => {
        $( #[cfg(not(feature = "rt-threaded"))] $item )*
    }
}

macro_rules! cfg_tcp {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "tcp")]
            #[cfg_attr(docsrs, doc(cfg(feature = "tcp")))]
            $item
        )*
    }
}

macro_rules! cfg_test_util {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "test-util")]
            #[cfg_attr(docsrs, doc(cfg(feature = "test-util")))]
            $item
        )*
    }
}

macro_rules! cfg_not_test_util {
    ($($item:item)*) => {
        $( #[cfg(not(feature = "test-util"))] $item )*
    }
}

macro_rules! cfg_time {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "time")]
            #[cfg_attr(docsrs, doc(cfg(feature = "time")))]
            $item
        )*
    }
}

macro_rules! cfg_not_time {
    ($($item:item)*) => {
        $( #[cfg(not(feature = "time"))] $item )*
    }
}

macro_rules! cfg_udp {
    ($($item:item)*) => {
        $(
            #[cfg(feature = "udp")]
            #[cfg_attr(docsrs, doc(cfg(feature = "udp")))]
            $item
        )*
    }
}

macro_rules! cfg_uds {
    ($($item:item)*) => {
        $(
            #[cfg(all(unix, feature = "uds"))]
            #[cfg_attr(docsrs, doc(cfg(feature = "uds")))]
            $item
        )*
    }
}

macro_rules! cfg_unstable {
    ($($item:item)*) => {
        $(
            #[cfg(tokio_unstable)]
            #[cfg_attr(docsrs, doc(cfg(tokio_unstable)))]
            $item
        )*
    }
}

macro_rules! cfg_coop {
    ($($item:item)*) => {
        $(
            #[cfg(any(
                    feature = "blocking",
                    feature = "dns",
                    feature = "fs",
                    feature = "io-driver",
                    feature = "io-std",
                    feature = "process",
                    feature = "rt-core",
                    feature = "sync",
                    feature = "stream",
                    feature = "time"
                    ))]
            $item
        )*
    }
}
