1*4bdff4beSrobert// -*- C++ -*- 2*4bdff4beSrobert//===----------------------------------------------------------------------===// 3*4bdff4beSrobert// 4*4bdff4beSrobert// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*4bdff4beSrobert// See https://llvm.org/LICENSE.txt for license information. 6*4bdff4beSrobert// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*4bdff4beSrobert// 8*4bdff4beSrobert//===----------------------------------------------------------------------===// 9*4bdff4beSrobert 10*4bdff4beSrobert#ifndef _LIBCPP_COROUTINE 11*4bdff4beSrobert#define _LIBCPP_COROUTINE 12*4bdff4beSrobert 13*4bdff4beSrobert/** 14*4bdff4beSrobert coroutine synopsis 15*4bdff4beSrobert 16*4bdff4beSrobertnamespace std { 17*4bdff4beSrobert// [coroutine.traits] 18*4bdff4beSroberttemplate <class R, class... ArgTypes> 19*4bdff4beSrobert struct coroutine_traits; 20*4bdff4beSrobert// [coroutine.handle] 21*4bdff4beSroberttemplate <class Promise = void> 22*4bdff4beSrobert struct coroutine_handle; 23*4bdff4beSrobert// [coroutine.handle.compare] 24*4bdff4beSrobertconstexpr bool operator==(coroutine_handle<> x, coroutine_handle<> y) noexcept; 25*4bdff4beSrobertconstexpr strong_ordering operator<=>(coroutine_handle<> x, coroutine_handle<> y) noexcept; 26*4bdff4beSrobert// [coroutine.handle.hash] 27*4bdff4beSroberttemplate <class T> struct hash; 28*4bdff4beSroberttemplate <class P> struct hash<coroutine_handle<P>>; 29*4bdff4beSrobert// [coroutine.noop] 30*4bdff4beSrobertstruct noop_coroutine_promise; 31*4bdff4beSroberttemplate<> struct coroutine_handle<noop_coroutine_promise>; 32*4bdff4beSrobertusing noop_coroutine_handle = coroutine_handle<noop_coroutine_promise>; 33*4bdff4beSrobertnoop_coroutine_handle noop_coroutine() noexcept; 34*4bdff4beSrobert// [coroutine.trivial.awaitables] 35*4bdff4beSrobertstruct suspend_never; 36*4bdff4beSrobertstruct suspend_always; 37*4bdff4beSrobert} // namespace std 38*4bdff4beSrobert 39*4bdff4beSrobert */ 40*4bdff4beSrobert 41*4bdff4beSrobert#include <__assert> // all public C++ headers provide the assertion handler 42*4bdff4beSrobert#include <__config> 43*4bdff4beSrobert#include <__coroutine/coroutine_handle.h> 44*4bdff4beSrobert#include <__coroutine/coroutine_traits.h> 45*4bdff4beSrobert#include <__coroutine/noop_coroutine_handle.h> 46*4bdff4beSrobert#include <__coroutine/trivial_awaitables.h> 47*4bdff4beSrobert#include <version> 48*4bdff4beSrobert 49*4bdff4beSrobert// standard-mandated includes 50*4bdff4beSrobert 51*4bdff4beSrobert// [coroutine.syn] 52*4bdff4beSrobert#include <compare> 53*4bdff4beSrobert 54*4bdff4beSrobert#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER 55*4bdff4beSrobert# pragma GCC system_header 56*4bdff4beSrobert#endif 57*4bdff4beSrobert 58*4bdff4beSrobert#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 59*4bdff4beSrobert# include <iosfwd> 60*4bdff4beSrobert# include <type_traits> 61*4bdff4beSrobert#endif 62*4bdff4beSrobert 63*4bdff4beSrobert#endif // _LIBCPP_COROUTINE 64