llvm/mlir/include/mlir/Debug/BreakpointManager.h

//===- BreakpointManager.h - Breakpoint Manager Support ----*- 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 MLIR_TRACING_BREAKPOINTMANAGER_H
#define MLIR_TRACING_BREAKPOINTMANAGER_H

#include "mlir/IR/Action.h"
#include "llvm/ADT/MapVector.h"

namespace mlir {
namespace tracing {

/// This abstract class represents a breakpoint.
class Breakpoint {};

inline raw_ostream &operator<<(raw_ostream &os, const Breakpoint &breakpoint) {}

/// This class provides a CRTP wrapper around a base breakpoint class to define
/// a few necessary utility methods.
template <typename Derived>
class BreakpointBase : public Breakpoint {};

/// A breakpoint manager is responsible for managing a set of breakpoints and
/// matching them to a given action.
class BreakpointManager {};

/// CRTP base class for BreakpointManager implementations.
template <typename Derived>
class BreakpointManagerBase : public BreakpointManager {};

} // namespace tracing
} // namespace mlir

#endif // MLIR_TRACING_BREAKPOINTMANAGER_H