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