SBStream.h revision 2e8cb8a7342a2ea672792067d712a794e215a3a7
1ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton//===-- SBStream.h ----------------------------------------------*- C++ -*-===// 2ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton// 3ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton// The LLVM Compiler Infrastructure 4ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton// 5ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton// This file is distributed under the University of Illinois Open Source 6ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton// License. See LICENSE.TXT for details. 7ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton// 8ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton//===----------------------------------------------------------------------===// 9ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 10ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton#ifndef LLDB_SBStream_h_ 11ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton#define LLDB_SBStream_h_ 12ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 13ca66a5f50969b4833cea57c441b23fa29c714a55Greg Clayton#include <stdio.h> 14ca66a5f50969b4833cea57c441b23fa29c714a55Greg Clayton 15ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton#include "lldb/API/SBDefines.h" 16ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 17ab7b39c679528fa2574430ec8035ee83d664acb8Greg Claytonnamespace lldb { 18ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 19ab7b39c679528fa2574430ec8035ee83d664acb8Greg Claytonclass SBStream 20ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton{ 21ab7b39c679528fa2574430ec8035ee83d664acb8Greg Claytonpublic: 22ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 23ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton SBStream (); 242e8cb8a7342a2ea672792067d712a794e215a3a7Jim Ingham 25ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton ~SBStream (); 26ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 27ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton bool 28ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton IsValid() const; 29ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 30ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton // If this stream is not redirected to a file, it will maintain a local 31ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton // cache for the stream data which can be accessed using this accessor. 32ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton const char * 33ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton GetData (); 34ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 35ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton // If this stream is not redirected to a file, it will maintain a local 36ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton // cache for the stream output whose length can be accessed using this 37ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton // accessor. 38ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton size_t 39ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton GetSize(); 40ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 41ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton void 42ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton Printf (const char *format, ...); 43ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 44ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton void 45ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton RedirectToFile (const char *path, bool append); 46ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 47ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton void 48ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton RedirectToFileHandle (FILE *fh, bool transfer_fh_ownership); 49ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 50ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton void 51ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton RedirectToFileDescriptor (int fd, bool transfer_fh_ownership); 52ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 53ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton // If the stream is redirected to a file, forget about the file and if 54ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton // ownership of the file was transfered to this object, close the file. 55ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton // If the stream is backed by a local cache, clear this cache. 56ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton void 57ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton Clear (); 58ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 59ab7b39c679528fa2574430ec8035ee83d664acb8Greg Claytonprotected: 6098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBAddress; 6198f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBBlock; 6298f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBBreakpoint; 6398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBBreakpointLocation; 6498f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBCompileUnit; 6598f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBEvent; 6698f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBFrame; 6798f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBFunction; 685c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton friend class SBInstruction; 695c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton friend class SBInstructionList; 7098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBModule; 71e5791dd89688683c9e1ec874b0be6906517e6827Johnny Chen friend class SBSourceManager; 7298f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBSymbol; 7398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBSymbolContext; 7498f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBTarget; 7598f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice friend class SBThread; 7649ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton friend class SBValue; 772e8cb8a7342a2ea672792067d712a794e215a3a7Jim Ingham friend class SBCommandReturnObject; 78ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 79ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton#ifndef SWIG 80ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 81ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton lldb_private::Stream * 82ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton operator->(); 83ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 84ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton lldb_private::Stream * 85ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton get(); 86ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 87ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton lldb_private::Stream & 88ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton ref(); 89ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 90ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton#endif 91ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 92ab7b39c679528fa2574430ec8035ee83d664acb8Greg Claytonprivate: 93ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 94ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton DISALLOW_COPY_AND_ASSIGN (SBStream); 95ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton std::auto_ptr<lldb_private::Stream> m_opaque_ap; 96ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton bool m_is_file; 97ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton}; 98ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 99ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton} // namespace lldb 100ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton 101ab7b39c679528fa2574430ec8035ee83d664acb8Greg Clayton#endif // LLDB_SBStream_h_ 102