1e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//===- raw_os_ostream.h - std::ostream adaptor for raw_ostream --*- C++ -*-===//
2e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
3e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//                     The LLVM Compiler Infrastructure
4e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
5e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// This file is distributed under the University of Illinois Open Source
6e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// License. See LICENSE.TXT for details.
7e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
8e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//===----------------------------------------------------------------------===//
9e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
10e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//  This file defines the raw_os_ostream class.
11e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
12e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//===----------------------------------------------------------------------===//
13e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
14e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#ifndef LLVM_SUPPORT_RAW_OS_OSTREAM_H
15e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#define LLVM_SUPPORT_RAW_OS_OSTREAM_H
16e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
17e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include "llvm/Support/raw_ostream.h"
18e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include <iosfwd>
19e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
20e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaonamespace llvm {
21e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
22e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao/// raw_os_ostream - A raw_ostream that writes to an std::ostream.  This is a
23e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao/// simple adaptor class.  It does not check for output errors; clients should
24e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao/// use the underlying stream to detect errors.
25e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoclass raw_os_ostream : public raw_ostream {
26e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  std::ostream &OS;
27e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
28e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  /// write_impl - See raw_ostream::write_impl.
29e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  virtual void write_impl(const char *Ptr, size_t Size);
30e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
31e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  /// current_pos - Return the current position within the stream, not
32e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  /// counting the bytes currently in the buffer.
33e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  virtual uint64_t current_pos() const;
34e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
35e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaopublic:
36e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  raw_os_ostream(std::ostream &O) : OS(O) {}
37e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  ~raw_os_ostream();
38e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao};
39e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
40e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao} // end llvm namespace
41e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
42e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#endif
43