166d00febSPaula Toth //===-- StreamWrapper.h -----------------------------------------*- C++ -*-===// 21962bc1dSAlex Brachet // 31962bc1dSAlex Brachet // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41962bc1dSAlex Brachet // See https://llvm.org/LICENSE.txt for license information. 51962bc1dSAlex Brachet // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61962bc1dSAlex Brachet // 71962bc1dSAlex Brachet //===----------------------------------------------------------------------===// 81962bc1dSAlex Brachet 91962bc1dSAlex Brachet #ifndef LLVM_LIBC_UTILS_TESTUTILS_STREAMWRAPPER_H 101962bc1dSAlex Brachet #define LLVM_LIBC_UTILS_TESTUTILS_STREAMWRAPPER_H 111962bc1dSAlex Brachet 121962bc1dSAlex Brachet namespace __llvm_libc { 131962bc1dSAlex Brachet namespace testutils { 141962bc1dSAlex Brachet 151962bc1dSAlex Brachet // StreamWrapper is necessary because llvm/Support/raw_ostream.h includes 161962bc1dSAlex Brachet // standard headers so we must provide streams through indirection to not 171962bc1dSAlex Brachet // expose the system libc headers. 181962bc1dSAlex Brachet class StreamWrapper { 19c6aa206bSSiva Chandra Reddy protected: 20*25226f3eSMichael Jones void *os; 211962bc1dSAlex Brachet 221962bc1dSAlex Brachet public: StreamWrapper(void * OS)23*25226f3eSMichael Jones StreamWrapper(void *OS) : os(OS) {} 241962bc1dSAlex Brachet 251962bc1dSAlex Brachet template <typename T> StreamWrapper &operator<<(T t); 261962bc1dSAlex Brachet }; 271962bc1dSAlex Brachet 281962bc1dSAlex Brachet StreamWrapper outs(); 291962bc1dSAlex Brachet 30c6aa206bSSiva Chandra Reddy class OutputFileStream : public StreamWrapper { 31c6aa206bSSiva Chandra Reddy public: 32c6aa206bSSiva Chandra Reddy explicit OutputFileStream(const char *FN); 33c6aa206bSSiva Chandra Reddy ~OutputFileStream(); 34c6aa206bSSiva Chandra Reddy }; 35c6aa206bSSiva Chandra Reddy 361962bc1dSAlex Brachet } // namespace testutils 371962bc1dSAlex Brachet } // namespace __llvm_libc 381962bc1dSAlex Brachet 391962bc1dSAlex Brachet #endif // LLVM_LIBC_UTILS_TESTUTILS_STREAMWRAPPER_H 40