llvm/lldb/include/lldb/Utility/Predicate.h

//===-- Predicate.h ---------------------------------------------*- C++ -*-===//
//
// 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
//
//===----------------------------------------------------------------------===//

#ifndef LLDB_UTILITY_PREDICATE_H
#define LLDB_UTILITY_PREDICATE_H

#include <cstdint>
#include <ctime>

#include <condition_variable>
#include <mutex>
#include <optional>

#include "lldb/Utility/Timeout.h"
#include "lldb/lldb-defines.h"

//#define DB_PTHREAD_LOG_EVENTS

/// Enumerations for broadcasting.
namespace lldb_private {

enum PredicateBroadcastType {};

/// \class Predicate Predicate.h "lldb/Utility/Predicate.h"
/// A C++ wrapper class for providing threaded access to a value of
/// type T.
///
/// A templatized class that provides multi-threaded access to a value
/// of type T. Threads can efficiently wait for bits within T to be set
/// or reset, or wait for T to be set to be equal/not equal to a
/// specified values.
template <class T> class Predicate {};

} // namespace lldb_private

#endif // LLDB_UTILITY_PREDICATE_H