//===---------------- condition_variable_destructor.cpp ------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // Define ~condition_variable. // // On some platforms ~condition_variable has been made trivial and the // definition is only provided for ABI compatibility. #include "__config" #include "__threading_support" #if !defined(_LIBCPP_HAS_NO_THREADS) # if _LIBCPP_ABI_VERSION == 1 || !defined(_LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION) # define NEEDS_CONDVAR_DESTRUCTOR # endif #endif _LIBCPP_BEGIN_NAMESPACE_STD #ifdef NEEDS_CONDVAR_DESTRUCTOR class _LIBCPP_TYPE_VIS condition_variable { __libcpp_condvar_t __cv_ = _LIBCPP_CONDVAR_INITIALIZER; public: _LIBCPP_INLINE_VISIBILITY constexpr condition_variable() noexcept = default; ~condition_variable(); condition_variable(const condition_variable&) = delete; condition_variable& operator=(const condition_variable&) = delete; }; condition_variable::~condition_variable() { __libcpp_condvar_destroy(&__cv_); } #endif _LIBCPP_END_NAMESPACE_STD