1317027Sdim//===-- StreamCallback.h -----------------------------------*- C++ -*-===//
2317027Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6317027Sdim//
7317027Sdim//===----------------------------------------------------------------------===//
8317027Sdim
9317027Sdim#ifndef liblldb_StreamCallback_h_
10317027Sdim#define liblldb_StreamCallback_h_
11317027Sdim
12317027Sdim#include "lldb/lldb-types.h"
13317027Sdim#include "llvm/Support/raw_ostream.h"
14317027Sdim
15344779Sdim#include <stddef.h>
16344779Sdim#include <stdint.h>
17317027Sdim
18317027Sdimnamespace lldb_private {
19317027Sdim
20317027Sdimclass StreamCallback : public llvm::raw_ostream {
21317027Sdimpublic:
22317027Sdim  StreamCallback(lldb::LogOutputCallback callback, void *baton);
23317027Sdim  ~StreamCallback() override = default;
24317027Sdim
25317027Sdimprivate:
26317027Sdim  lldb::LogOutputCallback m_callback;
27317027Sdim  void *m_baton;
28317027Sdim
29317027Sdim  void write_impl(const char *Ptr, size_t Size) override;
30317027Sdim  uint64_t current_pos() const override;
31317027Sdim};
32317027Sdim
33317027Sdim} // namespace lldb_private
34317027Sdim
35317027Sdim#endif // liblldb_StreamCallback_h
36