#pragma once

#define CO_CONTEXT_AWAIT_HINT nodiscard("Did you forget to co_await?")

#if defined(__GNUG__)
#define CO_CONTEXT_NOINLINE gnu::noinline
#elif defined(__clang__)
#define CO_CONTEXT_NOINLINE clang::noinline
#else
#define CO_CONTEXT_NOINLINE gnu::noinline, clang::noinline, msvc::noinline
#endif

namespace co_context {
    enum safety : bool { unsafe = false, safe = true };
    using cur_t = uint32_t;
    using ctx_id_t = uint8_t;
    inline constexpr cur_t swap_capacity = 16384;
} // namespace co_context
